2016-10-11 4 views
0

私はVerilogを初めて使いこなしていますが、最初にその言語を学ぶのはポート相互接続に関するものだと思います。だから、私は素朴に次のコードを書いた。バインディングモジュールのポートに 'assign'を使用する

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 

これはまったく動作しませんでした。ここでsum8には、次のシグネチャを持つ単なる8ビット加算器である:もちろん

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 

、私はそれをコンパイルするには、このコードを書き換えることができますが、私は別のものを知っていただきたいと思います。 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でポートを名前または注文で接続する方法は2つしかありません。あなたはそれを行う方法を説明しているthis articleを見ることができます。

ただし、最も近いものがあるSystemVerilogでinterface構造だろうthe port map directive.

関連する問題