【发布时间】:2017-05-06 13:15:48
【问题描述】:
我在使用 Verilog 模块时遇到问题,我需要在该模块中检查固定点数是否在设定范围内,但出现意外行为。这是我想要完成的简化版本:
reg signed [4:0] signedmaxBound = 5'sb01010; // 10
reg signed [4:0] currentValue = 5'sb00000; // 0
if (currentValue > -maxBound & currentWeight < maxBound)
// Execute Code
我只想知道这段代码是否能完成预期的任务(我已经消除了包含这段代码的模块的问题)。我不确定 -maxBound 是否会正确执行二进制补码运算来表示负值。
此外,我不确定比较运算符是否生效。即在这种简化格式中,10 由 01010 表示,-15 由 10000 表示。10 > -15 但 01010 不大于 10000。
【问题讨论】:
-
是否应该将signedmaxBound 称为maxBound?减号可能是你的问题,也许做 (0 - maxBound) 看看是否有效?
标签: verilog system-verilog fixed-point