$signed()函数
返回有符号的值,值得注意的是verilog中的负数其实是{1’b1,pos_num},而并非高级语言中的补码。使用中最好通过增加$signed{1’b符号,正数}来实现转换以避免错误。
是补码,之前测错了,改正后未同步csdn,$signed{1’b0,num}只会扩展为正数,扩展位宽也是因符号位的增加防止溢出错误,感谢_Celeste_指出
此外在对signed wire 或signed reg 赋值时,右侧的所有变量最好全部加上$signed函数转换,以防止遗漏,造成数据错误
signed变量移位操作时最好使用<<<和>>>,防止对符号位进行操作,导致数据出错