1.位宽
reg [5:0] reg_t;
reg[3:0] reg_t2;
initial begin
reg_t= 4'd12 //6'b001100
reg_t2= 4'd12 //4'b1100
#10;
reg_t=-4'd12 //6'b110100
reg_t2=- 4'd12 //4'b0100
end
2有符号问题
reg_t= -1 //6'b111111
reg_t2= -1 //4'b1111
reg_t=- 4'd12/4 //6'b111101即-3的补码形式
3.parameter和define
`define widA 5
parameter widB=6;
reg [ 3:0] r_test;
r_test=`widA 'd10;//允许
r_test= widB 'd10;//不允许
总结:对于寄存器,存储的都是数值的补码形式,如果被赋值的寄存器位宽小,就会高位截断。如果位宽多,
就会按符号位补齐。如果在不知道位宽的情况下,想将寄存器所有位都为1,直接赋值-1即可。