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

合集下载

乘法器设计方法

乘法器设计方法

乘法器设计方法
乘法器是计算机中用于执行乘法运算的重要组件之一。

乘法器的设计方法可以分为以下几种:
1. 基于模2乘法的乘法器设计方法:此方法利用数字电路中的“与门”和“异或门”等基本逻辑门来实现乘法运算。

根据乘法的位运算特性,可以将乘法拆分成各位上的与门和异或门操作,然后通过级联这些门来实现完整的乘法运算。

2. 基于部分积累加法的乘法器设计方法:该方法利用部分积和累加的方式来实现乘法运算。

乘法器将两个操作数拆分成若干部分积,然后进行部分积的累加,最终得到乘法结果。

这种设计方法可以提高乘法器的运算速度和效率。

3. 基于Booth编码的乘法器设计方法:此方法利用Booth编码技术来减少乘法器中的部分积个数,从而减少乘法器的规模和功耗。

Booth编码是一种通过对数字进行编码来表示正负数的方法,利用Booth编码可以将乘法运算转化为模2加法运算,从而简化乘法器的设计和实现。

4. 基于乘法查找表的乘法器设计方法:该方法利用事先生成好的乘法查找表来实现乘法运算。

乘法查找表中存储了所有可能的乘法结果,通过查表即可得到运算结果。

这种设计方法在少位数乘法中具有较高的速度和效率。

5. 基于并行结构的乘法器设计方法:此方法利用并行计算的原理,将乘法运算过程中的各个部分并行处理,以提高乘法器的
运算速度。

这种设计方法常用于乘法器的优化和高速运算要求较高的场合。

以上是乘法器的一些常见设计方法,具体的设计方法选择应根据实际需求和应用场景来确定。

课程设计任务书2硬件加减法器、乘法器的设计

课程设计任务书2硬件加减法器、乘法器的设计

课程设计任务书
2014~2015学年第 1 学期
学生姓名:专业班级:
指导教师:杨斐工作部门:计算机学院
一、课程设计题目硬件加减法器、乘法器的设计
二、课程设计内容(含技术指标)
1.利用QUARTUS软件设计一个5位加减法器和一个5位乘法器,分别实现两个5位有符号数(用二进制补码表示)的减法、减法、乘法运算。

2.加减法器电路(行波进位法):
一位全加器FA:求补器:(4位为例)
N位行波进位补码加、减法器:
3.乘法器核心电路(带求补器的阵列乘法器):
1)无符号阵列乘法器:
2)带求补器的阵列乘法器
输入数据分别存放在X、Y两个数据寄存器中,经过运算后,将乘积以十进制显示在数码管上。

乘法器总体框图参考下图:(加减器类似)
三、进度安排
1.2014年12月12日,课题讲解,布置任务
2.2014年12月13日,分析、讨论、进行各子模块的设计设计
3.2014年12月16-18日,完成各模块联调,进行测试
4.2014年12月18日,成果验收,进行答辩
四、基本要求
1.能够熟练掌握计算机中乘法器模块的工作原理及其多种实现方案;
2.掌握硬件描述语言VHDL及原理图设计方法;
3.熟练掌握Quartus II软件平台;
4.各小组按模块分工,每人独立完成自己负责的模块;
5.合作完成最终的硬件下载及调试;
6.独立撰写符合要求的课程设计报告。

电子学课程设计报告有符号5位整数乘法器设计与制作

电子学课程设计报告有符号5位整数乘法器设计与制作

电子学课程设计报告有符号5位整数乘法器设计与制作电子学课程设计报告有符号5位整数乘法器设计与制作姓名:班级:学号:指导教师:一设计指导电子学课程设计〔1〕课程设计的性质、目的和任务创新精神和实践能力二者之中,实践能力是基础和全然。

这是由于创新基于实践、源于实践,实践出真知,实践检验真理。

实践活动是创新的源泉,也是人才成长的必由之路。

通过课程设计的锤炼,要求学生把握电路的一样设计方法,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,培养学生的创新精神。

〔2〕课程设计差不多要求把握现代大规模集成数字逻辑电路的应用设计方法,进一步把握电子仪器的正确使用方法,以及把握利用运算机进行电子设计自动化(EDA)的差不多方法。

〔3〕课程设计指导教材«基础电子电路设计与实践»国防工业出版社〔4〕课程设计内容从1---7题目中任选其一完成。

〔5〕报告要求a.设计的性质、目的和任务;b.设计课题要求;c.设计的内容、电路原理和详细的设计过程;d.调试与仿真结果;e.调试中遇到的问题及解决的方法;f.详谈自己的体会、感想、建议。

〔6〕成绩评定成绩评定按照实际完成情形、题目的难度系数、采纳的实现方法和手段、功能扩展的创新表达以及报告等多方面综合评定。

二设计要求有符号5位整数乘法器设计与制作(难度系数4)设计要求:设计一个两个5位数相乘的乘法器。

用发光二极管显示输入数值,用7段显示器显示十进制结果。

乘数和被乘数分两次输入。

在输入乘数和被乘数时,要求显示十进制输入数据。

输入显示和运算结果显示,采纳分时显示方式进行,可参见运算器的显示功能。

注意,假如除法功能为引用功能模块,那么难度系数将按照1到2.5运算。

#设计提示〔仅供参考〕:通常表示带符号二进制数时,最高位为〝0〞表示〝+〞号,最高位为〝1〞表示〝-〞号,例如,01101表示〝+1101〞,而11101那么表示〝-1101〞。

乘法器电路的设计与实现

乘法器电路的设计与实现

乘法器电路的设计与实现乘法器电路是一种用于实现数字信号的乘法运算的电路。

在数字电子系统中,乘法运算是十分常见的操作之一。

乘法器电路的设计与实现对于数字电子系统的性能和效率具有重要影响。

乘法器电路的设计是基于数字逻辑门电路的原理。

在数字电子系统中,逻辑门电路是基本的构建模块。

常用的逻辑门包括与门、或门、非门等。

乘法器电路的设计可以通过组合逻辑电路和时序逻辑电路来实现。

组合逻辑电路是指输出只与当前的输入有关,不依赖于之前的输入。

而时序逻辑电路是指输出不仅与当前的输入有关,还与之前的输入有关。

乘法器电路的设计过程可以分为几个关键步骤。

首先是确定乘法器的位数。

乘法器电路的位数决定了它可以处理的数字的范围。

位数越多,乘法器可以处理的数字范围越大。

然后是确定乘法器的输入和输出的编码方式。

在数字电子系统中,常用的编码方式包括二进制和十进制。

接下来是确定乘法器的运算规则。

乘法器可以实现有符号数和无符号数的乘法运算。

最后是选择适当的逻辑门电路来实现乘法器。

乘法器电路的实现需要考虑一些关键因素。

首先是电路的布局和连接。

乘法器电路中的逻辑门电路需要正确地布局和连接,以确保信号能够正确地传输和处理。

其次是电源和地的连接。

电源和地的连接是电路正常工作的基础,必须保证良好的接触和稳定的电源供应。

此外,还需要考虑电路的稳定性和抗干扰能力。

乘法器电路需要能够稳定地工作,并且能够抵抗来自外部的干扰。

乘法器电路的设计和实现也可以通过计算机辅助设计软件来完成。

计算机辅助设计软件可以提供方便快捷的设计工具和仿真环境,大大提高了设计的效率和准确性。

通过计算机辅助设计软件,设计人员可以轻松地进行逻辑门电路的布局和连接,并进行电路的仿真和验证。

乘法器电路的设计与实现是数字电子系统设计的重要组成部分。

乘法器电路的性能和效率对于数字电子系统的整体性能具有重要影响。

设计人员需要仔细考虑乘法器电路的位数、编码方式、运算规则等因素,并选择适当的逻辑门电路来实现乘法器。

EDA_-_5位整数乘法器设计

EDA_-_5位整数乘法器设计

目录1.摘要 (2)1.1 EDA的概念 (2)1.1.1 EDA技术及应用 (2)1.1.2 EDA技术发展趋势 (3)1.2.1 EDA硬件工作平台 (3)1.2.2 EDA 的软件工作平台 (3)2.课程设计的性质、目的和任务 (3)3.题目要求 (4)3.设计步骤 (4)3.1整体原理框图: (4)3.2乘法器整体电路原理图: (5)3.3输入模块: (5)3.4运算模块: (6)3.5显示控制模块: (9)3.6显示模块: (10)4.整体仿真 (15)5.调试中遇到的问题及解决的方法 (15)6.心得体会 (16)7.参考文献 (16)1.摘要1.1 EDA的概念EDA是电子设计自动化(Electronic Design Automation)的缩写。

由于它是一门刚刚发展起来的新技术,涉及面广,内容丰富,理解各异,所以目前尚无一个确切的定义[1]。

但从EDA技术的几个主要方面的内容来看,可以理解为:EDA技术是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计电子系统到硬件系统的一门新技术。

可以实现逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化,逻辑布局布线、逻辑仿真。

完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片[2]。

EDA技术是伴随着计算机、集成电路、电子系统的设计发展起来的,至今已有30多年的历程。

EDA是电子技术设计自动化,也就是能够帮助人们设计电子电路或系统的软件工具。

该工具可以在电子产品的各个设计阶段发挥作用,使设计更复杂的电路和系统成为可能。

在原理图设计阶段,可以使用EDA中的仿真工具论证设计的正确性;在芯片设计阶段,可以使用EDA中的芯片设计工具设计制作芯片的版图;在电路板设计阶段,可以使用EDA中电路板设计工具设计多层电路板。

实验二 阵列乘法器

实验二 阵列乘法器

实验六阵列乘法器学号1025114016 姓名舒忠明学号1025116030 姓名张宇霆实验目的通过实现n位阵列乘法器,理解阵列乘法器工作原理。

实验设备1.装有ISE10.1的PC机一台2.EDK-3SAISE实验箱一台实验任务1.用verilog描述图1所示的5位无符号数阵列乘法器,先完成功能仿真,再加载到实验箱运行。

2*.在上题的基础上,参考图2、3所示原理,描述6位有符号数阵列乘法器,先完成功能仿真,再加载到实验箱运行。

图1 5位无符号数阵列乘法器图2 n+1位有符号数阵列乘法器图3 5位补码的求补电路原理图实验报告格式一、实验目的二、实验设备三、实验内容1. 用verilog描述图1所示的5位无符号数阵列乘法器,先完成功能仿真,再加载到实验箱运行。

1.模块代码module hw_mul(x, y, out);parameter n = 16;input [n-1:0]x, y;output [n*2-1:0]out;genvar i, j, k, l;wire [n:0]tmp_sun[n-1:0], tmp_out[n-1:0];wire [n:0]tmp_x;// 1. generate语法有generate for, genreate if和generate case三种 2. generate for语句必须有genvar关键字定义for的变量 3. for 的内容必须加begin和end 4. 必须给for语段起个名字assign tmp_x = {1'b0,x};// 1'b0 表示1位宽,2进制,数字0assign out[0] = tmp_x[0] & y[0];generateassign tmp_out[0][0] = 1'b0;for(i=0;i<n;i=i+1)//循环相加顶层乘数的前两位与上被乘数的部分积.begin:add_bttop_m tm (tmp_x[i+1], y[0], tmp_x[i], y[1], tmp_out[0][i], tmp_sun[0][i], tmp_out[0][i+1]);//module top_m(m0, q0, m1, q1, cin, sun, cout);顶层乘法单元endassign out[1] = tmp_sun[0][0];assign tmp_sun[0][n] = tmp_out[0][n];for(j=2;j<n;j=j+1)//从第三位开始的每一位与上被乘数,然后跟上一层的部分积结果相加.begin:ftffor(k=0;k<n;k=k+1)begin:add_bbbtm_m bm (tmp_sun[j-2][k+1], tmp_x[k], y[j], tmp_out[j-1][k], tmp_sun[j-1][k], tmp_out[j-1][k+1]);//module btm_m(sunin, m, q, cin, sun, cout);底层乘法单元endassign out[j] = tmp_sun[j-1][0];assign tmp_sun[j-1][n] = tmp_out[j-1][n];endfor(l=n;l<n*2;l=l+1)begin:add_oassign out[l] = tmp_sun[n-2][l-n+1];endendgenerateendmodulemodule top_m(m0, q0, m1, q1, cin, sun, cout);//顶层乘法单元input m0, m1, q0, q1;input cin;output sun, cout;//sun:提供给下一层的和(↓);cout:提供给下一层的进位输出(↙)wire x, y;assign x = m0 & q0;assign y = m1 & q1;full_add fa (x, y, cin, sun, cout);//一位全加器endmodulemodule btm_m(sunin, m, q, cin, sun, cout);//下层乘法单元input sunin, m, q, cin;//sunin:来自上一层的和输出(↓);m,q:两个乘数在当层对应的位(←);cin:来自上一层的进位输出(↙)output sun, cout;//sun:提供给下一层的和(↓);cout:提供给下一层的进位输出(↙)wire y;assign y = m & q;full_add fa (sunin, y, cin, sun, cout);//一位全加器endmodulemodule full_add(x, y, cin, sun, cout);//一位全加器input x, y, cin;output reg sun, cout;always@(x, y, cin)beginsun <= x^y^cin;cout <= x&y | x&cin | y&cin;endendmodule2.功能仿真测试代码module TEST;// Inputsreg [4:0] x;reg [4:0] y;// Outputswire [9:0] out;// Instantiate the Unit Under Test (UUT)zhenliecf uut (.x(x),.y(y),.out(out));initial begin// Initialize Inputsx = 0;y = 0;// Wait 100 ns for global reset to finish#100;// Add stimulus hereendalways #10 x[0]=~x[0];always #20 x[1]=~x[1];always #30 x[2]=~x[2];always #40 x[3]=~x[3];always #50 x[4]=~x[4];always #60 y[0]=~y[0];always #70 y[1]=~y[1];always #80 y[2]=~y[2];always #90 y[3]=~y[3];always #100 y[4]=~y[4];endmodule3.功能仿真测试时序图参考资料12位LED灯12位拨动开关。

verilog有符号数和无符号数乘法运算

verilog有符号数和无符号数乘法运算Verilog有符号数和无符号数乘法运算在Verilog中,有符号数和无符号数乘法运算是非常重要的概念。

它们在数字电路设计和硬件描述语言中起着至关重要的作用。

在本文中,我们将深入探讨有符号数和无符号数乘法运算的原理、应用和区别,以便读者深入理解这一主题。

1. 有符号数和无符号数的定义在Verilog中,有符号数和无符号数是两种不同的数据类型。

无符号数是指仅由非负数组成的数字,而有符号数是指包含正负号的数字。

在硬件设计中,我们经常会遇到这两种类型的数据,并需要对它们进行不同的处理。

2. 有符号数和无符号数的乘法原理在Verilog中,有符号数和无符号数的乘法运算原理是有所不同的。

对于无符号数,乘法运算可以直接按照普通的乘法规则进行,即将两个数相乘得到结果。

而对于有符号数,由于需要考虑正负号的影响,乘法运算则需要根据补码或原码进行相应的转换和处理。

3. 有符号数和无符号数乘法运算的应用在数字电路设计中,有符号数和无符号数的乘法运算被广泛应用于各种计算单元和逻辑电路中。

它们可以用于实现乘法器、数据处理器和信号处理器等功能模块,为数字系统的运算提供强大的支持。

4. 有符号数和无符号数乘法运算的区别有符号数和无符号数的乘法运算在应用上有一些明显的区别。

在进行乘法运算时,需要考虑有符号数的溢出和符号位的处理,而无符号数则不需要。

在逻辑电路设计中,有符号数和无符号数的乘法运算通常需要采用不同的电路结构和算法来实现。

5. 个人观点和理解在我看来,有符号数和无符号数的乘法运算是数字电路设计中非常重要的问题。

它们不仅涉及到硬件描述语言的应用,也涉及到数字系统的实际运算。

深入理解和掌握有符号数和无符号数乘法运算的原理和实现方法,对于提高数字电路设计的水平和能力是非常有益的。

总结回顾通过本文的探讨,我们对Verilog中有符号数和无符号数乘法运算有了更深入的理解。

我们深入分析了它们的原理、应用和区别,也分享了个人的观点和理解。

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

哈尔滨工业大学(威海)信息科学与工程学院EDA课程设计报告有符号5位整数乘法器设计与制作指导老师:胡屏学生班级:0802102学生姓名:傅愉学生学号:0802102102009年11月10日目录1.课程设计的性质、目的和任务 (1)2.题目要求 (1)3.总体设计 (1)3.1算法设计 (1)3.2整体框图及原理 (2)4.电路设计 (4)4.1 乘法器总体电路原理图: (4)4.2分时输入模块电路图: ........................................................... - 5 -4.3乘法运算电路图: (6)4.4阀门控制模块电路: ............................................................... - 9 -4.5计数单元电路图: ................................................................. - 12 -4.6数码管显示单元电路: ......................................................... - 14 -4.7报警电路示意: ......................................... 错误!未定义书签。

5.调试过程中出现的问题以及解决办法 .......................................... - 19 -6.心得体会........................................................................................... - 20 -7.建议:............................................................................................... - 21 -1.课程设计的性质、目的和任务创新精神和实践能力二者之中,实践能力是基础和根本。

五位阵列乘法器logisim实验报告

五位阵列乘法器logisim实验报告引言:在数字电路设计中,乘法器是一种非常重要的电路。

为了实现高效的乘法运算,我们常常需要使用乘法器进行乘法操作。

本实验旨在使用五位阵列乘法器logisim进行乘法器的设计与实现。

设计与实现:本次实验中,我们使用logisim软件进行五位阵列乘法器的设计与实现。

首先,我们需要搭建一个五位的输入端,来输入待相乘的两个数。

然后,我们需要将输入的两个数分别与五个乘法器相连,以实现乘法运算。

每个乘法器都会将两个输入相乘得到一个结果,并输出给下一级电路。

在乘法器的设计中,我们使用了多个与门和全加器。

与门用于判断两个输入是否都为1,从而判断是否需要进行相乘操作。

全加器用于将两个输入相乘的结果相加,并输出给下一级电路。

通过多级的与门和全加器的连接,我们可以实现五位数的相乘运算。

结果与分析:经过实验,我们成功实现了五位阵列乘法器的设计与实现。

通过输入不同的五位数,我们可以得到相应的乘法结果。

在logisim软件中,我们可以直观地观察到乘法器的运行过程,以及每一级电路的工作情况。

本实验的设计与实现对于理解乘法器的工作原理具有重要的意义。

通过logisim软件的模拟,我们可以更好地理解数字电路的运行过程,并加深对乘法器的认识。

结论:通过本次实验,我们成功地设计与实现了五位阵列乘法器。

通过logisim软件的模拟,我们可以直观地观察乘法器的工作过程,并得到相应的乘法结果。

这对于理解乘法器的工作原理以及数字电路的设计与实现具有重要的意义。

通过本次实验,我们不仅加深了对乘法器的认识,同时也提高了对logisim软件的使用能力。

在未来的学习和工作中,我们可以更加熟练地使用logisim软件进行数字电路的设计与模拟。

参考文献:[1] logisim软件官方网站[2] 数字电路设计与实验教程,XX出版社,20XX年。

乘法器

乘法器简介乘法器在当今数字信号处理以及其他诸多应用领域中起着十分重要的作用。

随着科学技术的发展,许多研究人员已经开始试图设计一类拥有更高速率和低功耗,布局规律占用面积小,集成度高的乘法器。

这样,就能让它们更加适用于高速率,低功耗的大规模集成电路的应用当中。

通常的乘法计算方法是添加和位移的算法。

在并行乘法器当中,相加的部分乘积的数量是主要的参数。

它决定了乘法器的性能。

为了减少相加的部分乘积的数量,修正的Booth算法是最常用的一类算法。

为了实现速度的提高Wallace树算法可以用来减少序列增加阶段的数量。

我们进一步结合修正的booth算法和Wallace树算法,可以看到将它们集成到一块乘法器上的诸多优势。

但是,随着并行化的增多,大量的部分乘积和中间求和的增加,会导致运行速度的下降。

不规则的结构会增加硅板的面积,并且由于路由复杂而导致中间连接过程的增多继而导致功耗的增大。

另一方面串并行乘法器牺牲了运行速度来获得更好的性能和功耗。

因此,选择一款并行或串行乘法器实际上取决于它的应用性质。

在本文中,我们将介绍乘法算法以及在应用结构方面的速度比较,占用面积,功率和这些情况的组合绩效指标。

乘运算对于一个N比特的被乘数和一个N比特的乘数相乘的算法如下图所示:Y=Yn-1 Yn-2.....................Y2 Y1 Y0 被乘数X=Xn-1 Xn-2.....................X2 X1 X0 乘数例如: 1101 4-bits1101 4-bits110100001101110110010101一般来说Y=Yn-1Yn-2....................... Y2Y1Y0X=Xn-1Xn-2 (X2X1X0)2Yn-1X0 Yn-2X0 Yn-3X0 ……Y1X0 Y0X0Yn-1X1 Yn-2X1 Yn-3X1 ……Y1X1 Y0X1Yn-1X2 Yn-2X2 Yn-3X2 ……Y1X2 Y0X2… … … ……. …. …. …. ….Yn-1Xn-2 Yn-2X0 n-2 Yn-3X n-2 ……Y1Xn-2 Y0Xn-2Yn-1Xn-1 Yn-2X0n-1 Yn-3Xn-1 ……Y1Xn-1 Y0Xn-1---------------------------------------------------------------------------------------------------------------------- P2n-1 P2n-2 P2n-3 P2 P1 P0“与”门被用来产生部分乘积,如果被乘数是N比特,乘数是M比特,那么就会产生N*M个部分积,然而在不同结构和类型的乘法器当中,部分乘积的产生方式是不同的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

哈尔滨工业大学(威海)信息科学与工程学院EDA课程设计报告有符号5位整数乘法器设计与制作指导老师:胡屏学生班级:0802102学生姓名:傅愉学生学号:0802102102009年11月10日目录1.课程设计的性质、目的和任务 (1)2.题目要求 (1)3.总体设计 (1)3.1算法设计 (1)3.2整体框图及原理 (2)4.电路设计 (4)4.1 乘法器总体电路原理图: (4)4.2分时输入模块电路图: ........................................................... - 5 -4.3乘法运算电路图: (6)4.4阀门控制模块电路: ............................................................... - 9 -4.5计数单元电路图: ................................................................. - 12 -4.6数码管显示单元电路: ......................................................... - 14 -4.7报警电路示意: ......................................... 错误!未定义书签。

5.调试过程中出现的问题以及解决办法 .......................................... - 19 -6.心得体会........................................................................................... - 20 -7.建议:............................................................................................... - 21 -1.课程设计的性质、目的和任务创新精神和实践能力二者之中,实践能力是基础和根本。

这是由乘数被乘数移位寄存 移位寄存相乘逻辑累加器结果寄存时钟于创新基于实践、源于实践,实践出真知,实践检验真理。

实践活动是创新的源泉,也是人才成长的必由之路。

通过课程设计的锻炼,要求学生掌握电路的一般设计方法,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,培养学生的创新精神。

2.题目要求设计一个两个5位数相乘的乘法器。

用发光二极管显示输入数值,用7段显示器显示十进制结果。

乘数和被乘数分两次输入。

在输入乘数和被乘数时,要求显示十进制输入数据。

输入显示和计算结果显示,采用分时显示方式进行,可参见计算器的显示功能。

3.总体设计3.1算法设计图:乘法器对应的方框图两个带符号的五位数相乘,首先将符号位与数值位分离,最终结果的符号位由两个数的符号位经过异或操作后得到,乘法运算采用移位相加的原理来实现。

移位相加原理:从乘数的最低位开始,若为1,则将被乘数右端与乘数右端对齐写在下面;若为0,则将与被乘数同样位数的0写在下面。

然后进行乘数的次低位,若为1,则被乘数左移一位后与上一次的结果相加;若为0,则左移一位后以全0相加。

以此类推,每次若乘数相应位为1,则被乘数左移一位与前次和相加;若乘数相应位为0,则左移一位以全0与前次和相加。

相乘结果用十进制数表示。

3.2整体框图及原理图:整体设计框图乘法计算:使用者通过按键输入二进制5位有符号的乘数与被乘数,并将乘数与被乘数分别用十进制显示,经过乘法器运算,显示十进制结果,完成与计算器近似的简单乘法运算;下面是部分模块的功能介绍:分时输入:在控制端EA,EB和CLK的控制下,依次输入乘数与被乘数,且在输入被乘数后,按下定义的乘号键,可保持所显示的被乘数不变,改变数值,输入乘数,显示数值为乘数。

分时显示控制:在控制端EA,EB和CLK的控制下,实现对被乘数,乘数以及运算结果的分时显示。

4.电路设计4.1 乘法器总体电路原理图:MAX+PLUS II中的电路原理图4.2分时输入模块电路图:分时输入电路图VHDL程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY INPUT1 ISPORT(EA,EB,CLK:IN STD_LOGIC;I:IN STD_LOGIC_VECTOR(4 DOWNTO 0);A,B:OUT STD_LOGIC_VECTOR(4 DOWNTO 0));END INPUT1;ARCHITECTURE behave OF INPUT1 ISBEGINPROCESS(EA,EB,I,CLK)BEGINIF CLK'EVENT AND CLK='1' THENIF EA='1' THENA<=I;ELSE NULL;END IF;IF EB='1' THENB<=I;ELSE NULL;END IF;END IF;END PROCESS;END behave;功能仿真,结束时间为200ns;MAX+PLUS II 中的功能仿真图4.3乘法运算电路图:MAX+PLUS II 中的电路图VHDL 程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUL5X5 ISPORT(A0:IN STD_LOGIC_VECTOR(4 DOWNTO 0);B0:IN STD_LOGIC_VECTOR(4 DOWNTO 0);QQ:OUT STD_LOGIC_VECTOR(8 DOWNTO 0));END ENTITY MUL5X5;ARCHITECTURE BEHA VE OF MUL5X5 ISCOMPONENT FHFL ISPORT(A,B:IN STD_LOGIC_VECTOR(4 DOWNTO 0);FH:OUT STD_LOGIC;C,D:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END COMPONENT;COMPONENT MUL ISPORT(X,Y:IN STD_LOGIC_VECTOR(3 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END COMPONENT;COMPONENT ZH ISPORT(Q:IN STD_LOGIC_VECTOR(7 DOWNTO 0);F:IN STD_LOGIC;FQ:OUT STD_LOGIC_VECTOR(8 DOWNTO 0)); END COMPONENT;SIGNAL C1,D1:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL FHW:STD_LOGIC;SIGNAL OUT1:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINU1:FHFL PORT MAP(A=>A0,B=>B0,C=>C1,D=>D1,FH=>FHW); U2:MUL PORT MAP(X=>C1,Y=>D1,Q=>OUT1);U3:ZH PORT MAP(Q=>OUT1,F=>FHW,FQ=>QQ);END ARCHITECTURE BEHA VE;本模块为该程序的中心模块,进行乘法运算,采用元件例化的方式,将三个模块组合在一起,这三个模块包括“符号与数字分离模块”,“乘法运算模块”及运算结果“符号与数组重组模块”。

下面分别介绍以上三个模块:4.3.1符号与数字分离电路图MAX+PLUS II 中的电路图VHDL语言程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FHFL ISPORT(A,B:IN STD_LOGIC_VECTOR(4 DOWNTO 0);FH:OUT STD_LOGIC;C,D:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END FHFL;ARCHITECTURE behave OF FHFL ISBEGINPROCESSBEGINC<=A(3 DOWNTO 0);D<=B(3 DOWNTO 0);FH<=A(4) XOR B(4);END PROCESS;END behave;功能仿真图如下:MAX+PLUS II 中时序仿真图4.3.2 乘法运算电路图MAX+PLUS II 中的电路图VHDL语言程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MUL ISPORT(A,B:IN STD_LOGIC_VECTOR(3 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END MUL;ARCHITECTURE behave OF MUL ISSIGNAL Q1:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL Q2:STD_LOGIC_VECTOR(4 DOWNTO 0); SIGNAL Q3:STD_LOGIC_VECTOR(5 DOWNTO 0); SIGNAL Q4:STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL BB0:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL BB1:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL BB2:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL BB3:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINPROCESSBEGINBB0<=B(0)&B(0)&B(0)&B(0);BB1<=B(1)&B(1)&B(1)&B(1);BB2<=B(2)&B(2)&B(2)&B(2);BB3<=B(3)&B(3)&B(3)&B(3);Q1<=A AND BB0;Q2<=(A AND BB1)&"0";Q3<=(A AND BB2)&"00";Q4<=(A AND BB3)&"000";Q<=Q1+Q2+Q3+Q4;END PROCESS;END behave;功能仿真图如下MAX+PLUS II 中时序仿真图4.3.3符号与数据重组电路图MAX+PLUS II 中的电路图VHDL语言程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ZH ISPORT(Q:IN STD_LOGIC_VECTOR(7 DOWNTO 0);F:IN STD_LOGIC;FQ:OUT STD_LOGIC_VECTOR(8 DOWNTO 0));END ZH;ARCHITECTURE behave OF ZH ISBEGINFQ<=F & Q;END behave;功能仿真图如下MAX+PLUS II 中时序仿真图4.4分时显示控制电路图:MAX+PLUS II 中的电路图VHDL 程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY FSXS ISPORT(EA:IN STD_LOGIC;EB:IN STD_LOGIC;CLK:IN STD_LOGIC;AIN:IN STD_LOGIC_VECTOR(4 DOWNTO 0);BIN:IN STD_LOGIC_VECTOR(4 DOWNTO 0);QIN:IN STD_LOGIC_VECTOR(8 DOWNTO 0);QQOUT:OUT STD_LOGIC_VECTOR(8 DOWNTO 0)); END FSXS;ARCHITECTURE BEHA VE OF FSXS ISBEGINPROCESS(EA,EB,CLK)BEGINIF(CLK'EVENT AND CLK='1')THENIF(EA='1')THENQQOUT<=AIN(4)&"0000"&AIN(3 DOWNTO 0);ELSIF(EB='1'AND EA='0')THENQQOUT<=BIN(4)&"0000"&BIN(3 DOWNTO 0);ELSEQQOUT<=QIN;END IF;END IF;END PROCESS;END BEHA VE;功能仿真图如下:MAX+PLUS II 中时序仿真图4.5输出显示电路图:MAX+PLUS II 中的电路图MAX+PLUS II 中的结构图本模块为输出显示,将二进制转换为十进制,用数码管显示,由四部分组成,分别为“输出的数符分离”,“进制转换”,“消‘0’处理”和“数码管显示”,下面进行分别介绍:4.5.1输出数符分离MAX+PLUS II 中的电路图VHDL程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY OUTFL ISPORT(AIN:IN STD_LOGIC_VECTOR(8 DOWNTO 0);FOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);QOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END OUTFL;ARCHITECTURE BEHA VE OF OUTFL ISSIGNAL B:STD_LOGIC;BEGINB<=AIN(8);PROCESS(B)BEGINCASE B ISWHEN'0'=>FOUT<="0000";WHEN'1'=>FOUT<="0001";WHEN OTHERS=>FOUT<=NULL;END CASE;END PROCESS;QOUT<=AIN(7 DOWNTO 0);END BEHA VE;功能仿真结果如下:MAX+PLUS II 中时序仿真图4.5.2 进制转换MAX+PLUS II 中的电路图VHDL程序代码如下:module ets(clk,a,bout,sout,gout);input clk;input[7:0] a;output[3:0] bout,sout,gout;reg[3:0] A1,A2,A3,bout,sout,gout;reg[7:0] aa;reg[2:0] num;always@(posedge clk)begincase(num)0:beginaa[7:0]<=a;num<=1;A1<=0;A2<=0;A3<=0;end1:beginif(aa>=100)beginA3<=A3+1;aa<=aa-100;endelse if((aa>=10)&&(aa<100))beginA2<=A2+1;aa<=aa-10;endelse if((aa>=1)&&(aa<10))beginA1<=aa;aa<=0;endelsebeginnum<=2;endend2:begingout<=A1;sout<=A2;bout<=A3;num<=0;enddefault:num<=0;endcaseendendmodule功能仿真结果如下:MAX+PLUS II 中时序仿真图4.5.3消“0”处理MAX+PLUS II 中的电路图VHDL程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY PD ISPORT(B:IN STD_LOGIC_VECTOR(3 DOWNTO 0);S:IN STD_LOGIC_VECTOR(3 DOWNTO 0);G:IN STD_LOGIC_VECTOR(3 DOWNTO 0);BOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);SOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);GOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END PD;ARCHITECTURE BEHA VE OF PD ISBEGINPROCESS(B,S,G)BEGINIF(B="0000")THENIF(S="0000")THENIF(G="0000")THENBOUT<="1010";SOUT<="1010";GOUT<="1010";ELSEBOUT<="1010";SOUT<="1010";GOUT<=G;END IF;ELSEBOUT<="1010";SOUT<=S;GOUT<=G;END IF;ELSEBOUT<=B;SOUT<=S;GOUT<=G;END IF;END PROCESS;END BEHA VE;功能仿真结果如下:MAX+PLUS II 中时序仿真图4.5.4 数码管显示4.5.4.1符号位数码管显示MAX+PLUS II 中的电路图VHDL程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY bcd_seg ISPORT(BCD_F:IN STD_LOGIC_VECTOR(3 DOWNTO 0);LEDSEGF:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END bcd_seg;ARCHITECTURE BEHA VE OF bcd_seg ISBEGINPROCESS(BCD_F)BEGINCASE BCD_F ISWHEN"0000"=>LEDSEGF<="1111111";WHEN"0001"=>LEDSEGF<="0111111";WHEN OTHERS=>LEDSEGF<="0000000";END CASE;END PROCESS;END BEHA VE;功能仿真结果如下:MAX+PLUS II 中时序仿真图4.5.4.1符号位数码管显示MAX+PLUS II 中的电路图VHDL程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY bcd_7seg ISPORT(BCD_LED:IN STD_LOGIC_VECTOR(3 DOWNTO 0);LEDSEG:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END bcd_7seg;ARCHITECTURE BEHA VE OF bcd_7seg ISBEGINPROCESS(BCD_LED)BEGINCASE BCD_LED ISWHEN"0000"=>LEDSEG<="1000000";WHEN"0001"=>LEDSEG<="1111001";WHEN"0010"=>LEDSEG<="0100100";WHEN"0011"=>LEDSEG<="0110000";WHEN"0100"=>LEDSEG<="0011001";WHEN"0101"=>LEDSEG<="0010010";WHEN"0110"=>LEDSEG<="0000010";WHEN"0111"=>LEDSEG<="1011000";WHEN"1000"=>LEDSEG<="0000000";WHEN"1001"=>LEDSEG<="0010000";WHEN OTHERS=>LEDSEG<="1111111";END CASE;END PROCESS;END BEHA VE;功能仿真结果如下:MAX+PLUS II 中时序仿真图4.6灭“点”电路:MAX+PLUS II 中的电路图本模块功能:使数码管的“点”在整数运算中不显示。

相关文档
最新文档