《基于quartusⅡ的通用运算器的设计与实现学士学位论文(51页).doc》由会员分享,可在线阅读,更多相关《基于quartusⅡ的通用运算器的设计与实现学士学位论文(51页).doc(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于quartus的通用运算器的设计与实现学士学位论文-第 46 页摘 要在集成电路设计领域中,各类微处理器已经成为了整个芯片系统的核心。运算器作为其核心部件,得到广泛的发展。与此同时,为了增加电子产品产出效率,降低制造成本,诸如Quartus II9.0等电子仿真软件相继出现,为产品开发提供了良好的开发平台。本文根据运算器具有物美价廉、使用方便、功能性强等特点,分别对半加器、全加器、乘法器、除法器进行了仿真设计。首先本文介绍了课题的背景、意义、发展现状及未来走向,并对研究内容及设计方案进行了简单介绍。其次对设计环境Quartus平台及VHDL做了介绍。之后对半加器、全加器、乘法器、除法器的
2、设计进行了详细描述,包括工作原理、真值表及流程图,还把乘法器分成各个模块,并对各个模块进行了详细的介绍与设计分析。随后对半加器、全加器、乘法器、除法器进行了编程、仿真以及在Quartus平台上对仿真结果进行验证。从而做到了从理论到实践,学以致用。关键词:运算器;Quartus;VHDLAbstractIn the field of integrated circuit design, all kinds of microprocessors has become the core of the whole chip system. Unit as its core component, is
3、widely development.At the same time, in order to increase the electronic products output efficiency, reduce manufacturing cost, such as the QuartusII 9.0 electronic simulation software appeared, such as for product development provides a good development platform. Based on the arithmetic unit has th
4、e good and inexpensive, easy to use, functional characteristics, respectively, half adder, full adder, multiplier and divider design has carried on the simulation. First this article introduces the topic background, significance, status quo and future development, and research contents and the desig
5、n scheme of a simple introduction. Secondly on the design environment QuartusII platform and VHDL is presented. After full adder and full adder, multiplier and divider design are described in detail, including the working principle, the truth table and flow chart, also the multiplier is divided into
6、 various modules, and each module are analyzed in detail and design. Then half adder, full adder, multiplier and divider for programming, simulation, and in the QuartusII platform of simulation results to validate. Thus did it from theory to practice, to practice. Keywords: Arithmetic unit;VHDL;Quar
7、tusII目 录1 引言11.1 课题背景及意义11.2 课题的现状与发展11.3 研究内容与设计方案12 开发环境32.1 Quartus II平台介绍32.1.1 Quartus II简介32.1.2 Quartus II总体设计42.1.3 Quartus II总体仿真82.2 VHDL语言介绍92.2.1 VHDL语言概述92.2.2 VHDL语言介绍102.2.3 VHDL应用开发介绍123 基于Quartus II的半加、全加器的设计与实现133.1 基于Quartus II的半加器运算133.1.1 半加器的原理与真值表133.1.2 半加器的设计与实现133.2 基于Quart
8、us II的全加器运算223.2.1 全加器的原理、真值表和原理图223.2.2全加器的设计与实现244 基于Quartus II的乘法、除法器的设计与实现254.1 基于Quartus II的乘法器运算254.1.1 乘法器的原理和流程图254.1.2 四位二进制加法器模块284.1.3 八位二进制加法器模块294.1.4 一位乘法器模块314.1.5 8位右移寄存器模块334.1.6 乘法器的其他模块344.2 基于Quartus II的除法器运算394.2.1 除法器的原理与流程图394.2.2 除法器的设计与实现40结 论43致 谢44参考文献45附录A 英语原文46附录B 汉语翻译5
9、61 引言1.1 课题背景及意义Quartus II具有界面友好、操作简单的特点,作为高效的EDA设计工具集合,与第三方软件扬长补短,使软件功能越来越强大,为用户提供了更加丰富的Quartus II平台。运用基于VHDL语言的技术优越性体现在可以缩短设计周期,提高设计活动的效率、可靠性和正确性。用VHDL语言编写的源程序,可以转化成电路原理图的形式输出,而且VHDL语言作为归档文件的优点是:资料量小,便于保存,便于阅读,阅读者不需要太多的硬件知识和经验就可以很容易的从程序中看出某一硬件电路的工作原理和逻辑关系;可继承性好,设计者在设计其他硬件电路时,可以方便的使用某些已经设计好的局部硬件电路。
10、本课题是将两者的优越性结合起来,用VHDL语言在Quartus II的开发环境下实现运算器的加法器、半加器、全加器、乘法器和除法器。运算器在当今社会起着举足轻重的作用,随着科技的飞速发展,运算器在计算机、电视机、一些特定电路的开关以及许多非线性变换领域等都有着广泛应用。1.2 课题的现状与发展在集成电路设计领域中,各类微处理器已经成为了整个芯片系统的核心,人们对其性能要求越来越高,使得其每一个部件性能都在不断提升。运算器作为其核心部件,已经成为高性能计算和数字信号处理的重要指标,它的发展影响着微处理器性能,关于提高其性能一直是国内外研究的重要课题,这里介绍的Quartus II9.0它的简单易
11、用,方便快捷,给设计者减少了难度,使用Quartus II9.0设计运算器与传统的运算器相比较具有开放性、可编程性强、设计空间大、时间灵活等特点,并具有较高的实验效率。1.3 研究内容与设计方案查阅相关资料,熟悉Quartus II软件,熟悉运算器的工作原理,了解运算器的各部分功能;在Quartus II平台上设计并实现半加器、全加器、乘法器以及除法器。在Quartus II平台上的实现半加器、全加器、加法器、移位加法乘法器、除法器的运算过程,基于VHDL语言,硬件简单,性能稳定,可以充分体现可编程器件在数字电路中的优越性。首先确定运算器所要实现的功能,根据功能的要求确定实现运算器的模块,大致
12、分为下面几个步骤,首先在Quartus II软件上创建Block Diagram/Schematic File文件,实现功能电路,画出运算器电路。然后在Quartus II软件上对该运算器的程序进行编译,输入程序之后,创建VWF文件,在文件中编辑波形,进行仿真,并且得出运算结果。2 开发环境2.1 Quartus II平台介绍2.1.1 Quartus II简介Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿
13、真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方
14、便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II
15、 友好的图形界面及简便的使用方法。Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。 Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了
16、调试能力。支持MAX7000/MAX3000等乘积项器件2.1.2 Quartus II总体设计1、总体设计Altera Quartus II 设计软件提供完整的多平台设计环境,能够直接满足特定设计需要,为可编程芯片系统(SOPC)提供全面的设计环境。QuartusII 软件含有FPGA和CPLD设计所有阶段的解决方案如流程框图图2.1所示。图2.1 Quartus II 设计流程此外,Quartus II 软件为设计流程的每个阶段提供Quartus II 图形用户界面、EDA 工具界面以及命令行界面。可以在整个流程中只使用这些界面中的一个,也可以在设计流程的不同阶段使用不同界面。本章介绍适用
17、于每个设计流程的选项。本手册其余章节详细说明设计流程的各个阶段。2、图形用户界面设计流程您可以使用 Quartus II 软件完成设计流程的所有阶段;它是一个全面易用的独立解决方案。 图2.2显示Quartus II 图形用户界面在设计流程每个阶段中所提供的功能。图2.2 Quartus II 图形用户界面的功能Quartus II 软件包括一个模块化编译器。编译器包括以下模块( 标有星号的模块表示在完整编译时,可根据设置选择使用): 分析和综合 分区合并 适配器 汇编器 标准时序分析器和TimeQuest 时序分析器 设计助手 EDA 网表写入器 HardCopy 网表写入器要将所有的编译器
18、模块作为完整编译的一部分来运行,在processing 菜单中单击Start Compilation。也可以单独运行每个模块,从Processing 菜单的 Start 子菜单中单击您希望启动的命令。还可以逐步运行一些编译模块。此外,还可以通过选择Compiler Tool(Tools 菜单),在Compiler Tool 窗口 中运行该模块来分别启动编译模块。在Compiler Tool 窗口中,可以打开该模块的设置文件或报告文件,还可以打开其它相关窗口。以下步骤描述了使用Quartus II 图形用户界面的基本设计流程:(1) 在File 菜单中,单击New Project Wizard,
19、建立新工程并指定目标器件或器件系列。(2)使用文本编辑器建立Verilog HDL、VHDL 或者Altera 硬件描述语言(AHDL) 设计。使用模块编辑器建立以符号表示的框图,表征其他设计文件,也可以建立原理图。(3) 使用MegaWizard 插件管理器生成宏功能和IP 功能的自定义变量,在设计中将它们例化,也可以使用SOPC Builder 或者DSP Builder 建立一个系统级设计。(4)利用分配编辑器、引脚规划器、Settings 对话框、布局编辑器以及设计分区窗口指定初始设计约束。(5)( 可选) 进行早期时序估算,在适配之前生成时序结果的早期估算。(6) 利用分析和综合对设
20、计进行综合。(7) ( 可选) 如果您的设计含有分区,还没有进行完整编译,则需要通过Partition Merge 将分区合并。(8)( 可选) 通过仿真器为设计生成一个功能仿真网表,进行功能仿真。(9) 使用适配器对设计进行布局布线。(10)使用PowerPlay 功耗分析器进行功耗估算和分析。(11)使用仿真器对设计进行时序仿真。使用TimeQuest 时序分析器或者标准时序分析器对设计进行时序分析。(12)( 可选) 使用物理综合、时序逼进布局、LogicLock 功能和分配编辑器纠正时序问题。(13)使用汇编器建立设计编程文件,通过编程器和Altera 编程硬件对器件进行编程。(14)
21、( 可选) 采用SignalTap II 逻辑分析器、外部逻辑分析器、SignalProb 功能或者芯片编辑器对设计进行调试。(15) ( 可选) 采用芯片编辑器、资源属性编辑器和更改管理器来管理工程改动。3、设计方法和设计规划在建立新设计时,应重视考虑Quartus II 软件提供的设计方法,包括自上而下或自下而上的渐进式设计流程以及基于模块的设计流程。不管是否使用EDA 设计输入和综合工具,都可以使用这些设计流程。(1) 自上而下与自下而上的设计方法比较Quartus II 软件同时支持自上而下和自下而上的编译流程。在自上而下的编译过程中,一个设计人员或者工程负责人在软件中对整个设计进行编
22、译。不同的设计人员或者IP 提供者设计并验证设计的不同部分,工程负责人在设计实体完成后将其加入到工程中。工程负责人从整体上编译并优化顶层工程。设计中完成的部分得到适配结果,当设计的其他部分改动时,其性能保持不变。自下而上的设计流程中,每个设计人员在各自的工程中对其设计进行优化后,将每一个底层工程集成到一个顶层工程中。渐进式编译提供导出和导入功能来实现这种设计方法。作为底层模块设计人员,您可以针对他们的设计,导出优化后的网表和一组分配( 例如LogicLock 区域)。然后,工程负责人将每一个设计模块作为设计分区导入到顶层工程中。在这种情况下,工程负责人必须指导底层模块设计人员,保证每一分区使用
23、适当的器件资源。在完整的渐进式编译流程中,您应该认识到,如果以前出于保持性能不变的原因而采用自下而上的方法,那么现在可以采用自上而下方法来达到同样的目的。这一功能之所以重要是出于两方面的原因。第一,自上而下流程要比对应的自下而上流程执行起来简单一些。例如,不需要导入和导出底层设计。第二,自上而下的方法为设计软件提供整个设计的信息,因此,可以进行全局优化。在自下而上的设计方法中,软件在编译每一个底层分区时,并不知道顶层设计其他分区的情况,因此,必须进行资源均衡和时序预算。(2) 自上而下渐进式编译设计流程自上而下渐进式编译设计流程重新使用以前的编译结果,确保只对修改过的设计重新编译,因此能够保持
24、设计性能不变,节省编译时间。自上而下的渐进式编译流程在处理其他设计分区时,可以只修改设计中关键单元的布局,也可以只对设计的指定部分限定布局,使编译器能够自动优化设计的其余部分,从而改进了时序。在渐进式编译流程中,您可以为设计分区分配一个设计实体实例,然后使用时序逼近布局图和LogicLock 功能为分区分配一个器件物理位置,进行完整的设计编译。在编译过程中,编译器将综合和适配结果保存在工程数据库中。第一次编译之后,如果对设计做进一步的修改,只有改动过的分区需要重新编译。完成设计修改后,您可以只进行渐进式综合,节省编译时间,也可以进行完整的渐进式编译,不但能够显著节省编译时间,而且还可以保持性能
25、不变。在这两种情况中,Quartus II 软件为所选的任务合并所有的分区。由于渐进式编译流程能够防止编译器跨分区边界进行优化,因此编译器不会像常规编译那样对面积和时序进行大量优化。为获得最佳的面积和时序结果,建议您记录设计分区的输入和输出,尽量将设计分区数量控制在合理范围内,避免跨分区边界建立过多的关键路径,不要建立太小的分区,如数量少于1000 的逻辑单元和自适应逻辑模块(ALM) 分区。2.1.3 Quartus II总体仿真使用EDA工具进行设计仿真Quartus II 软件的EDA Netlist Writer 模块生成用于功能或时序仿真的VHDL 输出文件(.vho) 和Veril
26、og 输出文件(.vo),以及使用EDA 仿真工具进行时序仿真时所需的Standard Delay Format Output 文件(.sdo)。Quartus II 软件生成Standard Delay Format 2。1 版的SDF 输出文件。EDA Netlist Writer 将仿真输出文件放在当前工程目录下的专用工具目录中。此外, Quartus II 软件通过NativeLink 功能为时序仿真和EDA 仿真工具提供无缝集成。NativeLink 功能允许Quartus II 软件将信息传递给EDA 仿真工具,并具有从Quartus II 软件中启动EDA 仿真工具的功能。建立一
27、个新工程时,或者在Settings 对话框(Assignments 菜单)EDA ToolSettings 下的 Simulation 页面中,可以在New Project Wizard(File 菜单) 中选择EDA 仿真工具。 Simulation 页面允许您选择仿真工具并为Verilog和VHDL 输出文件及其对应SDF 输出文件的生成指定选项,以及功耗分析和Signal Activity File 的选项。2.2 VHDL语言介绍2.2.1 VHDL语言概述甚高速集成电路硬件描述语言 (Very high speed interated circuit hardware descrip
28、tion language,VHDL)广泛用于电路设计的文档记录、设计描述的逻辑综合及电路仿真等方面。与一般的高级语言比较, 具有如下的特点:VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部
29、分的概念是VHDL系统设计的基本点。VHDL语言对行为进行描述的能力为设计大规模复杂数字系统或单片系统提供了重要保证。VHDL语言是一种硬件描述语言, 具有严谨的语言结构和强大的硬件描述能力。近年发展起来的描述混合系统和描述单片系统的AMS-VHDL, 就是以VHDL语言为基础的。VHDL是EDA开发环境中最重要的一环,VHDL语言设计文档描述电子系统结构、行为或功能,要经过EDA编译器、综合器、优化器、布局布线器、模拟器及编程器等一系列处理,才能转化为物理实现,显然,VHDL设计文档是这一序列工作的起点,具有重要的意义。VHDL支持自上而下的设计思想, 可以把一个大型设计分解为若干易于实现的
30、子模块。VHDL支持设计的再利用, 使得大型设计可以由多人或多个开发组共同工作来完成。2.2.2 VHDL语言介绍1、 利用VHDL实现数字系统的设计流程利用VHDL和可编程逻辑器件实现数字逻辑的流程见图2.3, 该流程揭示了设计进程中各个EDA工具的输人输出情况,在整个设计过程中, 设计者的主要工作是完成VHDL设计文档, 并对以后的处理进程加以简单的引导,设计的大部分工作由EDA工具完成,设计者的工作主要转向高层次的规划和管理以及电路系统的结构与功能的可行性分析。图2.3 VHDL语言程序设计技术的体系结构VHDL语言具有强大的功能。学习语言,要从基本元素、语法、常用电路的描述方法人手,逐
31、步掌握层次设计的思想。2、 VHDL的基本元素实体(entity):实体是一个设计的外部界面。VHDL表达的所有设计均与实体有关, 实体是设计中最基本的模块,实体的通信点是端口, 端口必须定义信号名、模式和信号类型。结构体(architecture):所有能被仿真的实体都有一个结构体描述, 结构体描述实体的行为功能, 包含两类语句:并行语句和顺序语句。子程序:由过程和函数组成过程能返回多个变量, 函数只能有一个返回值。程序包(package):是一种重要的设计再利用机制,为了使一组数据类型、常量和子程序对多个设计实体都成为可见的,VHDL提供了该结构。库(library):用来存放预编译的程序
32、包,预定义的程序包可以在其它设计中被调用, 因此, 库也是一种重要的设计再利用机制。运算符(operator):VHDL为构造表达式提供了算术、关系、逻辑、连接4种运算符。进程(process):用于实现顺序发生的算法流程,进程只能包含在结构体中,一个结构体可以包含多个进程语句,进程语句包含3部分:敏感表、进程语句、结束语句。数据对象:包括信号、常量、变量、文件4类。元件(component):是对VHDL模块的说明, 使它能在其它模块中被调用。3、 VHDL的常用语句VHDL语句分并行语句和顺序语句,并行语句体现了硬件电路执行的并发性, 主要包括:布尔方程、条件赋值语句with-selcet
33、-when、when-else及元件例化语句等,存在于结构体之中、进程之外。顺序语句与其它高级语言类似,是对算法流程的描述,包括if-then-else、case-when等语句, 必须包含在进程内。4、 常用电路的VHDL描述利用VHDL设计数字系统, 必须熟练掌握一些基本电路的描述方法。组合电路的描述:如逻辑门、编码器、译码器、选择器、加法器、乘法器等;寄存器的描述掌握书写同步/异步电路的方法, 描述时钟上升沿、敏感表、同步复位、异步复位、同步置数等功能;锁存器的描述:掌握D型锁存器、SR型锁存器等的描述方法;输出使能的描述:VHDL没有直接表示的oe, 所以需要掌握描述oe的方法;双向信
34、号的描述:理解双向模式的内外驱动源的差别, 正确使用双向信号;三态缓冲器的描述:掌握利用信号实现三态缓冲器的方法;计数器的描述:掌握可控的二进制、BCD加/减计数器的描述方法;移位寄存器的描述:掌握可控算术移位/逻辑移位及左移/右移的描述方法;状态机:掌握状态机的设计思想及实现方法, 理解状态编码对设计的面积、速度等方面的影响, 能够自定义状态编码, 能够熟练使用“ 一位有效编码”方式;RAM/ROM/FIFO的设计:能够利用VHDL基本语法设计存储阵列, 能够设计简单的读写驱动电路, 掌握描述多时钟工作的方法;2.2.3 VHDL应用开发介绍VHDL语言支持大规模复杂的数字系统设计, 其核心
35、思想是层次化设计。VHDL语言对层次化设计的支持机制为:库、程序包、可重用的元件及元件例化语句。库是用来存放可编译的设计单元的地方, 通过目录可查看或调用程序包、元件的介绍见前元件例化语句是高层设计调用低层元件的主要手段。层次化设计的主要步骤如下:(1)需求分析、系统分析、算法分析;(2)系统分解、逐步求精, 将系统分解为易于实现的子模块;(3)编程实现, 对各个子模块, 应用语法实现, 这些实现了的模块称元件(4)利用VHDL语言的package机制, 将元件归整在程序包。以后, 凡是调用该程序包的设计文档, 都可直接调用其中的元件;(5)顶层设计。通过元件例化, 将各个元件按算法流程数(据
36、流程或控制流程)进行“ 组装” , 得到最后的设计。3 基于Quartus II的半加、全加器的设计与实现3.1 基于Quartus II的半加器运算3.1.1 半加器的原理与真值表半加器是产生进位输入的加法器电路。 是实现两个一位二进制数的加法运算电路。数据输入A被加数、B加数,数据输出S和数(半加和)、进位C0。A和B是半加器电路是指对两个输入数据位进行加法,输出一个结果位和进位,不相加的两个数,S是半加和数,C0是进位数。半加器的真值表如表3.1所示。表中两个输入是加数A和B,输出有一个是和S,另一个是进位C0。表3.1 半加器的真值表输入输出ABC0S0000010110011110函
37、数的逻辑表达式为:S=AB ; C0=AB。3.1.2 半加器的设计与实现1、启动Quartus II9.0软件,在Quartus II管理器窗口中选择菜单FileNew Project Wizard,进入新建工程向导。如图3.1所示。图3.1 新建工程2、在新建工程对话框输入工程名和工程路径,本工程命名为halfadder。如图3.2所示。图3.2 文件名和工程路径3、添加已经有文件(如果没有已经有文件的直接跳过next),并且在Divice&Family Setting选项卡中,选择的芯片是MAX II系列中的EPM240T100C5,如图3.3,图3.4所示。图3.3 添加已有文件图3.
38、4 选择芯片4、选择仿真,综合工具(实验全部利用quartus做,三项都选None),如图3.5所示。图3.5 选择仿真工具5、工程建立完成(点finish),如图3.6所示。图3.6 工程建立完成6、添加文件(filenewverilog file(或者VHDL)),新建完成之后要先保存。之后开始编译程序。如图3.7所示。图3.7 添加文件7、对编译完成的文件进行保存,并设为顶层文件(执行菜单命令ProjectSet as Top-Level Entity)。并进行语法检测(点击工具栏的这个按钮(start Analysis & synthesis)点击确定完成语法检测。如图3.8所示。图3
39、.8 语法检测8、语法检测没有错误以后,新建一个矢量波形仿真文件Vector Waveform File。选择菜单File tNew,在New对话框中选择Verfication tDebugging Files tVector Waveform File。单击OK,出现波形编辑窗口,显示一个空的波形文件,如图3.9所示。图3.9 建立波形文件9、设置仿真时间区域和网格大小。选择EditEnd Time命令,在弹出的对话框中的Time文本框中输入1,单位选择s,整个仿真域的时间即设定为1s,单击OK按钮。选择菜单EditGrid Size,根据需要修改网格大小,这里设置1ns,单击OK按钮。如图
40、3.10,图3.11所示。图3.10 设置End Time图3.11 设置Grid Size10、设置仿真观察点。在文件的最左栏中双击鼠标左键,在弹出的对话框中单击Node Finder,选择Filter列表中预综合(Pre-synthesis)或后布局布线(Post-fitting)或全部(all)的类型,单击其右上方的list,出现该类型的所有节点。单击中间的双右方向键,所有信号出现在右方Selected Nodes栏中,确认后返回波形文件。以时钟脉冲方式对输入信号A,B进行编辑,使之具有“00”“01”“10”“11”这4种状态,这里对A、B都选用时钟信号激励,单击“”周期分别设为20n
41、s、40ns。如图3.12、图3.13、图3.14所示。图3.12 设置仿真观察点图3.13 Node Finder图图3.14 时钟设置11、功能仿真设置,选择ProcessingSimulator Tool命令,弹出的对话框如图3.15所示。在其对话框的仿真模式Simulator Mode中选择功能仿真Functional,单击其右侧的Generate Functional Simulation Netlist按钮,Quartus II将产生设计文件的功能仿真网表,并设置仿真激励文件。在仿真器设置对话框的仿真输入选项Simulator input栏目下,可以看到将要进行的仿真文件halfa
42、dder.vwf。然后选择Overwrite simulation input filewith simulation results,单击下方的Start按钮,启动仿真器,实现功能仿真。功能仿真结束后单击Open按钮,返回波形文件,就会得到功能仿真波形,对照半加器逻辑真值表3.1,可以很清楚地看到与真值表的逻辑完全相符合图3.15 Simulation Tool对话框12、一位半加器程序代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY halfadder ISPORT(a,b:IN STD_LOGIC; s,c:OUT STD_LOGIC)
43、;END halfadder;ARCHITECTURE hadder OF halfadder ISBEGIN s=a XOR b; c=a AND b;END hadder;13、一位半加器仿真结果如图3.16所示。图3.16 一位半加器功能仿真图由图可知,第一段距离,a、b输入都是0,所以和s和进位位c都是0,满足半加器的原理,而第四段,a、b输入都是1,所以和是10,但s是一位数,所以为0,1+1产生进位,所以c为1;由次可以看出所得仿真波形是正确的。3.2 基于Quartus II的全加器运算3.2.1 全加器的原理、真值表和原理图1、全加器的原理全加器是实现两个一位二进制数及低位来的
44、进位数相加,求得和及向高位进位的逻辑电路。所以全加器有三个输入端(A,B,Ci)和两个输出端(S,C0)。其中A,B,Ci为三个加数,Ci为来自低位的进位,S为相加的“和”,C0表示加运算是否产生进位,高电平有效。用门电路实现两个二进制数相加并求出和的组合线路,称为一位全加器。一位全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器。2、全加器真值表如表3.2所示。表3.2 全加器的真值表输入输出ABCiC0S0000000101010010111010001101101101011111由全加器的真值表可得全加器(FA)的逻辑表达式为:S=ABCiC0=AB+
45、B Ci +A Ci3、全加器原理图如图3.17所示。图3.17 全加器流程图3.2.2全加器的设计与实现1、一位全加器的建立过程可以参见半加器的建立过程。2、一位全加器的程序代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY fadd ISPORT(a,b,ci:IN STD_LOGIC; sum,co:OUT STD_LOGIC);END fadd;ARCHITECTURE fad OF fadd ISBEGINsum=(a XOR b) XOR ci;co=(a AND b) or (a AND ci) OR (b and ci);END
46、 ARCHITECTURE fad;3、一位全加器仿真结果如图3.18所示。图3.18 一位全加器功能仿真图由图可以看出,第二段a、b、ci分别输入为1、0、0,所以s为1,高位进位位c0为0;由第四段a、b、ci分别输入为1、1、0,所以s为0,而三个数相加产生进位位,所以c0为1;满足全加器真值表提供的结果,所以仿真正确。4 基于Quartus II的乘法、除法器的设计与实现4.1 基于Quartus II的乘法器运算4.1.1 乘法器的原理和流程图1、乘法器的原理乘法器是一种完成两个互不相关的模拟信号相乘作用的电子器件。它可以将两个二进制数相乘。它是由更基本的加法器组成的。乘法器可以通过
47、使用一系列计算机算数技术来实现数。大多数的技术涉及了对部分积的计算(其过程和我们使用竖式手工计算多位十进制数乘法十分类似),然后将这些部分积相加起来。这一过程与小学生进行多位十进制数乘法的过程类似,不过在这里根据二进制的情况进行了修改。乘法器不仅作为乘法、除法、乘方和开方等模拟运算的主要基本单元,而且还广泛用于电子通信系统作为调制、解调、混频、鉴相和自动增益控制;另外还可用于滤波、波形形成和频率控制等场合,因此是一种用途广泛的功能电路。一个理想的通用乘法器,不应当对任何一个输入信号的极性加以限制,也就是说,应当具有能完成四个象限的运算功能的电路。乘法器主要分模拟乘法器和硬件乘法器。模拟乘法器是对两个模拟信号(电压或电流)实现相乘功能的的有源非线性器件。主要功能是实现两个互不相关信号相乘