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;

我知道我是如何从公共汽车上读取东西的,但是我如何在上面写东西呢?如果我对 a 使用 assign 语句,当新数据进入网络时reg,该值是否会被破坏?reg处理一个inout端口是否值得麻烦,或者我应该为每个端口制作一个input和和output总线?

4

1 回答 1

6

如果我对 reg 使用分配语句...

这句话没有真正的意义,你不会对 regs 进行分配,而是对电线进行分配。

驱动输入输出线的简单示例:

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 回答