基于EDA的简易计算器的设计Word文件下载.docx

上传人:b****5 文档编号:16205149 上传时间:2022-11-21 格式:DOCX 页数:17 大小:417.19KB
下载 相关 举报
基于EDA的简易计算器的设计Word文件下载.docx_第1页
第1页 / 共17页
基于EDA的简易计算器的设计Word文件下载.docx_第2页
第2页 / 共17页
基于EDA的简易计算器的设计Word文件下载.docx_第3页
第3页 / 共17页
基于EDA的简易计算器的设计Word文件下载.docx_第4页
第4页 / 共17页
基于EDA的简易计算器的设计Word文件下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

基于EDA的简易计算器的设计Word文件下载.docx

《基于EDA的简易计算器的设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于EDA的简易计算器的设计Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。

基于EDA的简易计算器的设计Word文件下载.docx

(1)学习面向可编程器件的FPGA的简单数字系统的设计流程;

(2)掌握EDA软件QuartusII的原理图输入方式,以及硬件描述语言描述方式;

(3)熟悉EDA编辑软件。

2设计的主要内容和要求

1、设计一个1位全加器。

运用波形仿真检查功能正确后,将其封装成1位全加器模块。

2、以1中已封装的1位全加器模块为基础设计一个4位全加器并将其封装成模块。

3、以全加器为基础设计一个4位乘法器并封装成乘法器模块,输出显示乘积和正负数标志。

4、以2、3中生成的器件模块为基础构成一个简易计算器,实现如图2.1所示。

根据S的输入,分别完成Y=A+B或Y=A×

B。

要求:

(1)加数为正时,实现两个4位二进制数与来自低位进位的加法运算,输出显示和及高位进位。

(2)加数为负时,实现两个4位二进制数的减法运算,输出显示差的原码和正负数标志。

图2.1简易计算器框图

3整体设计方案

根据设计要求和系统所具有功能,并参考相关的文献资料经行方案,先设计一个全加器,再四位全加器,四位乘法器,然后构成简易计算器。

4硬件电路的设计

4.1设计一位全加器

一位全加器电路如图4.1所示。

其中A1、B1分别为两个加数,C1为来自低位的进位,S为输出的全加和,C01为向高位的进位。

图4.1一位全加器

检查正确无误后,进行全编译,然后将其封装成一位全加器模块,如图4..2所示。

图4.2一位全加器模块

4.2 设计四位全加器

要实现一个四位全加器,能进行加减法且以原码方式输出结果,分三步进行,流程如图4.3所示。

图4.3四位全加器流程图

(1)设计四位加法器

用四个一位全加器的串行接法,即可得到四位串行加法器,实现四位二进制数的加法,用原理图的方式在QuartusII中构建原理图如图4.4。

图中A3A2A1A0、B3B2B1B0为两个加数,CO1为来自低位的进位,S3S2S1S0为全加和,CO2为向高位的进位。

图4.4四位全加器原理图

检查正确无误后,进行全编译,然后将其封装成四位加法器模块,如图4.5所示。

图4.5四位全加器模块

(2)设计可进行加减运算的四位全加器

在四位全加器电路中增设控制端k,当k=0时,对输入的两数进行加法运算,当k=1时,对输入的两数进行减法运算,并以原码形式输出差值。

思路:

将控制端k与加数和低位进位进行异或运算,这样k=1时,异或后得到原加数的反码,低位进位为1,此时被加数和加数的补码相加,得到差的补码,再将补码取反加1后得到差的原码;

k=0时,异或后原加数不变,此时被加数和加数相加,进行的是加法运算。

主要通过控制端k的各种异或运算实现,具体电路如图4.6所示。

其中A3A2A1A0为被加数,B3B2B1B0为加数,k为控制端,当k=0时,进行加法运算,CO1为来自低位的进位,和为Y3Y2Y1Y0,CO为和向高位的进位;

当k=1时,进行减法运算,即A3A2A1A0B3B2B1B0,CO为差的符号,CO=0表示差为正数,差值为Y3Y2Y1Y0,CO=1表示差为负数,差的原码为Y3Y2Y1Y0。

图4.6

检查正确无误后,进行全编译,然后将其封装成四位全加器模块,如图4.7.

图4.7

其中A3A2A1A0为被加数,B3B2B1B0为加数,k为控制端,其功能如下:

当k=0时,进行加法运算,CO1为来自低位的进位,和为Y3Y2Y1Y0,CO为和向高位的进位;

(3)实现四位全加器的原码输出

(2)中得到的四位全加器模块,其输出和是二进制原码,要想用数码管显示,需要将其转换成对应的十进制数。

该全加器模块的最大和为30,需用两个数码管显示结果,因此需要将

(2)中结果Y3Y2Y1Y0表示成两个十进制的数,符号位CO接到发光二极管上,用于指示和的正负。

具体思路及实现过程如下。

用Q3Q2Q1Q0、P3P2P1P0分别表示个位和十位的数码管的输入端,SF为符号位,现在需要找出Q3Q2Q1Q0、P3P2P1P0与Y3Y2Y1Y0及CO的关系。

首先只考虑将二进制数转化成十进制数,即先不考虑正负数,通过列真值表发现,

当CO1Y3Y2Y1Y0表示的十进制数为0~9时,P3P2P1P0=0000,Q3Q2Q1Q0=Y3Y2Y1Y0;

当CO1Y3Y2Y1Y0表示的十进制数为10~19时,P3P2P1P0=0001,Q3Q2Q1Q0=Y3Y2Y1Y0+0110;

当CO1Y3Y2Y1Y0表示的十进制数为20~29时,P3P2P1P0=0010,Q3Q2Q1Q0=Y3Y2Y1Y0+1100;

当CO1Y3Y2Y1Y0表示的十进制数为30~39时,P3P2P1P0=0011,Q3Q2Q1Q0=Y3Y2Y1Y0+0010。

其中CO1、SF与k及CO的关系如下表:

K

CO

CO1

SF

0(正数)

1

1(负数)

因此,CO1=K’CO,SF=KCO。

由上述知,可以通过一个四位加法器来实现CO1Y3Y2Y1Y0到Q3Q2Q1Q0的变换。

四位全加器的输入端为A3A2A1A0和B3B2B1B0。

将Y3Y2Y1Y0接到B3B2B1B0端,现在求A3A2A1A0与CO1Y3Y2Y1Y0的关系。

通过真值表、卡诺图化简得到:

A3=(Y3Y2+Y3Y1’)CO1

A2=CO1(Y3Y2Y1)’+CO1’Y3(Y2+Y1)

A1=CO1’Y3(Y2+Y1)+CO1(Y3’Y2’+Y3Y2Y1Y0’)

A0=0

按照此关系连接好电路后,四位加法器的输出端S3S2S1S0即是Q3Q2Q1Q0。

P3P2P1P0与CO1Y3Y2Y1Y0的关系也可类似得到:

P3=P2=0

P1=CO1(Y3Y2+Y3(Y1’+Y0’))

P0=A1.

这样就得到了Q3Q2Q1Q0、P3P2P1P0、SF与Y3Y2Y1Y0及CO的关系。

连接电路如图4.8所示。

图4.8四位全加器源码输出电路

检查正确无误后,进行全编译,然后将其封装成四位译码全加器模块,如图4.9所示。

其中A3A2A1A0为被加数,B3B2B1B0为加数,k为控制端,CO1为来自低位的进位,k=0时,进行加法运算,k=1时,进行减法运算。

SF为符号位,SF=0表示结果为正数,SF=1表示结果为负数,将Q3Q2Q1Q0、P3P2P1P0分别连到表示个位和十位的数码管上,则数码管既可以显示结果。

如,结果为-13时,SF=1,Q3Q2Q1Q0=0011,P3P2P1P0=0001

图4.9封装后的四位译码全加器模块

4.3设计四位乘法器

要实现两个四位二进制数的乘法运算,即是实现相乘、移位、相加的功能,为此分三步进行,过程如图4.10所示。

图4.10四位乘法器流程图

具体实现过程如下。

(1)设计八位加法器

利用2

(1)中的四位加法器实现一个八位的串行加法器电路,如图4.11所示。

图4.11八位的串行加法器电路

检查正确无误后,进行全编译,然后将其封装成八位加法器模块,如图4.12。

其中A7A6A5A4A3A2A1A0、B7B6B5B4B3B2B1B0为两个加数,CO1为来自低位的进位,S7S6S5S4S3S2S1S0为和,CO2为向高位的进位。

图4.12封装后的八位加法器模块

(2)设计四位乘法器

A3A2A1A0为被乘数,B3B2B1B0为乘数,BSF为乘数的符号位。

思路:

将A3A2A1A0分别与B3、B2、B1、B0相乘,得到四个八位二进制数,将这四个八位二进制数相加即得到乘积的结果。

S7S6S5S4S3S2S1S0表示乘积,SF表示乘积的符号。

原理图图4.13所示。

图4.13四位乘法电路

检查正确无误后,进行全编译,然后将其封装成四位乘法器模块,如图4.13所示。

封装后的图如图4.13所示其中A3A2A1A0为被乘数,B3B2B1B0为乘数,BSF为乘数的符号位,S7S6S5S4S3S2S1(3)将乘积结果转化为十进制数

图4.13封装后的四位乘法器模块

通过全编译,将其封装,得到译码器模块,如下图4.14所示。

其功能是将八位二进制数A7A6A5A4A3A2A1A0转换成B11B10B9B8B7B6B5B4B3B2B1B0,将B11B10B9B8、B7B6B5B4、B3B2B1B0分别接到数码管ABC上,即可显示十进制数ABC。

S0表示乘积,SF表示乘积的符号。

图4.14译码器模块

4.4构成简易计算器

实验任务要求,最终的计算器框图如图4.15.具有如下功能:

B

4.15简易计算器

将输入的四位二进制数A3A2A1A0、B3B2B1B0分别与S进行与运算后接到四位译码全加器的输入端,将A3A2A1A0、B3B2B1B0分别与S’进行与运算后接到四位乘法器的输入端,最后将加法器和乘法器的对应输出做或运算,作为最终的输出。

这样,S=0时,加法器输出0,乘法器输出两个数的乘积,最终得到的是乘积,即进行了乘法运算;

S=1时,乘法器输出0,加法器输出两个数的和,最终得到的是和,即进行了加法运算。

原理图如下

图4.16简易计算器原理图

半编译后,建立波形文件,进行功能仿真,结果如下:

检查正确无误后,进行全编译,然后将其封装成简易计算器模块,如图4.17所示。

图4.17封装后的简易计算器模块

A3A2A1A0为被加数(被乘数),B3B2B1B0为加数(乘数),BSF为B3B2B1B0的符号,S为控制端,将P11P10P9P8、P7P6P5P4、P3P2P1P0分别接到数码管ABC上,SF接到发光二极管上,功能如下:

S=0时,ABC显示两个输入的数的乘积,二极管显示符号,发光表示负数,不发光表示正数;

S=1时,ABC显示两个输入的数的和,二极管显示符号,发光表示负数,不发光表示正数。

5软件设计

四位乘法器乘积的结果为一个八位的二进制数,为了使其能够用三位数码管表示出来,需要将八位二进制数转化为三位十进制数,即完成译码功能。

用原理图的方式较复杂,且不易实现,因此考虑用VHDL语言编写程序。

程序如下:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYyimaqiIS

PORT(A:

INSTD_LOGIC_VECTOR(7DOWNTO0);

B:

OUTSTD_LOGIC_VECTOR(11DOWNTO0));

ENDyimaqi;

IFA

(1)='

0'

THENa1:

=0;

ELSEa1:

=1;

ENDIF;

IFA

(2)='

THENa2:

ELSEa2:

IFA(3)='

THENa3:

ELSEa3:

IFA(4)='

THENa4:

ELSEa4:

IFA(5)='

THENa5:

ELSEa5:

IFA(6)='

THENa6:

ELSEa6:

IFA(7)='

THENa7:

ELSEa7:

SUM:

=a7*128+a6*64+a5*32+a4*16+a3*8+a2*4+a1*2+a0;

b2:

=SUM/100;

b1:

=SUM/10MOD10;

b0:

=SUMMOD10;

CASEb2IS

WHEN0=>

B(11DOWNTO8)<

="

0000"

;

WHEN1=>

0001"

WHEN2=>

0010"

WHENothers=>

B(11downto8)<

1111"

ENDCASE;

CASEb1IS

B(7DOWNTO4)<

WHEN3=>

0011"

WHEN4=>

0100"

WHEN5=>

0101"

WHEN6=>

0110"

WHEN7=>

0111"

WHEN8=>

1000"

WHEN9=>

1001"

B(7downto4)<

CASEb0IS

ARCHITECTUREmulyimaOFyimaqiIS

BEGIN

PROCESS(A)

VARIABLEa0,a1,a2,a3,a4,a5,a6,a7,SUM,b0,b1,b2:

INTEGER;

IFA(0)='

THENa0:

ELSEa0:

ENDIF;

B(3DOWNTO0)<

B(3downto0)<

ENDPROCESS;

ENDARCHITECTURE;

6系统仿真与分析

6.1仿真结果

利用quartusII软件对本程序进行编译,生成了可以进行仿真定时分析以及下载到可编程器件的相关文件。

一位全加器仿真结果如图6.1所示:

图6.1一位全加器仿真图

四位全加器仿真如图6.2所示。

图6.2四位全加器仿真图

加减运算的四位全加器仿真如图6.3所示。

图6.3加减运算的四位全加器仿真如图

四位全加器的原码输出仿真如图6.4所示。

图6.4四位全加器的原码输出仿真如图

八位加法器仿真如图6.5所示。

图6.5八位加法器仿真图

四位乘法器仿真如图6.6所示。

图6.6四位乘法器仿真图

简易计算器仿真如图6.7所示:

图6.7简易计算器仿真结果

6.2仿真结果分析

从图中看出,A3A2A1A0=0111,B3B2B1B0=1111,BSF=1,S=1,结果为SF=1,P11P10P9P8=0000,P7P6P5P4=0000,P3P2P1P0=1000,即7-15=-8。

通过这个问题的解决,我认识到在进行波形仿真时,每个工程的波形文件名称应该与其工程名称一致,这样才能得到正确的仿真结果,因此,在每个工程下每次只能存在一个波形文件,在建立新的波形文件时,应该将原来的波形文件覆盖。

7设计总结

通过这次课程设计,我发现了自己的很多不足,也发现了很多知识上的漏洞。

同时也看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。

这次课程设计让我学到了很多,不仅是巩固了先前学的EDA技术的理论知识,而且也培养了我的动手能力,更令我的创造性思维得到拓展。

同时也让我认识到,

做其他事情,都需要我们付出足够的认真去对待,才能顺利的完成。

参考文献

[1]江国强.EDA技术与应用(第3版)[M].北京:

电子工业出版社,2010年4月

[2]杨恢先,黄辉先.单片机原理及应用[M].北京:

人民邮电出版社,2006年10月

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

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1