我正在编写一个verilog模块,它根据两个独立确定的值更新值,并观察到异常行为。我使用定点签名系统来表示每个寄存器中包含的值。
独立计算正负增量,并根据这两个增量的值(res = res + posIncriment - negIncriment)在每个时钟周期更改结果。由于我使用组合逻辑确定负增量,因此它最初表示为正数。这是我想要完成的一个例子:
reg signed [4:0] posIncriment = 5'sb01010; // 10
reg signed [4:0] negIncriment = 5'sb00001; // 01
reg signed [4:0] res = 0;
// At some event, re-evalurate res
res = res + posIncriment + -negIncriment;
但是我得到了垃圾值:(非常感谢任何帮助。