基于FPGA的电子钟设计.docx
《基于FPGA的电子钟设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的电子钟设计.docx(26页珍藏版)》请在咨信网上搜索。
目 录 第一章 绪 论 1 第二章 可编程逻辑器件概述及设计方案 2 2.1 CPLD/FPGA概述及VHDL语言的特点 2 2.2可编程逻辑器件的分类和发展历程 4 2.3 EPF10K10LC84-4芯片简介 5 2.4 电子时钟的设计方案 6 第三章 系统电路设计 7 3.1 总体设计 7 3.2 显示电路设计 9 3.2.1 分频器电路 10 3.2.2 扫描电路电路 12 3.2.3 BCD码多路选择器 13 3.2.4 BCD译码器 14 3.2.5 位选码电路 15 3.3 电子时钟计数器电路设计 16 3.3.1 秒和分计数器设计 16 3.3.2 小时计数器设计 18 总 结 24 参考文献 25 致 谢 26 第一章 绪 论 时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用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个发光二极管a~g控制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 IS PORT(CLK,RST,EN:IN STD_LOGIC; CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT:OUT STD_LOGIC); END CNT10; ARCHITECTURE behav OF CNT10 IS BEGIN PROCESS(CLK,RST,EN) VARIABLE CQI:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF RST= '1' THEN CQI:= (OTHERS =>'0'); ELSIF CLK'EVENT AND CLK='1' THEN IF EN = '1' THEN IF CQI < "1001" THEN CQI := CQI + 1; ELSE CQI:= (OTHERS =>'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 IS PORT( SCAN:IN STD_LOGIC; COMCLK:OUT STD_LOGIC_VECTOR(1 DOWNTO 0)); END; ARCHITECTURE BEHAVE OF SCAN IS SIGNAL Q:STD_LOGIC_VECTOR(1 DOWNTO 0):="00"; BEGIN PROCESS(SCAN) BEGIN IF SCAN'EVENT 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 IS BEGIN BCDLED(3 DOWNTO 0)<=BCDDATA(3 DOWNTO 0) AFTER 5 ms WHEN CLK="00" ELSE BCDDATA(7 DOWNTO 4) AFTER 5 ms WHEN CLK="01" ELSE BCDDATA(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 IS PORT ( 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 IS PORT( CLK:IN STD_LOGIC_VECTOR(1 DOWNTO 0); LEDENABLE:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END; ARCHITECTURE BEHAVE OF BIT IS BEGIN LEDENABLE<="1110" WHEN CLK="00" ELSE "1101" WHEN CLK="01" ELSE "1011" WHEN CLK="10" ELSE "0111"; END; 其中,CLK为扫描选择信号输入端,LEDENABLE为位选码数据输出端,其仿真波形如图3.10所示。 图3.10 位选码仿真波形 3.3 电子时钟计数器电路设计 电子时钟是由两个60进制计数器和一个二十四进制计数器组成的,其中二十四进制计数器用于时计数器,60进制计数器用于秒和分计数器。 3.3.1 秒和分计数器设计 秒和分计数器是由六十进制计数器组成的,而六十进制计数器是由一个十进制计数器和一个六进制计数器组成的。 1、系统中采用的十进制计数器采用74161来设计, 其设计原理图如图3.11所示,其中CLK为外部时钟脉冲输入端,Q0~Q3为计数器计数值输出端,CNT为进位输出端,ENT为十进制计数器使能端,CLRN为十进制计数器清零端,十进制计数器仿真图如图3.12所示。 图3.11 十进制计数器原理图 图3.12 十进制计数器仿真图 2、六进制计数器设计 系统中采用的六进制计数器采用74161来设计,其设计原理图如图3.13所示,其中CLK1为外部时钟脉冲输入端,QQ0~QQ3为计数器计数值输出端,CNT1为进位输出端,ENT1为十进制计数器使能端,CLRN1为十进制计数器清零端,六进制计数器仿真图如图3.14所示。 图3.13 六进制计数器原理图 图3.14 六进制计数器仿真图时序图 3、六十进制计数器设计 系统中采用的十进制计数器与六进制计数器级联构成六十进制计数器,其设计原理图如图3.15所示,其中CLK2为外部时钟脉冲输入端,Q0~Q7为计数器计数值输出端,CNT2为进位输出端,ENT2为十进制计数器使能端,CLRN2为十进制计数器清零端,其中CNT10、CNT6是十进制计数器和六进制计数器所生成的封装库。 图3.15 六十进制计数器原理图 3.3.2 小时计数器设计 电子时钟电路的小时计数器是由二十四进制计数器组成的,系统需要将二十四进制计数器的计数值分解为两位的BCD码,然后再送到数码管上显示。 1、二十四进制计数器 二十四进制计数器的VHDL语言描述如下: LIBRARY IEEE; USE IEEE. STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT23 IS PORT(CLK,RST,EN:IN STD_LOGIC; CQ:OUT STD_LOGIC_VECTOR(4 DOWNTO 0); COUT:OUT STD_LOGIC); END CNT23; ARCHITECTURE behav OF CNT23 IS BEGIN PROCESS(CLK,RST,EN) VARIABLE CQI:STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN IF RST= '1' THEN CQI:= (OTHERS =>'0'); ----计数器复位 ELSIF CLK'EVENT AND CLK='1' THEN ----检测时钟上升沿 IF EN = '1' THEN ----检测是否允许计数 IF CQI < "10111" THEN CQI := CQI + 1; ----允许计数 ELSE CQI:= (OTHERS =>'0'); ----大于23,计数值清零 END IF; END IF; END IF; IF CQI = "10111" THEN COUT <= '1'; ----计数大于23,输出进位信号 ELSE COUT <= '0'; END IF; CQ <= CQI; --将计数值向端口输出 END PROCESS; END behav; 其中,CLK为外部脉冲输入端,RST为复位端,高电平有效,EN为使能端,高电平有效,CQ为计数脉冲输出端,COUT为进位输出端,其仿真图如图3.16所示。 图3.16 二十四进制计数器仿真波形 由二十四进制计数器生成的图标文件如图3.17所示: 图3.17 二十四进制计数器图标 2、二十四进制计数器计数值分解电路 时计数器分为时个位和时十位,所以需要将二十四进制计数器的计数值分为BCD码十位和BCD码个位,其VHDL语言描述如下: LIBRARY IEEE; USE IEEE. STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY zhhuan IS PORT( interg : IN INTEGER RANGE 0 TO 23; ten : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); one : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END zhhuan; ARCHITECTURE behav OF zhhuan IS BEGIN PROCESS(INTERG) BEGIN CASE interg is when 0|10|20 => one<="0000"; when 1|11|21 => one<="0001"; when 2|12|22 => one<="0010"; when 3|13|23 => one<="0011"; when 4|14 => one<="0100";- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 电子钟 设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【xrp****65】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【xrp****65】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【xrp****65】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【xrp****65】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文