2016-10-11 4 views
0

저는 Verilog를 처음 접해 보았지만 아직 배우지는 못했습니다.하지만 처음에는 포트 상호 연결에 관한 것입니다. 그래서, 나는 순진하게도 다음 코드바인딩 모듈 포트에 '할당'사용하기

module mult4(input wire [3:0] x, y, 
      output wire [7:0] z) 
    sum8 sh, sl, ss; 
    assign sl.x = (y[0] ? x : 0), 
      sl.y = (y[1] ? x : 0) << 1, 
      sh.x = (y[2] ? x : 0) << 2, 
      sh.x = (y[3] ? x : 0) << 3, 
      ss.x = sl.z, 
      ss.y = sh.z, 
      sl.cin = 0, 
      sh.cin = 0, 
      ss.cin = 0, 
      z = ss.z; 
endmodule 

을 썼다는 전혀 작동하지 않을했다. 물론

module sum8(input wire  cin, // carry-in bit 
      input wire [7:0] x, y, // operands 
      output wire  cout, // carry-out bit 
      output wire [7:0] z); // result 

나는 컴파일하기 위해이 코드를 다시 작성할 수 있습니다,하지만 난 다른 일을 알고 싶다 : 여기 sum8는 다음과 같은 서명을 불과 8 비트 가산기이다. Verilog에서 비슷한 모양과 느낌을 얻을 수있는 방법이 있습니까? 아니면 모듈의 이름 뒤에 괄호 안에 포트 매핑을 정의 할 수있는 유일한 곳입니까? 그렇다면 그 이유가 있습니까? 다른 HDL에는 내가 원하는 기능이 있습니까?

+0

찾고있는 기능을 표시 할 수 있습니까? 즉 'sum8'은 무엇을 나타낼 것입니까? 그리고 ss.z는 어떻게 가치가 있습니까? –

+0

'sum8 '이란 무엇입니까? –

+0

@ dave_59 : 오랜 시간 지연되어 죄송합니다. 방금 질문을 업데이트했습니다. 그러나 구체적인 모듈이 어떻게 동작하는지에 관한 것이 아니라'module.port'에서 읽을 수는 있지만 그것을 할당 할 수는 없습니다. 어쩌면 질문 자체가 처음에는 그렇게 좋지 않을 수도 있습니다. – firegurafiku

답변

2

와 VHDL에 설명되어 비슷한을 찾을 수 있습니다. 그것은 다음과 같이 보일 것입니다 : 당신이 당신의 포트가 다른 방식으로 할당 구성 할 수 있습니다 단지 있도록

interface adder8_itf; 
    wire    cin; // carry-in bit 
    wire [7:0] x, y; // operands 
    wire    cout; // carry-out bit 
    wire [7:0] z;  // result 
endinterface 
module mult4(input wire [3:0] x, y, 
      output wire [7:0] z); 
    adder8_itf sh(), sl(), ss(); 
    sum8 i1(sh), i2(sl), i3(ss); 
    assign sl.x = (y[0] ? x : 0), 
      sl.y = (y[1] ? x : 0) << 1, 
      sh.x = (y[2] ? x : 0) << 2, 
      sh.x = (y[3] ? x : 0) << 3, 
      ss.x = sl.z, 
      ss.y = sh.z, 
      sl.cin = 0, 
      sh.cin = 0, 
      ss.cin = 0, 
      z = ss.z; 
endmodule 
module sum8 (adder8_itf itf); 
    assign {itf.cout,itf.z} = itf.x +itf.y; 
endmodule 

비록, 이것은 아마도 더 많은 작업이다.

1

필자의 지식으로 Verilog에서 포트를 이름이나 순서로 연결하는 방법은 두 가지뿐입니다. 이를 수행하는 방법을 설명하는 this article을 살펴볼 수 있습니다.

당신은 그러나 가장 가까운 것은 SystemVerilog에있는 interface 구조가 될 것입니다 당신이 the port map directive.