1、EDA 大作业简单计算器 1计算器设计专业:电子信息工程设计者: EDA 大作业简单计算器 2摘要本文介绍了一个简单的计算器的设计,该设计采用了现场可编程逻辑器件 FPGA设计,并基于 VHDL语言实现加减乘除功能,并用十进制显示在数码管上。系统由计算部分、输入部分、选择部分、输出部分组成,计算部分为加法器、减法器、乘法器和除法器组成。使用 Altera公司的 QuartusII开发软件进行功能仿真并给出仿真波形,并下载到试验箱,用实验箱上的按键开关模拟输入,用数码管显示十进制计算结果。通过外部按键可以完成四位二进制数的加、减、乘、除四种运算功能,其结果简单,易于实现。关键字:VHDL,计算器
2、,QuartusIIEDA 大作业简单计算器 3目录一实验目的 4二、流程图 4三顶层原理图 5四、各个模块 7(1)加法器模块 .71、封装元件 72、加法器程序 83、仿真结果 8(2)减法器模块 91、封装元件 92、减法器程序 103、仿真结果 114、硬件运行结果 12(3)乘法器模块 131、封装元件 132、乘法器的设计思想 133、乘法器程序 144、仿真结果 155、硬件运行结果 15(4)除法器模块 161、封装元件 162、除法器设计思想 163、除法器程序 174、仿真结果 175、硬件运行结果 18(5)8 位除法器 .191、封装元件 192、8 位除法器设计思想
3、.193、8 位除法器程序 .204、仿真结果 22(6)数码管七段译码电路 231、封装元件 232、共阴极七段显示码十六进制转换表 233、七段译码器程序 244、仿真结果 24(7)选择模块 251、封装元件 252、程序 26五、管脚锁定 26六、小结与收获 27EDA 大作业简单计算器 4一实验目的1、熟悉 QuartusII 软件的相关操作,掌握数字电路设计的基本流程。2、介绍 QuartusII 的软件,掌握基本的设计思路,软件环境参数配置,仿真,管脚分配,下载等基本操作。3、了解 VHDL 或原理图设计方法与定制 IP 模块的思想。4、掌握并行加法器,减法器乘法器以及除法器的设
4、计思路及工作原理。5、设计一个能完成加减乘除功能并以十进制显示结果的简单计算器。二、流程图输入控制功能的数 选择模块减法模块乘法模块除法模块加法模块显示结果十六进制转换成十进制 当输入为 00 时输出加法结果 当输入为 01 时输出减法结果 当输入为 10 时输出乘法结果 当输入为 11 时输出除法结果EDA 大作业简单计算器 5三顶层原理图创新:四个模块输出均为十六进制数,为了输出方便观察,设计了8 位除法器,将输出变为十进制数显示在数码管上。DATAIN10为输入控制端,通过试验箱上两个拨码开关控制输入。A30和 B30是两个四位二进制输入数,当 DATAIN 为 00 时进行加法运算,当
5、 DATAIN 为 01 时进行减法运算,当 DATA 为 10时进行乘法运算,当 DATA 为 11 是进行除法运算。结果用十进制显示三个共阳静态 LED 数码管上,除法的余数单独显示在右下角的七段驱动共阳数码管中的一个上。乘法模块除法模块减法模块加法模块控制模块 七段数码管输出个位输出十位输出百位三个八位除法器,把十六进制数转换为十进制数显示除法余数EDA 大作业简单计算器 6四、各个模块(1)加法器模块1、封装元件C LRA 30B 30S 70A D D E R 4Bins t6当 CLR 为1时清零,输出为零当 CLR 为0时,输入两个四位二进制数,输出两个数之和,S30为和,S4为
6、进位。EDA 大作业简单计算器 72、加法器程序3、仿真结果当 CLR 为 1 时,输出为 0;当 CLR 为 0 时,进行加法运算。S30为相加后得到的和,S74为相加后的进位。4、硬件运行结果EDA 大作业简单计算器 8从左到右,前三个数码管为结果,用十进制显示:第一个为百位,第二个为十位,第三个为个位。第五个为加数,第六个为被加数。EDA 大作业简单计算器 9(2)减法器模块1、封装元件C LRa30b30s30cosub4inst1设计思想:减去一个数等于加上这个数的补码。对减数求补码,再调用加法器当 CLR 为1时清零,输出为零当 CLR 为0时,a 是四位二进制被减数, b 时四位
7、二进制减数。S 为相减的结果,co 为借位,当 co 为 0 时代表 a 减 b 是整数,否则为负数或者 0。EDA 大作业简单计算器 102、减法器程序EDA 大作业简单计算器 113、仿真结果CLR 为清零,当 CLR 为 1 时清零,输出为 0;当 CLR 为 0 时进行减法运算,a、b 为两个四位二进制输入, s 为输出,当 co 为 0 时,代表 s 为正,当 co 为 1 时代表 co 为负,当被减数小于减数时,s 为相减得到的结果的补码。调用一个加法程序EDA 大作业简单计算器 124、硬件运行结果从左到右,前三个数码管用十进制显示结果:第一个代表正负,为0 时代表正,为 1 时
8、代表负。第五个为减数,第六个为被减数。EDA 大作业简单计算器 13(3)乘法器模块1、封装元件c lra30b30y 70m ulti4bins t21当 clr 为1时输出为 0当 clr 为0时,a 与 b 相乘输出 y2、乘法器的设计思想用并行相乘的方法。通过开关和键盘,两组分别输入 4bit 的数据进行乘法运算时,先求出部分积,即求得二进制数据的乘数和被乘数逐位相乘,之后运用二进制加法进行加和。举例如下,10X9=90:-10 9 = 90- 1 0 1 0 - X 1 0 0 1 =- - - 00001010 - 00000000 -部分积EDA 大作业简单计算器 14- 000
9、00000 - 01010000 - - 1011010 =90这里加法的结果就是所求结果。3、乘法器程序EDA 大作业简单计算器 154、仿真结果clr 为清零,当 clr 为 1 时进行乘法运算,a、b 为两个四位二进制输入,y 为十六进制输出。5、硬件运行结果从左到右,前三个数码管用十进制显示结果:第一个为百位,第二个为十位,第三个为个位。第五个为乘数,第六个为被乘数。EDA 大作业简单计算器 16(4)除法器模块1、封装元件clra30b30s70div isioninst2当 clr 为1时,输出为 0。当 clr 为0 时,a 与 b 相除输出 s,s 高四位为商,低四位为余2、除
10、法器设计思想 f:=a; g:=b; e:=(others=0);-f 等于被除数,g 等于除数 for i in 1 to 15 loop -e 为商 if (f=g) then f:=f-g; e:=e+1; else exit; end if; end loop; s(7 downto 4)=e;s(3 downto 0)=f; 利用循环的思想设计除法器。S 高四位为商,第四位为余数EDA 大作业简单计算器 173、除法器程序4、仿真结果当 clr=1时清零,当 clr=0时进行除法运算。a、b 为四位二进制数,a 为被除数,b 为除数, s 高四位为商,s 低四位为余数。EDA 大作业
11、简单计算器 185、硬件运行结果从左到右,前三个数码管用十进制显示计算后的商,第一个为百位,第二个为十位,第三个为个位。第五个数码管为除数,第六个数码管为被除数。右下角一个数码管显示运算得到的余数。EDA 大作业简单计算器 19(5)8 位除法器1、封装元件beichu70chu70shang70y u30Divinst3作用:用于把十六进制显示的输出换成十进制显示。方法:被除数除以 10 时,余数为个位;得到的商除以 10,得到的余数为十位;得到的商再除以 10,得到的余数为百位。2、8 位除法器设计思想 利用移位减法原理设计除法器 首先在被除数前面补 7 个零,赋值为 Remain7,除数
12、后面补 7个零,赋值为 diver7。若 Remain7 大于 diver7,则 shang(7)为1,Remain6= Remain7 - diver7。否则shang(7)为0, Remain6= Remain7 ; Diver6 等于 diver7 左移一位,后面补零。再重复上一个步骤,得出 shang(6) ,直到得出 shang(0)为止 Remain 是中间与 diver 相减的得到的数,diver 保存除数移位后的数;EDA 大作业简单计算器 20说明:8 位除法器不能用四位除法器那循环的方法,因为,如果用循环的方法,由于循环次数太多,在电脑上要运行半个小时以上,不能用。3、8
13、位除法器程序EDA 大作业简单计算器 21EDA 大作业简单计算器 224、仿真结果EDA 大作业简单计算器 23(6)数码管七段译码电路1、封装元件D30 data_out06seg7inst12作用:用于在一个七段共阳数码管显示除法器的余数。2、共阴极七段显示码十六进制转换表十六进制码 共阴极七段显示码Num D8 D4 D2 D1 g f e d c b a0 0 0 0 0 0 1 1 1 1 1 11 0 0 0 1 0 0 0 0 1 1 02 0 0 1 0 1 0 1 1 0 1 13 0 0 1 1 1 0 0 1 1 1 14 0 1 0 0 1 1 0 0 1 1 05
14、0 1 0 1 1 1 0 1 1 0 16 0 1 1 0 1 1 1 1 1 0 17 0 1 1 1 0 0 0 0 1 1 18 1 0 0 0 1 1 1 1 1 1 19 1 0 0 1 1 1 0 1 1 1 1A 1 0 1 0 1 1 1 0 1 1 1B 1 0 1 1 1 1 1 1 1 0 0C 1 1 0 0 0 1 1 1 0 0 1D 1 1 0 1 1 0 1 1 1 1 0E 1 1 1 0 1 1 1 1 0 0 1F 1 1 1 1 1 1 1 0 0 0 1EDA 大作业简单计算器 243、七段译码器程序4、仿真结果EDA 大作业简单计算器 25(7)选
15、择模块1、封装元件Q10input310output70output130chooseinst11 当 Q 为“00”时进行加法运算 当 Q 为“01”时进行减法运算 当 Q 为“10”时进行乘法运算 当 Q 为“11”时进行除法运算EDA 大作业简单计算器 262、程序五、管脚锁定EDA 大作业简单计算器 27六、小结与收获回顾本次大作业完成的整个过程,觉得收获很多,主要有以下几个方面。 (1) 通过整个过程的设计完成,锻炼了分析、解决问题的能力,熟练掌握了 Quartus II 的原理图输入方式,并对硬件描述语言有了初步的认识和运用,认识到 Quartus II 用于电路仿真的强大功能; (2) 完成过程中,关于电路的设计,有多种不同的实现方法,经过和同学讨论,交流想法,尽量选择简单易行的方法,同时灵活运用各种逻辑门电路,锻炼了逻辑思维能力; (3) 通过整个过程的完成,最终在实验箱上顺利得到了正确的结果,虽然只是一个简易的、功能很少的计算器,但毕竟是自己亲手操作完成的,觉得很有成就感,这也增加了我对数字电子技术的兴趣。