用“*”做二进制数的乘法,只得到加法,为什么? (代码在这里)

Using " * " for multiplication of binary numbers, only gives me addition, why? (Code here)

我正在学习“+”、“-”和“*”的运算,加法和减法效果很好,但乘法只给我加法,link代码:

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

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

顺便说一句,它是用于包括小数在内的定点运算的代码,但所有内容都按整数计算。

你的select信号只有1bit。
然后,当您设置 select = 2 时,它会分配 2(2'b10) 的低位,即 0.
您应该通过 :

更改 select 声明
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