资源描述
.wd. 本科毕业设计论文基于FPGA的计时器的设计学 院 自动化学院 专 业 电子信息科学与技术 年级班别2009级(1)班学 号3109001158学生姓名 刘健忠 指导教师 谭北海 2013年4月基于FPGA的计时器设计刘健忠 自动化学院摘 要随着电子设计自动化技术和可编程逻辑器件的出现和飞速开展,在设计周期得到大大的缩短的同时系统本钱也有了大幅度的降低,显然标准逻辑器件的组装已远不能满足这方面的要求。而Verilog HDL能提供高阶电路描述语言的方式,让复杂的电路可以通过Verilog HDL编辑器的电路合成方式,轻易而且快速的到达设计的规格。由于Verilog HDL电路描述语言能涵盖的范围相当广,能适用于各种不同阶层的设计工程师的需要,所以Verilog HDL电路设计毫无疑问的成为硬件设计工程师的必备工具。本系统是用Verilog编写的基于Altera DE2的 计费器。该设计采用了现场可编程逻辑器件FPGA设计,并基于硬件描述语言Verilog HDL在Altera公司的Quartus 软件上实现仿真。根据 局反响回来的信号,此信号是提前预设的,数码管显示通话类型、用户余额以及通话时长包括秒数和分钟数。根据每种通话类型的计费价格不同,当系统所设置的余额数不够,用户将无法拨通 ,当用户余额小于指定金额时,系统发出警告信号,提醒用户。当告警时间过长超过1分钟时自动切断通话信号。当用户完毕通话,系统清零。关键词:Verilog ,FPGA,通话信号,计时器AbstractWith the rapid development of electronic design automation technology and programmable logic devices which greatly shorten the design period and reduced the cost of the system at the same time. Apparently, the assembly of standard logic devices can not meet the requirements in this regard. Verilog HDL can provide high-level circuit description language, which allows complex circuit by the Verilog HDL Editor circuit synthesis method as well by meeting the design specification appropriately. Verilog HDL circuit description language covers a very wide range,which can be applied to a variety of different sectors of the needs of design engineers, the circuit design of Verilog HDL without a doubt to become an essential tool for hardware design engineers.The system is based on Altera DE2 written by Verilog phone devices. It is used by Field Programmable Gate Array FPGA based on Verilog HDL hardware description language to design and Alteras Quartus in software for emulation. According to the feedback of the telephone office back signal whichis actually pre-designed, digital pipe display type, user balance and phone call duration (including the number of seconds or minutes). Depending on the billing price of each call type is different,when a began to balance the set is not enough, the user will not be able to dial the phone, and when the balance is less than the specified money, issuing a warning signal system, remindingto users. When the alarm time is too long (more than 1 minutes),the conversation signal will be automatically cut off . When the user end the call, the system will be reseted.Key words:Verilog ,FPGA,Calling signal,calculagraph目录1绪论11.1 课题研究的目的11.2 国内外开展现状11.3课题的主要技术路线22FPGA技术及硬件描述语言32.1 FPGA的介绍32.1.1可编程逻辑器件开展简史32.1.2可编程逻辑器件的 基本构造32.1.3可编程逻辑器件分类42.1.4 Altera Cyclone系列器件介绍52.1.5 FPGA的开发流程52.2 FPGA设计方法62.3利用硬件描述语言HDL的硬件电路设计方法72.4Verilog HDL语言的设计流程82.5 Quartus 概述及其设计流程112.5.1 Quartus 概述112.5.2 Quartus 设计流程123系统总体设计143.1 计费模块介绍143.2 预设模块介绍153.3 时钟分频模块介绍153.4 分拆模块介绍153.5 数码管显示模块介绍163.6 警告模块介绍173.7 逻辑资源使用情况174系统的操作与分析184.1系统功能介绍184.2 选择通话类型和设置余额204.3通话开场214.4通话完毕22结论23参考文献24致谢25附录A26附录B27附录C31附录D32附录E33附录F35附录G361绪论1.1 课题研究的目的时钟计时器在现在应用场合非常的广泛,近年来,随着科学技术的进步和时代的开展,人们对时钟的功能和精度提出了越来越高的要求,各种时钟的设计也越来越重要。秒表/时钟计时器是在一种计时器上实现两种 基本功能的一种器件。它广泛应用于各种场所,同时,它以其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化,而受到广阔消费者的喜爱。近年来随着计算机技术的飞速开展,计算机也正式形成了通用计算机系统和嵌入式计算机系统二个分支。单片机作为最典型的嵌入式系统,由于其微小的体积和极低的本钱,广泛应用于家用电器、仪器仪表、工业控制单元以及通信产品中,成为现代电子系统中最重要的智能化工具。同时数模电技术、微电子技术也快速开展使得大量集成芯片出现,从而实现很多简单功能代替了原来的模拟电路。这样利用单片机、集成芯片和电子电路就可以很方便的进展设计,其中最典型、现在应用也很多的就是电子产品的设计。本设计就是利用单片机技术将秒表和时钟两种计时器的功能集中到一种计时装置上,从而实现计时器功能的集成化,使其使用起来更加方便。本设计的一大特点就是在硬件设计中采用实时时钟芯片来实现计时,大大简化了硬件电路,从而使设计更加简便易行。1.2国内外开展现状在国外,电子计时器在集成电路创造后,只用短短几年时间就完成了技术飞跃,经过剧烈的市场竞争,现在的计时器技术己经相当成熟。计时器已慢慢地脱离原来的“辅助计时工具的功能定位,正向着多功能化、可编程化方向开展,在各个领域都得到了广泛的应用。国内也有厂商利用计时器芯片开发新的产品,但对计时器技术的研究、计时器芯片的设计还处于起步阶段。计时器的主要功能还是在于“计时,不妨称之为“低档计时器。即便是对这种计时器,很多厂商也只从事计时器的设计、销售业务。1.3课题的主要技术路线在本次设计基于现场可编程逻辑器件FPGA进展设计,应用硬件描述语言Verilog HDL编程并在Altera公司的Quartus 软件上实现仿真。需要进展计时功能的实现,通过拨码开关输入、数码管显示来达成运算目的。2 FPGA技术及硬件描述语言2.1 FPGA的介绍2.1.1 可编程逻辑器件开展简史随着微电子设计技术与工艺的开展,数字集成电路从电子管、晶体管、中小规模集成电路、超大规模集成电路逐步开展到今天的专用集成电路(ASIC)。ASIC的出现降低了产品的生产本钱,提高了系统的可靠性,缩小了设计的物理尺寸,推动了社会的数字化进程。但是ASIC因其设计周期长,改版投资大,灵活性差等缺陷制约着它的应用范围。硬件工程师希望有一种更灵活的设计方法,根据需要,在实验室就能设计、更改大规模数字逻辑,研制自己的ASIC并马上投入使用,这是提出可编程逻辑器件的 基本思想。可编程逻辑器件随着微电子制造工艺的开展取得了长足的进步。从早期的只能存储少量数据,完成简单逻辑功能的可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(E2PROM),开展到能完成中大规模的数字逻辑功能的可编程阵列逻辑(PAL)和通用阵列逻辑(GAL),今天已经开展成为可以完成超大规模的复杂组合逻辑与时序逻辑的复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA)。随着工艺技术的开展与市场的需要,超大规模、高速、低功耗的新型FPGA/CPLD不断推陈出新。新一代的FPGA甚至集成了中央处理器(CPU)或数字处理器(DSP)内核,在一片FPGA上进展软硬件协同设计,为实现片上可编程系统(SOPC, System On Programmable Chip)提供了强大的硬件支持。2.1.2 可编程逻辑器件的 基本构造可编程逻辑器件的基木构造如图2.1所示。由输入控制电路、与阵列、或阵列以及输出控制电路组成。在输入控制电路中,输入信号经过输入缓冲单元产生每个输入变量的原变量和反变量,并作为与阵列的输入项。与阵列由假设干个与门组成,输入缓冲单元提供的各输入项被有选择地连接到各个与门输入端,每个与门的输出那么是局部输入变量的乘积项。各与门输出又作为或阵列的输入,这样或阵列的输出就是输入变量的与或形式。输出控制电路将或阵列输出的与或式通过三态门、存放器等电路,一方面产生输出信号,另一方面作为反响信号送回输入端,以便实现更复杂的逻辑功能。因此,利用可编程逻辑器件可以方便地实现各种逻辑功能。图2.1 可编程逻辑器件的基木构造2.1.3 可编程逻辑器件分类广义上讲,可编程逻辑器件是指一切通过软件手段更改、配置器件内部连接构造和逻辑单元,完成既定设计功能的数字集成电路。目前常用的可编程逻辑器件主要有简单的逻辑阵列(PAL/GAL)、复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA)等3大类。1、PAL/GALPAL是Programmable Array Logic的缩写,即可编程阵列逻辑;GAL是Generic Array Logic的缩写,即通用可编程阵列逻辑。PAL/GAL是早期可编程逻辑器件的开展形式,其特点是大多基于E2CMOS工艺,构造较为简单,可编程逻辑单元多为与、或阵列,可编程逻辑单元密度较低,仅能使用于某些简单的数字逻辑电路。虽然PAL/GAL密度较低,但是它们一出现即以其低功耗,低本钱、高可靠性、软件可编程、可重复更改等特点引发了数字电路领域的巨大震动。虽然目前较复杂的逻辑电路一般使用CPLD甚至FPGA 完成,但是对应很多简单的数字逻辑电路,GAL等简单的可编程逻辑器件仍然被大量使用。目前,国内外很多对本钱十分敏感的设计都在使用GAL等低本钱可编程逻辑器件,越来越多的74系列逻辑电路被GAL取代。GAL等器件开展至今已经近20年了,新一代的GAL以功能灵活,小封装、低本钱、重复可编程、应用灵活等特点依然在数字电路领域扮演着重要的角色。目前比照大的GAL器件供应商主要是Lattice半导体。2、CPLDCPLD是Complex Programmable Logic Device的缩写,即复杂的可编程逻辑器件。CPLD是在PAL、GAL的根基上开展起来的,一般也采用称为E2CMOS工艺,也有少数厂商采用Flash工艺,其 基本构造由可编程I/O单元、 基本逻辑单元、布线池和其他辅助功能模块构成。CPLD可实现的逻辑功能比PAL、GAL有了大幅度的提升,一般可以完成设计中较复杂、较高速度的逻辑功能,如接口转换、总线控制等。CPLD的主要器件供应商有Altera、Lattice 和Xilinx等。3、FPGAFPGA是Field Programmable Gate Array的缩写,即现场可编程门阵列。FPGA是在CPLD的根基上开展起来的新型高性能可编程逻辑器件,它一般采用SRAM工艺,也有一些专用器件采用Flash工艺或反熔丝(Anti-Fuse)工艺等。FPGA的集成度很高,其器件密度从数万系统门到数千万系统门不等,可以完成极其复杂的时序与组合逻辑电路功能,适用于高速、高密度的高端数字逻辑电路设计领域。FPGA的 基本组成局部有可编程输入/输出单元, 基本可编程逻辑单元、嵌入式RAM、丰富的布线资源、底层嵌入功能单元、内嵌专用硬核等。FPGA的主要器件供应商有Xilinx、Altera、Lattice、Actel和Atmel等。2.1.4 Altera Cyclone系列器件介绍Altera Cyclone 采用全铜层、低K值、1.2伏SRAM工艺设计,裸片尺寸被尽可能最小的优化。采用300毫米晶圆,以TSMC成功的90nm工艺技术为根基,Cyclone器件提供了4,608到68,416个逻辑单元(LE),并具有一整套最正确的功能,包括嵌入式18比特x18比特乘法器、专用外部存储器接口电路、4kbit嵌入式存储器块、锁相环(PLL)和高速差分I/O能力。Cyclone器件扩展了FPGA在本钱敏感性、大批量应用领域的影响力,延续了第一代Cyclone器件系列的成功。Cyclone器件包含了许多新的特性,如嵌入存储器、嵌入乘法器、PLL和低本钱的封装,这些都为诸如视频显示、数字电视DTV)、机顶盒STB)、DVD播放器、DSL调制解调器、家用网关和中低端路由器等批量应用进展了优化。本设计正是采用Cyclone系列的芯片EP2C35672C6。该芯片的空间足够应付该系统所需要的资源。2.1.5 FPGA的开发流程FPGA开发 基本流程包括:设计输入、设计仿真、设计综合、布局布线等,它们的连接关系如图2.2所示。图2.2中FPGA开发流程图设计综合是整个FPGA设计流程中一个重要的步骤,它将HDL代码生成用于布局布线的网表和相应的约束。而且随着新一代FPGA芯片频率和密度的增长,时序收敛问题越来越严重,综合已经成为整个设计成败的关键。通常芯片供应商的FPGA软件中都包含综合功能,但它相对简单,不能适应新一代FPGA芯片的开展,需要更加专业的综合工具。图2.2 Altera FPGA的开发流程2.2 FPGA设计方法在FPGA设计中,有许多重要的原那么和规律可循,掌握这些原那么和规律,人们可以设计出许多高性能的电子系统。硬件原那么主要针对HDL代码编写而言的。硬件描述语言,它通过对硬件的抽象,最终实现在芯片内部的实际电路。因此评判一段HDL代码的优劣的最终标准是:其描述并实现的硬件电路的性能主要是指面积和速度。评价一个设计的代码水平,主要从设计工程师所设想的硬件实现方案的效率以及合理性来分析。一个硬件系统,通过何种方式进展模块划分与任务分配,使用算法和实现功能,以及FPGA的规模估算、数据接口设计等,具体到FPGA的设计就要求对设计的全局有个宏观上的合理安排。一般来说实时性要求高、频率快、功耗小的功能模块适合使用CPLD实现。而FPGA与CPLD相比,更适合实现规模较大、频率较高、存放器资源使用较多的设计。面积和速度的平衡与互换原那么进展FPGA设计时的一个重要原那么。这里“面积是指一种设计所要消耗的FPGA/CPLD的逻辑资源的数量,对于FPGA可以用所消耗的触发器(FF)和查找表(LUT)来衡量,更一般的衡量方式可以用设计所占用的等价逻辑门数。“速度是指设计在芯片上稳定运行,所能够到达的最高频率,这个频率由设计的时序状况决定,和设计满足的时钟周期,时钟建设时间(Clock Setup Time),时钟保持时间(Clock Hold Time)等众多时序特征量密切相关。面积和速度是对立统一的矛盾体。要求一个设计同时具备运行频率最高而且面积最小是不现实的。科学的设计方法是在满足设计时序要求的前提下,占用最小的芯片面积。或者在所规定的面积下,频率更高。这两种目标充分表达了面积和速度的平衡思想。相比之下,满足时序、工作频率的要求更重要一些,当两者冲突时,采用速度优先的准那么。采用同步时序设计是FPGA设计的一个重要原那么。它可以使静态时序分析变得简单而且可靠,能有效地防止毛刺的影响,使设计更加有效,还可以减小环境对芯片的影响。在遵循这一原那么的时候,应该尽可能的在设计中使用同一时钟,时钟走全局网络,同时防止使用混合时钟采样数据。2.3 利用硬件描述语言(HDL)的硬件电路设计方法硬件描述语言,就是可以描述电路的功能、信号连接关系及定时关系的语言。它能比电路图更有效地表示硬件电路的特性。利用硬件描述语言编程来表示逻辑器件及系统硬件的功能和行为,是该设计方法的一个重要特征。随着大规模专用集成电路(ASIC)的开发和研制,为了提高开发的效率,增加已有开发成果的可继承性以及缩短开发时间,各ASIC研制和生产厂家相继开发了用于各自目的的硬件描述语言。其中最有代表性的是美国国防部开发的VHDL语言,Verilog公司开发的Verilog HDL以及日本电子工业振兴协会开发的UDL/I语言。利用硬件描述语言(HDL)的硬件电路设计方法具有以下特点: 首先是该设计方法是首先从系统设计入手,从顶层进展功能划分和构造设计。其次,系统中可大量采用ASIC芯片由于目前众多的制造ASIC芯片的厂家,他们的工具软件都可以支持HDL语言的编程,因此,硬件设计人员在设计硬件电路时,无须受只能使用通用元器件的限制,而可以根据硬件电路设计的需要,设计自用的ASIC芯片或可编程逻辑器件。这样最终会使系统电路设计更趋合理,体积也可大为缩小。采用系统早期仿真从自上至下的设计过程可以看到,在系统设计过程中要进展三级仿真,即行为层次仿真、RTL层次仿真和门级层次仿真。也就是说进展系统数学模型的仿真、系统数据流的仿真和系统门级电路原理的仿真。这三级仿真贯穿系统硬件设计的全过程,从而可以在系统设计早期发现设计中存在的问题。在采用传统的硬件电路设计方法时,往往要求设计者在设计电路前应写出该电路的逻辑表达式或真值表或时序电路的状态表。这一工作是很困难和繁杂的,特别是在系统比照复杂时更是如此。在用HDL语言设计硬件电路时,就可以使设计者免除编写逻辑表达式或真值表之苦。这样使硬件电路的设计难度有了大幅度的下降,从而也缩短了硬件电路的设计周期。在传统的硬件电路设计中,最后形成的主要文件是电原理图,而采用HDL语言设计系统硬件电路时,主要的设计文件是用HDL语言编写的源程序。如果需要也可以转换为电原理图形式输出。用HDL语言源程序作为归档文件有很多好处。其一是资料量小,便于保存。其二是可继承性好。当设计其它硬件电路时,可以使用文件中的某些库、进程和过程等描述某些局部硬件电路的程序。其三是阅读方便。阅读程序比阅读原理图要更容易一些。阅读者很容易在程序中看出某一硬件电路的工作原理和逻辑关系。而阅读电原理图,推知其工作原理却需要较多的硬件知识和经历,而且看起来也不那么一目了然。2.4 Verilog HDL语言的设计流程Verilog HDL语言采用自顶而下(Top-Down)设计的 基本概念。现代集成电路制造工艺技术的改进,使得在一个芯片上集成数十万乃至数千万个器件成为可能。但很难设想仅有一个设计师独立设计如此大规模的电路而不出现错误。利用层次化、构造化的设计方法,一个完整的硬件设计任务首先由总设计师划分为假设干个可操作的模块,编制出相应的模型行为的或构造的,通过仿真加以验证后,再把这些模块分配给下一层的设计师。这就允许多个设计师同时对其下层设计师完成的设计用行为级上层模块对其所做的设计进展验证。为了提高设计质量,如果其中有一局部模块可由商业渠道可得,用户可以购置它们的知识产权的使用权IP核的重用,以节省时间和开发经费,图2.3为自顶而下(Top-Down)的示意图,以设计树的形式绘出。自顶而下的设计即Top-Down设计是从系统级开场,把系统划分为 基本单元,然后再把每个 基本单元划分为下一层次的 基本单元,一直这样做下去,直到可以直接用EDA元件库中的 基本元件来实现为止。对于设计开发整机电子产品的单位和个人来说,新产品的开发总是从系统设计入手,先进方案的总体论证、功能描述、任务和指标的分配。随着系统变得复杂和庞大,特别需要在样机问世之前,对产品的全貌有一定的预见性。目前,EDA技术的开展使得设计师有可能实现真正的自顶而下的设计。系统级设计模块A模块B模块C模块A1模块A2模块B1模块B2模块C1模块C2图2.3 Top-Dowm 设计思想复杂数字逻辑电路和系统的层次化、构造化设计隐含着对系统硬件设计方案的逐次分解。在设计过程中的任意层次,至少得有一种形式来描述硬件。硬件的描述特别是行为描述通常成为行为建模。在集成电路设计的每一层次,硬件可以分为一些模块,该层次的硬件构造由这些模块的互联描述,该层次的硬件的行为有这些模块的行为描述。这些模块称为该层次的 基本单元。而该层次的 基本单元又由下一层次的 基本单元互联而成。如此下去,完整的硬件设计就可以由图1.1所示的设计树描述。在不同的层次都可以进展仿真以对设计思想进展验证。EDA工具提供了有效的手段来管理错综复杂的层次,即可以很方便的查看某一层次某模块的源代码或电路图以改正仿真时发现的错误。以下是具体模块的设计编译和仿真的过程。在不同的层次做具体模块的设计所用的方法也有所不同,在高层次上往往编写一些行为级的模块通过仿真加以验证,其主要目的是系统性能的总体考虑和各模块的指标分配,并非具体电路的实现,因而综合及其以后的步骤往往不需进展。而当设计的层次比照接近底层时,行为描述往往需要用电路逻辑来实现。这时的模块不仅需要通过仿真加以验证,还需要进展综合、优化、布线和后仿真。总之具体电路是从底向逐步的。EDA工具往往不仅支持HDL描述也支持电路图输入,有效地利用这两种方法是提高设计效率的方法之一。图2.4所示的流程图简要地说明了模块的编译和测试过程。从图中可以看出,模块设计流程主要有两大主要功能局部组成:设计开发:即从编写设计文件综合到布局布线电路生成这样一系列步骤。设计验证:也就是进展各种仿真的一系列步骤,如果在仿真过程中发现问题就返回设计输入进展修改。具体工艺器件的优化、映像和布局布线。由于各种ASIC和FPGA器件的工艺各不一样,因而当用不同厂家的不同器件来实现已验证的逻辑网表EDIF文件就需要不同的 基本单元库与布线延迟模型与之对应,才能进展优化、映像和布局布线,以及布局布线后准确的仿真验证。 基本单元库与布线延迟模型由熟悉本厂工艺的工程师提供,再由EDA厂商的工程师编入相应的处理程序,而逻辑电路设计师只需用一文件说明所用的工艺期间和约束条件,EDA工具就会自动地根据这一文件选择相应的库和模型进展准确的处理,从而大大提高设计效率。图 2.4 HDL设计流程图2.5Quartus 概述及其设计流程2.5.1Quartus 概述Quartus 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus 可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。Quartus 支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。此外,Quartus 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Maxplus 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停顿了对Maxplus 的更新支持,Quartus 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartus 中包含了许多诸如SignalTap 、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus 友好的图形界面及简便的使用方法。Altera Quartus 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。Altera的Quartus 可编程逻辑软件属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添 了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。支持MAX7000/MAX3000等乘积项器件。2.5.2 Quartus 设计流程1、建设新工程:首先将所设计工程工程划分为假设干子模块,将每个子模块单独存放在一个文件夹中,并分别进展编译,验证通过后,将每个子模块的VHDL文本文件添加到总工程文件夹中,并建设图元建设图元block,右键点击.V文件,选择 create symbol files for current files,将各个图元亦即子模块连接起来构成总体设计工程。2、设计各子模块:编写各子模块相应的代码,并分别进展编译,验证通过后将各子模块VHDL文件添加到顶层设计中,创立图元,进展连接以完成总体工程的设计。这局部就是将管脚连好。在原理图编辑中,英文的大小写代表一样的含义,只要器件连接线的节点名称一样就会默认为是连接的,总线(Bus)在图形编辑窗口显示的是一条粗线,总线必须在名称的后面加上“a.b,表示一条总线内所含有的节点编号,原理图编辑的文件扩展名为“.bdf,在Quartus 中工程名称必须与顶层实体名称一样,且VHDL设计中实体名称亦为一样的名字,否那么不能进展编译。3、编译工程4、仿真:波形矢量文件的扩展名为“.vwf,仿真分为功能仿真和时序仿真,也称为前仿真和后仿真,功能仿真是忽略延时后的仿真,是最理想的仿真,时序仿真那么是加上了一些延时的仿真,是最接近于实际的仿真,在设计中通常先做功能仿真验证逻辑的正确性,后做时序仿真验证时序是否符合要求,需注意默认为时序仿真,在设置功能仿真后需要生成功能仿真网络表。3 系统总体设计本系统总体设计框图如图3.1所示。此设计主要由计费模块、预设模块、时钟分频模块、分拆模块、数码管显示模块、警告模块组成。控制局部是该课程设计的核心局部,用硬件描述语言Verilog来描述数字系统的构造、行为和功能,采用“自顶向下的设计方法,将电路的硬件转变为软件设计。整个系统的RTL视图见附录A。计费模块主控局部通话状态分频电路定时器计时发出警告数码管显示预设类型图 3.1 系统设计构造框图3.1 计费模块介绍本模块是用于设置本次所通话的类型和初始余额的。根据 局反响回来的信号,代表话务种类返回信号可自己输入,“00表示目前没打 ,“01表示市内通话,“10表示 长途通话,“11表示特区童话;并用DE2板上的两个数码管来显示通话为何种类型;利用DE2板上的两个数码管用来显示卡内余额可自己设定初始余额,其单位为角,这里假定能显示的最大数额为99角 。余额根据打市话每分钟2角,打长话7角,打特话12角来计算;余额过少时的告警信号。当打市话时,余额少于2角,打长话时,余额少于6角,打特话时,少于12角,即会产生告警信号; 当告警时间过长如超过1分钟时自动切断通话信号。计费模块的主体局部Verilog HDL语言描述见附录B。3.2预设模块介绍本模块是用于设置本次所通话的类型和初始余额的。当通话按键开关还没被按下时,用户可以随自己的意愿预设想要实现的通话类型和初始余额,一旦通话按键开关被按下,通话类型和初始余额这两个值就会被锁存,这时再去做任何调整,该系统也不会产生任何反响。3.3 时钟分频模块介绍本模块是用于将50MHZ的频率分成1HZ的频率。分频的实现是通过一个计数器来实现的,由于系统自带的 外部晶振频率为50MHZ,所以我设置一个新的时钟,令它在原时钟的上升沿触发,而且每25000000次就取反一次,由此的得到的新时钟就是1HZ,即一个时钟周期为1S。时钟分频模块的主体局部Verilog HDL语言描述见附录C。图3.2为始终分频模块的仿真图,由于25000000倍仿真太大,无法看清这里只做了25倍的仿真。时钟分频模块所对应的RTL视图见附录D。图 3.2 分频模块的仿真图3.4 分拆模块介绍本模块是用于将十位数和个位数进展分拆。当输入的变量改变时,就会触发该模块,而分拆的实际实现是将变量对10进展取整,得到的就是十位数字,而将变量对10进展求余得到的就是个位数字,最后调用显示模块用数码管来进展显示。 图3.3为分拆模块所对应的RTL视图。图 3.3 分拆模块的RTL视图3.5数码管显示模块介绍本模块是用于将数码转换为对应共阴数码管的显示码。该模块主要是根据7段共阴数码管数码管的特性,将0到9对应的显示码译过来。显示局部是系统的输出局部,用于显示按键值及计算结果,由于数字系统的数据运算都是二进制的,而输出表达式都是BCD码,为了满足BCD码的译码显示,最方便的方法就是利用译码程序在FPGA中实现。本文采用的是共阳极七段数码管,显示数字时需要将对应管脚置为低电平,输出时,从左到右,按从高到低位的顺序依次接g、f、e、d、c、b、a。七段译码器的 基本构造如图3.4所示。数码管显示模块的主体局部Verilog HDL语言描述见附录E。数码管显示模块对应的RTL视图见附录F。图3.4 七段译码器的构造3.6 警告模块介绍该模块主要功能为当用户的余额缺乏时,主动发出信号灯警告。通过数码管的显示,可显示出当前用户所剩下的金额,一旦用户的余额缺乏以支持当次通话的时候,此模块就会发出警告,警告通过指示灯来显示,而超过时间那么会自动切断通话。分拆模块的主体局部Verilog HDL语言描述见附录G。3.7逻辑资源使用情况整个计费系统编译后资源使用情况缺乏1%,属于一个微型系统。具体的系统编译后的报告如图3.5所示。图3.5 系统编译后的报告4 系统的操作与分析4.1 系统功能介绍如图4.1所示,“1为系统电源开关,当系统开关翻开,载入程序,通过“2,我们可以随意设置所通话的类型,通话类型将通过“8显示出来,“00表示目前没打 ,“01表示市内通话,“10表示 长途通话,“11表示特区通话。通过“5设置余额,“SW0到“SW7之间分别代表金额的1角,2角,4角,8角,16角,32角,64角,99角,如果“SW0和“SW3同时打上,就是1+8=9角,如此类推。系统所设置的余额将在“11上显示。当系统上的余额足够拨打用户所设置的通话类型时,翻开“3后,开场拨打 ,同时“9和“10的计时将开场,“4指示灯绿光亮起,表示正在处于通话状态。根据不同类型的通话,通话每分钟的收费也不一样,市内通话每分钟2角,长途通话每分钟7角,特区通话每分钟12角,当系统余额缺乏以支撑当前通话的下分钟收费时,“6指示灯红灯亮起,代表警告信号。当告警时间过长如超过1分钟时,系统将会自动切断通话信号。最后,当需要进展下一次通话时,必须按下“7,进展系统复位。1-系统总开关;2-通话类型设置;3-通话开关;4-通话状态指示灯;5-金额设置;6-警告指示灯;7-复位键;8-通话类型显示;9-通话分钟计时显示;10-通话秒钟计时显示;11-余额显示图4.1 系统功能介绍4.2 选择通话类型和设置余额下面将会使用本系统进展一个简单的操作。首先我们先设置通话类型为长途通话,数码管上显示为“10,后面系统扣费将按照每分钟7角来进展。余额设置为9角。具体系统操作显示如图4.2。图4.2 通话类型和余额设置的视图4.3通话开场当翻开通话开关,用户通话开场,计费系统也同时启动,系统余额马上扣除7角,剩余2角的余额。通过绿色指示灯可以得知正在进展通话。同时系统的计时器也在进展,如图4.3所示,目前通话为0分11秒。由于系统的余额为2角,缺乏以支撑下一分钟的长途通话,于是,警告信号指示灯亮起。图4.3 正在通话的视图4.4通话完毕当系统的告警时间过长如超过1分钟时,系统将会自动切断通话信号。如图4.4所示,因为系统的余额为2角,缺乏以支撑当前通话的下一分钟扣费,于是系统在告警一分钟后切断了通话信号,此时通话状态灯也同时熄灭,而通话时间也正好显示为1分0秒,系统当前余额仍为2角。图4.4 通话被切断的视图结论毕业设计跟我们平时上的根基课或者专业课不同,它是一个重要课题,要用到很多综合性的知识,最重要的是让学生体验一下做科学研究的整个过程。也是毕业最重要的一个过程,它最能把理论知识准确运用到实际当中的去,做好了它就是就是一份成功的毕业设计了。经过几个月的奋战我的毕业设计终于完成了。在我还没有做毕业设计以前觉得毕业设计只是对这几年来所学知识的单纯性的总结,但是通过这次做毕业设计发现自己的看法有点太片面和简单了。通过这次毕业设计的编制使我明白了自己原来的知识还是比照欠缺。自己要学习的东西还太多太多,以前总是觉得自己什么东西都会,什么东西都懂,有点眼高手低。通过这次毕业设计的收集编制等等,我才明白学习是一个长期积累的过程,在以后的工作和生活当中我们都应该不断的努力学习,努力的去提高自己知识和综合素质。这个毕业设计是我本科学习阶段最后一次将自己所学理论与实际相结合的时机,通过这次比照完整的基于FPGA的计时器设计,我自己的理论与实践相结合的能力有了大幅度的提升。在温习了所学专业知识的根基上,同时通过查阅专业书籍、相关文献资来解决实际工程问题,这锻炼了我的综合运用各项知识和资源的能力。而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的实际动手经历得到了极大的丰富,由于程序编写与处理是一项非常繁琐非常令人头疼的工作,完成了这些,也使我的意志、抗压能力及耐力都得到了不同程度的提升,我相信这些提升是会影响我一辈子的珍贵财富。这一次的设计让我积累很多的解决实际问题的经历,使我的头脑更加灵活,这必然会让我在未来的工作学习中表现出更高的应变能力,更强的沟通力和理解力。这也许就是我们在踏入社会前进展毕业设计的最主要的目的吧。通过这次的设计,我对FPGA技术、Verilog HDL语言以及Quartus 的使用都有了深入的了解。虽然毕业设计中内容较多,过程繁琐但这也造就了我丰富的收获。我采用的是分模块的设计方法,各个模块的设计我都是随着设计的不断深入而不断熟悉并学会应用的。能够完本钱次毕业设计令我松了一口气,相信下一次做其它设计时我会做的更好。参考文献1夏宇闻Verilog数字系统教程第二版M 北京:北京航空航天大学出版社20022黄智伟FPGA系统设计与实践M 北京:电子工业出版社,20053徐志军,徐光辉CPLD/FPGA的开发与应用M 北京:电子工业出版社,20024崔葛瑾,沈利芳,李伟民基于FPGA的数字电路系统设计M 西安:西安电子科技大学出版社,20085童诗白,华成英模拟电子技术根基第四版M 北京:高等教育出版社,20066阎石数字电子技术根基第五版M 北京:高等教育出版社,20057潘松,黄继业EDA技术实用教程第二版M 北京:科学出版社,20059 J.Batlle,J.Marti,P Ridao,A New FPGA/DSP-Based Parallel Architecture for Real-TimeImage ProcessingJ,Real-Time Imaging,2002,8(5): 345356.10 P.Zhong, M.Martonosi and P.Ashar, FPGA-based SAT solver architecture with near-zero systhesis and layout overheadJ. IEEE Proc.-Comput. Digit. Tech, May 2000.Vol.147 No.3:135141.11王冬冬基于FPGA的浮点运算器设计万方数据 :/d.g.wanfangdata .cn/Thesis_Y1548067.aspx, 2009/12/30.致谢四年的读书生活在这个季节即将划上一个句号,而于我的人生却只是一个逗号,我将面对又一次征程的开场。四年的求学生涯在师长、亲友的大力支持下走得辛苦却也收获满囊,在论文即将付梓之际,思绪万千心情久久不能平静。伟人、名人为我所崇拜,可是我更急迫地要把我的敬意和赞美献给一位平凡的人我的导师谭北海教师。我不是您最出色的学生而您却是我最尊敬的教师。您治学严谨学识渊博思想深邃视野雄阔,为我营造了一种良好的精神气氛。授人以鱼不如授人以渔,置身其间耳濡目染潜移默化,使我不仅承受了全新的思想观念,树立了宏伟的学术目标,领会了 基本的思考方式。从论文题目的选定,到论文写作的指导,经由您悉心的点拨再经思考后的领悟,常常让我有“山重水复疑无路,柳暗花明又一村。感谢我的室友们,从不同的家乡来到同一个城市里,是你们和我共同维系着彼此之间兄弟般的感情,维系着寝室那份家的融洽。四年了,仿佛就在昨天。四年里,我们没有红过脸,没有吵过嘴,没有发生上大学前所担忧的任何不开心的事情。只是今后大家就难得再聚在一起吃每年元旦那顿饭了吧,没关系,各奔前程,大家珍重。但愿保研成果的林某学习天天向上,留守广工快快乐乐。我们在一起的日子,我会记一辈子的。感谢我的爸爸妈妈,焉得谖草言树之背养育之恩无以回报,你们永远安康快乐是我最大的心愿。在论文即将完成之际,我的心情无法平静。从开场进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请承受我诚挚谢意。人生的道路有许多的坎坷,不是一条通往光明之路,有痛苦,有伤心,有无助,也有面对一切所不能忍受的,这就是生活。但是生活中确实有许多美好的东西,有些时候你不会看到它的本身的色彩。如果你用这一种方式感受不到的话,不妨换一种方式去感受,也许它正是你所需要的那种生活方式。千万不要放弃生活,你放弃了它,生活也就放弃了你,人生贵在的是感受会感受才会有幸福。在生活中如果你感受的多了,那你才会感受到生活中的美好,你才会知道你在前世所选择的是今生的最正确的人生路。附录A系统RTL视图图A1 RTL视图附录B 计费模块的Verilog HDL语言描述module MONEY(iclk,iclk_50M,irst,imoney,iset,icall,omoney,otime,set,oclk_counter,oLED_warning,oLED_phoneing);input iclk;input iclk_50M;input irst;input icall;input 7:0 imoney;input 1:0 iset;output 5:0oclk_counter;output 6:0omoney;output 6:0otime;output 1:0 set;output oLED_phoneing;output oLED_warning;reg start ; / 通话开场,完毕变量reg 1:0set_r; / 什么类型的通话 reg 5:0clk_counter_r; / 秒计数器reg 6:0omoney_r; / 剩余余额reg 6:0otime_r; / 通话多少分钟计数器reg LED_phoneing_r; / 通话灯reg LED_warning_r; / 余额缺乏警告灯reg STOP; / 余额缺乏一分钟后停顿assign omoney = omoney_r;assign otime = otime_r;assign set = set_r;assign oclk_counter = clk_counter_r;assign oLED_phoneing = LED_phoneing_r;assign oLED_warning = LED_warning_r;always(posedge iclk_50M,negedge irst)begin if (!irst)start = 0;else if(STOP)start = 0;else if(icall)start = 1;else start = 0;end/每60秒一分钟always(posedge iclk,negedge irst)begin if (!irst)clk_counter_r = 0;else if(start)beginif(clk_counter_r 6d59)clk_counter_r = clk_counter_r + 1;else clk_counter_r = 0;endend/通话计时always(posedge iclk,negedge irst)begin if (!irst)otime_r = 0;else if(clk_counter_r = 6d59)otime_r = otime_r + 1;end/先扣费 , 后接通 always(posedge iclk,negedge irst)begin if (!irst)omoney_r 99)omoney_r = 99;elseomoney_r = imoney;set_r = iset;endelsebeginif(otime_r = 0)&(clk_counter_r = 0)case (set_r)2b01 :omoney_r = omoney_r - 2;2b10 :omoney_r = omoney_r - 7;2b11 :omoney_r = omoney_r - 12;endcaseif(!LED_warning_r)beginif(clk_counter_r = 6d59)case (set_r)2b01 :omoney_r = omoney_r - 2;2b10 :omoney_r = omoney_r - 7;2b11 :omoney_r = omoney_r - 12;endcaseendelse if(STOP = 1)set_r = 0;endend/通话提示always(posedge iclk,negedge irst)begin if (!irst)LED_phoneing_r = 0;elseLED_phoneing_r = start;end/余额缺乏提示always(posedge iclk,negedge irst)begin if (
展开阅读全文