乘法器EDAWord文件下载.docx
- 文档编号:15828621
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:7
- 大小:91.32KB
乘法器EDAWord文件下载.docx
《乘法器EDAWord文件下载.docx》由会员分享,可在线阅读,更多相关《乘法器EDAWord文件下载.docx(7页珍藏版)》请在冰豆网上搜索。
“读入”信号为“1”时开始读数,信号为“0”时停止读数;
2)乘数为位宽16bit的二进制有符号数;
3)两个16bit乘数先后经1bit位宽端口串行输入系统;
4)两个乘数的16bit均输入完成后送交后续模块做乘法运算;
5)乘法运算部分要求利用流水线架构实现;
乘法结果保留24bit;
6)结果输出时,有指定管脚给出指示信号;
7)有“同步复位”端口(1bit),此端口输入“1”后,整个系统强制回归到初始状态;
二、方案设计与论证:
2.1组合电路乘法器
组合电路乘法器采用了很多的寄存器和加法器进行运算,占用了很大的资源,稳定性也比较低,思路复杂难与设计。
2.2基于时序电路的位移相加型16位硬件乘法器
基于时序电路的位移相加型16位硬件乘法器从工程实际设计上来说,它往往会利用时序逻辑设计的方法来实现,属于时序逻辑范畴。
其思路清析,好理解,稳定性较高,具有很好的工程实际性,因此选用本方案。
三、基于时序电路的位移相加型16位硬件乘法器基本原理:
该乘法器是由16位加法器构成的以时序方式设计的16位乘法器。
其乘法原理是:
乘法通过逐项移位相加原理来实现,从被乘数的最低位开始,
若为1,则乘数左移后与上一次的和相加;
若为0,左移后以全零相加,直至被乘数的最高位。
从图10-2的逻辑图及其乘法操作时序图图1(示例中的相乘数为C6H和FDH)上可以清楚地看出此乘法器的工作原理。
图2中,START信号的上跳沿及其高电平有两个功能,即32位寄存器清零和被乘数A[15..0]向移位寄存器SREG16B加载;
它的低电平则作为乘法使能信号。
CLK为乘法时钟信号。
当被乘数被加载于16位右移寄存器SREG16B后,随着每一时钟节拍,最低位在前,由低位至高位逐位移出。
当为1时,1位乘法器ANDARITH打开,16位乘数B[15..0]在同一节拍进入16位加法器,与上一次锁存在16位锁存器REG16B中的高16位进行相加,其和在下一时钟节拍的上升沿被锁进此锁存器。
而当被乘数的移出位为0时,与门全零输出。
如此往复,直至16个时钟脉冲后,最后乘积完整出现在REG32B端口。
在这里,1位乘法器ANDARITH的功能类似于1个特殊的与门,即当ABIN为‘1’时,DOUT直接输出DIN,而当ABIN为‘0’时,DOUT输出全“0000000000000000”。
图116位移位相加乘法器运算逻辑波形图
图216位乘法器逻辑原理图
四、FPGA的乘法器各个模块设计:
基于时序电路的位移相加型16位硬件乘法器包括:
16位加法器ADDER16、1位乘法器ANDARITH、32位锁存器(右移寄存器)REG32B、16位右移寄存器SREG16B。
4.116位加法器(ADDER16):
LIBRARYIEEE;
--16位加法器
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYADDER16IS
PORT(B,A:
INSTD_LOGIC_VECTOR(15DOWNTO0);
S:
OUTSTD_LOGIC_VECTOR(16DOWNTO0));
ENDADDER16;
ARCHITECTUREbehavOFADDER16IS
BEGIN
S<
='
0'
&
A+B;
ENDbehav;
4.21位乘法器(ANDARITH):
--1位乘法器
ENTITYANDARITHIS--选通与门模块
PORT(ABIN:
INSTD_LOGIC;
DIN:
DOUT:
OUTSTD_LOGIC_VECTOR(15DOWNTO0));
ENDANDARITH;
ARCHITECTUREbehavOFANDARITHIS
BEGIN
PROCESS(ABIN,DIN)
FORIIN0TO15LOOP--循环,完成8位与1位运算
DOUT(I)<
=DIN(I)ANDABIN;
ENDLOOP;
ENDPROCESS;
4.332位锁存器(REG32B):
--32位锁存器/右移寄存器
ENTITYREG32BIS
PORT(CLK,CLR:
D:
INSTD_LOGIC_VECTOR(16DOWNTO0);
Q:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDREG32B;
ARCHITECTUREbehavOFREG32BIS
SIGNALR32S:
STD_LOGIC_VECTOR(31DOWNTO0);
PROCESS(CLK,CLR)
IFCLR='
1'
THENR32S<
=(OTHERS=>
'
);
--清零信号
ELSIFCLK'
EVENTANDCLK='
THEN--时钟到来时,锁存输入值,并右移低8
R32S(14DOWNTO0)<
=R32S(15DOWNTO1);
--右移低8位
R32S(31DOWNTO15)<
=D;
--将输入锁到高8位
ENDIF;
Q<
=R32S;
4.416位右移寄存器(SREG16B):
--16位右移寄存器
ENTITYSREG16BIS
PORT(CLK,LOAD:
QB:
OUTSTD_LOGIC);
ENDSREG16B;
ARCHITECTUREbehavOFSREG16BIS
SIGNALREG16:
STD_LOGIC_VECTOR(15DOWNTO0);
PROCESS(CLK,LOAD)
IFLOAD='
THENREG16<
=DIN;
ELSIFCLK'
THEN
REG16(14DOWNTO0)<
=REG16(15DOWNTO1);
QB<
=REG16(0);
--输出最低位
五、仿真结果:
图3仿真结果
六、原理图:
图4原理图
七、心得体会:
EDA实用教程一门很有些意义的课程。
从最初的一步一步的学习,让我学到更多,对计算机的最底层有了更深一步的了解。
在做这个课程设计时,比想象的更加困难些,虽然通过许多途径找到了相关的资料,但是实现着实不简单。
对于我来说写程序是一个比较困难的事情,所以做这个课程设计确实很纠结。
不过做完这个课程设计,我学到了很多,在编程方面也有了一定的提升。
这门课程设计必须理论和实践相结合。
整个的设计过程中,要充分利用软件工程中的模块化设计思想,这样使设计减少了许多繁杂的问题,使程序看起来更加明了,不易混乱。
任何事情不可能一下子完成,程序的实现更是要一步一步来完成,急于求成,很大程度上会增加软件开发的难度,造成开发过程中不必要的麻烦。
只要坚持去做,努力去做,就会有收获。
我在进步,也会继续进步。
在经过那段设计困难时期后,经过查阅大量的参考书籍,同学之间不断的探讨以及老师的细心讲解,及时的指导后,设计的思路终于有了眉目。
这次课程设计,给了我们将学过的理论知识付诸实践的机会,让我发现,理论和实践其实确实是不一样的。
通过编写程序,增加了学习的积极性和趣味性。
通过课程实践,巩固加深对课堂教学内容的理解,提高我的VHDL设计能力,培养克服困难的毅力和精神。
参考文献:
[1]赵倩.基于流水线重构技术的16×
16位乘加器的设计.微计算机信息,2006
(2)
[2]潘松.黄继业.EDA技术实用教程VHDL版(第四版).科学出版社,2011.11
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 乘法器 EDA