使用" *"对于二进制数的乘法,只给我加,为什么? (代码在这里)

时间:2016-02-09 11:11:43

标签: verilog integer-arithmetic

我用"进行学习操作。 +"," - "和" *",加法和减法效果很好,但乘法只给我添加,链接代码:

http://www.edaplayground.com/x/NvT

我检查了代码,无法理解发生了什么。我给了结果变量足够的空格(位)。

BTW,它是一个用于定点操作的代码,包括小数,但所有内容都按整数计算。

1 个答案:

答案 0 :(得分:2)

您的选择信号仅为1位 然后当你设置select = 2时,它指定低位2(2'b10),即0 您应该通过以下方式更改选择声明:

input [1:0] select; // In the module  
reg   [1:0] select; // In the testbench

为避免此类错误,我建议您使用完整的值表示法:

x'tnnn...nnn

其中x是信号的宽度,t是类型(d表示十进制,h表示六进制,b表示二进制,...)和nnn ... nnn指定类型中的值。

例如,对于十进制值2,您将有几个在某些情况下有意义的符号:

2'd2 //2 bits decimal
2'h2 //2 bits hexadecimal  
2'b10//2 bits binary

有关这些表示法的更多信息,请阅读this pdf