4

ちなみに、私は完全なVerilog初心者です。いくつかの双方向バスを使用するモジュールを書いています。

inout wire [KEY_SIZE-1:0] prevKey;
inout wire [TAG_SIZE-1:0] prevTag;

inout wire [KEY_SIZE-1:0] nextKey;
inout wire [TAG_SIZE-1:0] nextTag;

バスから物事を読む方法は知っていますが、バスに何かを書くにはどうすればよいですか?にassignステートメントを使用すると、新しいデータがネットワークに接続されたときにgetregの値が壊れる可能性がありますか?面倒な価値のregあるポートを扱っているのですか、それともそれぞれにバスを作成する必要がありますか?inoutinputoutput

4

1 に答える 1

6

regにassignステートメントを使用する場合...

このステートメントは実際には意味がありません。regへの割り当ては行わず、wireへの割り当てを行います。

入出力ワイヤを駆動する簡単な例:

inout wire bidir_wire;

reg drive_value;
reg drive_enable;
reg something;

assign bidir_wire = drive_enable ? drive_value : 1'bz; 

always @(posedge clk) begin
    drive_value  <= ... ;  //assign a drive value based on some criteria
    drive_enable <= ...;
    something    <= bidir_wire; //do something with the input value
end
于 2012-09-12T18:34:57.183 に答える