Verilog乘法器

乘法器,不能用乘号直接表示,略坑呀

坑归坑,做还是要做的


思路:首先乘法分为有符号乘与无符号乘,所以建立两个module分别运算有符号与无符号。然后在总module中用case语句判断输出应赋的值。

  1. 有符号乘法可以用booth算法计算
  2. 无符号乘法只能用原码乘法 !

详情点此

实验注意:

  1. if语句和case语句都只能用于always语句内部,如果要在always语句之外应用条件语句,可用三目运算符?:如下:assigndata = ( sel ) ? a : b;
  2. 循环语句 for(i = 0; i < n; i++)中的 i++ 在Verilog中是不可以直接使用的,需要变为i = i + 1;
  3. module1 中调用 module2 ,并需要将module2的输出储存的时候,存储中间变量不能为reg,而应为wire!!!否则将会出现如下错误 :

Illegal output or inout port connection for port 'data_out1'.

4. 但是输入并不需要置于wire型,且如果输入需要改动,则必须是reg型的,否则会报错如下:

Illegal reference to net "data_in1".

posted @ 2016-04-10 19:54  屋中人  阅读(1565)  评论(0编辑  收藏  举报
返回顶部