有符号5位整数乘法器设计与制作.doc

上传人:土8路 文档编号:10024876 上传时间:2021-04-11 格式:DOC 页数:15 大小:487KB
返回 下载 相关 举报
有符号5位整数乘法器设计与制作.doc_第1页
第1页 / 共15页
有符号5位整数乘法器设计与制作.doc_第2页
第2页 / 共15页
有符号5位整数乘法器设计与制作.doc_第3页
第3页 / 共15页
有符号5位整数乘法器设计与制作.doc_第4页
第4页 / 共15页
有符号5位整数乘法器设计与制作.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《有符号5位整数乘法器设计与制作.doc》由会员分享,可在线阅读,更多相关《有符号5位整数乘法器设计与制作.doc(15页珍藏版)》请在三一文库上搜索。

1、有符号5位整数乘法器设计与制作论文 指导老师 专业:姓名: 学号:目录摘要 3一设计方案与比较 3二系统整体设计 5(一)整体设计 5(二)模块设计 61. 输入模块 62. 乘法模块 73. 选择模块 74. 符号显示模块 95. 进制转换模块 106. 显示模块 11三设计中遇到的问题及解决方法 14四设计心得及建议 14五参考文献 14摘要本设计以ALTERA公司开发的MAX+PLUS2软件为平台,以VHDL语言混合部分Verilog HDL语言为开发语言,利用MAX+PLUS2软件进行可编程逻辑器件设计,运用移位相加的原理,完成有符号5位整数乘法器的逻辑仿真功能,并下载到实验箱进行调试

2、和验证所设计的乘法器的功能。关键词:有符号5位整数乘法器 移位相加 MAX+PLUS2 VHDL语言 一、方案设计与比较1. 开发语言的选择 方案一:采用VHDL语言。VHDL语言具有较强的行为描述能力,对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管最终设计实现的目标器件是什么,而进行独立的设计。但VHDL在描述门电路的能力上却不如VeriologHDL语言。 方案二:采用VerilogHDL语言 VerilogHDL语言是一种广泛的硬件描述语言,可用于从算法,门级到开关的多种抽象层次的数字系统设计。VerilogHDL语言在高级描述方面不如VHDL。由于一直准备的是VHDL语

3、言,所以主要选择VHDL,但在设计数据转换模块的设计时,选择了VerilogHDL语言,节省了空间。2. 乘法器实现方法的设计移位相加法 两个二进制数相乘如十进制数相乘一样。如图1为四位数做徒手乘法运算图。首先由右至左一次检查乘数位是否为1,如为1,将被乘数做适当的移位至适当的位置;如为0,将0放置适当位置。其次将所有移位被乘数求和就为所求子积。图2为乘法器采用相似方法进行计算时的情形,利用累加器来完成,即每一步中一个4位加法器可用来计算其新的部分乘积。 图1 徒手乘法 图2 乘法器三、系统整体设计基本要求:设计一个两个5位数相乘的乘法器。用发光二极管显示输入数值,用7段显示器显示十进制结果。

4、乘数和被乘数分两次输入。扩展部分:在输入乘数和被乘数时,要求显示十进制输入数据。输入显示和计算结果显示,采用分时显示方式进行,可参见计算器的显示功能。(一)整体设计首先通过实验箱输入5为二进制数,首位为符号位,通过输入端使符号位与数值位分开,将数值输入乘法器,并在脉冲上升沿进行操作控制,设乘数为A(不包括符号位)由右至左依次检查数位是否为1,如为1,将被乘数输入乘法模块进行选择输出,并将乘数低位舍去;如为0,输入CHOOSE模块为0占位,每次输入乘法块的数结果都向左移一位。其次将所有移位数求和就为所求积,利用累加器来完成,通过二进制转化十进制进行输出,输入到显示数码管显示。符号位利用一个或非门

5、实现两数相乘时符号的变化并用数码管显示在输出的高位。设计的思路框图如下:整体模块如下:仿真整体波形如下:(二)模块设计1. 输入模块输入模块选择了有八位D触发器构成的8dff,输入模块图形及功能表如下: 2. 乘法模块接收由输入模块传进来的数据,定义5个变量R,T,H,S,Q分别从低到高判断乘数B每位是否为零,若不为零,将被乘数A赋值给变量R,T,H,S,若为零则赋值0,并且每位的首位递增一位0,最后实现累加,由变量R输出。乘法模块图形如下:仿真波形如下:乘法模块源代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_

6、UNSIGNED.ALL;ENTITY CHENGFA IS PORT(A: IN STD_LOGIC_VECTOR(4 DOWNTO 1); B: IN STD_LOGIC_VECTOR(4 DOWNTO 1); Q: OUT STD_LOGIC_VECTOR(8 DOWNTO 1);END CHENGFA;ARCHITECTURE A OF CHENGFA ISSIGNAL R:STD_LOGIC_VECTOR (4 DOWNTO 1);SIGNAL T:STD_LOGIC_VECTOR (5 DOWNTO 1);SIGNAL H:STD_LOGIC_VECTOR (6 DOWNTO 1)

7、;SIGNAL S:STD_LOGIC_VECTOR (7 DOWNTO 1);BEGINR=A WHEN B(1)=1 ELSE 0000;T=A&0 WHEN B(2)=1 ELSE 00000;H=A&00 WHEN B(3)=1 ELSE 000000;S=A&000 WHEN B(4)=1 ELSE 0000000;Q=R+T+H+S;END A;3. 选择模块设计此模块是用来对显示数码管上所显示的数据进行选择显示的,若当前输入端的端口控制变量S1和S2时显示第一个数据前四位用0占位,若当前输入端的端口控制变量S1和S2为00时显示第二个数据前四位用0占位,若当前输入端的端口控制变量

8、S1和S2为01时显示最终结果,QOUT为输出端口。符号位用FIN端口接收,FUHAO端口输出。选择模块图形如下:仿真波形如下:选择模块源代码如下:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CHOOSER ISPORT(LOADA,LOADB,CLK:IN STD_LOGIC; RAIN:IN STD_LOGIC_VECTOR(4 DOWNTO 1); RBIN:IN STD_LOGIC_VECTOR(4 DOWNTO 1); DIN:IN STD_LOGIC_VECTO

9、R(8 DOWNTO 1); FA,FB,FIN:IN STD_LOGIC; QOUT:OUT STD_LOGIC_VECTOR(8 DOWNTO 1); FU:OUT STD_LOGIC);END CHOOSER;ARCHITECTURE ART OF CHOOSER ISBEGINPROCESS(LOADA,LOADB,CLK)BEGINIF CLKEVENT AND CLK=1 THEN IF LOADA=1 AND LOADB=0 THEN QOUT=0000&RAIN;FU=FA; ELSIF LOADA=0 AND LOADB=0 THEN QOUT=0000&RBIN;FU=FB

10、; ELSE QOUT=DIN;FU=FIN; END IF;END IF;END PROCESS;END ART;4. 符号显示模块此模块是对输出符号进行输出判断的,符号位对应一数码显示管直接作为输出端口输出,当其符号位为正时数码显示管全灭“11111111”,当其符号位为负时数码显示管G亮“10111111”。为使小数点去除,使最高位DOT位也为1。符号模块图形如下:仿真波形如下:符号模块源代码如下:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY FU IS PORT(F:IN STD_LOGIC; Q4:OUT STD_LOGIC_VE

11、CTOR(8 DOWNTO 1);END FU; ARCHITECTURE ART OF FU IS BEGIN-PROCESS(F)-BEGINQ4=11111111 WHEN F=0 ELSE 10111111;-IF(F=0) THEN Q4=11111111;-ELSE Q4=10111111;-END IF;-END PROCESS;END ART;5. 进制转换进制转换模块是用来对结果进行二进制到十进制转换的,便于在显示数码管上显示。定义3个变量A1,A2,A3,并赋初值为0,从高到低判断输入的数据LDB的个个位,首先是百位,若大于一百,则A3加1,LDB减去100;然后是十位,若

12、大于十,则A2加1,LDB减去10;最后是个位,直接将LDB剩余值赋值给A1。依次将A1,A2,A3赋值给Q1,Q2,Q3输出。进制转换模块图形如下: 仿真波形如下:进制转换源代码(VerilogHDL语言)如下:module from2to10(DB,clk,Q1,Q2,Q3); input7:0 DB;input clk;output 3:0 Q1,Q2,Q3;reg 3:0 A1,A2,A3,Q1,Q2,Q3;reg 8:0 LDB;reg 2:0 step;always(posedge clk)begincase(step) 0: begin LDB7:0=DB7:0; A1=0; A

13、2=0; A3=0; step=100) begin A3=A3+1; LDB=10)&(LDB100) begin A2=A2+1; LDB=1)&(LDB10) begin A1=LDB; LDB=0; end else begin step=2; end end2:beginQ1=A1;Q2=A2;Q3=A3;step=0;enddefault:stepD1D1D1D1D1D1D1D1D1D1D1D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D3D3D3D3=T0; END CASE;END PROCESS;END ART;三设计中遇到的问题及解

14、决方法在设计中尽管在理论和仿真都正确的前提下 ,在实际试验中在显示了第一个输入的数字以后,在输入乘数时则立即显示积,当运算结束后,才能显示乘数,一直没能找出原理,清老师指点。四设计心得及建议这次课程设计让我对数字电路有了一个新的认识,在上学期学习数字电路时做过的实验只是去验证一些老师给的实验,但是这次课程设计是给我们一个课题,让同学们自行去设计,去把上学期学习的数字电路的知识根据自己的需要选择运用,组合成一个系统,我觉得这就是工科大学的特点,所有东西都要考虑整个系统,也为我们以后的学习工作打下基础。同时要求我们在一定的时间内去掌握一门新的硬件描述语言,这是在对我们的效率意识的训练。同时建议实验室更新一下实验设备,在调试过程中很多都只能等着用一个试验箱。五参考文献:1 基础电子设计与实践戴伏生 主编北京国防工业出版社 20022硬件描述语言实验指导曲波主编苏州大学出版社 20043 数字逻辑与VHDL设计侯树文主编 中国水利水电出版社 2004 4VHDL设计实力与仿真姜雪松等 编著 机械工业出版社 20075 VerilogHDL程序设计教程王金明 编著 人民邮电出版社 20056 数字电子技术基础阎石 编著 高等教育出版社 2006

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1