verilog: 看代码时遇一问题:把两个12位的数扩展成13位相加,为啥在前面补最高位,不应该补0吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog: 看代码时遇一问题:把两个12位的数扩展成13位相加,为啥在前面补最高位,不应该补0吗?相关的知识,希望对你有一定的参考价值。

默认的reg类型是unsigned。所以需要程序员自己判断这个变量是不是有可能是负数。有可能的话就需要做符号扩展。就是你看见的东西。
如果声明成signed reg的话,就不需要做扩展了,只需要保证被赋值的变量位数够用就行了。追问

如果原来的符号位为1,那么数不是变了吗?如1_1011(-11)变成11_1011(-27)

追答

你写的数都是-5. 取反加一。

追问

也就是说我们处理的数据都是以补码形式表示的

参考技术A 这样应该是减法吧,变成补码相加的 参考技术B 是不是 有符号位的加法,最高位可能代表符号吧?
最好贴出上下文看看。追问

如果原来的符号位为1,那么数不是变了吗?如1_1011(-11)变成11_1011(-27)

追答

关键代码贴出来看看啊,否则怎么帮你分析?

以上是关于verilog: 看代码时遇一问题:把两个12位的数扩展成13位相加,为啥在前面补最高位,不应该补0吗?的主要内容,如果未能解决你的问题,请参考以下文章

verilog中符号位的扩展问题

Verilog中,判断两个数是不是相等,一个数16位,一个数17位,16位的能自动补0吗?

FPGA /XILINX / Verilog HDL溢出了?详见补充问题

问题 I: 夫子云游

求verilog语言分别编写一个8位的ram和rom存储器

多周期cpu设计(verilog)