乘法器,不能用乘号直接表示,略坑呀
坑归坑,做还是要做的
思路:首先乘法分为有符号乘与无符号乘,所以建立两个module分别运算有符号与无符号。然后在总module中用case语句判断输出应赋的值。
- 有符号乘法可以用booth算法计算
- 无符号乘法只能用原码乘法 !
实验注意:
- if语句和case语句都只能用于always语句内部,如果要在always语句之外应用条件语句,可用三目运算符?:如下:assigndata = ( sel ) ? a : b;
- 循环语句 for(i = 0; i < n; i++)中的 i++ 在Verilog中是不可以直接使用的,需要变为i = i + 1;。
- 在 module1 中调用 module2 ,并需要将module2的输出储存的时候,存储中间变量不能为reg,而应为wire!!!否则将会出现如下错误 :
Illegal output or inout port connection for port 'data_out1'.
4. 但是输入并不需要置于wire型,且如果输入需要改动,则必须是reg型的,否则会报错如下:Illegal reference to net "data_in1".