我刚刚开始使用verilog。我正在看一些有人写的浮点乘法的示例代码,我遇到了这个……
if ($signed(b_e == -1023) && (b_m == 0)) begin
z[63] <= 1;
z[62:52] <= 2047;
z[51] <= 1;
z[50:0] <= 0;
state <= put_z;
end我只是想知道$signed是什么。我试着用谷歌搜索它,但我只得到了一堆关于符号数学的结果(不是关于这个函数)。我以为以$开头的函数只适用于测试平台代码。这个函数是做什么的?另外,有没有可以获取verilog函数列表的地方?
发布于 2015-12-13 14:26:33
有许多Verilog系统函数可用于综合以及测试台。大多数可综合函数执行某种算术或逻辑转换。SystemVerilog已经用强制转换或内置方法替换了大部分$functions。
在这个例子中,使用$signed对我来说没有任何意义,因为比较的结果总是一个1但无符号的值,并且这个结果将与另一个1位表达式进行and‘运算。所以$signed什么也不做。只有当需要将值扩展到更大的宽度时,或者在关系操作中,将值转换为signed才有意义。
您可以在Language Reference Manual (LRM)中找到函数列表。
https://stackoverflow.com/questions/34247753
复制相似问题