EDA大作业_简易计算器.docx_第1页
EDA大作业_简易计算器.docx_第2页
EDA大作业_简易计算器.docx_第3页
EDA大作业_简易计算器.docx_第4页
EDA大作业_简易计算器.docx_第5页
免费预览已结束,剩余13页可下载查看

下载本文档

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

文档简介

简易计算器 简易计算器EDA大作业报告人:xx班级:xx学号:xxEDA大作业 简易计算器目录EDA大作业 简易计算器1目的1任务1内容及步骤1实验设计及实现过程2设计一个1位全加器2设计四位全加器3(1)设计四位加法器3(2)设计可进行加减运算的四位全加器5(3)实现四位全加器的原码输出6设计四位乘法器8(1)设计八位加法器9(2)设计四位乘法器10(3)将乘积结果转化为十进制数12构成简易计算器14下载到实验箱上验证功能16小结与收获17目的1、 学习面向可编程器件的FPGA的简单数字系统的设计流程;2、 掌握EDA软件Quartus II的原理图输入方式,以及硬件描述语言描述方式;3、 熟悉实验装置实验箱。任务在可编程逻辑器件上实现一个简易计算器,可以进行4位二进制数的加法和乘法运算,其中被加(乘)数取值范围015,加(乘)数取值范围-1515。要求用原理图的输入方式及硬件描述语言的结构描述方式完成。 用实验箱上的按键开关模拟输入,用数码管显示十进制计算结果。内容及步骤1、 设计一个1位全加器。运用波形仿真检查功能正确后,将其封装成1位全加器模块。 2、 以1中已封装的1位全加器模块为基础设计一个4位全加器并将其封装成模块,要求: (1) 加数为正时,实现两个4位二进制数与来自低位进位的加法运算,输出显示和及高位进位。 (2) 加数为负时,实现两个4位二进制数的减法运算,输出显示差的原码和正负数标志。 3、以全加器为基础设计一个4位乘法器并封装成乘法器模块,输出显示乘积和正负数标志。4、以2、3中生成的器件模块为基础构成一个简易计算器,实现如下图功能。根据S的输入,分别完成YA+B或YAB。 5、下载到实验箱上验证功能。实验设计及实现过程设计一个1位全加器电路图如下:其中A1、B1分别为两个加数,C1为来自低位的进位,S为输出的全加和,C01为向高位的进位。在Quartus II中构建原理图如下:进行编译后,建立波形文件,功能仿真如下图检查正确无误后,进行全编译,然后将其封装成一位全加器模块,如下图:封装后的一位全加器模块A1、B1分别为两个加数,C1为来自低位的进位,S为输出的全加和,C01为向高位的进位。设计四位全加器要实现一个四位全加器,能进行加减法且以原码方式输出结果,分三步进行,流程如下。具体实现过程如下。(1)设计四位加法器用四个一位全加器的串行接法,即可得到四位串行加法器,实现四位二进制数的加法,用原理图的方式在Quartus II中构建原理图如下:图中A3A2A1A0、B3B2B1B0为两个加数,CO1为来自低位的进位,S3S2S1S0为全加和,CO2为向高位的进位 。先进行半编译,然后建立波形文件,进行功能仿真,结果如下检查正确无误后,进行全编译,然后将其封装成四位加法器模块,如下图:封装后的四位加法器模块图中A3A2A1A0、B3B2B1B0为两个加数,CO1为来自低位的进位,S3S2S1S0为全加和,CO2为向高位的进位 。(2)设计可进行加减运算的四位全加器在四位全加器电路中增设控制端k,当k=0时,对输入的两数进行加法运算,当k=1时,对输入的两数进行减法运算,并以原码形式输出差值。思路:将控制端k与加数和低位进位进行异或运算,这样k=1时,异或后得到原加数的反码,低位进位为1,此时被加数和加数的补码相加,得到差的补码,再将补码取反加1后得到差的原码;k=0时,异或后原加数不变,此时被加数和加数相加,进行的是加法运算。主要通过控制端k的各种异或运算实现,具体电路图如下:其中A3A2A1A0为被加数,B3B2B1B0为加数,k为控制端,当k=0时,进行加法运算,CO1为来自低位的进位,和为Y3Y2Y1Y0,CO为和向高位的进位;当k=1时,进行减法运算,即A3A2A1A0- B3B2B1B0, CO为差的符号,CO=0表示差为正数,差值为Y3Y2Y1Y0,CO=1表示差为负数,差的原码为Y3Y2Y1Y0。通过半编译后,建立波形文件,进行功能仿真如下图:检查正确无误后,进行全编译,然后将其封装成四位全加器模块,如下图封装后的四位全加器模块其中A3A2A1A0为被加数,B3B2B1B0为加数,k为控制端,其功能如下:当k=0时,进行加法运算,CO1为来自低位的进位,和为Y3Y2Y1Y0,CO为和向高位的进位;当k=1时,进行减法运算,即A3A2A1A0- B3B2B1B0, CO为差的符号,CO=0表示差为正数,差值为Y3Y2Y1Y0,CO=1表示差为负数,差的原码为Y3Y2Y1Y0。(3)实现四位全加器的原码输出(2)中得到的四位全加器模块,其输出和是二进制原码,要想用数码管显示,需要将其转换成对应的十进制数。该全加器模块的最大和为30,需用两个数码管显示结果,因此需要将(2)中结果Y3Y2Y1Y0表示成两个十进制的数,符号位CO接到发光二极管上,用于指示和的正负。具体思路及实现过程如下。用Q3Q2Q1Q0、P3P2P1P0分别表示个位和十位的数码管的输入端,SF为符号位,现在需要找出Q3Q2Q1Q0、P3P2P1P0与Y3Y2Y1Y0及CO的关系。首先只考虑将二进制数转化成十进制数,即先不考虑正负数,通过列真值表发现,当CO1Y3Y2Y1Y0表示的十进制数为09时,P3P2P1P0=0000,Q3Q2Q1Q0= Y3Y2Y1Y0;当CO1Y3Y2Y1Y0表示的十进制数为1019时,P3P2P1P0=0001,Q3Q2Q1Q0= Y3Y2Y1Y0+0110;当CO1Y3Y2Y1Y0表示的十进制数为2029时,P3P2P1P0=0010,Q3Q2Q1Q0= Y3Y2Y1Y0+1100;当CO1Y3Y2Y1Y0表示的十进制数为3039时,P3P2P1P0=0011,Q3Q2Q1Q0= Y3Y2Y1Y0+0010。其中CO1、SF与k及CO的关系如下表:KCOCO1SF0000(正数)0110(正数)1000(正数)1101(负数)因此,CO1= K CO,SF= KCO。由上述知,可以通过一个四位加法器来实现CO1Y3Y2Y1Y0到Q3Q2Q1Q0的变换。四位全加器的输入端为A3A2A1A0和B3B2B1B0。将Y3Y2Y1Y0接到B3B2B1B0端,现在求A3A2A1A0与CO1Y3Y2Y1Y0的关系。通过真值表、卡诺图化简得到:A3= (Y3Y2+ Y3Y1) CO1A2= CO1(Y3Y2Y1)+ CO1 Y3 (Y2+Y1)A1= CO1 Y3 (Y2+Y1)+ CO1(Y3Y2+ Y3Y2 Y1Y0)A0=0按照此关系连接好电路后,四位加法器的输出端S3S2S1S0即是Q3Q2Q1Q0。P3P2P1P0与CO1Y3Y2Y1Y0的关系也可类似得到:P3=P2=0P1= CO1(Y3Y2+ Y3(Y1+Y0)P0= A1.这样就得到了Q3Q2Q1Q0、P3P2P1P0、SF与Y3Y2Y1Y0及CO的关系。连接电路图如下:半编译后,建立波形文件,进行功能仿真,波形如下检查正确无误后,进行全编译,然后将其封装成四位译码全加器模块,如下图封装后的四位译码全加器模块其中A3A2A1A0为被加数,B3B2B1B0为加数,k为控制端,CO1为来自低位的进位,k=0时,进行加法运算,k=1时,进行减法运算。SF为符号位,SF=0表示结果为正数,SF=1表示结果为负数,将Q3Q2Q1Q0、P3P2P1P0分别连到表示个位和十位的数码管上,则数码管既可以显示结果。如,结果为-13时,SF=1,Q3Q2Q1Q0=0011,P3P2P1P0=0001 设计四位乘法器要实现两个四位二进制数的乘法运算,即是实现相乘、移位、相加的功能,为此分三步进行,过程如下。具体实现过程如下。(1)设计八位加法器利用2(1)中的四位加法器实现一个八位的串行加法器电路,如下图半编译后,建立波形文件,进行功能仿真结果如下检查正确无误后,进行全编译,然后将其封装成八位加法器模块,如下图封装后的八位加法器模块其中A7A6A5A4A3A2A1A0、B7B6B5B4B3B2B1B0为两个加数,CO1为来自低位的进位,S7S6S5S4S3S2S1S0为和,CO2为向高位的进位。(2)设计四位乘法器A3A2A1A0为被乘数,B3B2B1B0为乘数,BSF为乘数的符号位。思路:将A3A2A1A0分别与B3、B2、B1、B0相乘,得到四个八位二进制数,将这四个八位二进制数相加即得到乘积的结果。S7S6S5S4S3S2S1S0表示乘积,SF表示乘积的符号。原理图如下:半编译后,建立波形文件,进行功能仿真,结果如下:检查正确无误后,进行全编译,然后将其封装成四位乘法器模块,如下图封装后的图如下封装后的四位乘法器模块其中A3A2A1A0为被乘数,B3B2B1B0为乘数,BSF为乘数的符号位,S7S6S5S4S3S2S1S0表示乘积,SF表示乘积的符号。(3)将乘积结果转化为十进制数乘积的结果为一个八位的二进制数,为了使其能够用三位数码管表示出来,需要将八位二进制数转化为三位十进制数,即完成译码功能。用原理图的方式较复杂,且不易实现,因此考虑用VHDL语言编写程序。程序如下:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY yimaqi ISPORT (A:in STD_LOGIC_VECTOR(7 DOWNTO 0); B:out STD_LOGIC_VECTOR(11 DOWNTO 0) ); END ENTITY yimaqi;ARCHITECTURE mulyima OF yimaqi ISBEGINPROCESS(A)VARIABLE a0,a1,a2,a3,a4,a5,a6,a7,SUM,b0,b1,b2:INTEGER;BEGINIF A(0)=0 THEN a0:=0;ELSE a0:=1;END IF; IF A(1)=0 THEN a1:=0;ELSE a1:=1;END IF;IF A(2)=0 THEN a2:=0;ELSE a2:=1;END IF; IF A(3)=0 THEN a3:=0;ELSE a3:=1;END IF; IF A(4)=0 THEN a4:=0;ELSE a4:=1;END IF;IF A(5)=0 THEN a5:=0;ELSE a5:=1;END IF; IF A(6)=0 THEN a6:=0;ELSE a6:=1;END IF; IF A(7)=0 THEN a7:=0;ELSE a7:=1;END IF; SUM:=a7*128+a6*64+a5*32+a4*16+a3*8+a2*4+a1*2+a0; b2:=SUM/100; b1:=SUM/10 MOD 10; b0:=SUM MOD 10;CASE b2 ISWHEN 0= B(11 DOWNTO 8) B(11 DOWNTO 8) B(11 DOWNTO 8)B(11 downto 8) B(7 DOWNTO 4) B(7 DOWNTO 4) B(7 DOWNTO 4) B(7 DOWNTO 4) B(7 DOWNTO 4) B(7 DOWNTO 4) B(7 DOWNTO 4) B(7 DOWNTO 4) B(7 DOWNTO 4) B(7 DOWNTO 4)B(7 downto 4) B(3 DOWNTO 0) B(3 DOWNTO 0) B(3 DOWNTO 0) B(3 DOWNTO 0) B(3 DOWNTO 0) B(3 DOWNTO 0) B(3 DOWNTO 0) B(3 DOWNTO 0) B(3 DOWNTO 0) B(3 DOWNTO 0)B(3 downto 0)=1111;END CASE;END PROCESS;END ARCHITECTURE;通过全编译,将其封装,得到译码器模块,如下图:其功能是将八位二进制数A7A6A5A4A3A2A1A0转换成B11B10B9B8B7B6B5B4B3B2B1B0,将B11B10B9B8、B7B6B5B4、B3B2B1B0分别接到数码管ABC上,即可显示十进制数ABC。构成简易计算器实验任务要求,最终的计算器具有如下功能:根据S的输入,分别完成YA+B或YAB思路:将输入的四位二进制数A3A2A1A0、B3B2B1B0分别与S进行与运算后接到四位译码全加器的输入端,将A3A2A1A0、B3B2B1B0分别与S进行与运算后接到四位乘法器的输入端,最后将加法器和乘法器的对应输出做或运算,作为最终的输出。这样,S=0时,加法器输出0,乘法器输出两个数的乘积,最终得到的是乘积,即进行了乘法运算;S=1时,乘法器输出0,加法器输出两个数的和,最终得到的是和,即进行了加法运算。原理图如下半编译后,建立波形文件,进行功能仿真,结果如下:检查正确无误后,进行全编译,然后将其封装成简易计算器模块,如下图封装后的简易计算器模块A3A2A1A0为被加数(被乘数),B3B2B1B0为加数(乘数),BSF为B3B2B1B0的符号,S为控制端,将P11P10P9P8、P7P6P5P4、P3P2P1P0分别接到数码管ABC上,SF接到发光二极管上,功能如下:S=0时,ABC显示两个输入的数的乘积,二极管显示符号,发光表示负数,不发光表示正数;S=1时,ABC显示两个输入的数的和,二极管显示符号,发光表示负数,不发光表示正数。下载到实验箱上验证功能按照上述过程最终得到了简易计算器,在实验室对简易计算器进行管脚锁定后下载到实验箱上,得到了预期的结果,验证过程进行得十分顺利。验证功能完毕后,助教老师要求我在calculator工程下,新建一个波形文件,只进行7-15的运算(不记得当时要求的是什么运算了,以7-15为例),由于

温馨提示

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

评论

0/150

提交评论