资源描述
长春理工大学毕业论文目 录第一章 绪 论1第二章 可编程逻辑器件概述及设计方案22.1 CPLD/FPGA概述及VHDL语言的特点22.2可编程逻辑器件的分类和发展历程42.3 EPF10K10LC84-4芯片简介52.4 电子时钟的设计方案6第三章 系统电路设计73.1 总体设计73.2 显示电路设计93.2.1 分频器电路103.2.2 扫描电路电路123.2.3 BCD码多路选择器133.2.4 BCD译码器143.2.5 位选码电路153.3 电子时钟计数器电路设计163.3.1 秒和分计数器设计163.3.2 小时计数器设计18总 结24参考文献25致 谢2625- -第一章 绪 论时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能更进一步,产品更新换代的节奏也越来越快。现代电子设计技术的核心是EDA ( Electronic Design Automation ) 技术。EDA技术就是依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL (Hardware Description Language)为系统逻辑描述手段完成的设计文件。 20世纪80年代末,出现了FPGA(Field Programmable Gate Array),CAE和CAD技术的应用更为广泛,它们在PCB设计的原理图输入,自动布局布线及PCB分析,以及逻辑设计、逻辑仿真、布尔综合和化简等方面担任了重要的角色,为电子设计自动化必须解决的电路建模、标准文档及仿真测试奠定了基础。硬件描述语言是EDA技术的重要组成部分,VHDL是作为电子设计主流硬件的描述语言。本论文就是应用VHDL语言来实现秒表的电路设计。VHDL语言是标准硬件描述语言,它的特点就是能形式化抽象表示电路结构及行为,支持逻辑设计中层次领域的描述,借用了高级语言的精巧结构简化电路描述,具有电路模拟与验证及保证设计的正确性,支持电路由高层向低层的综合变换,便于文档管理,易于理解和设计重用。本课题选用了Altera公司的FPGA产品并以其专门开发软件为平台,运用VHDL硬件描述语言设计一个电子时钟。CPLD/FPGA以高集成度、高速度和高可靠性而著称,运用FPGA进行产品开发,其开发周期短,投资风险小,产品上市速度快,决定其有着无比的市场前景,是现代EDA技术中广泛运用的硬件。该系统通过VHDL语言和原理图混合应用的方式来实现电子时钟的设计,并下载到硬件之中进行验证。我们将电子时钟的设计分成了四大模块,分别是时间计数器模块;键盘控制模块;显示电路模块和时间调整模块。本次设计主要让我们掌握CPLD/FPGA的研发过程,掌握VHDL语言的编程思想及过程,以及电子时钟基本功能和实现的基本原理。第二章 可编程逻辑器件概述及设计方案可编程逻辑器件PLD(Programmable Logic Device)是20世纪70年代发展起来的一种新的集成器件。PLD是大规模集成电路技术发展的产物,是一种半定制的集成电路,结合计算机的软件技术(EDA技术)可以快速、方便地构建数字系统。2.1 CPLD/FPGA概述及VHDL语言的特点 1、CPLD/FPGA概述不论是简单的还是复杂的数字系统都是由基本门来构成的,如与门、或门、非门、传输门等。人们发现,不是所有的基本门都是必须的,如用与非门单一基本门就可以构成其他的基本门。任何的组合逻辑函数都可以化为“与或”表达式。即任何的组合电路(需要提供输入信号的非信号),可以用“与门或门”二级电路实现。同样,任何时序电路都可由组合电路加上存储元件,即锁存器、触发器、RAM构成的。由此人们提出了一种可编程电路结构,即乘积项逻辑阵列结构。当然,“与或”结构组成的PLD器件的功能比较简单。此后,人们又从ROM工作原理、地址信号与输出数据间的关系以及ASIC 的门阵列法中获得启发,构造另外一种可编程的逻辑结构,那就是SRAM查表的方式,并使用多个查找表构成了一个查表阵列,称为可编程门阵列(Programmable Gate Array)。 可编程逻辑器件的两种主要类型是现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。 在这两类可编程逻辑器件中,FPGA提供了最高的逻辑密度、最丰富的特性和最高的性能。 现在最新的FPGA器件,如Xilinx Virtex系列中的部分器件,可提供八百万系统门(相对逻辑密度)。 这些先进的器件还提供诸如内建的硬连线处理器(如IBM Power PC)、大容量存储器、时钟管理系统等特性,并支持多种最新的超快速器件至器件(device-to-device)信号技术。 FPGA被应用于范围广泛的应用中,从数据处理和存储,以及到仪器仪表、电信和数字信号处理等。 与此相比,CPLD提供的逻辑资源少得多 - 最高约1万门。 但是,CPLD提供了非常好的可预测性,因此对于关键的控制应用非常理想。 而且如Xilinx CoolRunner系列CPLD器件需要的功耗极低,并且价格低廉,从而使其对于成本敏感的、电池供电的便携式应用(如移动电话和数字手持助理)非常理想。 FPGA基于SRAM的架构,集成度高,以LE(包括查找表、触发器及其他)为基本单元,有内嵌Memory、DSP等。具有易挥发性,需要有上电加载过程。在实现复杂算法、队列调度、数据处理、高性能设计、大容量缓存设计等领域中有广泛应用,如Altera Stratix系列。 CPLD基于EEPROM工艺,集成度低,以MicroCell(包括组合部分与寄存器)为基本单元。具有非挥发特性,可以重复写入。在粘合逻辑、地址译码、简单控制、FPGA加载等设计中有广泛应用,如Altera MAX3000A系列。 详细比较:尽管FPGA和CPLD有很多共同特点,但由于CPLD和FPGA结构上的差异,具有各自的特点: CPLD更适合完成各种算法和组合逻辑,FP GA更适合于完成时序逻辑。换句话说,FPGA更适合于触发器丰富的结构,而CPLD更适合于触发器有限而乘积项丰富的结构。 CPLD的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而FPGA的分段式布线结构决定了其延迟的不可预测性。 在编程上FPGA比CPLD具有更大的灵活性。CPLD通过修改具有固定内连电路的逻辑功能来编程,FPGA主要通过改变内部连线的布线来编程;FP GA可在逻辑门下编程,而CPLD是在逻辑块下编程。 FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现。 CPLD比FPGA使用起来更方便。CPLD的编程采用EPROM或FASTFLASH技术,无需外部存储器芯片,使用简单。而FPGA的编程信息需存放在外部存储器上,使用方法复杂。 CPLD的速度比FPGA快,并且具有较大的时间可预测性。这是由于FPGA是门级编程,并且CLB之间采用分布式互联,而CPLD是逻辑块级编程,并且其逻辑块之间的互联是集总式的。 在编程方式上,CPLD主要是基于EPROM或FLASH存储器编程,编程次数可达1万次,优点是系统断电时编程信息也不丢失。CPLD又可分为在编程器上编程和在系统编程两类。FPGA大部分是基于SRAM编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入SRAM中。其优点是可以编程任意次,可在工作中快速编程,从而实现板级和系统级的动态配置。 CPLD保密性好,FPGA保密性差。 一般情况下,CPLD的功耗要比FPGA大,且集成度越高越明显。2、VHDL语言的特点(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。 (2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。 (3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效, 高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。2.2可编程逻辑器件的分类和发展历程可编程逻辑器件的分类很多,几乎每个大的可编程逻辑器件供应商都能提供具有自身结构特点的PLD器件。由于历史的原因,可编程器件的命名各异,在介绍可编程逻辑器件之前,有必要介绍几种PLD的分类方法。较常见的是按集成度来分区分不同的PLD器件,一般可分为两大类器件:一类是芯片集成度较低的。另一类芯片集成度较高的。前面已经提到,常用的可编程逻辑器件都是从“与或阵列”和“门阵列”两类基本结构发展起来的,所以可编程器件从结构上分为两大类器件:查找表结构器件。构成可编程门,再构成阵列形式。FPGA是属于此类器件。乘积项结构器件。其基本结构为“与或阵列”的器件,大部分 简单PLD和CPLD都属于这个范畴。第三种分类方法是从编程工艺上划分:熔丝(Fuse)型器件。早期的PROM器件就是采用熔丝结构的,编程过程就是根据设计的熔丝图文件来烧断对应的熔丝达到编程目的。反熔丝型器件。是对熔丝技术的改进,在编程处通过击穿漏层使得两点之间导通。与熔丝烧断获得开路正好相反。某些FPGA采用此种编程方式,如Actel公司的FPGA器件。无论是熔丝还是反熔丝结构,都只能编程一次,因而又合称为OTP器件,即一次性可编程(One Time Programmable)器件。EPROM型。称为紫外线擦除点可编程逻辑器件。是用较高的编程电压进行编程,当需要再次编程时,用紫外线进行擦除。与熔丝、反熔丝型不同,可多次编程。有时为降低生产成本,在制造EPROM型器件时不加用于紫外线擦除的石英窗口,于是就不能用紫外线擦除,而只能编程一次,也被称为OTP器件。很早以前人们就曾设想设计一种逻辑可再编程的器件,不过由于受到当时集成电路工艺技术的限制,一直未能如愿。直到20世纪后期,集成技术有了飞速的发展,可编程逻辑器件才得以实现。历史上,可编程逻辑器件经历了从PROM(Programmable Read Only Memory ),PLA(Programmable Logic Array),PAL(Programmable Array Logic )可重复编程GAL(Generic Array Logic)到采用大规模集成技术的EPLD到CPLD和FPGA的发展过程。在结构、工艺、集成度、功能、速度和灵活性方面都有很大的改进和提高。可编程逻辑器件大致的演变过程如下:20世纪70年代熔丝编程的PROM和PLA器件是最早的可编程的逻辑器件。20世纪70年代末,对PLA进行了改进,AMD公司推出PAL器件。20世纪80年代初,Lattice公司发明点可擦写的比PAL使用灵活的GAL器件。20世纪80年代中期,Xilinx公司提出现场可编程概念,同时产生了世界上第一片FPGA器件。同一时期,Altera公司推出EPLD器件,较GAL器件有更高的集成度,可以用紫外线或点擦除。20世纪80年代末,Lattice公司又提出在系统可编程技术,并且推出了一系列具备在系统可编程能力的CPLD器件,将可编程逻辑器件的性能和应用技术推向一个全新的高度。进入20世纪90年代后,可编程逻辑集成电路技术进入飞速发展时期。器件的可用逻辑门数超过了百万门,并出现了内嵌复杂功能模块(如加法器、乘法器、RAM、CPU核、DSP核、PLL等)的SOPC(System on programmable chip)。2.3 EPF10K10LC84-4芯片简介本设计采用EPF10K10LC84-4芯片,下面将对其进行简单介绍。 Altera公司的FPGA器件Flex10K EPF10K10LC84-4,FLEX(灵活逻辑单元矩阵)系列是Altera应用非常广泛的产品,这些器件具有比较高的集成度及丰富的寄存器资源,采用了快速,可预测延时的连续式布线结构,是一种将CPLD和FPGA的优点结合于一体的器件。EPF10K10LC84-4是84pinPLCC封装,另外还有其它类型的管脚和封装,有很强的选择性。具有以下主要特点:1. 1万个等效逻辑门,含有572个逻辑单元(LEs)、72个逻辑阵列块(LABs)、3个嵌入式阵列块(EAB s),并具有720个片内寄存器,可以在不占用内部资源的条件下实现6144 bit的片内存储器;2. 内部模块间采用高速、延时可预测的快速通道连接,最高工作频率可以达到150 MHz以上;3. 逻辑单元间具有高速、高扇出的级联链和快速进位链;4. 片内还有三态网络和6个全局时钟、4个全局清零信号以及丰富的I/O资源;5. 每个I/O引脚可以选择为三态控制或集电极开路输出,可以通过编程控制每个I/O引脚的速度以及I/O寄存器的使用。2.4 电子时钟的设计方案数字电子钟的设计方法有多种,例如,可用中小规模集成电路组成电子钟;也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟;还可以利用单片机来实现电子钟等等方案一:运用单片机内部的定时/计数器来实现电子时钟的方法,该方案设计由单片机AT89S51芯片和LED数码管为核心,辅以必要的电路,构成了一个单片机电子时钟。时钟的基本显示原理:时钟开始显示为0时0分0秒,也就是数码管显示000000,然后每秒秒位加1 ,到9后,10秒位加1,秒位回0。10秒位到5后,即59秒 ,分钟加1,10秒位回0。依次类推,时钟最大的显示值为23小时59分59秒。这里只要确定了1秒的定时时间, 其它位均以此为基准往上累加。方案二:采用专用的时钟芯片实现,通过单片机读取时钟芯片的计时时间,在数码管上显示出来,就可以实现电子时钟功能,典型的时钟芯片有:DS1302,DS12887,X1203,PCF8583等都可以实现电子时钟功能。方案三:采用FPGA来实现电子时钟功能,运用VHDL语言来描述电子时钟的各个功能模块。将电子时钟分为六十进制计数器和二十四进制计数器两个基本的功能模块,然后将两个六十进制计数器和一个二十四进制计数器相级联,就构成一个具有时、分、秒的电子时钟。比较方案一、方案二和方案三:方案一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;方案二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,但该方案还具备日历功能,造成功能上的浪费;方案三是采用FPGA实现,运用VHDL语言描述,设计方法简单,而且运用有源晶振作为系统的时钟源,通过分频得到1HZ的信号,计时精度很高,不低于方案二的计时精度,而且运用VHDL语言来描述电子时钟是完全的硬件实现。通过以上比较,系统中采用FPGA来实现电子时钟功能。第三章 系统电路设计3.1 总体设计设计一个显示时(2位)、分(2位)、秒(2位)共六位的多功能电子钟,它的主要功能是进行准确的计时。利用VHDL语言对硬件进行描述,通过下载到FPGA之中进行硬件验证。系统采用4MHz的石英晶体振荡器作为时钟源,经过分频之后得到1HZ的秒钟信号,秒计满60即得1分钟,分计满60便得1小时的信号,小时计满24即得一天,电子时钟的外观图如图3.1所示。其中有六个按键用于调整时间,复位等功能。具体功能如下:图3.1 电子钟的外观图OK键:开始计时。SET键:与调时、调分、调秒键配合,可以调整到指定的时间。RESET键:清零。电子时钟硬件总体框图如图3.2所示。图3.2 电子时钟硬件总体框图在每个功能模块分项设计和组合前,先简单介绍一下每个方块的功能作用。分频器通过分频将4MHz的信号分频为1Hz的秒信号和100Hz的同步扫描时钟信号。1Hz的秒信号输入到秒计数电路,当计数器溢出时,向分计数器进位,当分计数器溢出时,向时计数器进位。BCD译码电路是将计数器的十六进制计数值转换为数码管显示所需要的段码。位码电路是用来选通某一位数码管,使其显示数字。扫描同步电路作用控制同一个数码管的段码和位码同步,同时对多个数码管轮流扫描。键盘控制电路作用是启动电子时钟计时,设定时间等。3.2 显示电路设计显示电路有LCD和LED显示电路,系统中选用LED显示电路,LED器件是一种发光二极管显示器。其特点如下:(1)LED显示器具备稳定、高速、简单的系统;(2)LED显示结构简单、性能稳定;(3)LED显示应用在成熟的生产技术上。发光二极管组成的显示器是单片机应用产品中最常用的廉价输出设备。八段发光二极管结构如图3.3所示。图3.3 八段发光二极管外型发光二极管的阳极连在一起的称为共阳极显示器,阴极连在一起的称为共阴极显示器。1位显示器有8个发光二极管组成,其中7个发光二极管ag控制7个笔段的亮或暗,另一个控制一个小数点的亮和暗,这种笔画式的八段显示器能显示的字符少。字符的形象有些失真,但控制方便,使用简单。图3.4 共阴极数码管图3.5 共阳极数码管 显示器的显示方法有静态和动态两种方法。显示器位数较少时,采用静态显示的方法是合适的。当位数较多时,用静态显示所需的I/O太多,一般采用动态显示方法,所以在系统中我们采用动态显示。此类数码管的工作特点是:数码管片选端清0时,对应位的数码管才有可能亮;每次只能有一个片选端清0,即只能动态移位显示相应的数据;控制器通过控制数码管显示相应数字要用查表子程序来实现。系统中显示电路是由分频电路、扫描电路、BCD码多路选择器、位选码电路和BCD译码器构成的。数码管动态扫描电路如图3.6所示,其中FPQ为分频器,通过分频得到扫描时钟信号,时钟信号为100Hz;SCAN为扫描电路,它是由状态机组成的,循环扫描数码管,使得数码管稳定的显示数据;BCDYMQ为BCD译码器,作用是将计数器输出的十六进制数转换为数码管显示所需要的段码;BIT为位码,作用是轮流选择数码管的位。3.2.1 分频器电路 扫描电路所需要的扫描时钟信号为100Hz,是通过分频器将系统的4MHz时钟信号经过10000分频之后,再通过四分频得到的。系统中采用四个十进制计数器相级联实现10000分频,然后通过两个T触发器实现四分频得到100Hz信号。十进制计数器的VHDL语言描述如下:LIBRARY IEEE;USE IEEE. STD_LOGIC_1164.ALL;图3.6 数码管动态扫描电路USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 ISPORT(CLK,RST,EN:IN STD_LOGIC;CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END CNT10;ARCHITECTURE behav OF CNT10 ISBEGINPROCESS(CLK,RST,EN)VARIABLE CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST= 1 THEN CQI:= (OTHERS =0); ELSIF CLKEVENT AND CLK=1 THEN IF EN = 1 THEN IF CQI 0); END IF;END IF;END IF;IF CQI = 1001 THEN COUT = 1; ELSE COUT = 0;END IF;CQ = CQI; END PROCESS;END behav;其中,CLK为外部脉冲输入端;RST为复位端,高电平有效,EN为使能端,高电平有效;CO为计数器的计数值输出端;COUT为进位输出端。十进制计数器的仿真图如图3.7所示。图3.7 十进制计数器的仿真图3.2.2 扫描电路电路扫描电路是动态数码管显示的核心部件,通过扫描电路使得同一位数码管的段码、位码能够同步选择并稳定显示数据。其VHDL语言描述如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SCAN ISPORT( SCAN:IN STD_LOGIC; COMCLK:OUT STD_LOGIC_VECTOR(1 DOWNTO 0); END;ARCHITECTURE BEHAVE OF SCAN ISSIGNAL Q:STD_LOGIC_VECTOR(1 DOWNTO 0):=00; BEGIN PROCESS(SCAN) BEGIN IF SCANEVENT AND SCAN=1 THEN IF Q=3 THEN Q=00; ELSE Q=Q+1; END IF; END IF; END PROCESS;COMCLK=Q; END;图3.8 扫描电路仿真图扫描电路是由四位二进制计数器组成的状态机构成的,其仿真图如图3.8所示。其中SCAN为扫描时钟信号输入端,COMCLK为状态输出端。3.2.3 BCD码多路选择器BCD码多路选择器是输入的四位的BCD码根据扫描电路的输出进行选择,然后通过BCD译码器将对应的BCD码转换成显示所需要的段码。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY BCDMUX IS PORT( CLK:IN STD_LOGIC_VECTOR(1 DOWNTO 0); BCDDATA:IN STD_LOGIC_VECTOR(15 DOWNTO 0); BCDLED:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END;ARCHITECTURE BEHAVE OF BCDMUX ISBEGINBCDLED(3 DOWNTO 0)=BCDDATA(3 DOWNTO 0) AFTER 5 ms WHEN CLK=00 ELSEBCDDATA(7 DOWNTO 4) AFTER 5 ms WHEN CLK=01 ELSEBCDDATA(11 DOWNTO 8) AFTER 5 ms WHEN CLK=10 ELSE BCDDATA(15 DOWNTO 12) AFTER 5 ms ;END;其中,CLK为输入选择,BCDDATA 为输入数据,BCDLED为输出数据。3.2.4 BCD译码器 BCD译码器是将输入的四位二进制数转换成七段显示代码,通过对应的显示代码驱动LED显示相应的数据,其VHDL语言描述如下:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;ENTITY bcdymq ISPORT ( bcdin :IN std_logic_vector(3 DOWNTO 0); bcdout :BUFFER std_logic_vector(7 DOWNTO 0) );END bcdymq;ARCHITECTURE behave OF bcdymq IS BEGIN bcdout(7 DOWNTO 0)=00111111 WHEN bcdin(3 DOWNTO 0)=0000 ELSE -0 00000110 WHEN bcdin(3 DOWNTO 0)=0001 ELSE -1 01011011 WHEN bcdin(3 DOWNTO 0)=0010 ELSE -2 01001111 WHEN bcdin(3 DOWNTO 0)=0011 ELSE -3 01100110 WHEN bcdin(3 DOWNTO 0)=0100 ELSE -4 01101101 WHEN bcdin(3 DOWNTO 0)=0101 ELSE -5 01111101 WHEN bcdin(3 DOWNTO 0)=0110 ELSE -6 00000111 WHEN bcdin(3 DOWNTO 0)=0111 ELSE -7 01111111 WHEN bcdin(3 DOWNTO 0)=1000 ELSE -8 01101111 WHEN bcdin(3 DOWNTO 0)=1001 ELSE -9 01110111 WHEN bcdin(3 DOWNTO 0)=1010 ELSE -A 01111100 WHEN bcdin(3 DOWNTO 0)=1011 ELSE -B 00111001 WHEN bcdin(3 DOWNTO 0)=1100 ELSE -C 01011110 WHEN bcdin(3 DOWNTO 0)=1101 ELSE -D 01111001 WHEN bcdin(3 DOWNTO 0)=1110 ELSE -E 01110001 WHEN bcdin(3 DOWNTO 0)=1111 ELSE -F ZZZZZZZZ; END behave;其中,bcdin为四位二进制数输入端,bcdout为七段显示代码输出端,其仿真波形如图3.9所示。图3.9 BCD译码器仿真波形3.2.5 位选码电路 位选码电路的作用是在扫描电路作用下,依次输出对应的数码管的位选码。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY BIT ISPORT( CLK:IN STD_LOGIC_VECTOR(1 DOWNTO 0); LEDENABLE:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END;ARCHITECTURE BEHAVE OF BIT ISBEGIN LEDENABLE0); -计数器复位 ELSIF CLKEVENT AND CLK=1 THEN -检测时钟上升沿IF EN = 1 THEN -检测是否允许计数IF CQI 0); -大于23,计数值清零END IF;END IF;END IF;IF CQI = 10111 THEN COUT = 1; -计数大于23,输出进位信号ELSE COUT = 0;END IF;CQ one one one one one one one one one oneone ten ten ten ten=1110; END CASE;END PROCESS;END behav;其中interg为输入的十进制数据,ten和one为分解后的十位数据和个位数据,其仿真图如图3.18所示,它生成的图标文件如图3.19所示:图3.18 二十四进制计数器的计数值分解为十位和个位仿真图图3.19 二十四进制计数器的计数值分解为十位和个位生成的图标3、时计数器总体电路时钟系统总体电路如图3.20所示,其中CNT10为十进制计数器,CNT6为六进制计数器;CNT23为二十四进制计数器;ZHHUAN为将二十四进制计数器的计数值分解为十位数据和个位数据的转换电路;CLK2为输入的秒信号;ENT2为使能信号,高电平有效。图3.20 时钟系统总体键盘的硬件结构为独立式键盘,直接连到EPF10K10LC84-4芯片的引脚上,其特点是便于编程操作。1) 开始/停止键KEY的设计我们将此键经去抖后连接一T触发器,使其输出为电平方式,即按键盘一次,电平进行一次翻转。输出Q0端接74161芯片的ENT端,从而达到了控制秒表的启动停止。其原理图如图3.21所示。图3.21 KEY的MAX+plusII原理图2) 清零键KEY1的设计为了使键盘达到按下清零,松开恢复的功能,KEY1键我们应用脉冲输出方式,即按键盘一次,输出一个脉冲信号。输出端Q0连接74161芯片的CLRN端。这样在按下键盘时输出为低电平使能CLRN,松开后为高电平,禁止了该引脚。电路图如图3.22所示。图3.22 KEY1键的MAX+plusII原理图总 结以上对电子钟从硬件设计方案的选择到用硬件描述语言的设计,都进行了详细的介绍。现在对本次设计工作进行一次总结。在刚获课题时,根据题目内容我首先阅读了大量的相关书籍和资料,这使我在脑海中产生出设计的雏形,接下来就这个构想将整个设计分为VHDL硬件描述语言的装置器件FPGA/CPLD的介绍、VHDL语言对电子钟的设计(七段显示器的显示设计、时间计数跟时间显示、弹跳现象的消除及时间设定和显示)部分。分别对每一部分翻阅了相关的资料,逐步的选定方案与电路设计程序。在用VHDL语言编好后,在计算机上又对程序进行了编译、下载到芯片及仿真,修改了程序中的错误,这样整个系统基本完成,最后对图纸进行了整理,撰写了这篇论文,至此,全部设计都进行完毕。VHDL语言通俗易懂,并且更有益撑握模块工作原理,从而能够更好的理解系统功能。它还具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大地简化了设计任务,提高了设计的效率和可靠性。VHDL支持各种模式的设计方法,具有良好的适应性,并且具有良好的电路行为描述和系统描述能力,在语言易读性和层次化结构化设计表面表现了强大的生命力和应用潜力本次设计重点在于对VHDL语言的应用,以电子钟作为一个具体的模型进行设计。在整个设计的过程中虽然力求合理规范,也存在着一些缺憾,比如,在对电子钟的设计中,有些功能模块的设计不是最简便的方式,同时肯定还有欠考虑的地方。总之,在系统的软硬件设计上由于能力所限,不一定是最佳选择;一些设计方案可能存在不足,这些有待进一步检验。在这次的论文设计中,我感觉自己得到了一个难得的锻炼机会,设计中能将自己所学的理论知识同实践相结合起来,独立的进行分析、设计;而且培养出来一套有计划,有步骤进行设计的习惯,将对今后的工作学习有非常大的帮助,在设计中查阅了大量的资料,丰富了自己的知识,扩展了视野;加强了对计算机的应用能力。通过此次设计,进一步掌握了有关数字钟的工作原理及相关设计知识。特别是对其各工作模块的功能有了更深一步的了解。在设计过程中,对VHDL语言的运用能力也得到了提高。同时,还深刻体会到了VHDL在功能设计中所具有的优越性。总之,这次设计工作,对自己四年来的学习生活做了一个总结,为即将结束的大学生活有个全新的理念。参考文献1 林明权. VHDL 数字控制系统设计范例M. 北京:电子工业出版社.2002 2 卢毅,赖杰. VHDL与数字设计M. 北京:科技出版社出版 .20013 潘松,黄继业. EDA技术实用教程M. 北京:科技出版社.2000 4 王毓银. 数字电路逻辑设计M. 北京:高等教育出版社 .1999 5 廖裕评,陆瑞强. CPLD数字电路设计(使用MAX+PLUS入门篇)M. 北京:清华大学出版社.2002 6 杨晖,张风言. 大规模可编程逻辑器件与数字系统设计M. 北京:航空航天大学出版社.2001 7 褚振勇,翁木云. FPGA 设计及应用M. 西安:电子科技大学出版社.2001 8 朱明程. 可编程逻辑系统的VHDL设计技术M. 南京:东南大学出版社.2000 9 王志华,邓阳东. 数字集成化系统的结构化设计与高层次综合M. 北京:清华大学出版社.1998 10 候伯享,顾新. VHDL硬件描述语言与数字逻辑电路设计M. 西安:电子科技大学出版社.200311 Altera Corporation. Altera Digital LibraryJ. Alter 2002 12 Xilinx Inc. Data Book 2001J. Xilinx,2001 13 VHDL Language Reference GuideJ, Aldec Inc.Henderson NV USA,199914 VHDL Reference Guide,Xilinx Inc.San Jose USAJ,1998
展开阅读全文