首页 基于FPGA的计时器设计(最终)

基于FPGA的计时器设计(最终)

举报
开通vip

基于FPGA的计时器设计(最终) 本科毕业设计(论文) 基于FPGA的计时器的设计 学    院   自动化学院      专    业 电子信息科学与技术  年级班别    2009级(1)班      学    号    3109001158      学生姓名     刘健忠        指导教师     谭北海        2013年4月 基于F P G A 的计时器设计 刘健忠 自动化学院 摘  要 随着电子设计自动化技术和可编程逻辑器件的出现和飞速发展,在设计周期得到大大的缩短的同时系统成本也有了大幅度的降低,显然标...

基于FPGA的计时器设计(最终)
本科毕业设计( 论文 政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载 ) 基于FPGA的计时器的设计 学    院   自动化学院      专    业 电子信息科学与技术  年级班别    2009级(1)班      学    号    3109001158      学生姓名     刘健忠        指导教师     谭北海        2013年4月 基于F P G A 的计时器设计 刘健忠 自动化学院 摘  要 随着电子设计自动化技术和可编程逻辑器件的出现和飞速发展,在设计周期得到大大的缩短的同时系统成本也有了大幅度的降低,显然 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 逻辑器件的组装已远不能满足这方面的要求。而Verilog HDL能提供高阶电路描述语言的方式,让复杂的电路可以通过Verilog HDL编辑器的电路合成方式,轻易而且快速的达到设计的规格。由于Verilog HDL电路描述语言能涵盖的范围相当广,能适用于各种不同阶层的设计工程师的需要,所以Verilog HDL电路设计毫无疑问的成为硬件设计工程师的必备工具。 本系统是用Verilog编写的基于Altera DE2的电话计费器。该设计采用了现场可编程逻辑器件FPGA设计,并基于硬件描述语言Verilog HDL在Altera公司的Quartus Ⅱ软件上实现仿真。根据电话局反馈回来的信号,此信号是提前预设的,数码管显示通话类型、用户余额以及通话时长(包括秒数和分钟数)。根据每种通话类型的计费价格不同,当系统所设置的余额数不够,用户将无法拨通电话,当用户余额小于指定金额时,系统发出警告信号,提醒用户。当告警时间过长(超过1分钟)时自动切断通话信号。当用户结束通话,系统清零。 关键词:Verilog ,FPGA,通话信号,计时器 Abstract With 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 Altera's Quartus Ⅱ in software for emulation. According to the feedback of the telephone office back signal which is 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, reminding to 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  绪论    1 1.1 课 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 研究的目的    1 1.2 国内外发展现状    1 1.3课题的主要技术路线    2 2  FPGA技术及硬件描述语言    3 2.1 FPGA的介绍    3 2.1.1可编程逻辑器件发展简史    3 2.1.2可编程逻辑器件的基本结构    3 2.1.3可编程逻辑器件分类    4 2.1.4 Altera Cyclone Ⅱ系列器件介绍    5 2.1.5 FPGA的开发流程    5 2.2 FPGA设计方法    6 2.3 利用硬件描述语言(HDL)的硬件电路设计方法    7 2.4 Verilog HDL语言的设计流程    8 2.5 Quartus Ⅱ概述及其设计流程    11 2.5.1 Quartus Ⅱ概述    11 2.5.2 Quartus Ⅱ设计流程    12 3  系统总体设计    14 3.1 计费模块介绍    14 3.2 预设模块介绍    15 3.3 时钟分频模块介绍    15 3.4 分拆模块介绍    15 3.5 数码管显示模块介绍    16 3.6 警告模块介绍    17 3.7 逻辑资源使用情况    17 4    系统的操作与分析    18 4.1    系统功能介绍    18 4.2 选择通话类型和设置余额    20 4.3通话开始    21 4.4通话结束    22 结论    23 参考文献    24 致谢    25 附录A    26 附录B    27 附录C    31 附录D    32 附录E    33 附录F    35 附录G    36 1 绪论 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/GAL PAL是Programmable Array Logic的缩写,即可编程阵列逻辑;GAL是Generic Array Logic的缩写,即通用可编程阵列逻辑。PAL/GAL是早期可编程逻辑器件的发展形式,其特点是大多基于E2CMOS工艺,结构较为简单,可编程逻辑单元多为与、或阵列,可编程逻辑单元密度较低,仅能使用于某些简单的数字逻辑电路。虽然PAL/GAL密度较低,但是它们一出现即以其低功耗,低成本、高可靠性、软件可编程、可重复更改等特点引发了数字电路领域的巨大震动。虽然目前较复杂的逻辑电路一般使用CPLD甚至FPGA 完成,但是对应很多简单的数字逻辑电路,GAL等简单的可编程逻辑器件仍然被大量使用。目前,国内外很多对成本十分敏感的设计都在使用GAL等低成本可编程逻辑器件,越来越多的74系列逻辑电路被GAL取代。GAL等器件发展至今已经近20年了,新一代的GAL以功能灵活,小封装、低成本、重复可编程、应用灵活等特点依然在数字电路领域扮演着重要的角色。目前比较大的GAL器件供应商主要是Lattice半导体。 2、CPLD CPLD是Complex Programmable Logic Device的缩写,即复杂的可编程逻辑器件。CPLD是在PAL、GAL的基础上发展起来的,一般也采用称为E2CMOS工艺,也有少数厂商采用Flash工艺,其基本结构由可编程I/O单元、基本逻辑单元、布线池和其他辅助功能模块构成。CPLD可实现的逻辑功能比PAL、GAL有了大幅度的提升,一般可以完成设计中较复杂、较高速度的逻辑功能,如接口转换、总线控制等。CPLD的主要器件供应商有Altera、Lattice 和Xilinx等。 3、FPGA FPGA是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技术的发展使得设计师有可能实现真正的自顶而下的设计。 图2.3 Top-Dowm 设计思想 复杂数字逻辑电路和系统的层次化、结构化设计隐含着对系统硬件设计方案的逐次分解。在设计过程中的任意层次,至少得有一种形式来描述硬件。硬件的描述特别是行为描述通常成为行为建模。在集成电路设计的每一层次,硬件可以分为一些模块,该层次的硬件结构由这些模块的互联描述,该层次的硬件的行为有这些模块的行为描述。这些模块称为该层次的基本单元。而该层次的基本单元又由下一层次的基本单元互联而成。如此下去,完整的硬件设计就可以由图1.1所示的设计树描述。在不同的层次都可以进行仿真以对设计思想进行验证。EDA工具提供了有效的手段来管理错综复杂的层次,即可以很方便的查看某一层次某模块的源代码或电路图以改正仿真时发现的错误。 以下是具体模块的设计编译和仿真的过程。 在不同的层次做具体模块的设计所用的方法也有所不同,在高层次上往往编写一些行为级的模块通过仿真加以验证,其主要目的是系统性能的总体考虑和各模块的指标分配,并非具体电路的实现,因而综合及其以后的步骤往往不需进行。而当设计的层次比较接近底层时,行为描述往往需要用电路逻辑来实现。这时的模块不仅需要通过仿真加以验证,还需要进行综合、优化、布线和后仿真。总之具体电路是从底向逐步的。EDA工具往往不仅支持HDL描述也支持电路图输入,有效地利用这两种方法是提高设计效率的办法之一。图2.4所示的流程图简要地说明了模块的编译和测试过程。 从图中可以看出,模块设计流程主要有两大主要功能部分组成: 设计开发:即从编写设计文件→综合到布局布线→电路生成这样一系列步骤。 设计验证:也就是进行各种仿真的一系列步骤,如果在仿真过程中发现问题就返回设计输入进行修改。 具体工艺器件的优化、映像和布局布线。 由于各种ASIC和FPGA器件的工艺各不相同,因而当用不同厂家的不同器件来实现已验证的逻辑网表(EDIF文件)就需要不同的基本单元库与布线延迟模型与之对应,才能进行优化、映像和布局布线,以及布局布线后准确的仿真验证。基本单元库与布线延迟模型由熟悉本厂工艺的工程师提供,再由EDA厂商的工程师编入相应的处理程序,而逻辑电路设计师只需用一文件说明所用的工艺期间和约束条件,EDA工具就会自动地根据这一文件选择相应的库和模型进行准确的处理,从而大大提高设计效率。 图 2.4  HDL设计流程图 2.5 Quartus Ⅱ概述及其设计流程 2.5.1  Quartus Ⅱ概述 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%,属于一个微型系统。具体的系统编译后的 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 如图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] .北京:北京航空航天大学出版社.2002. [2]黄智伟.FPGA系统设计与实践[M] .北京:电子工业出版社,2005. [3]徐志军,徐光辉.CPLD/FPGA的开发与应用[M] .北京:电子工业出版社,2002. [4]崔葛瑾,沈利芳,李伟民.基于FPGA的数字电路系统设计[M] .西安:西安电子科技大学出版社,2008. [5]童诗白,华成英.模拟电子技术基础(第四版)[M] .北京:高等教育出版社,2006. [6]阎石.数字电子技术基础(第五版)[M] .北京:高等教育出版社,2005. [7]潘松,黄继业.EDA技术实用教程(第二版)[M] .北京:科学出版社,2005. [9] J.Batlle,J.Marti,P Ridao,A New FPGA/DSP-Based Parallel Architecture for Real-Time Image Processing[J],Real-Time Imaging,2002,8(5): 345~356. [10] P.Zhong, M.Martonosi and P.Ashar, FPGA-based SAT solver architecture with near-zero systhesis and layout overhead[J]. IEEE Proc.-Comput. Digit. Tech, May 2000.Vol.147 No.3:135~141. [11]王冬冬.基于FPGA的浮点运算器设计.万方数据. , 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:0]oclk_counter; output [6:0]omoney; output [6:0]otime; output [1:0] set; output  oLED_phoneing; output  oLED_warning; reg  start ;                          // 通话开始,结束变量 reg [1:0]set_r;                        // 什么类型的通话 reg [5:0]clk_counter_r;                // 秒计数器 reg [6:0]omoney_r;                    // 剩余余额 reg [6:0]otime_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) begin if(clk_counter_r <6'd59) clk_counter_r <= clk_counter_r + 1; else clk_counter_r <= 0; end                end //通话计时 always@(posedge iclk,negedge irst) begin if (!irst) otime_r <= 0; else if(clk_counter_r == 6'd59) otime_r <= otime_r + 1; end //先扣费 , 后接通电话 always@(posedge iclk,negedge irst) begin if (!irst) omoney_r <= 0; else if (!icall) begin if(imoney > 99) omoney_r <= 99; else    omoney_r <= imoney; set_r <= iset; end    else begin if((otime_r == 0)&&(clk_counter_r == 0)) case (set_r) 2'b01 : omoney_r <= omoney_r - 2; 2'b10 : omoney_r <= omoney_r - 7; 2'b11 : omoney_r <= omoney_r - 12;        endcase if(!LED_warning_r) begin if(clk_counter_r == 6'd59) case (set_r) 2'b01 : omoney_r <= omoney_r - 2; 2'b10 : omoney_r <= omoney_r - 7; 2'b11 : omoney_r <= omoney_r - 12;        endcase    end else if(STOP == 1) set_r <= 0; end    end //通话提示 always@(posedge iclk,negedge irst) begin if (!irst) LED_phoneing_r <= 0; else    LED_phoneing_r <= start; end        //余额不足提示 always@(posedge iclk,negedge irst) begin if (!irst) LED_warning_r <= 0; else if(STOP == 1) LED_warning_r <= 0;        else    case (set_r) 2'b01 : if(omoney_r <3) LED_warning_r <= 1; else LED_warning_r <= 0; 2'b10 : if(omoney_r <6) LED_warning_r <= 1; else LED_warning_r <= 0;    2'b11 : if(omoney_r <12) LED_warning_r <= 1; else LED_warning_r <= 0;    endcase    end    always@(posedge iclk,negedge irst) begin if (!irst) STOP <= 0; else if((clk_counter_r == 6'd59)&&(LED_warning_r == 1)) STOP <= 1; end endmodule 附录C 时钟分频模块的Verilog HDL语言描述 always@(posedge clk_in,negedge rst) begin if(!rst) clk_counter <= 0; else if(clk_counter < 26'd4*******) clk_counter <= clk_counter + 1; else clk_counter <= 0; end always@(posedge clk_in,negedge rst) begin if(!rst) clk_out_r <= 0; else if(clk_counter < 26'd24999999999) clk_out_r <= 1; else clk_out_r <= 0; end                附录D 时钟分频模块RTL视图 图D1  RTL视图 附录E 数码管显示模块的Verilog HDL语言描述 module segdis( iDIS, oSEG ); input [3:0] iDIS; output [6:0] oSEG; reg [6:0] oSEG_r; assign oSEG = oSEG_r; always@(iDIS) begin case(iDIS) 4'h1 :  oSEG_r = 7'b1111001;     //1的显示 4'h2 :  oSEG_r = 7'b0100100;     //2的显示 4'h3 :  oSEG_r = 7'b0110000;     //3的显示 4'h4:  oSEG_r = 7'b0011001;     //4的显示 4'h5:  oSEG_r = 7'b0010010;     //5的显示 4'h6:  oSEG_r = 7'b0000010;     //6的显示 4'h7:  oSEG_r = 7'b1111000;      //7的显示 4'h8:  oSEG_r = 7'b0000000;     //8的显示 4'h9:  oSEG_r = 7'b0011000;      //9的显示 4'ha:  oSEG_r = 7'b0001000;      //a的显示 4'hb:  oSEG_r = 7'b0000011;      //b的显示 4'hc:  oSEG_r = 7'b1000110;     //c的显示 4'hd:  oSEG_r = 7'b0100001;     //d的显示 4'he:  oSEG_r = 7'b0000110;     //e的显示 4'hf:  oSEG_r = 7'b0001110;    //f的显示 4'h0:  oSEG_r = 7'b1000000;    //0的显示 endcase end 附录F 数码管显示模块RTL视图 图F1 RTL视图 附录G 警告模块的Verilog HDL语言描述 always@(posedge iclk,negedge irst) begin if (!irst) LED_warning_r <= 0; else if(STOP == 1) LED_warning_r <= 0;        else    case (set_r) 2'b01 : if(omoney_r <3) LED_warning_r <= 1; else LED_warning_r <= 0; 2'b10 : if(omoney_r <6) LED_warning_r <= 1; else LED_warning_r <= 0;    2'b11 : if(omoney_r <12) LED_warning_r <= 1; else LED_warning_r <= 0;    endcase    end   
本文档为【基于FPGA的计时器设计(最终)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_083599
暂无简介~
格式:doc
大小:126KB
软件:Word
页数:49
分类:工学
上传时间:2019-05-22
浏览量:5