ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:336.43KB ,
资源ID:18764757      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18764757.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于FPGA的计算器设计说明Word文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于FPGA的计算器设计说明Word文档格式.docx

1、 Dongdong Fan Supervisor: Shuxiang SongAbstract This article describes the design of a simple calculator, the design uses Field Programmable Gate Array FPGA based on VHDL hardware description language to design and Alteras Quartus in software for emulation. This system is componented by the key cont

2、rol module, computing, storage and decoding display module of the four parts, the computing part include adder, subtractor, multiplier and divider,Storage part needs three memory to help achieved: internal accumulator (acc), input register (reg) as well as the results of registers (ans). Display par

3、t is made up four decoder of 7 sections, respectively to show the number of input. The 8 keys they can by single combined key forms to be completed addition, multiplication, division arithmetic operator and symbol transform,stored data and read seven function of operation within 0 to 9999 numbers.it

4、s structure is simple and easy to implement.Key words:FPGA; VHDL; calclute ; design摘要 I目录 II第1章 引言 11.1 课程设计的目的与意义 11.2 国外发展现状 1第2章FPGA技术及硬件描述语言 22.1 EDA技术及其发展 22.2 FPGA技术 22.3硬件描述语言VHDL 3第3章 系统总体设计 43.1 计算器的计算部分 43.2 计算器的存储部分 43.3 计算器的显示部分 53.4 计算器的输入部分 6第4章 计算器的VHDL设计 74.1加法器的设计与仿真 74.2减法器的设计与仿真 8

5、4.3乘法器的设计与仿真 94.4 除法器的设计与仿真 10第5章 结束语 11参考文献: 11第1章 引言1.1 课程设计的目的与意义在人类学会交易的时候,计算也随之产生,而算盘作为计算最实用的工具存在了几千年。算盘亦称珠算,是中国人民创造的一种计算工具,素有“中国计算机”之称。算盘产生于汉代之前,是由古代的“筹算”演变而来的,珠算一词,最早见于汉末三国时代徐岳撰数术记遗,书中有“珠算,控带四时,经纬三才”的记述。明清时期,算盘的应用已很广泛,关于算盘制造规格,后来出现的各种规格的算盘,都是在此基础上发展起来的。算盘构造简单,便于掌握,使用方便,成为计算理财不可缺少的工具。可是随着人类文明的

6、进步和科学技术的不断发展。算盘已经越来越不能满足一些高强度、高难度、高速度的复杂计算。这时,一种新的电子产品问世了,它就是电子计算器。电子计算器的发明是跨时代的,它比算盘计算的速度要快几百几千倍,计算的结果要比算盘更精确,操作的方法要更方便,更简单易学,计算的围更广,并且小巧、轻便。它已经成为人们日常生活中不可缺少的一种计算工具,为我们的生活提供了很大的方便。而随着计算机的普及,越来越多人在使用计算机,越来越多的工作离不开计算机,可以说计算机已经成为现代社会中不可或缺的工具,而电子计算器功能也以软件的形式进入计算机的软件世界,这不仅给人们带来了更大的便利,更为人们引入了更快的计算速度和更强大的

7、运算功能。1.2 国外发展现状(1)国外情况在国外,电子计算器在集成电路发明后,只用短短几年时间就完成了技术飞跃,经过激烈的市场竞争,现在的计算器技术己经相当成熟。计算器已慢慢地脱离原来的“辅助计算工具”的功能定位,正向着多功能化、可编程化方向发展,在各个领域都得到了广泛的应用。用计算器不仅可以实现各种各样复杂的数学计算还可以用来编制、运行程序,甚至解方程组,图形计算器还可以进行图形处理。计算器置的软件允许用户进行类似于对计算机的文件和目录管理等操作,允许用户对图形界面进行定制,同时各种新技术也被应用到计算器里使计算器功能越来越强大。可以说,计算器就是一个“微微型”的计算机。(2)国情况国也有

8、厂商利用计算器芯片开发新的产品,但对计算器技术的研究、计算器芯片的设计还处于起步阶段。计算器的主要功能还是在于“计算”,不妨称之为“低档计算器”。即便是对这种计算器,很多厂商也只从事计算器的组装、销售业务。一些IC设计公司、芯片提供商也开始研究计算器技术。第2章FPGA技术及硬件描述语言2.1 EDA技术及其发展1.使电子设计成果以自主知识产权的方式得以明确表达和确认成为可能;2.在仿真和设计两方面支持标准硬件描述语言的功能强大的EDA软件不断推出;3.电子技术全方位纳入EDA领域;4.EDA使得电子领域各学科的界限更加模糊,更加互为包容;5.Soc高效低成本设计技术的成熟。2.2 FPGA技

9、术(1)FPGA技术的发展现状FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA芯片叫板微处理器,如果没有微处理器,电脑会怎样?答案令人惊讶- 它的处理速度比常规电脑更快,而且快出很多倍!尽管FPGA芯片的时钟频率要低于奔腾处理器,但是由于FPGA芯片可并行处理各种不同的运算,所以可完成许多复杂的任务。例如网页显示,全球天气建摸及基因组合核对

10、等,而且处理速度比奔腾处理器或数字信号处理器快得多。在通用计算方面,FPGA仍然不敌Intel的处理器。对于那些只需要进行重复单任务操作的机器而言,使用FPGA芯片显然是大材小用。与FPGA对应的还有DSP处理器,DSP处理器速度虽然很快,并对许多DSP应用来说很有用,但仍有一些应用要求性能再进一步提升,而FPGA提供了更高的性能。FPGA可以生成一个定制硬件设计,从而控制逻辑能够在硬件中实现,不必再利用精确的时钟周期来实现控制功能。目前的FPGA设计一般采用Top-down(自顶向下)的设计方法。先将系统划分为各个功能子模块,在系统级层次上进行行为描述,再对这些子模块进一步进行行为描述。图2

11、.1 应用FPGA开发流程2.3硬件描述语言VHDL硬件描述语言是EDA技术的重要组成部分,VHDL是作为电子设计主流硬件的描述语言。VHDL语言具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性。自顶向下的设计流程:图2.2基于VHDL的自顶向下设计方法第3章 系统总体设计系统总体设计框图如图1.3所示。此设计由计算部分、存储部分、显示部分和输入部分组成。图3.1计算器的系统组成框图3.1 计算器的计算部分完成09999之的数,9999的二进制表示为111,在这一部分中,可以将每一个数均表示成16位二进制数统一进行运算,各个

12、计算数之间的计算可以直接使用VHDL语言中的运算符来实现。但在显示时,必须将个位、十位、百位,千位分开显示,设计时使用比较的方法来实现计算器的功能要求。3.2 计算器的存储部分存储部分需要3个存储器来实现:在存放数字时,将数字放入acc或者reg里面,当第一次按下数字键时,表示该数字是个位。当第二次按下数字键时,表示这次输入的是个位,是十位,上一次输入的所以要把第一次输入的数字乘以10,再加上第二次输入的数字,来得到最终输入的数字。当第三次按下数字键时,要将第一次输入的数字乘以100,再加上第二次输入的数字乘以10,再加上第二次输入的数字,来得到最终输入的数字。当第四次按下数字键时,要将第一次

13、输入的数字乘以1000,再加上第二次输入的数字乘以100,再加上第三次输入的数字乘以10,再加上第四次输入的数字,来得到最终输入的数字。当进行第一次计算时,第一个数字存放在acc里面。按下运算符以后,第二个数字放在reg里面。当再按下运算符号或者等号时,第一次计算的结果将存放在ans里面,同时reg清零,等待下一个数字的输入。进行第二次运算时,将ans里面的结果与reg里面新输入的数字进行运算,再将运算结果存放在ans里面,直到最后按下等号按键的时候,显示最终的运算结果。3.3 计算器的显示部分显示部分是系统的输出部分,用于显示按键值及计算结果,由于数字系统的数据运算都是二进制的,而输出表达式

14、都是BCD码,为了满足BCD码的译码显示,最方便的方法就是利用译码程序在FPGA中实现。本文采用的是共阴极七段数码管,显示数字时需要将对应管脚置为高电平,输出时,从左到右,按从高到低位的顺序依次接g、f、e、d、c、b、a。七段译码器的基本结构如图3.2所示。图3.2 七段译码器的结构其VHDL语言描述如下所示。在这段程序中,indata是输入4位二进制数的端口,outdata是输出7位译码的端口,用WITH语句来实现译码。WITH indata SELECToutdata=1111110WHEN0000, -显示0 01100000001, -显示111011010010, -显示21111

15、0010011,011001101001011011010110111110110111000001111111111100011011111001, -显示90000000WHEN OTHERS; -其它的输入按键均不显示。计算器显示部分的设计和实现,实际上就是七段译码器的设计和实现,四个七段译码器分别显示的是个位、十位、百位、千位。输入第一个数字后至再一次按下数字按键输入第二个数字前,三个七段译码器显示的都是第一个数字。当开始输入第二个数字的时候显示第二个数字,再次按下运算按键到输入第三个数字前,显示的是前两个数字的运算结果,以此类推,当最后按下等号键的时候,显示最终的运算结果。3.4 计

16、算器的输入部分计算器输入部分的设计最主要的是按键译码电路的设计和实现。计算器的输入部分是由外部的8个按键他们能以单键和组合键的形式完成09十个数字按键、加减乘除四则运算的运算符按键、一个等号按键和一个清零按。设计所要做的是对按键信息进行译码,使其在计算器部可以使用。数字按键译码电路的主体部分VHDL语言描述如下。PROCESS(inclk,reset) BEGIN IF reset=1THEN outnumoutnumoutflag=outnum;0 -不按键时保持 END CASE; END IF; END PROCESS;在本次设计的程序中,设reset是异步复位信号的输入端口,inclk

17、是时钟信号的输入端口,innum端口用来表示输入的按键向量,outnum端口用来表示输入的按键动作对应的输出数字,outflag端口用来输出是否有按键动作,它主要实现的是按下什么就输出什么。一共有千、百、十、个位,初始值都为低电平“0”,当按下哪个位时哪个位上的电平就跳为高电平(有且仅有一个为高电平),这时就有相应的输出。那千、百、十、个位分别对应的是09这十个数字,所以当第一个位(从左往右位数依次增高)为高电平时显示0,第千个位上位高电平时,相应的显示为9。如果按下的键是加号、减号、乘号、除号或者是等于号时,也是不显示的,所以也可以称作数字按键译码电路。第4章 计算器的VHDL设计4.1加法

18、器的设计与仿真 全加器是组合逻辑电路中最常见也最实用的一种,考虑低位进位的加法运算就是全加运算,实现全加运算的电路称为全加器。设计16位的全加器思路非常简单且清晰,第一种方法就是先设计一个半加器和一个或门,然后两个半加器合并成一个一位的全加器,最后用16个一位的全加器组合成为一个16位的全加器;第二种方法就是先设计一个一位的全加器,然后在用16个串联或并联就组成了一个16位的全加器,而本次设计采用采用的4.1一位全加器的级联原理图程序如附录中加法程序,经Quartus 编译后建立.vwf,设置被加数a为十进制数9999(可设置09999的任意数字),设置加数b99999仿真后所得结果如图4.2

19、所示。9999+999919998,仿真结果正确,可知此加法器设计有效。图4.2 加法器仿真9999+9999199984.2减法器的设计与仿真设计一个16位二进制数的减法器,利用二进制的减法原理,减法变加法多次调用一位全加器一位全减器的原理框图如图4.3所示。由图可以看出,此减法器共需要两个输入端口和一个输出端口。减法器的设计可以引用加法器,即通过对减数的求补,再与被减数相加得到最终的结果,所以需要增设一个进位位输入端口和进位位的输出端口。图4.3 一位全减器的原理框图可以设a端口为被减数,b端口为减数,ci为输入借位位,s为结果的输出端口,co为借位的输出端口。此减法器可以进行位数扩展,每

20、增加一位需要多引用一个加法器,程序如附录中减法程序,经Quartus 编译后建立.vmf文件,设置被减数a为十进制数1999(可设置09999的任意数字),设置减数b为999,仿真后所得结果如图4.4所示。1999-9991000,仿真结果正确,可知此减法器设计有效。图4.4 减法器仿真1999-99910004.3乘法器的设计与仿真乘法器是数字系统中的基本逻辑器件,在很多应用中都会出现如各种滤波器的设计、矩阵的运算等。这里设计的是一个1616的乘法器。依据乘法器的原理,可以绘出其原理框图如图4.5所示。图4.5 乘法器的原理框图可设a端口为被乘数(一个16位二进制数),b端口为乘数(一个16

21、位二进制数),y为乘法运算的结果的输出端口。乘法器模块图如附录中所示。程序如附录中乘法程序,经Quartus 编译后建立.vmf文件,设置被乘数a为十进制数9999,设置乘数b为1000,仿真后所得结果如图4.6所示。9999*10009999000,仿真结果正确,可知此乘法器设计有效。图4.6 乘法器仿真 9999*100099990004.4 除法器的设计与仿真另类 除法器的算法可分为两类:基于减法操作和基于乘法操作的算法。基于乘法的除法把除法看成是乘法的逆运算。如下面的式子所示: A =BQ+R对于16位无符号被除数a,先将a转换成高16位是0,低16位是a的数tempa。在每个周期开始

22、时tempa向左移动一位,最后一位补零,然后判断temp a的高16位是否大于等于除数b,如是则tempa的高16位减去b并且加I,得到的新值仍赋给tempa;如不是直接进入下一步。上面的移位、比较、减法(减法视情况而定)要进行16次,经过16个周期后,运算结束,所得到的tempa的高16位为余数,低16位为商。将移位、比较和相减放在同一个循环中,去除了不必要的延时,增加了设计的可靠性。对于32位有符号数的除法,算法与上面类似,只是需要判断商和余数是正数还是负数。当youWU为1时进行有符号数运算,否则进行无符号数运算。图4.7 除法器的原理框图设a端口为被除数,b端口为除数,s端口为商,y端

23、口为余数,程序如附件中除法程序,经Quartus 编译后建立.vmf文件,设置被除数为十进制数9088除数为90,仿真所得结果如图4.8所示。计算得到90889010088,仿真结果正确,由此可知此除法器设计有效。图4.8 除法器仿真 90889010088第5章 结束语课程设计是本学期最后一次将自己所学理论与实际相结合的机会,通过这次比较完整的基于FPGA的计算器的设计,我自己的理论与实践相结合的能力有了大幅度的提升。在温习了所学专业知识的基础上,同时通过查阅专业书籍、相关文献资来解决实际工程问题,这锻炼了我的综合运用各项知识和资源的能力。我采用的是分模块的设计方法,各个模块的设计我都是随着

24、设计的不断深入而不断熟悉并学会应用的。由于以前没有经常使用VHDL语言,在编程过程中难免会与到反复调试自己也看不出的问题,幸好有实验室同学的解答,在此表示感!而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的实际动手经验得到了极大的丰富,由于程序编写与处理是一项非常繁琐非常令人头疼的工作,完成了这些,也使我的意志、抗压能力及耐力都得到了不同程度的提升。这一次的设计让我积累很多的解决实际问题的经验,如加法器,除法器有多种方法描述,使我的头脑更加灵活,这必然会让我在未来的学习、工作中表现出更高的应变能力,更强的沟通力和理解力。通过这次的设计,我对FPGA技术、VHDL语言以及Qua

25、rtus 的使用都有了深入的了解。虽然设计中容较多,过程繁琐但这也造就了我丰富的收获。从未知道的原理,不一定就难,关键是要动手去做,模块化设计,各个击破解决,相信下一次做其它设计时我会做的更好。1朱正伟.技术及应用.M.:清华大学,2005.2王彦.基于FPGA的工程设计与应用M.:电子科技大学,2007.3黄智伟.FPGA系统设计与实践M.:电子工业,2005.3江思敏.VHDL数字电路及系统设计M.:机械工业,2006.5卢毅,赖杰.VHDL与数字电路设计M.:科学,2001.6松,黄继业.EDA技术实用教程M.第二版.:科学,2005.7徐志军,徐光辉.CPLD/FPGA的开发与应用M.

26、:电子工业,2002.8育人.8 位计算器的指令系统与硬件结构J.微电子技术,2000,28(3).9朱卫华,留平可任意设置计算精度的整数除法器的设计J国外电子测量技术。2008, 27(2):1618附 录1. 1位全加器源程序f_adder.vhd如下:LIBRARY IEEE;-半加器USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY h_adder ISPORT (a,b:IN STD_LOGIC; so,co:OUT STD_LOGIC);END ENTITY h_adder;ARCHITECTURE behave OF h_adder ISBEGIN so=a XOR b;co=a AND b;END behave;-*-或门逻辑ENTITY or2a IS c:END ENTITY or2a;ARCHITECTURE one OF or2a IS c=a OR b;END one;-1位全加器顶层设计USE IEEE.STD_LOGIC_ARITH.AL

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

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