移位相加8位硬件乘法器_第1页
移位相加8位硬件乘法器_第2页
移位相加8位硬件乘法器_第3页
移位相加8位硬件乘法器_第4页
移位相加8位硬件乘法器_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、EDA技术课程大作业 设计题目:移位相加8位硬件乘法器电路设计院 系: 电子信息与电气工程学院 学生姓名: 学 号: 200902070008 专业班级: 电子信息专升本 2010 年 12 月 03 日9移位相加8位硬件乘法器电路设计1. 设计背景和设计方案1.1设计背景硬件乘法器,其基础就是加法器结构,它已经是现代计算机中必不可少的一部分。乘法器的模型就是基于“移位和相加”的算法。乘法器应用很广泛,其在数字信号处理中经常用到,如用在FFT,数字上下变频、数字滤波、优化卷积、相关以及矩阵运算等算法中。随着科技的发展,我们对乘法器的技术要求越来越高,随着乘数和被乘数位数的增加,乘法器电路中的加

2、法器位数也要相应的增加,我们可以在乘法器中开发出更快的加法阵列。硬件乘法器的快速发展已是现在社会需要的必然。1.2设计方案1内容:由8位加法器构成的以时序逻辑方式设计的8位乘法器乘法通过逐向移位加原理来实现,从被乘数的最低位开始,若为1,则乘数左移与上一次和相加;若为0左移后以全零相加,直至被乘数的最高位2设计思路:纯组合逻辑构成的乘法器虽然工作速度比较快,但过于占用硬件资源,难以实现宽位乘法器,基于PLD器件外接ROM九九表的乘法器则无法构成单片系统,也不实用。这里绍由八位加法器构成的以时序逻辑方式设计的八位乘法器,具有一定的实用价值,而且由FPGA构成实验系统后,可以很容易的用ASIC大型

3、集成芯片来完成,性价比高,可操作性强。其乘法原理是:乘法通过逐项移位相加原理来实现,从被乘数的最低位开始,若为1,则乘数左移后与上一次的和相加;若为0,左移后以全零相加,直至被乘数的最高位。3设计总体框图框图的说明1控制器是一个乘法器的控制模块,用来接受实验系统上的连续脉冲。2锁存器起锁存的作用,它可以锁存8位乘数。3移位寄存器起移位的作用,便于被乘数可以逐位移出。4乘法器功能类似一个特殊的与非门。5加法器用于8位乘数和高8位相加。2. 方案实施2.1 SREG8B(移位寄存器)的模块1SREG8B模块的功能:SREG8B是一个移位寄存器。有三个输入端CLK,LOAD,DIN7.0);当被乘数

4、被加载于8位右移寄存器后,随着每一时钟节拍,最低位在前,由低位至高位逐位移出。有一个输出端(QB)。2VHDL程序代码如下LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SREG8B ISPORT(CLK,LOAD:IN STD_LOGIC; DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);QB:OUT STD_LOGIC);END SREG8B;ARCHITECTURE behav OF SREG8B IS SIGNAL REG8:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINPROCESS(CLK

5、,LOAD)BEGINIF CLK'EVENT AND CLK='1'THENIF LOAD='1'THEN REG8<=DIN;ELSE REG8(6 DOWNTO 0)<=REG8(7 DOWNTO 1);END IF;END IF;END PROCESS;QB<=REG8(0);END behav;2.2 ADDER8B(8位加法器)模块1.ADDER8B模块的功能:ADDER8B是一个8位加法器。有三个输入端(CIN,A7.0,B7.0),其中A7.0是被乘数.B7.0是乘数。ADDER8B起到使两个数相加的作用;即在加法的基础

6、上才能相乘。所以8位加法器是一个必不可少的模块。2VHDL程序代码如下LIBRARY IEEE;USE IEEE . STD_LOGIC_1164.ALL;USE IEEE . STD_LOGIC_UNSIGNED.ALL;ENTITY ADDER8B ISPORT(CIN :IN STD_LOGIC;A ,B:IN STD_LOGIC_VECTOR(7 DOWNTO 0);S:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);COUT:OUT STD_LOGIC);END ADDER8B;ARCHITECTURE BEHAV OF ADDER8B ISSIGNAL SINT

7、, AA, BB:STD_LOGIC_VECTOR(8 DOWNTO 0);BEGINAA<='0'&A; BB<='0'&B; SINT<=AA+BB+CIN;S<=SINT(7 DOWNTO 0);COUT<=SINT(8);END BEHAV;2.3 ARICTL(控制器)模块1ARICTL模块的功能:ARICTL是一个乘法器的控制模块。为了接受实验系统上的连续脉冲。有两个输入端(CLK,START);其中START信号的上跳沿及其高电平有两个功能,即16位寄存器清零和被乘数A7.0向移位寄存器SREG8B加载

8、;它的低电平则作为乘法使能信号。CLK为乘法时钟信号。有三个输出(CLKOUT,RSTALL,ARIEND)。2VHDL程序代码如下LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ARICTL IS PORT(CLK,START:IN STD_LOGIC; CLKOUT,RSTALL,ARIEND:OUT STD_LOGIC);END ARICTL;ARCHITECTURE BEHAV OF ARICTL IS SIGNAL CNT4B:STD_LOGIC_VECTOR(3 DOWN

9、TO 0);BEGINRSTALL<=START; PROCESS(CLK,START)BEGIN IF START ='1'THEN CNT4B<="0000"ELSIF CLK'EVENT AND CLK='1'THEN IF CNT4B<8 THEN CNT4B<=CNT4B+1;END IF;END IF;END PROCESS;PROCESS(CLK,CNT4B,START)BEGINIF START='0'THEN IF CNT4B<8 THEN CLKOUT<= CLK

10、;ARIEND<='0' ELSE CLKOUT<='0'ARIEND<='1'END IF;ELSE CLKOUT<=CLK;ARIEND<='0'END IF; END PROCESS;END BEHAV;2.4 ANDARITH(乘法器)模块1.ANDARITH模块的功能:ANDARITH是一个1位乘法器。有两个输入端(ABIN,DIN7.0).有一个输出端.DOUT7.0。ANDARITH起乘法的作用。它类似于一个特殊的与门。即当ABIN为1时,DOUT直接输出DIN,而当ABIN为0时,DO

11、UT输出“00000000”。2VHDL程序代码如下LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ANDARITH ISPORT(ABIN:IN STD_LOGIC; DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ANDARITH;ARCHITECTURE BEHAV OF ANDARITH ISBEGINPROCESS(ABIN,DIN)BEGINFOR I IN 0 TO 7 LOOPDOUT(I)<=DIN(I)AND A

12、BIN;END LOOP;END PROCESS;END BEHAV;2.5 REG16B(锁存器)模块1.REG16B模块的功能:REG16B是一个16位锁存器。有三个输入端(CLK,CLR,D8.0);其中CLK为时钟信号。有一个输出端(Q15.0)。16位锁存器主要为了锁存一些数,便于以后程序应用。2VHDL程序代码如下LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG16B ISPORT(CLK,CLR:IN STD_LOGIC; D:IN STD_LO

13、GIC_VECTOR(8 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);END REG16B;ARCHITECTURE BEHAV OF REG16B ISSIGNAL R16S:STD_LOGIC_VECTOR(15 DOWNTO 0);BEGINPROCESS(CLK,CLR)BEGINIF CLR='1'THEN R16S<="0000000000000000"ELSIF CLK'EVENT AND CLK='1'THENR16S(6 DOWNTO 0)<=R16S(7

14、 DOWNTO 1); R16S(15 DOWNTO 7)<=D; END IF; END PROCESS; Q<=R16S;END BEHAV;3.结果和结论1.总体设计电路图说明原理图:本乘法器由五个模块组成,其中ARICTL是乘法运算控制电路,它的START信号上的上跳沿与高电平有2个功能,即16位寄存器清零和被乘数A7.0向移位寄存器SREG8B加载;它的低电平则作为乘法使能信号,乘法时钟信号从ARICTL的CLK输入。当被乘数被加载于8位右移寄存器SREG8B后,随着每一时钟节拍,最低位在前,由低位至高位逐位移出。当为1时,一位乘法器ANDARITH打开,8位乘数B7.0

15、在同一节拍进入8位加法器,与上一次锁存在16位锁存器REG16B中的高8位进行相加,其和在下一时钟节拍的上升沿被锁进此锁存器。而当被乘数的移出位为0时,一位乘法器全零输出。如此往复,直至8个时钟脉冲后,由ARICTL的控制,乘法运算过程自动中止,ARIEND输出高电平,乘法结束。此时REG16B的输出即为最后的乘积。2. 时序仿真结果(以下是8位乘法器顶层设计的仿真波形图)从上面的波形图看出,当9FH和FDH相乘时,第一个时钟上升沿后,其移位相加的结果(在REG16B端口)是4F80H,第8个上升沿后,最终相乘结果是9D23H。3.心得体会通过电子设计的数字部分EDA设计,我们掌握了系统的数字

16、电子设计的方法,也知道了实验调试适配的具体操作方法。在设计过程中,我们遇到了各种问题,在老师的指导下和我们自己的努力,克服了各种问题,最后得到了成功。但是我也发现了一些问题,我们无法解决。如:在ARICTL控制器模块中有一个警告,还有在适配后得到频率高的执行速度还要慢一些等等。总之,这次设计使我掌握了很多有用的经验也学到了很多在书本上学不到知识,为以后的学习和工作打下坚实的基础通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在

温馨提示

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

评论

0/150

提交评论