Verilog输入输出线有问题
记录在案,我是一个完全的Verilog新手。我正在编写一个使用一些双向总线的模块Verilog输入输出线有问题,verilog,Verilog,记录在案,我是一个完全的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 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
端口是否值得这么麻烦,还是我应该为每个端口创建输入
和输出
总线
如果我对注册表使用assign语句
这句话没有什么意义,你不给regs赋值,你给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
inout-wire-bidir\u-wire;
reg驱动_值;
reg drive_enable;
注册某物;
分配bidir\u导线=驱动器\u启用?驱动_值:1'bz;
始终@(posedge clk)开始
驱动器值因此,尽管分配给drive\u value
(这反过来反映在bidir\u wire
)中,您仍然可以读取bidir\u wire
?@AndyShulman的旧值,很抱歉,这些语句是非阻塞的。因此,每当时钟边缘上升时,bidir_wire的旧值被锁存到寄存器'something'中,而drive_值的新值被锁存到寄存器'something'中,从而覆盖该线。