verilog 2001标准在有符号数的处理方面做了不少努力,使得verilog 的使用变得更加的方便。
1.首先原1995标准,只有integer 类型支持有符号的处理,有时侯十分不便。现在可以使用signed 关键字
(1)使得reg,net类型也支持有符号的数据处理;
(2)函数的返回值可以是有符号数
如:
reg signed [63:0] data;
EDA中国门户网站a9YR }\
x7q1Q$[b
wire signed [7:0] vector;
]"a)RMCi0input signed [31:0] a;
EDA中国门户网站x#Ue1j6O(y*ax6|
function signed [128:0] alu;
2 增加了操作数的有符号和无符号之间的转换,使用系统函数$signed and $unsigned.
如
reg [63:0] a; //unsigned data type
UoBe\Y^+C"mtc0always @(a) begin
EDA中国门户网站OP
lyh;M^6@,i
result1 = a / 2; //unsigned arithmetic
EDA中国门户网站 ^ s1Ro+a/Y:w
result2 = $signed(a) / 2; //signed arithmetic
7U9C3]bZ0end
3 在说明常量是可以加标记s来说明是有符号还是无符号常量
16'hC501 //an unsigned 16-bit hex value
y
X|"yu016'shC501 //a signed 16-bit hex value
4 增加的算术左移和算术右移运算符>>>和<<<,给需要进行算术移位带来了不少方便
比如D是一个8bit的变量,原内容为8’b10100011
D >> 3 //logical shift yields 8'b00010100EDA中国门户网站wK6r)^e(P[?
D >>> 3 //arithmetic shift yields 8'b11110100