我一直在设计一个 Delta-Sigma DAC,并且对处理我的(sigma)计数器和(delta 和 Vref)比较器中的有符号数感到困惑和绝望。
我曾尝试使用带符号的 2 的补码,但 EDAcompiler 在我这样做时似乎没有注意到,这很可能是我自己的错误!
所以基本上我的问题是,我如何(在 Verilog 中)以可以在计数器中使用的方式表示负数(因此可以向上和向下计数)?我知道必须声明一个保存有符号数字的计数器寄存器reg signed [:0]
谢谢!加文
我一直在设计一个 Delta-Sigma DAC,并且对处理我的(sigma)计数器和(delta 和 Vref)比较器中的有符号数感到困惑和绝望。
我曾尝试使用带符号的 2 的补码,但 EDAcompiler 在我这样做时似乎没有注意到,这很可能是我自己的错误!
所以基本上我的问题是,我如何(在 Verilog 中)以可以在计数器中使用的方式表示负数(因此可以向上和向下计数)?我知道必须声明一个保存有符号数字的计数器寄存器reg signed [:0]
谢谢!加文
好吧,我对你的问题不是很清楚。一些编译器可能无法直接处理签名寄存器,因为如果我没记错的话,它是 Verilog 2001 的一个特性。但通常,如果您使用适用于有符号数字的数字逻辑,您应该不会有问题。例如,如果您使用加法器 ip,只需提及输入是带符号的数字。至于模拟器,你可以选择你需要的数据类型,一般通过选择寄存器/值,在波形窗口右击,改变类型。
最后,如果您必须自己创建逻辑,只需使用符号扩展。所以假设您正在使用 4 位值
-5 是 11111011,5 是 00000101。所以你可以看到负数的 MSB 为 1,正数的 MSB 为 0。使用它,您可以解释代码中的数字,但只需确保大小大于您要使用的大小,这样就不会发生溢出。