1、几种不同的赋值方式

在Verilog编码过程中,经常会给信号赋值,赋值有时候需要指定信号位宽,如下所示。Verilog 2005 版本支持使用省略位宽的方式赋值。

//采用常数位宽直接赋值
wire [512-1:0] func_id;
assign func_id = 512'b0 ;
//采用宏定义 指定位宽
// `define  PCIE_FUNC_ID 512 ;
wire [512-1:0] func_id;
assign func_id = {(`PCIE_FUNC_ID){1’b0}}; 

//省略写法,省略位宽512bit
wire [512-1:0] func_id;
assign func_id = ’b0 ;

2、采用省略位宽的方式赋值

Verilog 2005 版本支持使用省略位宽的方式赋值,’b,’d,’h,采用省略位宽的方式可以向左主动补齐,如果省略了进制符合b/d/h/o,则默认是十进制。

Example 4—Automatic left padding 
reg [11:0] a, b, c, d; 
initial begin 
a = 'h x; // yields xxx 
b = 'h 3x; // yields 03x 
c = 'h z3; // yields zz3 
d = 'h 0z3; // yields 0z3 
end 
reg [84:0] e, f, g,j; 
e = 'h5; // yields {82{1'b0},3'b101} 
f = 'hx; // yields {85{1'hx}} 
g = 'hz; // yields {85{1'hz}}
j = ‘5 ; // yields {82{1'b0},3'b101} //新增 

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐