Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Binary 在Verilog HDL中,如何最好地表示计数器和比较器中使用的负二进制数?_Binary_Verilog_Negative Number_Dac - Fatal编程技术网

Binary 在Verilog HDL中,如何最好地表示计数器和比较器中使用的负二进制数?

Binary 在Verilog HDL中,如何最好地表示计数器和比较器中使用的负二进制数?,binary,verilog,negative-number,dac,Binary,Verilog,Negative Number,Dac,我一直在设计一个Delta-Sigma数模转换器,在处理我的(Sigma)计数器和(Delta和Vref)比较器中的有符号数时遇到了困惑和绝望 我曾尝试使用带符号2的补码,但编译器似乎没有注意到我这样做,这很可能是我自己的错误 所以基本上我的问题是,(在Verilog中)我如何表示负数,使它们可以在计数器中使用(因此可以进行上下计数)?我知道,必须声明将保存签名数字的计数器寄存器reg signed[:0] 谢谢! 加文:我对你的问题不是很清楚。有些编译器可能无法直接处理签名寄存器,因为如果我没

我一直在设计一个Delta-Sigma数模转换器,在处理我的(Sigma)计数器和(Delta和Vref)比较器中的有符号数时遇到了困惑和绝望

我曾尝试使用带符号2的补码,但编译器似乎没有注意到我这样做,这很可能是我自己的错误

所以基本上我的问题是,(在Verilog中)我如何表示负数,使它们可以在计数器中使用(因此可以进行上下计数)?我知道,必须声明将保存签名数字的计数器寄存器
reg signed[:0]

谢谢!
加文:我对你的问题不是很清楚。有些编译器可能无法直接处理签名寄存器,因为如果我没记错的话,它是Verilog 2001的一个功能。但一般来说,如果你使用数字逻辑来处理有符号的数字,你就不会有问题。例如,如果您使用加法器ip,只需提及输入是有符号的数字。对于模拟器,您可以选择所需的数据类型,通常通过选择寄存器/值,右键单击波形窗口并更改类型

最后,如果您必须自己创建逻辑,只需使用符号扩展即可。假设您使用的是4位值


-5将是11111 011,5将是00000 101。因此可以看到,对于负数,MSB为1,对于正数,MSB为零。使用此选项,您可以解释代码中的数字,但只需确保大小大于您想要使用的大小,这样就不会发生溢出。

请显示一些代码。您所说的“使用带符号2的补码”是什么意思?二补是一种自然的加法或减法<代码>总和=a-b是所有需要的。即使没有声明它们是有符号的,也仍然会执行两个互补运算。添加一个您尝试过的代码示例将有助于澄清。逻辑是指设计中的数字逻辑,如加法器、多路复用器等。对于@EML的混淆,我深表歉意