基于FPGA的计算器设计.docx
《基于FPGA的计算器设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的计算器设计.docx(32页珍藏版)》请在冰豆网上搜索。
基于FPGA的计算器设计
研究生课程论文
课程名称FPGA及片上系统SOPC应用
授课学期学年
第一学期
学院X
专业C
学号C1
姓名C
任课教师C
论文题目基于FPGA的计算器设计
交稿日期2014年01月09日
成绩
X
基于FPGA的计算器设计
研究生:
XX指导老师:
XX
摘要
本文介绍了一个简单计算器的设计,基于硬件描述语言VHDL采用了现场可编程逻辑器件FPGA进行设计,并在Altera公司的QuartusⅡ软件上实现仿真。
系统由键控模块、运算、存储模块和译码显示模块四个部分组成,计算部分为加法器、减法器、乘法器和除法器,存储部分需要3个存储器来实现:
内部累加器(acc)、输入寄存器(reg)以及结果暂存器(ans)。
显示部分由四个七段译码管组成,分别来显示输入数字,输入部分采用外接键盘,外部的8个按键他们能以单键和组合键的形式完成0~9999之内的‘加’、‘减’、‘乘’、‘除’、‘符号变换’、‘存储数据’和‘读取数据’等七种功能运算其结构简单,易于实现。
关键词:
FPGA;VHDL;计算器;设计
ThedesignofcalculatorbasedonFPGA
GraduateStudent:
DongdongFanSupervisor:
ShuxiangSong
Abstract
Thisarticledescribesthedesignofasimplecalculator,thedesignusesFieldProgrammableGateArrayFPGAbasedonVHDLhardwaredescriptionlanguagetodesignandAltera'sQuartusⅡinsoftwareforemulation.Thissystemiscomponentedbythekeycontrolmodule,computing,storageanddecodingdisplaymoduleofthefourparts,thecomputingpartincludeadder,subtractor,multiplieranddivider,Storagepartneedsthreememorytohelpachieved:
internalaccumulator(acc),inputregister(reg)aswellastheresultsofregisters(ans).Displaypartismadeupfourdecoderof7sections,respectivelytoshowthenumberofinput.The8keystheycanbysinglecombinedkeyformstobecompletedaddition,multiplication,divisionarithmeticoperatorandsymboltransform,storeddataandreadsevenfunctionofoperationwithin0to9999numbers.itsstructureissimpleandeasytoimplement.
Keywords:
FPGA;VHDL;calclute;design
第1章引言
1.1课程设计的目的与意义
在人类学会交易的时候,计算也随之产生,而算盘作为计算最实用的工具存在了几千年。
算盘亦称珠算,是中国人民创造的一种计算工具,素有“中国计算机”之称。
算盘产生于汉代之前,是由古代的“筹算”演变而来的,珠算一词,最早见于汉末三国时代徐岳撰《数术记遗》,书中有“珠算,控带四时,经纬三才”的记述。
明清时期,算盘的应用已很广泛,关于算盘制造规格,后来出现的各种规格的算盘,都是在此基础上发展起来的。
算盘构造简单,便于掌握,使用方便,成为计算理财不可缺少的工具。
可是随着人类文明的进步和科学技术的不断发展。
算盘已经越来越不能满足一些高强度、高难度、高速度的复杂计算。
这时,一种新的电子产品问世了,它就是电子计算器。
电子计算器的发明是跨时代的,它比算盘计算的速度要快几百几千倍,计算的结果要比算盘更精确,操作的方法要更方便,更简单易学,计算的范围更广,并且小巧、轻便。
它已经成为人们日常生活中不可缺少的一种计算工具,为我们的生活提供了很大的方便。
而随着计算机的普及,越来越多人在使用计算机,越来越多的工作离不开计算机,可以说计算机已经成为现代社会中不可或缺的工具,而电子计算器功能也以软件的形式进入计算机的软件世界,这不仅给人们带来了更大的便利,更为人们引入了更快的计算速度和更强大的运算功能。
1.2国内外发展现状
(1)国外情况
在国外,电子计算器在集成电路发明后,只用短短几年时间就完成了技术飞跃,经过激烈的市场竞争,现在的计算器技术己经相当成熟。
计算器已慢慢地脱离原来的“辅助计算工具”的功能定位,正向着多功能化、可编程化方向发展,在各个领域都得到了广泛的应用。
用计算器不仅可以实现各种各样复杂的数学计算还可以用来编制、运行程序,甚至解方程组,图形计算器还可以进行图形处理。
计算器内置的软件允许用户进行类似于对计算机的文件和目录管理等操作,允许用户对图形界面进行定制,同时各种新技术也被应用到计算器里使计算器功能越来越强大。
可以说,计算器就是一个“微微型”的计算机。
(2)国内情况
国内也有厂商利用计算器芯片开发新的产品,但对计算器技术的研究、计算器芯片的设计还处于起步阶段。
计算器的主要功能还是在于“计算”,不妨称之为“低档计算器”。
即便是对这种计算器,很多厂商也只从事计算器的组装、销售业务。
一些IC设计公司、芯片提供商也开始研究计算器技术。
第2章FPGA技术及硬件描述语言
2.1EDA技术及其发展
1.使电子设计成果以自主知识产权的方式得以明确表达和确认成为可能;
2.在仿真和设计两方面支持标准硬件描述语言的功能强大的EDA软件不断推出;
3.电子技术全方位纳入EDA领域;
4.EDA使得电子领域各学科的界限更加模糊,更加互为包容;
5.Soc高效低成本设计技术的成熟。
2.2FPGA技术
(1)FPGA技术的发展现状
FPGA是英文FieldProgrammableGateArray的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA芯片叫板微处理器,如果没有微处理器,电脑会怎样?
答案令人惊讶---它的处理速度比常规电脑更快,而且快出很多倍!
尽管FPGA芯片的时钟频率要低于奔腾处理器,但是由于FPGA芯片可并行处理各种不同的运算,所以可完成许多复杂的任务。
例如网页显示,全球天气建摸及基因组合核对等,而且处理速度比奔腾处理器或数字信号处理器快得多。
在通用计算方面,FPGA仍然不敌Intel的处理器。
对于那些只需要进行重复单任务操作的机器而言,使用FPGA芯片显然是大材小用。
与FPGA对应的还有DSP处理器,DSP处理器速度虽然很快,并对许多DSP应用来说很有用,但仍有一些应用要求性能再进一步提升,而FPGA提供了更高的性能。
FPGA可以生成一个定制硬件设计,从而控制逻辑能够在硬件中实现,不必再利用精确的时钟周期来实现控制功能。
目前的FPGA设计一般采用Top-down(自顶向下)的设计方法。
先将系统划分为各个功能子模块,在系统级层次上进行行为描述,再对这些子模块进一步进行行为描述。
图2.1应用FPGA开发流程
2.3硬件描述语言VHDL
硬件描述语言是EDA技术的重要组成部分,VHDL是作为电子设计主流硬件的描述语言。
VHDL语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性。
自顶向下的设计流程:
图2.2基于VHDL的自顶向下设计方法
第3章系统总体设计
系统总体设计框图如图1.3所示。
此设计由计算部分、存储部分、显示部分和输入部分组成。
图3.1计算器的系统组成框图
3.1计算器的计算部分
完成0~9999之内的数,9999的二进制表示为10011100001111,在这一部分中,可以将每一个数均表示成16位二进制数统一进行运算,各个计算数之间的计算可以直接使用VHDL语言中的运算符来实现。
但在显示时,必须将个位、十位、百位,千位分开显示,设计时使用比较的方法来实现计算器的功能要求。
3.2计算器的存储部分
存储部分需要3个存储器来实现:
内部累加器(acc)、输入寄存器(reg)以及结果暂存器(ans)。
在存放数字时,将数字放入acc或者reg里面,当第一次按下数字键时,表示该数字是个位。
当第二次按下数字键时,表示这次输入的是个位,是十位,上一次输入的所以要把第一次输入的数字乘以10,再加上第二次输入的数字,来得到最终输入的数字。
当第三次按下数字键时,要将第一次输入的数字乘以100,再加上第二次输入的数字乘以10,再加上第二次输入的数字,来得到最终输入的数字。
当第四次按下数字键时,要将第一次输入的数字乘以1000,再加上第二次输入的数字乘以100,再加上第三次输入的数字乘以10,再加上第四次输入的数字,来得到最终输入的数字。
当进行第一次计算时,第一个数字存放在acc里面。
按下运算符以后,第二个数字放在reg里面。
当再按下运算符号或者等号时,第一次计算的结果将存放在ans里面,同时reg清零,等待下一个数字的输入。
进行第二次运算时,将ans里面的结果与reg里面新输入的数字进行运算,再将运算结果存放在ans里面,直到最后按下等号按键的时候,显示最终的运算结果。
3.3计算器的显示部分
显示部分是系统的输出部分,用于显示按键值及计算结果,由于数字系统的数据运算都是二进制的,而输出表达式都是BCD码,为了满足BCD码的译码显示,最方便的方法就是利用译码程序在FPGA中实现。
本文采用的是共阴极七段数码管,显示数字时需要将对应管脚置为高电平,输出时,从左到右,按从高到低位的顺序依次接g、f、e、d、c、b、a。
七段译码器的基本结构如图3.2所示。
图3.2七段译码器的结构
其VHDL语言描述如下所示。
在这段程序中,indata是输入4位二进制数的端口,outdata是输出7位译码的端口,用WITH语句来实现译码。
WITHindataSELECT
outdata<="1111110"WHEN"0000",--显示0
"0110000"WHEN"0001",--显示1
"1101101"WHEN"0010",--显示2
"1111001"WHEN"0011",
"0110011"WHEN"0100",
"1011011"WHEN"0101",
"1011111"WHEN"0110",
"1110000"WHEN"0111",
"1111111"WHEN"1000",
"1101111"WHEN"1001",--显示9
"0000000"WHENOTHERS;--其它的输入按键均不显示。
计算器显示部分的设计和实现,实际上就是七段译码器的设计和实现,四个七段译码器分别显示的是个位、十位、百位、千位。
输入第一个数字后至再一次按下数字按键输入第二个数字前,三个七段译码器显示的都是第一个数字