FPGA课程论文-基于FPGA的计算器设计_第1页
FPGA课程论文-基于FPGA的计算器设计_第2页
FPGA课程论文-基于FPGA的计算器设计_第3页
FPGA课程论文-基于FPGA的计算器设计_第4页
FPGA课程论文-基于FPGA的计算器设计_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、fpga课程论文基于fpga的计算器设计学 院专业班级学 号学生姓名对旨导教师2016年12月30曰目录撤要11. 弓iw 21.1课题研宂的目的与意义21.2国内外发展现状21.3课题的主要技术路线32. fpga技术及硬件描述语言32. 1 epga技术的发展现状及与cpld的比较32.2 fpga设计方法62.3利用硬件描述语言(iidl)的硬件电路设计方法72.4 vhdl语言的特点82.5 quart us ii概述及其设计流程93. 系统总体设计113.1计算器的计算部分113.2计算器的存储部分123.3计算器的显示部分123.4计算器的输入部分134. 计算器的vhdl设计15

2、4.1加法器的设计与仿真154.2减法器的设计与仿真174. 3乘法器的设计与仿真184. 4除法器的设计与仿真195. 结论及体会21辨娥23摘要木文介绍了一个简单计算器的设计,该设计采用了现场可编程逻辑器件fpga 设计,并基于硬件描述语言vhdl在altera公司的quartus ii软件上实现仿真。 系统由计算部分、存储部分、显示部分和输入部分四个部分组成,计算部分为加 法器、减法器、乘法器和除法器,存储部分需要3个存储器来实现:内部累加器 (acc),输入寄存器(reg)以及结果暂存器(ans)o显示部分由四个七段译码 管组成,分别来显示输入数字,输入部分采用外接键盘,由09十个数字

3、按键, 加减乘除四个运算符按键,一个等号按键和一个清零按键组成的。通过外部的按 键可以完成四位数之内的加、减、乘、除四种功能运算,其结构简 单,易于实现。1引言1.1课题研宄的目的与意义在人类学会交易的时候,计算也随之产生,而算盘作为计算最实用的工具存 在了几千年。算盘亦称珠算,是中国人民创造的一种计算工具,素有“中国计算 机”之称。算盘产生于汉代之前,是由古代的“筹算”演变而来的,珠算一词, 最早见于汉末三国时代徐岳撰数术记遗,书中有“珠算,控带四时,经纬三 才”的记述。南宋数学家杨辉的乘除通变算宝中有“九归” 口诀,元代刘因 亦有算盘诗,明人吴敬九章详注比类算法人全记载了珠算的有关算法。明

4、清 吋期,算盘的应用己很广泛,关于算盘制造规格,明万历年间柯尚迁的数学通 轨载有13档算盘图,上2珠,下5珠,呈长方形,四周为木框,内有轴心, 俗称“档”,档中间用一根横梁隔开,运算时定位后拨珠运算。后来出现的各种 规格的算盘,都是在此基础上发展起来的。算盘构造简单,便于掌握,使用方便, 成为计算理财不可缺少的工具。算盘从明代开始传入朝鲜、日本等东亚国家。清 代吋算盘随着经济文化交往被传入东南亚诸国,二次世界大战后,美国也从曰本 引进了算盘,可见算盘在人们的日常生活中起着非常重要的作用,不管是大商人 还是小商贩都需要使用算盘进行计算。可是随着人类文明的进步和科学技术的不 断发展。算盘已经越来越

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

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

7、用计算器芯片开发新的产品,但对计算器技术的研允、计算 器芯片的设计还处于起步阶段。计算器的主要功能还是在于“计算”,不妨称之 为“低档计算器”。即便是对这种计算器,很多厂商也只从事计算器的组装、销 售业务。一些ic设计公司、芯片提供商也开始研究计算器技术。1.3课题的主要技术路线木次设计基于现场可编程逻辑器件fpga进行设计,应用硬件描述语言vhdl 编程并在altera公司的quartus ii软件上实现仿真。需要进行计算器的常用 运算功能的实现,通过外接键盘输入、led数码显示来达成运算目的。2. fpga技术及硬件描述语言fpga技术的发展现状及与cpld的比较2.1.1 fpga技术的

8、发展现状fpga是英文field programmable gate array的缩写,即现场可编程门眸 列,它是在pal、gal、cpld等可编程器件的基础上进一步发展的产物。它是作 为专用集成电路(astc)领域中的一种半定制电路而出现的,既解决了定制电路 的不足,又克服了原有可编程器件门电路数有限的缺点。fpga采用了逻辑单元阵列lca (logic cell array)这样一个概念,内部包 括可配置遷辑模抉clb (configurable logic block)、输入输出模块10b (input output block)和内部连线(interconnect)三个部分。fpga的

9、基本特点主要 有:00000000000000 采用fpga设计asic电路,用户不需要投片生产,就能得到合用的芯片。11111111111111 fpga可做其它全定制或半定制asic电路的测试样片。22222222222222 fpga内部有丰富的触发器和i / 0引脚。33333333333333 fpga是asic电路中设计周期最短、开发费用最低、风险最小的器件之o44444444444444 fpga采用高速chmos工艺,功耗低,可以与cmos、ttl电平兼容。fpga是由存放在片内ram屮的程序来设置其工作状态的,因此,工作时需要对片内的ram进行编程。用户可以根据不同的配置模式

10、,采用不冋的编程方式。 加电时,fpga芯片将eprom中数据读入片内编程ram中,配置完成后,fpga进 入工作状态。掉电后,fpga恢复成白片,内部逻辑关系消失,因此,fpga能够 反复使用。fpga的编程无须专用的fpga编程器,只须用通用的eprom、prom编 程器即可。当需要修改fpga功能时,只需换一片eprom即可。这样,同一片fpga, 不同的编程数据,可以产生不同的电路功能。因此,fpga的使用非常灵活。与fpga对应的还有dsp处理器,dsp处理器速度虽然很快,并对许多dsp 应用来说很有用,但仍有一些应用要求性能再进一步提升,而fpga提供了更高 的性能。fpga可以生

11、成一个定制硬件设计,从而控制逻辑能够在硬件中实现, 不必再利用精确的时钟周期来实现控制功能。此外,通过裁减硬件架构,fpga 可以提供额外的性能。如果最重要的设计考虑因素是速度,那么可以在fpga中 设计完全并行的算法处理方案。现在,许多系统己经含了一个fpga,用于协 议转换、胶合逻辑或一些其它系统功能。如果那个fpga没有被完全利用,那么 把dsp功能加入其中可以为系统节约成本。而且如果标准发生改变,使用fpga 就不会有任何风险。fpga的配置文件能够像软件那样升级,以管它们必须被存 储在系统的非易失性存储器中。目前的fpga设计一般采用top-down (自顶向下)的设计方法。先将系统

12、划 分为各个功能子模块,在系统级层次上进行行为描述,再对这些子模块进一步进 行行为描述。1.2 fpga 与 cpld 的比较fpga是现场可编程逻辑门阵列的简称,是电子设计的一个里程碑。cpld是 复杂可编程逻辑器件的简称。尽管fpga和cpld都是可编程asic器件,有很多共同特点,但由于cpld和fpga结构上的差异,具有各自的特点:i .cpld更适合完成各种算法和组合逻辑,fpga更适合于完成时序逻辑。换句话说,fpga更适合于触发器丰富的结构,而cpld更适合于触发器有限而乘积 项丰富的结构。cpld的连续式布线结构决定了它的时序延迟是均匀的和可预测的,jflj fpga的分段式布

13、线结构决定了其延迟的不可预测性。在编程上fpga比cpld具有更大的灵活性。cpld通过修改具有固定内连 电路的逻辑功能来编程,fpga主要通过改变内部连线的布线来编程;fpga可 在逻辑门下编程,而cpld是在逻辑块下编程。fpga的集成度比cpld高,具有更复杂的布线结构和逻辑实现。cpld比fpga使用起来更方便。cpld的编程采用e2pr0m或fastflash 技术,无需外部存储器芯片,使用简单。而fpga的编程信息需存放在外部存储器 上,使用方法复杂。cpld的速度比fpga快,并且兵有较大的时间可预测性。这是由于fpga 是门级编程,并且clb之间采用分布式互联,而cpld是逻辑

14、块级编程,并且其 逻辑块之间的互联是集总式的。在编程方式上,fpga人部分是基于sram编程,编程信息在系统断电时 丢失,每次上电吋,需从器件外部将编程数据重新写入sram中。其优点是可以 编程任意次,可在工作中快速编程,从而实现板级和系统级的动态配置。cpld 主耍是基于eeprom或flash存储器编程,编程次数可达1万次,优点是系统断电 时编程信息也不丢失。cpld又可分为在编程器上编程和在系统编程两类。般情况下,cpld的功耗要比fpga大,丑集成度越高越明显。随着fpga门数以及性能的提高,可以将现在的许多数字电路部分下载到 fpga上,实现硬件的软件化,括51核,dsp核以及其他的

15、一些数字模块,到 最后一个系统板子就剩下电源、模拟电路部分,接口部分以及一块fpga。fpga 可以说是芯片级的pcb板,在一个芯片里设计原来的电子系统的所有数字电路部 分。现在也有将arm核嵌入到fpga里面的,比如altera公司的nois核。nois 是一个软核,是有软件编写的一个32位处理器,并不是硬件上存在的处理核, 该核工作频率为50hz,现在用于许多图像处理以及其他的很多网络设备。利用 锁相环技术可以将频率成倍提升,一般的arm核是将锁相环做到芯片里面的,在 变成的吋候可以对某个寄存器进行设置从而达到分频和倍频的b的。而将dsp 核嵌入到fpga里面去实现强大的计算功能是alte

16、ra公司近期推出的一系列芯片 的一个优点。altera公司的stratix ii系列芯片采用内嵌的dsp核,但是其dsp 核的计算速度比现在业界上最快的dsp芯片还要快几个数量级。2.2 fpga设计方法在fpga设计中,有许多重要的原则和规律可循,掌握这些原则和规律,人们 可以设计出许多高性能的电子系统。2.2. 1硬件原则硬件原则主耍针对hdl代码编写而言的。硬件描述语言,它通过对硬件的抽 象,最终实现在芯片内部的实际电路。因此评判一段hdl代码的优劣的最终标准 是:其描述并实现的硬件电路的性能(主要是指面积和速度)。评价一个设计的 代码水平,主要从设计工程师所构想的硬件实现方案的效率以及

17、合理性来分析。 2.2.2系统原则一个硬件系统,通过何种方式进行模块划分与任务分配,使用算法和实现功 能,以及fpga的规模估算、数据接口设计等,具体到fpga的设计就要求对设计的 全局有个宏观上的合理安排。一般来说实时性要求高、频率快、功耗小的功能模 块适合使用cpld实现。而fpga与cpld相比,更适合实现规模较大、频率较高、寄 存器资源使用较多的设计。2.2.3面积和速度的平衡与互换原则这是在进行fpga设计时的一个重要原则。这里“面积”是指一种设计所要消 耗的fpga/cpld的逻辑资源的数量,对于fpga可以用所消耗的触发器(ff)和查 找表(lut)来衡量,更一般的衡量方式可以用

18、设计所占用的等价逻辑门数。“速 度”是指设计在芯片上稳定运行,所能够达到的最高频率,这个频率由设计的时 序状况决定,和设计满足的时钟周期,时钟建立时间(clock setup time),时 钟保持时间(clock hold time)等众多时序特征量密切相关。面积和速度是对立统一的矛盾体。要求一个设计同时具备运行频率最高而且而积最小是不现实的。 科学的设计方法是在满足设计时序要求的前提下,占用最小的芯片面积。或者在 所规定的面积下,频率更高。这两种0标充分体现了面积和速度的平衡思想。相 比之下,满足时序、工作频率的要求更重要一些,当两者冲突时,采用速度优先 的准则。2.2.4同步设计原则采用

19、同步时序设计是fpga设计的一个重要原则。它可以使静态时序分析变 得简单而且可靠,能有效地避免毛刺的影响,使设计更加有效,还可以减小环境 对芯片的影响。在遵循这一原则的时候,应该尽可能的在设计中使用同一时钟, 时钟走全局网络,同时避免使用混合时钟采样数据。2.3利用硬件描述语言(hdl)的硬件电路设计方法硬件描述语言,就是可以描述电路的功能、信号连接关系及定时关系的语言。 它能比电路图更冇效地表示硬件电路的特性。利用硬件描述语言编程来表示逻辑 器件及系统硬件的功能和行为,是该设计方法的一个重要特征。随着大规模专用 集成电路(asic)的开发和研制,为了提高开发的效率,增加己有开发成果的可 继承

20、性以及缩短开发时间,各as1c研制和生产厂家相继开发了用于各自目的的 硬件描述语言。其屮最有代表性的是美国国防部开发的v11dl语言,verilog公 司开发的vehloghdl以及日本电子工业振兴协会开发的udl/t语言。利用硬件 描述语言(hdl)的硬件电路设计方法具有以下特点:2. 3.1采用自上而下的设计方法2. 3.2系统中可大量采用asic芯片由于目前众多的制造asic芯片的厂家,他们的工具软件都可以支持hdl语 言的编程,因此,硬件设计人员在设计硬件电路时,无须受只能使用通用元器件 的限制,而可以根据硬件电路设计的需要,设计自用的astc芯片或可编程逻辑 器件。这样最终会使系统电

21、路设计更趋合理,体积也可大为缩小。2. 3. 3采用系统早期仿真从自上至下的设计过程可以看到,在系统设计过程中要进行三级仿真,即行为层次仿真、rtl层次仿真和门级层次仿真。也就是说进行系统数学模型的仿真、 系统数据流的仿真和系统门级电路原理的仿真。这三级仿真贯穿系统硬件设计的 全过程,从而可以在系统设计早期发现设计中存在的问题。2. 3.4降低了硬件电路设计难度在采用传统的硬件电路设计方法时,往往要求设计者在设计电路前应写出该 电路的逻辑表达式或真值表(或吋序电路的状态表)。这一工作是很闲难和繁杂 的,特别是在系统比较复杂时更是如此。在用hdl语言设计硬件电路时,就可以 使设计者免除编写逻辑表

22、达式或真值表之苦。这样使硬件电路的设计难度有了大 幅度的下降,从而也缩短了硬件电路的设计周期。2. 3.5主要设计文件是用hdl语言编写的源程序在传统的硬件电路设计中,最后形成的主要文件是电原理图,而采用hdl 语言设计系统硬件电路时,主要的设计文件是用hdl语言编写的源程序。如果需 要也可以转换为电原理图形式输出。用hdl语言源程序作为归档文件有很多好处。 其一是资料量小,便于保存。其二是可继承性好。当设计其它硬件电路时,可以 使用文件中的某些库、进程和过程等描述某些局部硬件电路的程序。其三是阅读 方便。阅读程序比阅读原理圈耍更容易一些。阅读者很容易在程序中看出某一硬 件电路的工作原理和逻辑

23、关系。而阅读电原理图,推知其工作原理却需要较多的 硬件知识和经验,而丑看起来也不那么一目丫然。2.4 vhdl语言的特点vhdl语言作为一种标准的硬件描述语言,具有结构严谨、描述能力强的特 点。支持从系统级到逻辑门级电路所冇层次的设计,适合于复杂逻辑电路和系统 的设计。作为一种高级硬件描述语言,vhdl语言有如下特点:i. 与其他的硬件描述语言相比,vhdl具有更强的行为描述能力。强大的行 为描述能力是避开具体的器件结构、从逻辑行为上描述和设计人规模电子系统的 重要保证。ii. vhdl具有丰富的仿真语句和库函数,使得在任何大系统的设计早期,就 能检查系统的功能可行性,随时可对系统进行仿真模拟

24、,使设计者对整个工程的 结构和功能的可行性做出判断。ui.用vhdl完成一个确定的设计,可以利用eda工具进行逻辑综合和优化, 并自动把vhdl描述设计转变成门级网表(根据不同的实现芯片)。这种方式突破 了门级设计的瓶颈,极大地减少了电路设计的时间和可能发生地错误,降低了开 发成本。利用eda工具的逻辑优化功能,可以自动地把一个综合后的设计变成一 个更小、更高速的电路系统。反过来,设计者还可以容易地从综合和优化的电路 中获得设计信息,返回去更新修改vhdl设计描述,使之更加完善。iv. vhdl对设计的描述具有相对独立性。设计者可以不懂硬件的结构,也不 必顾及最终设计的目标器件是什么,而进行独

25、立的设计。正因为vhdl得硬件描 述与具体的工艺技术和硬件结构无关,所以vhdl设计程序的硬件实现0标器件 有广阔的选择范围。v. 由于vhdl具有类属描述语句和子程序调用等功能,对于完成的设计,在 不改变源程序的条件下,只需改变类属参量或函数,就能轻而易举地改变设计的 规模和结构。vi. vhdl本身的生命周期长。因为vhdl得硬件描述与工艺无关,不会因工 艺变化而使描述过时。而与工艺技术有关的参数可通过vhdl提供的属性加以描 述,当生产工艺改变时,只需要修改相应程序中的属性参数即可。2.5 quartus ii概述及其设计流程2. 5. 1 quartusii概述quartus ii是a

26、ltera公司的综合性pld开发软件,支持原理图、v11dl、 veriloghdl 以及 ahdl (altera hardware description language)等多种 设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬 件配置的完整pld设计流程。quartus ii可以在xp、linux以及unix上使 用,除了可以使用tel脚本完成设计流程外,提供了完善的用户图形界而 设计方式。具有运行速度快,界面统一,功能集屮,易学易用等特点。quartus ii 支持 altera 的 tp 核,包含了 lpm/megafunction 宏功能模 块库,使用户可以充分利

27、用成熟的模块,简化了设计的复杂性、加快了设 计速度。对第三方eda工具的良好支持也使用户可以在设计流程的各个阶 段使用熟悉的第三方eda工具。此外,quartus ii通过和dsp builder工具 与matlab/simulink相结合,可以方便地实现各种dsp应用系统;支持altera的片上可编程系统(sopc)开发,集系统级设计、嵌入式软件开发、 口丁编程逻辑设计于一体,是一种综合性的开发平台。maxplus ii作为altera 的上一代pld设计软件,由于其出色的易用性而得到了广泛的应用。0前 altera己经停止了对maxplus ii的更新支持,quart us 11与之相比不

28、仅仅 是支持器件类型的丰富和图形界面的改变。altera在quartus ii中包含了 许多诸如signaltap ii、chip editor和rtl viewer的设计辅助工具,集 成了 sopc和hardcopy设计流程,并且继承了 maxplus ii友好的图形界面 及简便的使用方法。altera quartus ii作为一种可编程逻辑的设计环境,由于其强大的设 计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。altera的 quartus ii可编程逻辑软件属于第四代pld开发平台。该平台支持一个工作 组环境k的设计要求,其屮包括支持基于internet的协作设计。quart

29、us 平台与 cadence、exemplar logic、mentorgraphicssynopsys 和 synplicity 等eda供应商的开发工異相兼容。改进了软件的logiclock模块设计功能, 增添了 easteit编译选项,推进了网络编辑性能,而且提升了调试能力。 支持max7000/max3000等乘积项器件。2. 5. 2 quartus ii 设计流程i .建立新工程:首先将所设计工程项目划分为若干子模块,将每个子 模块单独存放在一个文件夹中,并分别进行编译,验证通过后,将每个子 模块的v11dl文本文件添加到总工程文件夹屮,并建立图元(建立图元block, 右键点击.

30、v 文件,选择 create symbol files for current files),将 各个图元(亦即子模块)连接起来构成总体设计项目。ii.设计各子模快:编写各子模块相应的代码,并分别进行编译,验证 通过后将各子模块vhdl文件添加到顶层设计中,创建图元,进行连接以完 成总体项目的设计。这部分就是将管脚连好。在原理图编辑屮,英文的大 小写代表相同的含义,只要器件连接线的节点名称相同就会默认为是连接 的,总线(bus)在图形编辑窗口显示的是一条粗线,总线必须在名称的后 面加上“a.b”,表示一条总线内所含有的节点编号,原理图编辑的文件扩展名为“.bdf”,在quartus ii中工程

31、名称必须与顶层实体名称相同, 丑vi1dl设计中实体名称亦为相同的名字,否则不能进行编译。iii. 编译工程iv. 仿真:波形矢量文件的扩展名为“.vwf”,仿真分为功能仿真和时 序仿真,也称为前仿真和后仿真,功能仿真是忽略延时后的仿真,是最理 想的仿真,时序仿真则是加上了一些延时的仿真,是最接近于实际的仿真, 在设计屮通常先做功能仿真验证逻辑的正确性,后做时序仿真验证时序是 否符合要求,需注意默认为时序仿真,在设置功能仿真后需要生成功能仿 真网络表。3. 系统总体设计系统总体设计框图如图1所示。此设计由计算部分、存储部分、显示部分和 输入部分组成。图1计算器的系统组成框图3.1计算器的计算部

32、分在这一部分中,可以将每一个数均表示成8位或者4位二进制数统一进行运 算,各个计算数之间的计算可以直接使用vhdl语言屮的运算符來实现。但在显 示时,必须将个位、i位、百位分开显示,设计时使用比较的方法来实现计算器 的功能要求。另外,由于在vhdl语言中只能进行除数是2的幂的除法,不能进 行任意数的除法,因此必须单独设计一个除法器来实现计算器的功能要求,该除 法器可以利用减法运算和左移位运算实现除法运算。3.2计算器的存储部分存储部分需要3个存储器来实现:内部累加器(acc),输入寄存器(reg) 以及结果暂存器(ans)o在存放数字时,将数字放入acc或者reg里面,当第一 次按下数字键时,

33、表示该数字是个位。当第二次按i数字键时,表示这次输入的 是个位,上一次输入的是十位,所以要把第一次输入的数字乘以10,再加上第 二次输入的数字,来得到最终输入的数字。当第三次按下数字键时,要将第一次 输入的数字乘以100,再加上第二次输入的数字乘以10,再加上第一次输入的数 字,来得到最终输入的数字。当进行第一次计算时,第一个数字存放在acc里面。按下运算符以后,第二 个数字放在reg里而。当再按下运算符号或者等号时,第一次计算的结果将存放 在ans里面,同时:reg清零,等待下一个数字的输入。进行第二次运算时,将 ans里面的结果与reg里面新输入的数字进行运算,再将运算结果存放在ans里

34、面,直到最后按下等号按键的时候,显示最终的运算结果。3.3计算器的显示部分显示部分是系统的输出部分,用于显示按键值及计算结果,由于数字系统的 数据运算都是二进制的,而输出表达式都是bcd码,为丫满足bcd码的译码显示, 最方便的方法就是利用译码程序在fpga中实现。本文采用的是共阳极七段数码 管,显示数字时需要将对应管脚罝为低电平,输出时,从左到右,按从高到低位 的顺序依次接g、f、e、d、c、b、a。七段译码器的基本结构如图3. 2所示。a阁2七段译码器的结构其vhdl语言描述如下所示。在这段程序中,indata是输入4位二进制数的 端口,out data是输出7位译码的端口,用with语句

35、来实现译码。with indata selectoutdat vz011111 l"whe>r0000",-0的品不;"0000110"when0001,-1的显不;1011011when"0010,-2的显示;"1001111when0011",3的显示;"110011(rvhen"0100",-4的显示;"iioiiorwhen"oior,-5的显不;"111110rvhen0110",-6的显示;"00001 llvhen"

36、0111",-7的显示;"1111111when"1ooo",-8的显不;"1101111"when"1001",-9的显示;"0000000"when others;-其它的输入按键均不显示计算器显示部分的设计和实现,实际上就是七段译码器的设计和实现,三个 七段译码器分别显示的是个位、十位和百位。输入第一个数字后至再一次按下数 字按键输入第二个数字前,三个七段译码器显示的都是第一个数字。当开始输入 第二个数字的时候显示第二个数字,再次按下运算按键到输入第三个数字前,显 示的是前两个数字的运算结

37、果,以此类推,当最后按k等号键的时候,显示最终 的运算结果。3.4计算器的输入部分计算器输入部分的设计最主要的是按键译码电路的设计和实现。计算器的输 入部分是由0一9十个数字按键、加减乘除四则运算的运算符按键、一个等号 按键和一个清零按键组成的,设计所要做的是对按键信息进行译码,使其在计算 器内部可以使用。数字按键译码电路的主体部分vhdl语言描述如下。process(inclk, reset)begintf resets 1 then异步复位信号为高电平的时候outnum<=0000;一把“0000”赋值给数字的输出端口elsie inclkevent and inclk= f the

38、ncase innum iswhen/0000000001"=outnum<="0000"outflag<=, 1 ;-按下一个键表示输入力0wllen0000000010"=>outnum="0001"outflag= 1 ;-按下第二个键表示输入为1when"0000000100"=outnum<="0010"outflag<= 1 ;-按下第三个键表示输入为2when0000001000"=>outnum=00ir;outflag二 1 ;-按

39、下第四个键表示输入为3when0000010000"=>outnum=0100"outflag= 1 ;-按下第五个键表示输入为4when0000100000"二>outniun二"0101;outflag二 1 ;-按下第六个键表示输入为5 when0001000000"=>outnum=0110"outflag二 1 ;-按下第七个键表示输入为6 when0010000000"=outnum<=0111;outflag<= 1 ;按卜第八个键表示输入为7 raeroloooooooooutn

40、umlooo'joutflag f ;-按下第九个键表示输入为8 wllen1000000000"=>outnum="1001"outflag= 1 ;-按下第十个键表示输入为9when others=>outnum<=outnum;outflag<=0 ;一不按键时保持end case;end tf;end process;在本次设计的程序中,设reset是异步复位信号的输入端口,inclk是时钟信号的输入端口,innum端口用来表示输入的按键向量,outnum端口用来表示输 入的按键动作对应的输出数字,outflag端口用来输出

41、是否冇按键动作,它主要 实现的是按下什么就输出什么。一共有十个位,初始值都为低电平“0”,当按下 哪个位时哪个位上的电平就跳为高电平(有且仅有一个为高电平),这时就有相 应的输出。那十个位分别对应的是09这十个数字,所以当第一个位(从左往右位数依次增高)为高电平时显示0, ,第十个位上位高电平时,相应的显示为9。如果按下的键是加号、减号、乘号、除号或者是等于号时,也是不显示 的,所以也可以称作数字按键译码电路。4.计算器的vhdl设计4.1加法器的设计与仿真本次设计的加法器属于多位加法器的范畴,可按其进位方式的不同分为两类: 串行进位加法器和并行进位加法器。畢行进位加法器是将多个一位全加器级联

42、, 低位全加器的进位输出送给相邻高位全加器作为进位输入,以此构成多位加法器。 这种设计思路简单明了il占用资源少,但运算速度较慢。并行进位方式则是在各 位的加法环节之外,另外设有进位产生逻辑电路,各位的进位输入信号同时产生, 从而各位可以同时完成全加运算,输出最后结果。并行进位方式具有较快的运算 速度,但是相对于串行进位方式来说,却往往占用更多的资源。尤其是当运算位 数增加的时候,相同位数的并行进位和串行进位加法器的资源古用差距也越来越 大。因此,常常需要设计者在运算速度和资源占用量之间做出折中平衡。而经过 实践证明,4位二进制并行进位加法器和串行级联加法器占用的资源几乎相同。 因此,可以用两

43、个4位二进制并行加法器级联构成8位二进制加法器,这是一种 较为合理的选择,加法器的原理框图如图3所示。被加数加数图3加法器的原理框图加法器要有被加数、加数和进位位的输入端u。设a端u为被加数,b端u 为加数,ci为输入进位。此加法器还有两个输出端口,分别是加法运算的最终 结果输出和进位位的输出,设s为结果的输出端门,co为进位的输出端口。当 输入被加数与加数后,两个8位二进制数开始相加,之后,再与输入进位位相加, 这样得到的最终结果就是加法器加法运算的最终结果。加法器模块图如附录巾所zps o程序如附录中加法程序,经quartus ii编译后建立.vmf文件,设置被加数 a为“0010000”

44、即十进制数16 (可设置0255内的任意数字),设置加数b为 “10110000”即十进制数176 (可设置0255内的任意数字,但因为程序中未 包含出错溢出判断,所以需满足a+b彡255),仿真后所得结果如图4所示。16+176 = 192,仿真结果正确,可知此加法器设计有效。vilae 19.2j)ps 80.0 n!160,0 ns 2«,0ns320,0 m oo.ons «0,0m560.0 nsmo.pns19.!s as縿0qtdj:16)::瘆9q i“r1t6沙18ciai019coaii>20qsall':j:192 : !图4加法器仿真1

45、6+176 = 1924.2减法器的设计与仿真首先设计一个四位二进制数的减法器,四位全减器的原理框图如图5所示。 由图可以看出,此减法器共需耍两个输入端口和一个输出端口。减法器的设计可 以引用加法器,即通过对减数的求补,再与被减数相加得到最终的结果,所以需 要增设一个进位位输入端和进位位的输出端ij。图5四位全减器的原理框图可以设a端1_1为被减数,b端1_1为减数,ci为输入借位位,s为结果的输出 端口,co为借位的输出端口。减法器的运算过程中首先要引用加法器,在此不 再赘述。而且此减法器可以进行位数扩展,每增加一位需要多引用一个加法器, 为使图形原理简洁,所以此处只列出四位减法器。减法器模

46、块图如附录中所示。程序如附录中减法程序,经quartus ii编译后建立.vmf文件,设罝被减数 a为“1111”即十进制数15(可设置015内的任意数字),设置减数b为“ 1001” 即十进制数9 (可设置0 15内的任意数字,但因为程序中未包含出错判断,所 以需满ma<b),仿真后所得结果如图6所示。15-9 = 6,仿真结果正确,可知此 减法器设计有效。vilue19.2;)ps 80.0w 160 0 m 2«.(0w bom ttoons <80.0 w 560 0 ns moom t20.0nsbe19.25 ns成0al(15qlu19ci大i矽11co大i

47、鉍12qs6图6减法器仿真15-9 = 64. 3乘法器的设计与仿真乘法器是数字系统屮的基本逻辑器件,在很多应用中都会出现如各种滤波器 的设计、矩阵的运算等。这里设计的是一个4x4的乘法器。依据乘法器的原理, 可以绘出其原理框图如图7所示。图7乘法器的原理框图可设a端口为被乘数(一个4位二进制数),b端口为乘数(一个4位二进制数),y为乘法运算的结果的输出端口。程序如附录中乘法程序,经quartus ii编译后建立.vmf文件,设置被乘数a为“1101”即十进制数13(可设置0 16内的任意数字),设置乘数b为“ 1010” 即十进制数10(可设罝0 16内的任意数字),仿真后所得结果如阁8所

48、示。13*10 = 130,仿真结果正确,可知此乘法器设计有效。图8乘法器仿真13*10=1304.4除法器的设计与仿真除法器是基于连减和移位操作的,连减实际上就是基于数学上除法的基木原 理。例如,a + b=c余数是d,就等价于a减去c个b后得到d而且db;之所以 可以使用移位操作,是因为所有运算的数都用二进制表示,本文设计的除法器主 要部分为一个控制移位的控制器,另有一个由全加器组成的4位减法器(引用上 面的减法器的设计)。乂因为规定了结果为4位,控制器首先比较被除数的高4 位与除数的大小,判断是否溢出,溢出则退出,否则就做4位移位和减法得到结 果。在每次做完减法以后都要判断是否够减,即判断是否奋借位,不够得话,就 恢复被减数,移一位再减。除法器的原理框图如图9所示。图9除法器的原理框图设a端口为被除数,b端口为除数,elk为时钟信号的输入端门,str为启 动信号的输入端口,此端口的作用是当启动信号为高电平的吋候冇效,表示启动 了除法器开始作除法运算。s为除法运算所得到的商的输岀端u, y为除法运算 中所得到的余数的输出端口。该除法器的设计中使用了状态机,它有5个状态: start为幵始状态,one力第一次移位状

温馨提示

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

评论

0/150

提交评论