(1.5.2)-4.2 8位乘法器的设计EDA技术_第1页
(1.5.2)-4.2 8位乘法器的设计EDA技术_第2页
(1.5.2)-4.2 8位乘法器的设计EDA技术_第3页
(1.5.2)-4.2 8位乘法器的设计EDA技术_第4页
(1.5.2)-4.2 8位乘法器的设计EDA技术_第5页
已阅读5页,还剩15页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章EDA技术设计与应用提高4.28位乘法器的设计内容提要

8位乘法器的设计:系统设计思路;主要VHDL源程序;仿真结果验证;逻辑综合分析。一、系统设计思路1.乘法器有各种各样的方法,不同的方法,其工作速度和占用的资源是不一样的。比如纯组合逻辑构成的乘法器虽然工作速度比较快,但占用硬件资源多,难以实现宽位乘法器。10111101101100001011101110001111

被乘数乘数位积乘积2.乘法运算的基本原理:乘法通过逐项位移相加原理来实现,从乘数的最低位开始,若为1,则被乘数左移1位后与上一次和相加;若为0,则左移1位后以全零相加,直至乘数的最高位。图1乘法运算的例子在实际的运算操作中,可将上1次的加法和右移,而被乘数则直接与上1次的加法和左对齐相加。图2乘法器的运算原理实例图整个乘法的运算通过4次累加完成,每累加1次右移1位,所得结果称为部分积,

3.由8位加法器构成的、以时序逻辑方式设计的8位乘法器。图38×8位乘法器电路原理图乘法运算的控制电路8位右移移位寄存器乘法运算的与门选通电路8位加法器16位锁存器系统的工作原理:图38×8位乘法器电路原理图部分积的高8位为后续的加法器ADDER8B加A或加0做准备为下次累加运算做准备如此往复,直至八个时钟脉冲后,由ARICTL控制,乘法运算过程自动中止,ARIEND输出高电平,以示乘法结束。4.本乘法器具有一定的实用价值,其优点是节省芯片资源,它的核心元件只是一个8位加法器,其运算速度取决于输入的时钟频率。可利用此乘法器或相同原理构成的更高位乘法器完成一些数字信号处理方面的运算。二、VHDL程序设计1)选通与门模块的源程序ANDARITH.VHD--ANDARITH.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYANDARITHIS --选通与门模块

PORT(ABIN:INSTD_LOGIC;

DIN:INSTD_LOGIC_VECTOR(7DOWNTO0);

DOUT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDENTITYANDARITH;--与门开关--8位输入--8位输出ARCHITECTUREARTOFANDARITHISBEGINPROCESS(ABIN,DIN)ISBEGINFORIIN0TO7LOOP

DOUT(I)<=DIN(I)ANDABIN;ENDLOOP;ENDPROCESS;ENDARCHITECTUREART;--循环,分别完成8位数据与一位控制位的与操作进程的含义是:根据乘数B的某位是1或0,通过1个与运算赋值语句的8次循环,输出乘数A或0,为后面的累加做准备2)16位锁存器的源程序REG16B.VHD--REG16B.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYREG16BIS --16位锁存器

PORT(CLK:INSTD_LOGIC;

CLR:INSTD_LOGIC;

D:INSTD_LOGIC_VECTOR(8DOWNTO0);

Q:OUTSTD_LOGIC_VECTOR(15DOWNTO0)); ENDENTITYREG16B;--锁存信号--清零信号--8位数据输入--16位数据输出ARCHITECTUREARTOFREG16BISSIGNALR16S:STD_LOGIC_VECTOR(15DOWNTO0); --定义16位寄存器

BEGINPROCESS(CLK,CLR)ISBEGINIFCLR='1'THENR16S<="0000000000000000";

ELSIFCLK'EVENTANDCLK='1'THEN

R16S(6DOWNTO0)<=R16S(7DOWNTO1);

R16S(15DOWNTO7)<=D;

ENDIF;ENDPROCESS;Q<=R16S;ENDARCHITECTUREART;--异步复位信号--时钟到来时,锁存输入值--右移低8位--将输入锁到高9位

ELSIFCLK'EVENTANDCLK='1'THEN

R16S(6DOWNTO0)<=R16S(7DOWNTO1);

R16S(15DOWNTO7)<=D;

ENDIF;ENDPROCESS;--时钟到来时,锁存输入值--右移低8位--将输入锁到高9位该运算的本质是形成部分积并进行右移运算。图4部分积的形成及右移运算原理图Q<=R16S;--将保存在信号R16S的中间结果传送到输出端口Q3)8位右移寄存器的源程序SREG8B.VHD--SREG8B.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL; ENTITYSREG8BIS --8位右移寄存器

PORT(CLK:INSTD_LOGIC;

LOAD:INSTD_LOGIC;

DIN:INSTD_LOGIC_VECTOR(7DOWNTO0);

QB:OUTSTD_LOGIC);ENDENTITYSREG8B;--时钟信号--装载信号--数据输入--数据输出ARCHITECTUREARTOFSREG8BISSIGNALREG8B:STD_LOGIC_VECTOR(7DOWNTO0);BEGINPROCESS(CLK,LOAD)ISBEGINIFCLK'EVENTANDCLK='1'THENIFLOAD='1'THENREG8B<=DIN;

ELSEREG8B(6DOWNTO0)<=REG8B(7DOWNTO1);

ENDIF;ENDIF;ENDPROCESS;QB<=REG8B(0); ENDARCHITECTUREART;--用于保存中间运算结果--装载新数据--数据右移--输出最低位该模块实现的功能就是:在乘数B作为数据输入后,随着每一时钟节拍,由低位至高位逐位移出,作为后续与门选通模块ANDARITH的选通信号。4)乘法运算控制器ARICTL的主要功能就是产生乘法运算的复位信号RSTALL,控制时钟信号CLKOUT,乘法结束信号ARIEND。其设计思路就是先用1个进程实现一个8进制计数器,产生周期性变化的控制信号CNT4B,再通过另1个进程,根据周期性变化的控制信号CNT4B和有关输入信号,来控制输出控制信号RSTALL、CLKOUT、ARIEND。搞懂了各底层程序的设计,利用元件例化语句就可组装成顶层的8位乘法器的源程序MULTI8X8。三、仿真结果验证图5MULTI8X8的时序仿真结果8个周期输出延迟Δ四、逻辑综合分析图6MULTI8X8综合后的RTL视图(a)选用EPF10K10TC144-3的资源使用情况(b)选用EP2C8T144C6的资源使用情况图7MULTI8X8逻辑综合后的资源使用情况(a)选用EPF10K10TC144-3的时钟性能;(b)选用EP2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论