8位乘法器毕业设计_第1页
8位乘法器毕业设计_第2页
8位乘法器毕业设计_第3页
8位乘法器毕业设计_第4页
8位乘法器毕业设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、黄山学院本科毕业论文本科生毕业论文(设计)8位乘法器的设计姓 名: 吴小东 指导教师: 华婷婷 院 系: 信息工程学院 专 业: 计算机科学与技术 提交日期: 2010/4/30 目 录中文摘要2外文摘要31.绪论41.1概述41.2 vhdl和max+pius简介51.3 实验平台62乘法器初步设计7 2.1 设计思想7 2.2乘法器原理7 2.3乘法器设计流程83. 乘法器具体设计93.1右移寄存器的设计93.2 加法器模块的设计10 3.2.1 4位加法器的设计10 3.2.2 8位加法器的设计113.3 乘1模块设计133.4锁存器模块设计144. 乘法器仿真174.1 8位加法器仿真

2、174.2 乘1模块仿真174.3 锁存器模块仿真184.4 8位乘法器仿真 18结束语19参考文献 20致谢218位乘法器的设计吴小东指导老师:华婷婷(黄山学院信息工程学院,黄山,安徽 245041)摘 要:在微处理器芯片中,乘法器是进行数字信号处理的核心,同时也是微处理器中进行数据处理的关键部件,它已经是现代计算机必不可少的一部分。本文主要是在于如何运用标准硬件描述语言(vhdl)完成八位乘法器,以及如何做二进制位相乘的运算过程。该乘法器是由八位加法器构成的以时序方式设计八位乘法器,通过逐项移位相加来实现乘法功能,并以max+plus ii 软件工具进行模拟,仿真并予以显示。关键字:乘法器

3、;标准硬件描述语言(vhdl);移位相加;max+plus ii 8-bit multiplier designwu xiaodongdirector:hua tingting(college of informationengineering,huangshanuniversity,huangshan,anhui,245041)abstract:in the microprocessor chip, the multiplier is a digital signal processing core microprocessor is also a key component of data

4、 processing, it is already an essential part of the modern computer. this article is on how to use standard hardware description language (vhdl) to complete eight multipliers, as well as how to make the process of a binary bit multiplication operation. the multiplier is composed of eight adder to ti

5、ming approach in designing eight multiplier, achieved by adding the multiplication-by-shift function, and in max + plus ii software tools for simulation, emulation and be displayed.keywords: multiplier; standard hardware description language (vhdl); shift sum; max + plus ii1.绪论1.1概述本课题的设计来源是基于标准硬件描述

6、语言(very high speed integrated circuit hardware description language,vhdl)及max + plus ii(multiple array matrix programmable logic user system)软件开发工具的进行模拟仿真的8位乘法器,用于实现8位移位相加乘法器的乘法运算功能。本课题的研究现状是基于乘法器是定点处理器的主要组成部分,其速度是影响cpu速度的关键因素。乘法器也是数字信号处理(dsp)、系统级芯片(soc)的关键部件。在最新的处理器中乘法器除了直接作为运算部件外,还用于加速地址转换、数组寻址和其他

7、整数操作。随着科研生产地运算速度要求的提高,对乘法器性能的要求也在不断地提升。booth算法、wallace树、cla等技术的出现也使得乘法器设计的技术日益成熟。而不同的应用背景又要求在不同的算法和实现之间进行选择,权衡电路鬼名模和性能,达到特定条件下的最优设计。本次设计的目的就是在掌握移位相加八位乘法器的工作原理,了解并学习掌握vhdl硬件描述语言的设计方法和思想,通过自己学习的vhdl语言结合以前电子电路的设计知识理论联系实际,掌握所学的课程知识,学习vhdl基本单元电路的综合设计应用。通过对八位二进制乘法器的设计,巩固和综合运用所学课程,加深对数字电路和vhdl基本单元的理解,并借助ma

8、x + plus ii软件开发工具这个平台进行仿真,理论联系实际,提高设计能力,提高分析、解决计算机技术实际问题的独立工作能力。通过课程设计深入理解vhdl语言的精髓,达到课程设计的目标,加法器的设计可以加深对门电路的理解,乘法器的设计可以使对计算机怎样工作有了更深了解。本设计的主要难点包括:1)了解乘法器的工作原理和乘法器的各个子模块的功能实现,并分析其内部构造。2)根据设计的功能要求,使用标准硬件描述语言(vhdl)设计出移位相加8位乘法器3)利用max + plus ii软件工具完成8位乘法器的仿真。1.2 vhdl和max+plusii简介 vhdl是超高速集成电路硬件描述语言的中文缩

9、写,它是电子系统硬件行为描述、结构描述、数据流描述的高级语言。它在20世纪80年代的后期出现。最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 ,并于1987年成为ieee的一种标准语言,1993年vhdl重新修订,变得更加完备,形成新的标准。该语言设计技术齐全、方法灵活、功能强大、与制作工艺无关、编程易于共享,所以成为硬件描述语言的主流,成为标准硬件描述语言。vhdl作为eda的重要组成部分,提供了借助计算机进行数字系统设计的一种很好的手段。用vhdl进行有很多优点,vhdl的硬件描述很强,可以用于从门级、电路级直至系统级的描述、仿真、综合和调试

10、。利用vhdl丰富的仿真语句和库函数,对大系统的早期设计,可在远离门级的高层次上进行模拟,以利于设计者确定整个设计结构和功能的可行性。vhdl强大的描述能力和程序结构,使其具有支持多大规模设计进行分解,以及对已有的设计进行再利用的功能。vhdl标准、规范、语法较为严格、便于重复利用和交流。它所具有的类属描述语句和子程序调用等功能,使设计者对完成的设计不必改变程序,只需改变类属于参数或函数,就可改变设计的规模和结构。从asic的设计到pcb系统的设计,vhdl语言都能派上用场,都能够轻易地达成设计供者的要求。目前,vhdl语言已经成为fpgd/cpld编程最常用的工具。max+plusii是美国

11、altera公司自行开发的,一种针对其公司生产的系列cpld和fpga器件的设计、仿真、编程的工具软件。max+plusii是cpld/fpga应用软件中比较典型的一种工具,目前已发行到10.2版本。它所提供的灵活性和高效性事无可比拟的,其丰富的图形界面,辅之以完整的、可即时访问的在线文档,使设计人员能够轻松愉快的使用它。使用max+plusii的设计者不需精通器件内部的复杂结构。设计者可以用自己熟悉的设计工具(如原理图输入或硬件描述语言)建立设计,max+plusii把这些设计转自动换成最终所需的格式。其设计速度非常快。对于一般几千门的电路设计,使用max+plusii,从设计输入到器件编程

12、完毕,用户拿到设计好的逻辑电路,大约只需几小时。设计处理一般在数分钟内内完成。特别是在原理图输入等方面,maxplusii被公认为是最易使用,人机界面最友善的pld开发软件,特别适合初学者使用。在max+plusii上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,具有多平台、全集中化、模块组合式工具软件、硬件描述语言、开放的界面等特点,是设计者能方便地进行设计输入、快速处理和器件编程。1.3实验平台软件环境:1操作系统:windows 72仿真软件:max+plusii硬件环境:1cpu intel2内存 ddr3 2g3硬盘 250gb2

13、乘法器初步设计2.1设计思想 本设计首先要了解乘法器的基本原理 ,我所设计的8位乘法器采用移位和加法来实现,主要用到原码一位乘运算规则。然后对乘法器的进行顶层设计,把乘法器的设计分成几个功能模块,并逐步细化,因此需要了解各个模块的引脚含义以及它们的内部构造,并对各个模块的实现功能进行分析,通过标准硬件描述语言对它们模块进行编程,调试。最后在max+plusii应用软件进行模拟仿真,得出正确的运行结果。2.2乘法器原理8位乘法器可用移位和加法来实现,两个8位数相乘,总共需要执行8次加法运算和8次移位运算。由乘数的末位值确定被乘数是否与原部分积相加,从乘数的最低位开始,若乘数为1,加被乘数,然后右

14、移一位,形成新的部分积,乘数同时右移一位;若乘数为0,加上零值,然后右移一位,形成新的部分积,乘数同时右移一位,直到乘数的最高位为止,从而得出最终的乘积结果。实现原码一位乘法的硬件逻辑结构图如图2-1所示。用寄存器r0存放部分积,r1存放乘数y,并且最低位yn作判断位。r0和r1都具有右移功能并且是连通的,寄存器r2存放被乘数x,加法器完成部分积与位积求和,计数器记录相加移位的操作次数。r0 部分积r1 乘数y yn 计数器 移位控制加法器控制门 控制电路r2 x0 被乘数x图2-1 硬件逻辑结构图8位乘法器的顶层设计主要分成四大功能模块 ,并可根据分解的层次进行设计, 各个功能模块作用介绍如

15、下: 1) 右移寄存器模块:是指寄存器中所存的代码能够在移位脉冲的作用下依次左移或右移。本设计采用的一个8位寄存器,能存放8位二进制代码,需用8个触发器来构成,它可将乘法运算中的被乘数加载于其中,同时进行乘法运算的移位操作。2) 加法器:本设计用到一个8位加法器,主要进行操作数的加法运算。3) 乘1模块:主要实现8位与1位的乘法运算。4) 锁存器:它所实现的功能是把当前的状态锁存起来,使cpu送出的数据在接口电路的输出端保持一段时间锁存后状态不再发生变化,直到解除锁定。本次设计采用16位锁存器,同时也是一个右移寄存器,在时钟信号作用下,进行输入值的移位与锁存。2.3乘法器设计流程 本设计采用移

16、位和加法来实现两个8位二进制数相乘。由乘数的末尾值来确定被乘数是否与原部分积相加,然后右移一位,形成新的部分积,同时,乘数也右移一位,由次低位作新的末位,空出最高位放部分积的最高位。例如被乘数为00000101,乘数为01101111,初始条件下,部分积为0,乘数最低位为1,加被乘数,和为00000101,使其右移一位,形成新的部分积为00000010,乘数同时右移一位,原和最低位1被放到乘数的最高位,此时,乘数最低位为1,加00000101,和为00000111,使其右移一位,形成新的部分积为0000011,依次类推,循环8次,总共需要进行8次相加和8次移位操作,最终得出乘积结果。其设计流程

17、图如2-2所示: 开始乘数为1检查乘数恩将被乘数寄存器与乘积寄存器的左半部分相加,并将结果写回乘积寄存器的左半部分乘数为0将乘积寄存器右移1位否是 完成是否已循环执行了8次?将乘数寄存器右移1位 图2-2 乘法器设计流程图3乘法器设计模块3.1右移寄存器的设计8位右移寄存器是当时钟信号clk处于上升沿时,当load=1时,将8位被乘数加载进去;而当load=0时,数据进行移位操作。同时定义一个信号reg8用来装载新数据及移位后的操作数,在完成这些操作后,寄存器的最低位reg8(0)传送给qb输出。该模块的元件符号图如3-1所示: 图3-1 右移寄存器元件符号图如上图所示,8位右移寄存器包括4个

18、引脚分别为:clk、load、din70、dout70。在定义8位右移寄存器实体时,定义clk为输入时钟信号,load为输入加载信号,din为8位数据输入,dout为8位数据输出。以下是8位右移寄存器构造体行为的定义描述:architecture behav of sreg8b is signal reg8:std_logic_vector(7 downto 0);-定义信号量reg8beginprocess(clk,load)begin if clkevent and clk=1then -当clk上升沿到来时 if load=1then -装载新数据到reg8中 reg8<=din;

19、 else reg8(6 downto 0)<=reg8(7 downto 1);-数据右移 end if;end if end precess; qb<=reg8(0);-输出最低位到电路输出端end behave;3.2 加法器模块的设计(adder8b)加法器模块是由两个4位二进制加法器u1和u2组成的8位加法器逻辑电路,其中u1用来装载8位加法器中两个加数的低四位,而u2则用来装载高4位。3.2.1 4位二进制加法器设计在设计4位加法器时,定义信号量sitn 、aa及bb,将加数a与0并置后赋给bb,形成5位二进制数,这是为了在做加法时发生溢出所做的处理,然后将加数aa与b

20、b以及进位位cin相加赋给sint,并将sint的低四位赋给加数和s输出,同时将sint最高位传送给cout输出。4位加法器的元件符号图如3-2所示: 图3-2 4位加法器元件符号图在定义实体adder4b端口中 , 定义cin为进位输入信号,a、b端口为4位数的输入端口,s为存储两个4位数相加结果的输出端口,cout引脚主要用于将存储sint的最高位的输出端口。在定义adder4b构造体行为时,定义三个信号量:reg8 、aa、bb,都是5位,主要是在做加法时发生溢出时所做的处理。下面是定义adder4b构造体行为的描述:architecture behav of adder4b issig

21、nal reg8:std_logic_vector(4 downto 0);signal aa,bb:std_logic_vector(4 downto 0);beginaa<=0&a;bb<=0&b; sint<=aa+bb+cin; s<=sint(3 downto 0); cout<=sint(4);end behave;3.2.2 8位加法器的设计 8位加法器的设计是由两个4位加法器u1,u2所形成的,在下面程序中定义一个信号量carry_out,将4位加法器u1的cout赋给carry_out ,再将carry_out的值赋给4位加法器u

22、2的进位cin,8位加法器的高四位和低四位分别来自于4位加法器u2和u1。8位加法器的元件引脚图如3-3所示: 图3-3 8位加法器元件符号图如上图所示,8位加法器有三个输入引脚和两个输出引脚。在定义adder8b实体时,定义a,b为8位输入数据信号,用于被加数和加数的输入,s为8位输出数据信号,用于和的输出, 定义输入进位cin,输出cout。在前面已经描述了adder4b的功能实现,而adder8b是由两个adder4b实现的,所以在定义adder8b构造体行为时用comp0nent语句直接调用adder4b的逻辑描述模块,程序描述如下:component adder4b port( ci

23、n: in std_logic; a,b:in std_logic_vector(3 downto 0); s:out std_logic_vector(3 downto 0); cout:out std_logic );end component; signal carry_out:std_logic;begin u1:adder4b -例化(安装)1个4位二进制加法器u1 port map (cin>=cin a=>a(3 downto o), b=>b(3 downto 0), s=>s(3 downto 0), cout=>carry_out ); u2:

24、adder4b -例化(安装)1个4位二进制加法器u2port map( cin=>carry_out,a>=a(7 downto 4), b=>b(7 downto 4), s=>s(7 downto 4),cout>=cout);3.3.乘1模块设计(andarith) 乘1模块即1位乘法器,可通过选通与门逻辑,利用for_loop循环语句完成8位二进制数与1位二进制数的乘法运算,即8位二进制din从最低位到最高位与1位二进制数abin分别做与运算,最后将结果依次传送到dout的最低位到最高位输出,即当abin为1时,dout直接输出din,位0时,dout输

25、出全零。1位乘法器的元件引脚图如3-4所示: 图3-4 乘1模块元件符号图 在定义一个实体 andarith端口中, abin、din70作为输入端口,dout70作为输出端口。1位乘法器构造体程序代码如下:architecture behav of andarith is -定义andrith构造体行为begin process (abin,din) begin for i in 0 to 7 loop -循环8次,完成8位与1位的乘法运算 dout(i)<=din(i) and abin; -当abin为1时,dout直接输出din,当abin=0时,dout输出全零end loop

26、; end process;end behav3.4锁存器模块设计(reg16b) 此处锁存器模块即16位右移寄存器,可利用if语句来完成其输入值的锁存,当清零(clr=1)信号到来时,定义的信号量r16s锁存输入值,即r16s清零;否则在时钟信号clk上升沿作用下,将r16s的低8位进行移位操作,同时将8位输入数据d锁存到r16s的高8位,最后传送给q输出。在乘法器的顶层设计中,乘数与被乘数的乘积也将出现在reg16b端口。16位锁存器的元件符号图如3-5所示: 图3-5 锁存器元件符号图如上图所示:16位右移寄存器包括3个输入引脚,一个输出引脚。在定义reg16b实体端口中,定义d为8位输

27、入数据,clk为输入时钟信号,clr为输入清零信号,q为16位输出数据。下面是reg16b的构造体行为描述:architecture behav of reg16 is signal r16s:std_logic_vector(15 downto 0);begin process (clk,clr) begin if clr=1then -当有效时,全部清零 r16s<=“0000000000000000”;-锁存输入值,并右移低8位 elseif clkevent and clk=1then r16s(6 downto 0) <=r16s(7 downto 1); r16s(15

28、 downto 7)<=d; -将输入锁到高8位 end if; end process; q<=r16s;end behave;3.5 8位乘法器的顶层设计 8位移位相加乘法器的原理图如3-6所示。在图中,start信号的上升沿及其高电平有两个功能,即16位寄存器清零和被乘数a70向移位寄存器sreg8b加载,它的低电平则作为乘法使能信号。clk位乘法时钟信号。当被乘数被加载于8位右移寄存器sreg8b后,随着每一时钟节拍,最低位在前,由低位至高位逐位移出。当为1时,1位乘法器andartih打开,8位乘数b70在同一节拍进入8位加法器,与上一次锁存在16位锁存器中的高8位进行相

29、加,其和在下一时钟节拍的上升沿被锁进此锁存器。而当被乘数的移出位为0时,与门全零输出。如此反复,直至8个时钟脉冲后,最后乘积完整出现在reg16b端口。移位相加乘法器的原理图如下: 图3-6 8位移位相加乘法器原理图 8位乘法器元件符号图如3-7所示:图3-7 8位乘法器元件符号图 如上图所示,8位乘法器包括4个输入引脚和1个输出引脚。在8位乘法器的顶层设计中,在定义8位乘法器实体端口中,定义clkk为输入时钟信号,a、b为8位输入数据,start为输入信号,dout为16位输出数据。由于在前面已经定义各个子模块的功能,所以在8位乘法器的顶层设计中直接用元件例化的方法直实现。下面是clkk和s

30、tart两个信号作用下的8位乘法器功能实现的vhdl描述: signal gndint,newstart,qb:std_logic;signal andsd:std_logic_vector(7 downto 0);signal dtbin:std_logic_vector(8downto 0);signal dtbout:std_logic_vector(15 downto 0); begin dout<=dtbout; gndint<=0; process( clkk,start) begin if start=1tnen newstart<=1; elsif clkk=

31、0then newstart<=0; end if; end process;4乘法器仿真4.1 8位加法器仿真 cin作为输入信号,赋值时钟周期初值为0,以50ns为一个时钟周期,当cin=0时,说明a、b两个加数所得出的和s不需要加1,反之就要加上进位cin。cout作为输出信号,它表示的当两个加数最高位有进位时,输出为1。例如将两个加数a、b赋值十六进制数分别为16、18,运行波形后,和s在cin=0的时钟下输出值为2e;在cin=1的时钟下输出和为2f。由于没有最高进位 ,此时cout=0。其仿真波形如4-1所示:图4-1 8位加法器仿真图4.2 乘1模块仿真 乘1模块包括3个引

32、脚分别为abin、din、dout.。 它主要实现8位二进制数din分别和1位二进制数abin做与运算。当输入信号abin=0时,dout=0;当abin=1时,dout等于din。例如在运行波形图之前,将din赋初值为56,运行波形后,当abin为0时,其dout输出值为00;当abin为1时,其dout输出值为56。其仿真图如4-2所示: 图4-2 乘1模块仿真图43 锁存器模块仿真 锁存器模块包括4个引脚分别为:clr、clk、d、q。 clr为清零信号,当clr=1时,q输出值为0;当clr=0时,仅当clk有效在上升沿作用下且clk=1时,d输入数据右移低8位,并赋给输出信号q。例如

33、在下图中,给d赋初值十进制1,在clr=0的信号下,当clr上升沿到来时,q的值从0 ,128,192,逐步右移。其仿真波形如图4-3所示: 图4-3 锁存器模块仿真图 44 8位乘法器仿真 8 位乘法器包括start、clkk、a、b、dout五个引脚,当start=0时,被乘数a向移位寄存器sreg8b加载数据;当start=1时,16位寄存器清0。clk为乘法时钟信号,每当clk上升沿到来时,a和b乘法进行移位相加运算,到第8个时钟上升沿后,将得出输出结果。例如 将a、b赋值为18h、14h,运行后最终相乘结果为:01e0h。波形仿真如图4-4所示图4-4 8位乘法器仿真图结束语 通过几个月的紧张工

温馨提示

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

评论

0/150

提交评论