Hem*_*ava 3 verilog system-verilog
我一直以为总线符号是这样注释的:
input bus[MSB:LSB]
Run Code Online (Sandbox Code Playgroud)
其中 MSB >= LSB。
但最近,我被告知这也是可能的:
wire LSB >= MSB.
Run Code Online (Sandbox Code Playgroud)
这是真的吗?
如果是这样,那么合成器工具如何获取总线大小等?他们是否认为哪个指数大就是MSB?
是的,位编号的两个方向都可以在声明中使用。但是,在进行位选择时必须使用相同的顺序。例如
wire [0:15] bus;
reg [15:0] data;
assign bus [3:6] = data[3:0];
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,业界使用第二种表示法(msb > lsb),出于一致性原因,鼓励使用第二种表示法。然而,在某些情况下,做相反的事情是很方便的。