您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 移位相加型8位硬件乘法器设计
合肥学院课程设计报告题目:移位相加型8位硬件乘法器系别:电子信息与电气工程系专业:通信工程班级:13通信工程(1)班学号:姓名:导师:石朝毅成绩:2016年6月11日移位相加型8位硬件乘法器设计摘要本次设计是基于时序结构的8位移位相加型乘法器,使用软件QuartusII进行仿真设计。完成此乘法器,我们需要首先设计该乘法器的组件,包括REGSHT模块、SREG8BT模块、AND8B模块和ADDER8BT模块,并对所有元件进行仿真,无误后可进行乘法器的设计。设计方法使用的是元件例化,具体原理是通过逐项相加来实现乘法功能,最终完成整体的VHDL程序设计并仿真。关键词:时序;乘法器;元件例化目录第一章前言...............................................................................................................................11.1设计概述...........................................................................................................................11.1.1问题提出与原理........................................................................................................11.1.2设计需要....................................................................................................................1第二章设计过程及结果...........................................................................................................22.1设计思路...........................................................................................................................22.1.1设计须知....................................................................................................................22.1.2基本步骤....................................................................................................................22.2设计代码及仿真...............................................................................................................32.2.1元件REGSHT设计代码及仿真结果.........................................................................32.2.2元件SREG8BT设计代码及仿真结果.......................................................................42.2.3元件AND8B设计代码及仿真结果..........................................................................52.2.4元件ADDER8BT设计代码及仿真结果....................................................................72.2.5总模块设计代码及仿真结果....................................................................................8第三章总结.............................................................................................................................11致谢...........................................................................................................................................121第一章前言1.1设计概述1.1.1问题提出与原理采用元件例化的设计方法,设计一个移位相加型8位硬件乘法器设计。下图所示为一个基于时序结构的8位移位相加型乘法器。图1设计原理图1.1.2设计需要(1)元件REGSHT设计,并仿真;(2)元件SREG8BT,并仿真;(3)元件AND8B,并仿真;(4)元件ADDER8BT,并仿真;(5)整体VHDL程序设计,包括元件例化,并仿真。2第二章设计过程及结果2.1设计思路2.1.1设计须知首先建立文件夹在软件工作的环境下,注意对于不同的器件的设计不能放在同一个文件夹当中这样会造成编译时出现混乱的错误现象。对于每个元器件的设计有两种方法:可以利用原理图输入法,或者利用文本输入法进行设计。本次设计使用的是文本输入法。要注意在写文本输入时要注意实体名与你程序中名字一致。然后,依次按照实验指导书的步骤进行设计。先功能仿真,然后时序仿真,最后下载编译。2.1.2基本步骤(1)为本项设计建立文件夹任何一项设计都是一项工程(Project),都必须首先为此工程建立一个放置与此工程相关的所有文件的文件夹,此文件夹将被EDA软件默认为工作库(WorkLibrary)。一个设计项目可以包含多个设计文件,一般不同的设计项目最好放在不同的文件夹中。注意:文件名不能用中文,且不可带空格。(2)输入设计项目和存盘a.打开QuartusII,单击“File”菜单,将鼠标移到NewProjectWizard…选项并单击,b.选择File--New,选择原理图编辑器,双击“BlockDiagram/SchematicFile”,或者选中该项后单击“OK”按钮。(或者选择,选择VHDLFile进行文本设计)(3)选择目标器件并编译,在Assignments选项的下拉菜单中选择器件选择项Device...,在Family(器件序列栏)中选定目标器件对应的序列名,EP1C6对应的是Cyclone系列。在AvailableDevices里选择EP1C6Q240C8(有时需要把Showadvanceddevices的勾消去,以便显示出所有速度级别的器件)。注意:所选器件必须与目标板的器件型号完全一致。(4)在总VHDL程序中需要将要用到的之前设计好的元件添加到当前工程中来,添加方法如下:Project—Add/RemoveFileinProject,找到之前的元件3add即可,之后方可进行总程序的编译。(5)仿真时,首先选择Edit—EndTime设置时间为30us,之后导入输入输出端口,选择Pins:All将需要的端口添加,之后给输入端口进行赋值或添加时钟进行时序仿真。2.2设计代码及仿真2.2.1元件REGSHT设计代码及仿真结果LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYregshtISPORT(CLK,CLR:INSTD_LOGIC;D:INSTD_LOGIC_VECTOR(8DOWNTO0);Q:OUTSTD_LOGIC_VECTOR(15DOWNTO0));ENDregsht;ARCHITECTUREbehavOFregshtISSIGNALR16S:STD_LOGIC_VECTOR(15DOWNTO0);BEGINPROCESS(CLK,CLR)BEGINIFCLR='1'THENR16S=(OTHERS='0');ELSIFCLK'EVENTANDCLK='1'THENR16S(6DOWNTO0)=R16S(7DOWNTO1);R16S(15DOWNTO7)=D;ENDIF;ENDPROCESS;Q=R16S;4ENDbehav;图2REGSHT时序仿真图分析:此处锁存器模块即16位右移寄存器可利用IF语句来完成其输入值的锁存当清零CLR=‘1’信号到来时定义的信号量R16S锁存输入值即R16S清零否则在时钟信号CLK上升沿作用下将R16S的低8位进行移位操作同时将8位输入数据D锁存到R16S的高8位最后传送给Q输出。在乘法器的顶层设计中乘数与被乘数的乘积也将出现在REG16B端口。2.2.2元件SREG8BT设计代码及仿真结果LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYsreg8btISPORT(CLK,LOAD:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(7DOWNTO0);QB:OUTSTD_LOGIC);ENDsreg8bt;ARCHITECTUREbehavOFsreg8btISSIGNALREG8:STD_LOGIC_VECTOR(7DOWNTO0);BEGIN5PROCESS(CLK,LOAD)BEGINIFCLK'EVENTANDCLK='1'THENIFLOAD='1'THENREG8=DIN;ELSEREG8(6DOWNTO0)=REG8(7DOWNTO1);ENDIF;ENDIF;ENDPROCESS;QB=REG8(0);ENDbehav;图3SREG8BT时序仿真图分析:8位右移寄存器是当时钟信号CLK处于上升沿时当LOAD=‘1’时将8位被乘数加载进去而当LOAD=‘0’REG8用来装载新数据及移位后的操作数在完成这些操作后寄存器的最低位REG8(0)传送给QB输出。2.2.3元件AND8B设计代码及仿真结果LIBRARYIEEE;6USEIEEE.STD_LOGIC_1164.ALL;ENTITYand8bISPORT(ABIN:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(7DOWNTO0);DOUT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDand8b;ARCHITECTUREbehavOFand8bISBEGINPROCESS(ABIN,DIN)BEGINFORIIN0TO7LOOPDOUT(I)=DIN(I)ANDABIN;ENDLOOP;ENDPROCESS;ENDbehav;图4AND8B时序仿真图分析:加法器是由两个4位二进制加法器U1和U2组成的8位加法器逻辑电路其中U1用来装载8位加法器中两个加数的低四位而U2则用来装载高4位。72.2.4元件ADDER8BT设计代码及仿真结果LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYadder8btISPORT(CIN:INSTD_LOGIC;A,B:INSTD_LOGIC_VECTOR(7DOWNTO0);S:OUTSTD_LOGIC_VECTOR(7DOWNTO0);COUT:OUTSTD_LOGIC);ENDadder8bt;ARCH
本文标题:移位相加型8位硬件乘法器设计
链接地址:https://www.777doc.com/doc-5801126 .html