您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > C/C++资料 > 基于EDA的简易计算器的设计
EDA课程设计报告书课题名称基于EDA的简易计算器的设计姓名学号院系专业指导教师年月日※※※※※※※※※※※※※※※※※※※※※※※※****级学生EDA课程设计1一、设计任务及要求:设计任务:设计一个简易的计算器。要求:在可编程逻辑器件上实现一个简易计算器,可以进行4位二进制数的加法和乘法运算,其中被加(乘)数取值范围0~15,加(乘)数取值范围-15~15。要求用原理图的输入方式及硬件描述语言的结构描述方式完成。指导教师签名:年月日二、指导教师评语:指导教师签名:年月日三、成绩验收盖章2011年月日2基于EDA的简易计算器的设计1设计目的(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整体设计方案3根据设计要求和系统所具有功能,并参考相关的文献资料经行方案,先设计一个全加器,再四位全加器,四位乘法器,然后构成简易计算器。4硬件电路的设计4.1设计一位全加器一位全加器电路如图4.1所示。其中A1、B1分别为两个加数,C1为来自低位的进位,S为输出的全加和,C01为向高位的进位。VCCA1INPUTVCCB1INPUTVCCC1INPUTS1OUTPUTCO1OUTPUTXORinstXORinst1NAND2inst2NAND2inst3NAND2inst4图4.1一位全加器检查正确无误后,进行全编译,然后将其封装成一位全加器模块,如图4..2所示。A1B1C1S1CO1ywinst2图4.2一位全加器模块4.2设计四位全加器要实现一个四位全加器,能进行加减法且以原码方式输出结果,分三步进行,流程如图4.3所示。图4.3四位全加器流程图(1)设计四位加法器用四个一位全加器的串行接法,即可得到四位串行加法器,实现四位二进制四位加法四位全加输出全加4数的加法,用原理图的方式在QuartusII中构建原理图如图4.4。图中A3A2A1A0、B3B2B1B0为两个加数,CO1为来自低位的进位,S3S2S1S0为全加和,CO2为向高位的进位。VCCA3INPUTVCCA2INPUTVCCA1INPUTVCCA0INPUTVCCB3INPUTVCCB2INPUTVCCB1INPUTVCCB0INPUTVCCCO1INPUTS3OUTPUTS2OUTPUTS1OUTPUTS0OUTPUTCO2OUTPUTA1B1C1S1CO1ywinstA1B1C1S1CO1ywinst1A1B1C1S1CO1ywinst2A1B1C1S1CO1ywinst3图4.4四位全加器原理图检查正确无误后,进行全编译,然后将其封装成四位加法器模块,如图4.5所示。A3A2A1A0B3B2B1B0CO1S3S2S1S0CO2swjfinst图4.5四位全加器模块图中A3A2A1A0、B3B2B1B0为两个加数,CO1为来自低位的进位,S3S2S1S0为全加和,CO2为向高位的进位。(2)设计可进行加减运算的四位全加器在四位全加器电路中增设控制端k,当k=0时,对输入的两数进行加法运算,当k=1时,对输入的两数进行减法运算,并以原码形式输出差值。思路:将控制端k与加数和低位进位进行异或运算,这样k=1时,异或后得到原加数的反码,低位进位为1,此时被加数和加数的补码相加,得到差的补码,再将补码取反加1后得到差的原码;k=0时,异或后原加数不变,此时被加数和加数相加,进行的是加法运算。主要通过控制端k的各种异或运算实现,具体电路如图4.6所示。其中A3A2A1A0为被加数,B3B2B1B0为加数,k为控制端,5当k=0时,进行加法运算,CO1为来自低位的进位,和为Y3Y2Y1Y0,CO为和向高位的进位;当k=1时,进行减法运算,即A3A2A1A0B3B2B1B0,CO为差的符号,CO=0表示差为正数,差值为Y3Y2Y1Y0,CO=1表示差为负数,差的原码为Y3Y2Y1Y0。VCCA3INPUTVCCA2INPUTVCCA1INPUTVCCA0INPUTVCCB3INPUTVCCB2INPUTVCCB1INPUTVCCB0INPUTVCCKINPUTVCCCO1INPUTY3OUTPUTY2OUTPUTY1OUTPUTY0OUTPUTCOOUTPUTNOTinst17A3A2A1A0B3B2B1B0CO1S3S2S1S0CO2swjfinstA1B1C1S1CO1ywinst1A1B1C1S1CO1ywinst2A1B1C1S1CO1ywinst3A1B1C1S1CO1ywinst4XORinst5XORinst6XORinst7XORinst8XORinst9XORinst10XORinst11XORinst12AND2inst13GNDXORinst15OR2inst19图4.6检查正确无误后,进行全编译,然后将其封装成四位全加器模块,如图4.7.KA3B3A2B2A1B1A0B0CO1Y3Y2Y1Y0COswjiajianinst4图4.7其中A3A2A1A0为被加数,B3B2B1B0为加数,k为控制端,其功能如下:当k=0时,进行加法运算,CO1为来自低位的进位,和为Y3Y2Y1Y0,CO为和向高位的进位;当k=1时,进行减法运算,即A3A2A1A0B3B2B1B0,CO为差的符号,CO=0表示差为正数,差值为Y3Y2Y1Y0,CO=1表示差为负数,差的原码为Y3Y2Y1Y0。(3)实现四位全加器的原码输出(2)中得到的四位全加器模块,其输出和是二进制原码,要想用数码管显示,需要将其转换成对应的十进制数。该全加器模块的最大和为30,需用两个6数码管显示结果,因此需要将(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的关系如下表: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(Y3’Y2’+Y3Y2Y1Y0’)7A0=0按照此关系连接好电路后,四位加法器的输出端S3S2S1S0即是Q3Q2Q1Q0。P3P2P1P0与CO1Y3Y2Y1Y0的关系也可类似得到:P3=P2=0P1=CO1(Y3Y2+Y3(Y1’+Y0’))P0=A1.这样就得到了Q3Q2Q1Q0、P3P2P1P0、SF与Y3Y2Y1Y0及CO的关系。连接电路如图4.8所示。KA3B3A2B2A1B1A0B0CO1Y3Y2Y1Y0COswjiajianinstA3A2A1A0B3B2B1B0CO1S3S2S1S0CO2swjfinst1OR2inst4NOTinst3NOTinst6NOTinst7NOTinst8NOTinst9XORinst5AND2inst11AND2inst12NAND3inst13AND2inst14OR2inst15OR2inst17AND3inst18OR2inst19OR2inst20AND2inst16AND2inst21NOTinst22AND2inst23GNDQ3OUTPUTQ2OUTPUTQ1OUTPUTQ0OUTPUTP1OUTPUTP0OUTPUTAND2inst26OR2inst27OR2inst28AND2inst29NOTinst10SFOUTPUTAND2inst30VCCA3INPUTVCCA2INPUTVCCA1INPUTVCCA0INPUTVCCB3INPUTVCCB2INPUTVCCB1INPUTVCCB0INPUTVCCCO1INPUTVCCKINPUTAND2inst25P3OUTPUTP2OUTPUT图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=0001KA3A2A1A0B3B2B1B0CO1Q3Q2Q1Q0P3P2P1P0SFyima4addinst168图4.9封装后的四位译码全加器模块4.3设计四位乘法器要实现两个四位二进制数的乘法运算,即是实现相乘、移位、相加的功能,为此分三步进行,过程如图4.10所示。图4.10四位乘法器流程图具体实现过程如下。(1)设计八位加法器利用2(1)中的四位加法器实现一个八位的串行加法器电路,如图4.11所示。VCCCO1INPUTVCCA7INPUTVCCA6INPUTVCCA5INPUTVCCA4INPUTVCCA3INPUTVCCA2INPUTVCCA1INPUTVCCA0INPUTVCCB7INPUTVCCB6INPUTVCCB5INPUTVCCB4INPUTVCCB3INPUTVCCB2INPUTVCCB1INPUTVCCB0INPUTCO2OUTPUTS0OUTPUTS1OUTPUTS2OUTPUTS3OUTPUTS4OUTPUTS5OUTPUTS6OUTPUTS7OUTPUTA3A2A1A0B3B2B1B0CO1S3S2S1S0CO2swjfinstA3A2A1A0B3B2B1B0CO1S3S2S1S0CO2swjfinst1图4.11八位的串行加法器电路检查正确无误后,进行全编译,然后将其封装成八位加法器模块,如图4.12。其中A7A6A5A4A3A2A1A0、B7B6B5B4B3B2B1B0为两个加数,CO1为来自低位的进位,S7S6S5S4S3S2S1S0为和,CO2为向高位的进位。A7A6A5A4B7B6B5B4A3A2A1A0B3B2B1B0CO1S7S6S5S4CO2S3S2S
本文标题:基于EDA的简易计算器的设计
链接地址:https://www.777doc.com/doc-7338474 .html