




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录_Toc262748051 摘要IIIAbstractIV前言1第一章FPGA 简介2FPGA 概述2FPGA 基本结构2FPGA 的工作原理4FPGA 的设计流程41.11.21.4.11.4.21.4.3设计输入5设计仿真6实现6第二章数字时钟设计及 MAX+PLUSE II 的介绍7数字时钟的原理72.12.22.32.42.52.6第三章数字时钟的. 7数字钟的功能要求8MAXPLUS开发简介9MAXPLUS的功能9MAXPLUS的设计向导9程序设计与实验仿真11主程序代码设计与仿真结果11主程序源代码11实验仿真结果1524 进制代码设计与仿真结果1524 进制源代码15实验仿真
2、结果1760 进制代码设计与仿真结果1860 进制源代码18实验仿真结果203.13.23.33.4去抖代码设计与仿真结果223.4.13.4.23.4.33.4.43.4.5按键抖动产生原因分析22按键消抖电路设计原理22按键消抖电路设计22去抖源代码23实验仿真结果25总结28参考文献29附录30致谢36基于 FPGA 数字时钟的研究摘要本文是人研究成果的基础上,面向实际应用的需求在 Quartus 开发环境下,用Verilog HDL 硬件描述语言设计了一个可以在 FPGA上实现的数字时钟.通过将设计代码到 FPGA 的开发Altera DE2 开发板上进行了功能验证. 采用 VHDL
3、硬件描述语言描述数字时钟的功能,完成对各模块的功能仿真,通过分析仿真波形表明设计的数字时钟完成了预期的功能。随着现代工艺的改进,FPGA 的等效系统门达到到几百万门,而且工作频率也随之提高。FPGA 也就大量的在电子产品中出现。在通信行业,传输网,医疗仪器,各种电子仪器,安防,电力系统,消费类电子中都大面积的使用。FPGA器件高集成度、可现场修改、开发周期短等优点满足了从到民用、从高端到的大多数电子设计领域的需求。纵观现场可编程逻辑器件的发展历史,其之所以具有巨大的市场,根本在于:FPGA 不仅可以使电子系统小型化、低功耗、高可靠性,而且其开发周期短、开发投入少、价格不断降低,促使 FPGA
4、越来越多地取代了 ASIC 的市场;越来越多的功能模块集成到了 FPGA 中,实现你想实现的任何数字电路,可以定制各种电路;减少受制于的,真正为自己的产品量身定做,在设计的过程中可以灵活的更改设计。数字电路的发展经历了由电子管、半导体分立器件到集成电路等几个时代。从 60始,数字集成器件以双极型工艺制成了小规模逻辑器件。随后发展到中规模逻辑年器件;70 年代末,微处理器的出现,使数字集成电路的性能产生质的飞跃。数字集成器件所用的材料以硅材料为主,在高速电路中,也使用化合物半导体材料,例如砷化镓等。逻辑门是数字电路中一种重要的逻辑单元电路 。近年来,可编程逻辑器件 PLD 特别是现场可编程门阵列
5、 FPGA 的飞速进步,使数字电子技术开创了新局面,不仅规模大,而且将硬件与相结合,使器件的功能更加完善,使用更灵活。:数字时钟;FPGA 技术;VHDL 语言设计Based on FPGA digital clock researchAbstractThis pr is on the basis of predesors achievements, the demand for practicalapplication in Quartus development environment, use Verilog HDL hardware description language desig
6、n a chip in the FPGA realizing digital clock. Through FPGA design code downloaded to the development platform Altera DE2 development board. Validate thefunction by VHDL language description hardware description digital clock function and thecompletion of the function of each module, through theysis
7、and simulation waveformsimulation showst this design digital clock finish the expected function.With modern chip technology improvement, FPGA equivalent system door to door, andwork to millions of frequency increases. The FPGA also lots of appeared in electronicproducts. In communications industry,
8、transmiskinds of electronic equipment, safety monitoring,network medical deviand variouser system, automotive electronics,consumer electronicshe use of large area. The FPGA device high level ofegration, themodification, short development cycle has advantagech as civil, the army used to satisfythe mo
9、st from high-end to low-end electronic design field needs.Throughout field programmable logic devion the development of history, its of great attraction to market, depend on: the FPGA can not only make electronic systems,miniaturization, lower consumption, high reliability, and its develosoftware sh
10、ortdevelopment cycle, less input, chip priare lower, prompting the FPGA increasinglyreplaced the ASIC market; More and more function moduleegration, realize you to FPGAany digital circuit to realize, can customize various circuit; Reduce the fetter, ibject to thespel chip really for their products t
11、ailored, in design pros can be flexible change thedesign.The development of digital circuit experience from vacuum tubes, semiconductordividevice toegrated circuits and so on several times. Since the 1960s, digitalegrated devito start aolar workmanship the small-scale logic devi. Thendeveloped to sc
12、ale logic deviin; In the late 1970s, microprosors has made theperformance of digital IC produce quality leap. Digitalegrated device used materials withsilicone material is given priority to, in high-speed circuit, also use compound semiconductormaterials, such as gaas, etc. Logic gates is one of the
13、 most important digital circuit logicaitcircuit. In recent years, programmable logic deviPLD espelly field programmable gatesarray FPGA raprogress, make digital electronic technology opened new situation, not onlylarge scale, and will combine the hardware and software of the device and make use of m
14、orefunctional perfect, more flexible.Keywords:Digital clock, FPGA technology, VHDL language design前言社会的标志之一就是信息产品的广泛使用,而且产品的性能是越来越强,产品的复杂程度也越来越高,更新步伐更是越来越快。支撑信息电子产品高速发展的基础就是微电子制造工艺水平的提高和电子产品设计开发技术的发展。前者以微细加工技术为代表,而后者的代表就是电子设计自动化技术。本设计采用的VHDL是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计;支持结构、
15、数据流、行为三种描述形式的混合描述、覆盖面广、抽象能力强,因此在实际应用中是越来越广泛。ASIC是的系统集成电路,是一种带有逻辑处理的。而FPGA是特殊的ASIC芯片,与其他的ASIC相比,它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时检测等优点。钟表的数字化给人们生活带来了极大的方便,且大大地扩展了钟表原先的报时功能。如定时自动、定时启闭器、定时开关烘箱,各种定时电气的自动启用等,所有这些都是以钟表数字化为基础的。因此,研究数字时钟及扩大其应用,有着非常实用的意义。第一章FPGA 简介1.1FPGA 概述FPGA是现场可编程门阵列(Fied Prog
16、rammable Gate Array)的简称,是一种高密度的可编程逻辑器件,与之相应的CPLD是复杂可编程逻辑器件(Complex Programmable Logic Device)的简称,两者的功能基本相同,只是实现原理略有不同,所以有时可以忽略这两者的区别,统称为可编程逻辑器件或CPLD/PGFA。CPLD/FPGA几乎能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路。它如同一堆积木,工程师可以通过传统的原理图输入或硬件描述语言的设计一个数字系统。通过仿真可以事先验证设计的正确性,在PCB完成以后,利用CPLD/FPGA的修改功能,随时修改设计而不必改动硬件电路。使用CP
17、LD/FPGA开发数字电路,可大大缩短设计时间,减少PCB面积,提高系统的可靠性。这些优点使得CPLD/FPGA技术在20世纪90年代以后得到了飞速的发展,同时也大大推动了EDA硬件描述语言HDL的进步。1.2FPGA基本结构FPGA具有掩膜可编程门列的通用结构,它是由逻辑功能块排成阵列,由可编程的互联资源连接这些逻辑功能块来实现不同的设计。FPGA一般由3种可编程电路和一个用于存放编程数据的静态器SRAM组成的。这3种可编程电路是:可编程逻辑模块(CLBConfigurable Logic Block)、输入/输出模块(IOBI/O Block)和互联资源(IRercinnect Resou
18、rce)。可编程逻辑模块CLB是实现逻辑功能的基本单元,它们通常规则的排列成一个阵列,散布也整个;可编程输入/输出模块(IOB)主要完成上的逻辑与外部封装脚的接口,它通常L排列在芯片的四周;可编程互联资源包括各种长度的连接线段和一些可编程连接开关,它们将各个CLB之间或CLB、IOB之间及IOB之间连接起来,了特定功能的电路。1、CLB是FPGA的主要组成部分。图1-1是CLB的基本结构框图,它主要由逻辑函数发生器、触发器、数据选择器等电路组成。 CLB中3个逻辑函数发生器分别是G、F和H,相应的输出是G、F和H。G有4个输入变量G1、G2、G3和G4;F也有4个输入变量F1、 F2、F3和F
19、4。这两个函数发生器是完全独立的,均可以实现4输入变量的任意组合逻辑函数。逻辑函数发生器H有3个输入信号;前两个是函数发生器的输出G和F,而另一个输入信号是来自信号变换电路的输出H1。这个函数发生器能实现3输入变量的各种组合函数。这3个函数发生器结合起来,可实现多达9变量的逻辑函数。图1.1CLB基本结构框图CLB中有许多不同规格的输了选择器(四选一、二选一等),通过对CLB数据选择器的编程,逻辑函数发生器G、F和H的输出可以连接到CLB输出端X和Y,并用来选择触发器的激励输入信号、时钟有效边沿、时钟使能信号及输出信号。这些数据选择器的地址控制信号均是由编程信息提供,从而实现所需的电路结构。C
20、LB中的逻辑函数发生器F和G均为查找表结构,其工作原理类似于ROM。F和G的输入等效于ROM的地址码,通过查找ROM中的地址表到相应的组合逻辑函数输出。另一方面,逻辑函数发生器F和G还可以作为器件内高速RAM或小的可读写它是由信号变换电路控制。器使用,2、输入/输出模块IOB。IOB提供了器件引脚和逻辑阵列之间的连接。IOB主要由输入触发器、输入缓冲器和输出触发/锁存器、输出缓冲器组成。每个IOB控制一个引脚。它们可被配置为输入、输出或双向I/O功能。当IOB控制的引脚被定义为输入时,通过该引脚的输入信号先将其送入输入缓冲器。缓冲器的输出分为:一路可以直接送到MUX,另一路经延时几纳秒(或者不
21、延时)送到输入通路D触发器,在送到数据选择器。通过编程给数据选择器不同的控制信息,确定送至CLB阵列的I1和I2是来自输入缓冲器,还是来自触发器。当IOB控制的引脚被定义为输出时,CLB阵列的输出信号OUT也可以有两条传输途径:一条是直接经MUX送至输出缓冲器,另一条是先存入输出通路D触发器,然后再送至输出缓冲器。IOB输出端配有两只MOS管,它们的栅极均是可编程的,使MOS管导通或截止,分别经上拉电阻接通Vcc、地线或者不接通,用以改善输出波形和负载能力。3、可编程互连资源IR。可编程互连资源IR可以将FPGA的CLB和CLB之间、CLB和IOB之间连接起来,各种具有复杂功能的系统。IR主要
22、是由许多金属线段,这些金属线段是带有可编程开关的,通过自动布线实现各种电路的连接1。1.3FPGA的工作原理目前,Xilinx公司生产的FPGA都是采用SRAM工艺的查处表(Look-Up-Table)结构,通过烧写文件改变查找表内容的方法实现对FPGA的重复配置,在使用时需要外接一个片外器以保持程序。上电时,FPGA将外部器中的数据读入片内RAM,完成配置以后,进入工作状态;掉电后FPGA恢复白片,逻辑。由数字电路的基本知识可以知道,对于一个n输入的逻辑运算,不管是与非运算还是异或运算等,最多只可能存在2n种结果。所以,如果事先将相应的结果存放于一个单元,就相当于实现了与非门电路的功能。FP
23、GA的原理也是如此,它通过烧写文件去配置查找表的内容,从而在相同的电路情况下实现了不同的逻辑功能。查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成是4位地址线的RAM。当用户通过原理图或HDL语言描述一个逻辑电路后,PLD/FPGA开发就会自动计算逻辑电路的所有可能结果,并把真值表(即结果)写入RAM,这样,每输入有一个信号进行逻辑运算就等于输入一个地址去进行查找表,找出地址对应的内容,然后输出即可2。1.4FPGA 的设计流程FPGA的基本开发流程主要包括设计输入(Design entry)、设计仿真(
24、Simulation)、设计综合(Synthesize)、布局布线(Place&route)、和配置(Configuration)这五个主要步骤。集成综合环境(ISE)的功能涵盖了FPGA开发的全部过程,其开发流程如图1.2所示。图1.2FPGA开发流程图1.4.1设计输入设计输入时是根据工程师的设计方法所设计的功能描述给EDA,通常所用的设计输入方法有硬件描述语言HDL和原理图设计方法。原理图设计输入法再早期应用得比较广泛,它根据设计要求,选用器件,绘制原理图,完成输入过程。这种方法的优点是直观、便于理解、元件库资料丰富。但是在大型设计中,这种方法的可性较差,不利于模块建设与重用。ISE提供
25、的设计输入工具包括用于HDL代码输入和查看的文本编译器(ISE TextEditor)、用于原理图编辑的工具ECS(Enginerring Capture System)、用于生成IP Core的Core Generator、用于状态机设计的S等。eCAD以及用于约束文件编辑的ConstraEditor综合优化(Synthesizer)是指将HDL语言、原理图等设计输入翻译成由与门、或门、非门、RAM、寄存器等基本逻辑单元组成的逻辑连接(网表),并根据目标与要求(约束条件)优化成所生成的逻辑连接,输出edf和edn等文件,供FPGA厂家的布局线器进行实现。综合工具有Xilinx ISE集成的X
26、ST(Xilinx Synthesis Technology),还有比较流行且高效的Mentraphics公司的Synplify。Synplify综合工具综合出的结果占用面积小,工作频率高,综合速度快。ISE的综合工具不但包括了Xilinx自身提供的综合工具XST,同时还可以内嵌Mentor Graphics公司的Leonardospectrum和Synplify公司的Synplify,实现无缝连接。1.4.2设计仿真设计仿要有功能仿真和时序仿真两种。功能仿真是验证电路功能是否符合设计要求,也叫做前仿真,此时的仿真没有延时消息,对于初步的功能检测非常的方便。仿真前,要先利用波形编辑器和硬件描述
27、语言等建立波形文件和测试向量(即将所关心的输入信号组序列),仿真结果将会生成文件和输出信号波形,从中便可观察到各个节点的信号变化。如果发现错误,则返回设计中修改逻辑设计。时序仿真在布局布线之后,又称做后仿真后延时仿真。由于不同器件的延时是不一样的,不同的布局布线方案也给延时造成不同的影响,因此在处理设计后,对于系统各模块进行时序仿真,分析其时序关系,估计设计的性能,以及检查和消除竞争等是非常必要的。在时序仿真中,应该将布局布线的延时文件反标到设计中,使仿真既包含延时消息,又包含延时消息。与功能仿比,这种后仿真包含的延时信息最为全面、准确,能较好地反映的实际工作情况。1.4.3实现综合结果的本质
28、是一些有与门、或门、非门触发器,RAM等基本逻辑单元组成的逻辑网表,它与实际的配置情况还有较大的差距。此时应该使用FPGA厂商提供的工具,根据所选的型号,将综合输出的逻辑网表适配到具体的FPGA器件上,这个过程就叫做实现过程。Xilinx的实现过程分为:翻译(Translate)、局布线(Place&Route)等三个步骤。因为只有器件开发商最了解器件的(Map)和布结构,所以实现步骤必须选用器件开发商提供的工具3。第二章数字时钟及MAXP+LUSEII的简介2.1数字时钟的原理数字时钟是使用4个两位的计数器来实现的,即百分秒计数器、秒计数器、分计数器和小时计数器。每个计数器又分别使用高地位2
29、个计数器来实现。其中百分秒数器是100进制计数器(10进制计数器,地位10进制计数器),秒计数器和分计数器是60进制计数器(6进制计数器,地位10进制计数器),小时计数器是24进制计数器(2进制计数器,地位10进制计数器)。数字时钟首先是百分秒计数器按照系统时钟CLK 50进行计数,计数满100后向秒计数器进位。秒计数器以百分秒计数器的进位位cnl为时钟进行计数,计数满60后向分计数器进位。分计数器以秒计数器的进位位cn2为时钟进行计数,计数满60后向小时计数器进位。小时计数器以分计数器的进位位cn3为时钟进行计数,计数满24后整个系统从0开始重新进行计数。图2.1数字时钟的原理图2.2数字时
30、钟的数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。由于计数的起始时间不可能与标准时间一致,故需在电加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定。通常使用石英晶体振荡电路数字钟。图2-1所示为数字钟的一般框图。它主要包括时间基准电路、计数器电路、控制电路、译码和显示电路。其中的控制逻辑电路比较灵活多样,不断完善它可以增强数字钟的功能。图2.2数字钟的一般框图2.3数字钟的功能要求时钟功能:完成分/时的正确计数并显示,秒由于数码管数目的限制,采取发光二极管做提示;闹钟定时:实现定时提醒及定时,利用蜂鸣器发出报时声音;时:当人为时钟确时,可以分别对分/时钟进行调整;秒表功能:
31、利用4个数码管完成秒表显示:其精确度达100ms,可以暂停,并可随时记时、暂停后数据,最大计时为999.9s。数字时钟是可植入自动控制、测试等系统的,作为系统的时钟源,可以为系统提供时信号或中断控制的时间基准,具有广泛的用途,基于PFGA的数字时钟的设计,体现了现代数字电路设计的,而且这种设计方法缩短了产品的设计周期和调试周期,提高了设计的可靠性和成功性,充分体现了可编程逻辑器件在数字电路设计中的优越性4。2.4MAXPLUS开发介绍:MAXPLUS是简介Altera公司开发的一种全集成化的可编程逻辑设计。具有丰富的图形界面和完整、可即时的文档。提供一个真正与结构无关的可编程逻辑设计环境; 全
32、集成化的一套可编程逻辑开发工具; 提供多种输入方式;可方便与其它工业输入、综合与校验工具。在进行原理图输入时,可以直接放置74 系列逻辑。2.5MAXPLUS的功能MAX+PLUS II 的编译支持Altera 的FLEX 10K、FLEX 8K、MAX9000、MAX7000、FLASHlogIC、MAX5000、Classic 系列可编程逻辑器件。MAX+PLUS II 的设计输入、处理与校验功能一起提供了全集成化的一套可编程逻辑开发工具,可加快动态调试,缩短开发周期。MAX+PLUS II 支持各种HDL 设计输入,包括VHDL、Verilog 和Altera 的AHDL。MAX+PLU
33、S II 可与其他工业输入、综合与校验工具。与CAE 工具的接口符合EDIF200 和209、参数化模块库(LPM)、Verilog、VHDL 及其它者可使用Altera 或标准CAE 设计输入工具去建立逻辑设计,使用MAX+PLUS II 编译器对Altera器件设计进行编译,并使用Altera 或其它CAE 校验工具进行器件或板级仿真。MAX+PLUSII 支持与Synopsys、ViewlogIC、Mentraphics、Cadence、Exemplar、Data I/O、ergraph、Minc、OrCAD 等公司提供的工具接口。使用MAX+PLUS II 进行设计包括四个阶段:设计输
34、入、设计处理、设计验证和器件编程。2.6MAXPLUS设计向导安装MAXPLUS后,就可以使用它进行电子系统设计,不论设计是使用图形输入方式还是文本输入方式,设计流程是通用的,如图2.3所示5。图2.3设计流程图第三章程序设计与实验仿真主程序代码设计与仿真结果主程序源代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arill;use ieee.std_logic_unsigned.all;entity newclock isport( clksegout selout key:in:out:outstd_logic;s
35、td_logic_vector(7 downto 0);std_logic_vector(5 downto 0);-20MHz时钟输入-段码输出-位选输出:instd_logic_vector(2 downto 0);-key2为调时和计时状态切换按键- key1为调时按键- key0为清零按键 end newclock;architecture a of newclock is component counter60 end component; component counter24end component;-六十进制计数器原件例化说明-二十四进制计数器原件例化说明signal cys,
36、cym,cyh: std_logic;signal s signal num signal seg signal selsignal s: std_logic_vector(2 downto 0);: std_logic_vector(3 downto 0);: std_logic_vector(6 downto 0);: std_logic_vector(5 downto 0);le, dly_out,diff: std_logic;signal se: std_logic_vector (1 downto 0);-当前调整状态-00调时-01调时-10调秒-11计时signal match
37、: std_logic;-用于指示时、分、秒中哪一个是当前调整对象signal glitter: std_logic; beginconj:block-闪烁显示控制signal adj,ecs,scm,ech,sc:std_logic;beginu1: counter60 port map(clk,dbs,enb(0),clr,ecs,cys); -秒计数器元件例化 u2: counter60 port map(clk,dbm,enb(1),clr,ecm,cym);-分计数器元件例化u3: counter24 port map(clk,dbh,enb(2),clr,ech,cyh);-小时计
38、数器元件例化gen:for i in 0 to 6 generate-七段LED的段码输出生成语句为节省6个七段显示器显示所需的电流消耗,可利用视觉暂留原理来让七段显示器轮流显示。将分与秒4个数字共组七段显示器组,其中必须使用同步扫描电路,将各个数字的7个信号分别接至a,b,c,d,e,f,g端口,同时触发该数字所对应的七段显示器的电源引脚。视觉暂留原理要求每一数字在1秒内必须亮32次。即在(1/32)s内,4个数字要轮流亮一次,故每个数字最多可连续亮(1/128)s,然后等待(3/128)s后再亮一次,因此省了3/4的电能消耗。视觉暂留效应让感觉到,相隔(1/32)s亮一次的灯似乎一直都亮着
39、。同理,显示小时的2个数字,仍然使用四合一七段显示器组。只是放弃其中的2个七段显示器不用即可。fdiv:block-分频块语句bin_bcd : block-二进制到BCD十进制的转换end block bin_bcd;seven_seg: block-七段LED译码本设计是一个显时(2位)、分(2位)、秒(2位)供6位数字的多功能电子钟。不但可以作为闹钟,也可以作为计时器。为化简设计与验证,用信号发生器输出的1024Hz作为系统频率(时钟)。因此将其除以1024,即得1Hz的秒钟信号,秒计满60即得1分钟,分计满60即得1小时的信号,小时计满24即得一天。输出显示采用四合一七段显示器来显示分
40、与秒共四个数字,另外2个数字的小时显示也采用四合一七段显示器来显示,只是让其中2个数字不用即可。利用视觉暂留效应,让4个七段显示器轮流供电显示,即进行输出显示扫描。由于需要1024Hz的时钟扫描信号,本系统输入时钟的信号直接采用信号发生器的1024Hz信号。另外,还需加一个除以 1024的分频器,用来实现系统输入信号产生的一个1Hz的时钟信号6。译的电路图入图3.1.1所示图3.1.1译的电路图在一般电路中,数值均以二进制的形式于计算,但是要将其输出至七段显示器显示时,则必须提供一个电路模块专门将二进制转换成十进制供输出使用。此处以查表方式来设计转换电路,使用并行语句with_select列出
41、09等十种对照数值状况。此处,定义一些功能模块间整体共享的传递信号,以整体和所有块的功能。这些信号将成为各个模块的外部输入或输出信号,如:hzl:表示1s的时钟;n_sec.n_min:表示正常持续不断的计数时间分与秒,整数形式;o_hour:表示正常持续不断的计数时间小时,整数形式;a_sec.a_min:表示闹钟的计数时间-分与秒,整数形式;a_hour:表示闹钟的计数时间-时,整数形式;s_sec.s_min:表示定时器的计数时间-分与秒,整数形式;s_hour:表示定时器的计数时间-小时,整数形式;second,minute:表示被选择输出的计数器时间-分与秒,整数形式;hour:se
42、c_o表示被选择输出的计数器时间-时,整数形式;c_ten,min_one,min_ten:表示被选择输出的计数器时-分与秒的个位数与十位数,BCD形式;hour_one,hour_ten:表示被选择输出的计数器时间-小时个位数与十位数,BCD形式;sec7_oc7_ten,min7_one,min7_ten:表示被选择输出的计数器时-分与秒的个位数与十位数,七段显示器形式;houe7_one,hour7_ten:表示被选择输出的计数器时-分与秒的个位数与十位数,七段显示器形式;stop_index:alarm_index:表示定时器时钟的指针;表示闹钟的设定时间结束的指针。QuartusII
43、编译器是由一系列处理模块的,这些模块负责对设计项目的检错,逻辑综合和结构综合。即将设计项目适配进FPGA/CPLD目标器中,同时产生多种用途的输出文件,如功能和时序仿真文件,器件编程的目标文件等。编译器首先从工程设计文件间的层次结构描述中提取信息,包括每个低层次文件中的错误信息,供设计者排除,然后将这些层次构建产生一个结构化的以网表文件表达的电路原理图文件,并把各层次中所有的文件结一个数据包,以便更有效地处理。下面首先选择Prosing菜单的“Start Compilation”项,启动全程编译。注意这里所谓的编译(Compilation)包括QuartusII对设计输入的多项处理操作,其中包
44、括排错、数据网表文件提取、逻辑综合、适配、装配文件(仿真文件与编程配置文件)生成,以及基于目标器件的工程时序分析等。如果工程中的文件有错误,在下方的Prosing处理栏中会显示出来。对于Prosing栏显示出的语句格式错误,可双击此条文,即弹出vhdl文件,在闪动的光标处(或附近)可发现文件中的错误。再次进行编译直至排除所有错误。会发现在Prosing 处理栏,编译后出现如下错误信息: Error:Node instance u1 instabtiatesundefined entityDATAROM原因是在图3-3所示的主程序中的“DATAROM”元件是空的,因为的文件:DATAROM.VH
45、D7。还没有设计此元件对应3.1.2实验仿真结果模块实验波形仿真如图3.1.1所示图3.1.2主程序波形仿真在1Hz的触发信号下,若拨动开关stop=1,且按住调秒键不放,则计数器定时一直切换拨动开关ok=1时,定时10秒,接着自动计时到0,在送出index=1的指针信号。调整输出级采用运放作射极跟随器,使调整管的输出电压精确地与D/A 转换器输出电压保持一致。调整管采用大功率管,确保电路的输出电流值达到设计要求。数控电源各部分工作所需的1 2V 和+5V 电源由固定集成稳压器7812、7912、和7805 提供,调整管所需输入电压,经简单整流,滤波即到,但要求能提供2A 的电流。输出电压的调
46、整,主要是运用输出跟随器来完成的,此反馈电路的主要作用是,把输出电压反馈到NE5534 的输入级的反向输入端,当同相输入IN+和反向输入端IN-有差别时,调整输出电压使之趋于稳定,从而达到调整输出电压的目的。3.2 60进制代码设计与仿真结果3.2.160进制计数器模块 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arill;use ieee.std_logic_unsigned.all;entity counter60 isport(cpbin: instd_logic;: out std_logic_vector
47、(5 downto 0);s clr eccy60: in: in: instd_logic; std_logic;std_logic;: out std_logic);end counter60;architecture a of counter60 issignal q : std_logic_vector (5 downto 0); signal rst, dly : std_logic;beginprobegins (cp,rst)if rst = 1thenq = 000000;elsif cpevent and cp = 1then dly = q(5);if ec = 1then
48、 q = q+1;end if;end if;end pros;cy60 = not q(5) and dly;rst = 1when q=60 or clr=1else 0;bin = q when s = 1else000000;end a;个位数信号one(09)ten(05)先以整数形式出现,计算完成后再转换成矢量形式(oens与tens),便于以后转成七段LED显示码。十进制需2位的位矢量,为以后的七段显示器输出需要,此处是以4为的位矢量表述。If_then语句与适当的条件进位适合时钟计时,十进制的进位的进位归零必须配合个位数的进位归零,而个位数的进位归零则不必配合十进制的进位归零,
49、所以在if_then语句中,分数的计数以秒数的进位输出full_sec作为触发8。3.2.2仿真结果模块实验波形仿真如图3.2.1所示图3.2.160进制波形仿真设定两个系统输入信号后,可观察到系统输出信号与波形,在计数达到59以后,即进位到00(60)。电路符号如图3.2.2所示图3.2.2数字钟图元符号60进制仿真如图3.2.3所示图3.2.360进制图24进制代码设计与仿真结果24进制计数器模块 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arill;use ieee.std_logic_unsigned.all
50、;entity counter24 isport(cpbin s clr eccy24end counter24;: instd_logic;: out std_logic_vector (5 downto 0);: in: in: instd_logic; std_logic;std_logic;: out std_logic);architecture a of counter24 issignal q : std_logic_vector (4 downto 0); signal rst, dly : std_logic;beginprobegins (cp,rst)if rst = 1
51、thenq = 00000;elsif cpevent and cp = 1then dly = q(4);if ec = 1then q = q+1;end if;end if;end pros;cy24 = not q(4) and dly;rst = 1when q=24 or clr=1else 0;bin = (0& q) when s = 1else 000000;end a;24与60 结构类似,只是讲除以60改为除以24,并在接收60分进位指针carry时,检查是否同时为23小时,再决定进位与否。因此个位数字信号与十位信号先以整数形式出现,计算完成后再转换成位矢量形式,便于以后
52、转成LED显示码。为以后的七段显示器输出显示的需要,此处已4为的位矢量表示。个位数的进位归零在十位进制位2时,必须在个位等于3是进位,同时送出进位指针full=1,1小时后将指针归零9。3.3.2仿真结果模块实验波形仿真如图3.3.1所示图3.3.124进制波形仿真设定两个系统输入信号后,可观察到系统输出信号与波形,在计数达到23以后,即进位到00(24)。电路符号如图3.3.2所示图3.3.2数字钟图元符号24进制仿真如图3.3.3所示图3.3.324进制图3.4去抖代码设计与仿真结果按键开关是电子设备实现人机的重要器件之一。由于大部分按键是机械触点,在触点闭合和断开时都会产生抖动。为避免抖
53、动引起误动作造成系统的不稳定,就要求消除按键的抖动,确保按键每按一次只做一次响应。随着可编程逻辑器件的综合性能的不断提高,它已经象单片机一样。广泛应用在各种数字逻辑领域。用可编程逻辑器件直接获取键盘信息也得到广泛的应用。这里提出用VHDL语言编程的有限状态机的设计方法来实现按键的消抖,经仿真分析和实现,这种方法设计的消抖电路能够很好地实现电路功能,进行快速按键时都能保证每按一次做一次的响应,且性能稳定。3.4.1按键抖动产生原因分析绝大多数按键都是机械式开关结构,由于机械式开关的为弹性金属,因而在开关切换的瞬间会在接触点出现来回弹跳的现象。虽然只是进行了一次按键,结果在按键信号稳定的前后出现了
54、多个脉冲,如图1所示。如果将这样的信号直接送给微处理器扫描的话,将可能把按键稳定前后出现的脉冲信号当作按键信号,这就出现人为的一次按键但微处理器以为多次按键现象。为了确保按键识别的准确性,在按键信号抖动的情况下不能进入状态输入,为此就必须对按键进行消抖处理,消除抖动时不稳定、随机的电压信号。机械式按键的抖动次数、抖动时间、抖动波形都是随机的。不同类型的按键其最长抖动时间也有差别,抖动时间的长短和按键的机械特性有关,一般为510 ms,但是,有些按键的抖动时间可达到20 ms,甚至更长。所以,在具体设计中要具体分析,根据实际情况来调整设计3.4.2按键消抖电路设计原理按键消抖的关键是提取稳定的低
55、电平(或)状态,滤除按键稳定前后的抖动脉冲。在用基于VHDL语言的时序逻辑电路设计按键消抖电路时,可以用一个时钟脉冲信号对按键状态进行取样,当第一次采样到低电平时,启动延时电路,延时结束后,再对按键信号进行连续三次取样,如果三次取样都为低电平,则可以认为按键已经处在稳定状态,这时输出一个低电平的按键确认信号,如果连续三次的取样中,至少有一次是高电平,则认为按键仍处在抖动状态,此时不进行按键确认,按键输出信号为。3.4.3按键消抖电路设计该控制电路采用VHDL语言的有限状态机的设计方法来描述如图3.4.1所示。,其状态转换图图3.4.1按键消抖电路状态转换图电路的复位信号Reset有效时,电路进
56、入复位状态S0,在S0状态下时钟信号CLK以一定的频率采样按键输入信号Key_in,如果采样到Key_in=1则停留在S0状态,并继续采样按键输入信号的状态,一旦采样到输入信号是低电平,即Key_in=0,则转入S1延时状态,进行消抖延时,当延时结束时Delay_end=1,则转入在S2状态,在此状态下时钟信号CLK以一定频率采样按键输入Key_in的状态,如果采样到Key_in为即Key_in=1则转回状态S0,表示按键仍处在抖动状态,如果采样到Key_in=O,则转入状态S3;状态S3,S4的转换过程和条件跟S2相同,在S4状态下,如果Key_in=0则转入 S5状态,当到达状态S5时表示
57、经过S2,S3,S4三个连续状态检测按键输入Key_in的状态都为0,则认为按键处在稳定状态,并在S5输出按键确认信号Key_confirm=1。同时在状态S5下时钟信号CLK检测按键输入状态,当检测到按键输入Key_in=0,表示按键仍未 ,则停留在S5继续检测按键输入信号状态,如果检测到Key_in=1,表示按键已经 ,则转回状态S0,等待下一次按键操作10。3.4.4按键去抖模块ebunce;architecture a of debunce issignal sle,dly,ndly,diff: std_logic;begincount: blocksignal q: std_logi
58、c_vector (14 downto 0);signald0 : std_logic;beginprobegins (cp)if cp event and cp=1then d0 = q(14);q = q+1;end if;end pros;sle = q(14) and not d0;end block count; debunce : blocksignal d0, d1, s, r : std_logic;beginprobegins (cp)if cpevent and cp=1thenif sle = 1thend1 = d0; d0 = key; s = d0 and d1;r
59、 = not d0 and not d1; end if;end if;end pros;dly = r nor ndly; ndly = s nor dly; dly_out = dly;end block debunce;wei: blocksignal d1,d0 : std_logic; beginprobegins (cp)if cpevent and cp=1then d1 = d0; d0 = dly;end if;end pros;diff = d0 and not d1; end block wei;dif_out = diff; end a;3.4.5仿真结果模块实验波形仿
60、真如图3.4.2所示图3.4.2去抖波形仿真当复位信号Reset=0时,状态机Key处在S0状态,同时以CLK的时钟频率采样按键输入信号Din的状态,当CLK第一次采样到Din为低电平时,此时可能发生了按键操作,随即状态机Key进入S1消抖延时状态,当延时结束时delay_end=1(延时结束信号),跟接着状态机KEY的S2,S3,S4连续三个状态对按键输入信号Din进行采样,当三个状态下采样到Din信号都是低电平,则转入S5状态,并产生按键确认信号Key_confirm=1,同时在S5状态下等待按键,在此状态下当CLK时钟信号检测到Din为时转回状态S0。因按键瞬间也会发生抖动,所以由波形图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- STEAM教育对学生批判性思维的影响心得体会
- 智能制造系统开发补充条款
- 固态电池生产线建设项目股权投资及管理协议
- 新型城镇化项目招商运营代理服务协议
- 智能制造系统质量与安全控制措施
- 数学课堂德育活动设计计划
- 2025年春季少先队领导力培养计划
- 2025年金刚石膜热沉材料项目立项申请报告模板
- 2025年云母增强塑料项目申请报告模板
- 医药行业成品保护措施的合规要求
- 余华《活着》赏析ppt
- 第8章-GNSS测量与定位-课件
- 卫生院外伤处置方案
- 某地面工程电力安装EC总承包工程技术文件
- 北汽昌河Q25-汽车使用手册用户操作图示图解详解驾驶指南车主车辆说明书电子版
- 散流器送风气流组织计算
- D500-D505 2016年合订本防雷与接地图集
- 念珠菌定植与药物选择
- 宁夏回族自治区社会保险变更登记表
- 幼儿园小小建筑师分享课件
- 物业承接查验方案及查验方法
评论
0/150
提交评论