使用QuartusII(Verilog语言)进行四种乘法器的仿真实现

使用QuartusII(Verilog语言)进行四种乘法器的仿真实现

1、并列乘法器(使用“X”实现)
原理图如下:
使用QuartusII(Verilog语言)进行四种乘法器的仿真实现_第1张图片
被乘数A=A7A6A5A4A3A2A1A0,乘数B=B7B6B5B4B3BB1B0,所得乘积为十六位数由P=P15P14P13……P1P0表示。阵列乘法器由8行8列的细胞模块组成,其中每个细胞模块就是封装好的全加器,64个全加器连接后组成阵列乘法器。
Verilog语言实现:
使用QuartusII(Verilog语言)进行四种乘法器的仿真实现_第2张图片
仿真图像:
使用QuartusII(Verilog语言)进行四种乘法器的仿真实现_第3张图片资源耗用情况:
使用QuartusII(Verilog语言)进行四种乘法器的仿真实现_第4张图片
使用QuartusII(Verilog语言)进行四种乘法器的仿真实现_第5张图片
可见:EP2C70拥有300个嵌入式硬件乘法器单元,Quartus ii综合并行乘法器时自动采用嵌入式乘法器来实现,因此仅耗用了一个逻辑单元和一个九位的嵌入式乘法器单元。如果把器件改成Cyclone系列的EP1C3,则由于该器件没有内嵌硬件乘法器,综合实现并行乘法器所耗用的逻辑单元数需要106个。
并行乘法器可以看作是纯组合逻辑电路,依靠组合逻辑实现两数相乘,这种方法能在输入数据改变时立即得到相乘结果,延时很短,但是耗用的资源随操作数位数的增加而迅速变多。并行乘法器实现代码非常简短,适用于器件内有嵌入式硬件乘法器的情况。
虽然这种思路简单但应用全加器数目多,以下介绍几种乘法器,应用全加器较少,可以实现降低功耗的目的。
2、移位相加乘法器
原理及优缺点:
1.移位相加乘法器的原理
当两个 8位数做乘法运算时 ,一共需实现 8次加法运算和8次移位运算。根据乘数末位的值来判断被乘数是否与原来的部分积相加,运算从乘数的最低位开始,如果乘数等于1,则需要加上被乘数右移一位,然后形成新的部分积,同时把乘数右移一位; 如果乘数等于0,则需要加上零值后右移一位,然后形成新的部分积,同时将乘数右移一位,等到运算到乘数的最高位结束,得到最终的乘积结果。
使用QuartusII(Verilog语言)进行四种乘法器的仿真实现_第6张图片
2.优点:
占用资源较少,主要在低速信号处理中。
3.缺点:
串行乘法器的速度比较慢,一个结果输出需要更多的时钟周期。在高位宽的乘法运算中非常明显。
Verilog代码:
使用QuartusII(Verilog语言)进行四种乘法器的仿真实现_第7张图片
仿真结果:
使用QuartusII(Verilog语言)进行四种乘法器的仿真实现_第8张图片
3、查找表乘法器
原理:
查找表乘法器先将乘法的所有可能结果存储起来,然后将两个相乘的数据组合起来作为“地址”找到相应的结果。例如:
设A,B为两个2位二进制数,则A,B各有4种取值可能,乘积有4*4=16种可能(排除重复的其实只有8种可能),我们先将{A,B}对应的16种可能结果存储起来,然后对于每一特点的输入组合{A,B},找到对应的输出即可。该方式速度很快,只取决于读取存储器的速度,但是预存结果要占用较多资源,因此是面积换取速度思想的体现。
verilog语言:
使用QuartusII(Verilog语言)进行四种乘法器的仿真实现_第9张图片
仿真结果:
使用QuartusII(Verilog语言)进行四种乘法器的仿真实现_第10张图片
4、加法树乘法器:
原理: 这个乘法器是先使用乘法表达式的相乘形式,然后把每一项表示出来。然后每一列就可以用全加器实现,分成多层来做,因为每个全加器只能有a,b,clk三个一位的输入。然后接着逐层算,最后算到只有一位大小的时候就直接相加。
原理图如下:
使用QuartusII(Verilog语言)进行四种乘法器的仿真实现_第11张图片Verilog语言:
使用QuartusII(Verilog语言)进行四种乘法器的仿真实现_第12张图片
使用QuartusII(Verilog语言)进行四种乘法器的仿真实现_第13张图片仿真结果:
使用QuartusII(Verilog语言)进行四种乘法器的仿真实现_第14张图片数字电路降低功耗的方式是指优化电路图,verilog语言只是描述电路的!
QuartusII操作演示可看同昵称bilibili账户。

你可能感兴趣的:(verilog)