Verilog接线注册



我有一个双向总线,我可以将输入读取到导线中,但我很难对它们进行逻辑运算,并将它们作为输出分配回总线,或者将它们连接到寄存器中,以便处理值。

感谢所有的帮助和回应。

Jozsó

verilog中有两类基本变量:nets和regs。reg用于在过程块中进行计算,nets用于连接不同的实体,如模块实例或UDP。

因此,它们具有不同的功能、不同的规则和运算符。因此,导线是通过模块实例端口和/或连续的assign运算符连接的,这在理想情况下表示导线连接。

基本规则是

  1. net值可以用作寄存器表达式的rhs。因此,它可以被分配给过程(例如始终(块中的寄存器
  2. reg值可以在连续的assign运算符中或在输出端口连接中分配给网络
  3. net不能在始终块内分配任何值
  4. reg不能通过连续分配进行分配

解决它的基本方案如下:

wire --> always block ( reg ) --> assign (wire)

这里有一个例子:

module top (bus, en);
inout wire bus;
input wire en;

reg tmp;

always @*
tmp = bus;
assign bus = en ? tmp : 1'bz;
endmodule

相关内容

  • 没有找到相关文章

最新更新