为了记录,我是一个完整的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;
我知道如何从公共汽车上读取东西,但我该怎么写东西呢?如果我对reg
使用assign语句,当新数据进入线路时,reg
的值是否会被破坏?处理一个值得麻烦的inout
端口,还是应该为每个端口制作input
和output
总线?
答案 0 :(得分:6)
如果我对reg ...使用assign语句
这个陈述没有用,你不做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