【基于fpga数字钟系统设计9100字(论文)】_第1页
【基于fpga数字钟系统设计9100字(论文)】_第2页
【基于fpga数字钟系统设计9100字(论文)】_第3页
【基于fpga数字钟系统设计9100字(论文)】_第4页
【基于fpga数字钟系统设计9100字(论文)】_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE24 基于fpga数字钟系统设计目录引言 2第一章FPGA简介 31.1FPGA概述 31.2FPGA基本结构 31.3FPGA系统设计流程 52.1CPLD/FPGA概述及VHDL语言的特点 71、CPLD/FPGA概述 72.2可编程逻辑器件的分类和发展历程 92.3EPF10K10LC84-4芯片简介 112.4电子时钟的设计方案 11第三章系统电路设计 133.1总体设计 133.2显示电路设计 143.2.1分频器电路 163.2.2扫描电路电路 173.2.3BCD码多路选择器 183.3电子时钟计数器电路设计 183.3.1秒和分计数器设计 183.3.2小时计数器设计 20结论 24参考文献 26附录 28引言当今电子产品正向功能多元化,体积最小化,功耗最低化的方向发展。它与传统的电子产品在设计上的显著区别于大量使用大规模可编程逻辑器件,使产品的性能提高,体积缩小,功耗降低。同时广泛运用现代计算机技术,提高产品的自动化程度和竞争力,缩短研发周期。EDA技术正是为了适应现代电子技术的要求,吸收众多学科最新科技成果而形成的一门新技术。EDA技术以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述主要表达方式,以计算机大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译,逻辑化简,逻辑分割,逻辑映射,编程下载等工作。最终形成集成电子系统或专用集成芯片的一门新技术。现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LCD显示器代替显示器代替指针显示进而显示时间,减小了计时误差,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能更进一步,产品更新换代的节奏也越来越快。这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。本次设计掌握VHDL语言的编程思想及过程,以及电子时钟基本功能和实现的基本原理。主要让我们掌握CPLD/FPGA的研发过程,该系统通过VHDL语言和原理图混合应用的方式来实现电子时钟的设计,并下载到硬件之中进行验证。我们将电子时钟的设计分成了四大模块,分别是时间计数器模块;键盘控制模块;显示电路模块和时间调整模块。第一章FPGA简介1.1FPGA概述如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入或硬件描述语言自由的设计一个数字系统。FPGA是现场可编程门阵列(FieldProgrammableGateArray)的简称,与之相应的CPLD是复杂可编程逻辑器件(ComplexProgrammableLogicDevice)的简称,两者的功能基本相同,只是实现原理略有不同,有时可以忽略这两者的区别,统称为可编程逻辑器件或CPLD/PGFA。CPLD/PGFA几乎能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路。通过软件仿真可以事先验证设计的正确性,在PCB完成以后,利用CPLD/FPGA的在线修改功能,随时修改设计而不必改动硬件电路。使用CPLD/FPGA开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。这些优点使得CPLD/FPGA技术在20世纪90年代以后得到飞速的发展,同时也大大推动了EDA软件和硬件描述语言HDL的进步。1.2FPGA基本结构FPGA由逻辑功能块排成阵列,FPGA一般由3种可编程电路和一个用于存放编程数据的静态存储器SRAM组成。FPGA具有掩膜可编程门阵列的通用结构,它并由可编程的互连资源连接这些逻辑功能块来实现不同的设计。这3种可编程电路是:可编程逻辑模块(CLB—ConfigurableLogicBlock)、输入/输出模块(IOB—I/OBlock)和互连资源(IR—InterconnectResource)。可编程逻辑模块CLB是实现逻辑功能的基本单元,它们通常规则的排列成一个阵列,散布于整个芯片;可编程输入/输出模块(IOB)主要完成芯片上的逻辑与外部封装脚的接口,它通常排列在芯片的四周;可编程互连资源包括各种长度的连接线段和一些可编程连接开关,它们将各个CLB之间或CLB、IOB之间以及IOB之间连接起来,构成特定功能的电路。(1)CLB是FPGA的主要组成部分。图2.1是CLB基本结构框图,它主要由逻辑函数发生器、触发器、数据选择器等电路组成。CLB中3个逻辑函数发生器分别是G、F和H,相应的输出是G’、F’和H’。G有4个输入变量G1、G2、G3和G4;F也有4个输入变量F1、F2、F3和F4。这两个函数发生器是完全独立的,均可以实现4输入变量的任意组合逻辑函数。逻辑函数发生器H有3个输入信号;前两个是函数发生器的输出G’和F’,而另一个输入信号是来自信号变换电路的输出H1。这个函数发生器能实现3输入变量的各种组合函数。这3个函数发生器结合起来,可实现多达9变量的逻辑函数。(2)输入/输出模块IOB。IOB提供了器件引脚和内部逻辑阵列之间的连接。它主要由输入触发器、输入缓冲器和输出触发/锁存器、输出缓冲器组成[2]。1.3FPGA系统设计流程流程说明:(1)工程师按照“自顶向下”的设计方法进行系统划分。(2)输入VHDL代码,这是设计中最为普遍的输入方式。此外,还可以采用图形输入方式,这种输入方式具有直观、容易理解的优点。(3)将以上的设计输入编译成标准的VHDL文件。(4)进行代码级的功能仿真,主要是检验系统功能设计的正确性。这一步骤适用于大型设计,因为对于大型设计来说,在综合前对源代码仿真,就可以大大减少设计重复的次数和时间。一般情况下,这一仿真步骤可略去。(5)利用综合器对VHDL源代码进行综合优化处理,生成门级描述的网络表文件,这是将高层次描述转化为硬件电路的关键步骤。综合优化是针对ASIC芯片供应商的某一产品系列进行的,所以综合的过程要在相应的厂家综合库的支持下才能完成。(6)利用产生的网络表文件进行适配前的时序仿真,仿真过程不涉及具体器件的硬件特性,是较为粗略的。一般的设计,也可略去这一步骤。(7)利用适配器将综合后的网络表文件针对某一具体的目标器件进行逻辑映射操作,包括底层器件配置、逻辑分割、逻辑优化和布局布线。

第二章可编程逻辑器件概述及设计方案2.1CPLD/FPGA概述及VHDL语言的特点不论是简单的还是复杂的数字系统都是由基本门来构成的,如与门、或门、非门、传输门等。(1)CPLD更适合完成各种算法和组合逻辑,FPGA更适合于完成时序逻辑。换句话说,FPGA更适合于触发器丰富的结构,而CPLD更适合于触发器有限而乘积项丰富的结构。(2)CPLD的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而FPGA的分段式布线结构决定了其延迟的不可预测性。(3)在编程上FPGA比CPLD具有更大的灵活性。CPLD通过修改具有固定内连电路的逻辑功能来编程,FPGA主要通过改变内部连线的布线来编程;FPGA可在逻辑门下编程,而CPLD是在逻辑块下编程。(4)FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现。(5)CPLD比FPGA使用起来更方便。CPLD的编程采用EPROM或FASTFLASH技术,无需外部存储器芯片,使用简单。而FPGA的编程信息需存放在外部存储器上,使用方法复杂。(6)CPLD的速度比FPGA快,并且具有较大的时间可预测性。这是由于FPGA是门级编程,并且CLB之间采用分布式互联,而CPLD是逻辑块级编程,并且其逻辑块之间的互联是集总式的。(7)在编程方式上,CPLD主要是基于EPROM或FLASH存储器编程,编程次数可达1万次,优点是系统断电时编程信息也不丢失。CPLD又可分为在编程器上编程和在系统编程两类。FPGA大部分是基于SRAM编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入SRAM中。其优点是可以编程任意次,可在工作中快速编程,从而实现板级和系统级的动态配置。(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计[5]。2.2可编程逻辑器件的分类和发展历程(1)查找表结构器件。构成可编程门,再构成阵列形式。FPGA是属于此类器件。(2)乘积项结构器件。其基本结构为“与—或阵列”的器件,大部分简单PLD和CPLD都属于这个范畴。第三种分类方法是从编程工艺上划分:熔丝(Fuse)型器件。早期的PROM器件就是采用熔丝结构的,编程过程就是根据设计的熔丝图文件来烧断对应的熔丝达到编程目的。(3)反熔丝型器件。是对熔丝技术的改进,在编程处通过击穿漏层使得两点之间导通。与熔丝烧断获得开路正好相反。某些FPGA采用此种编程方式,如Actel公司的FPGA器件。无论是熔丝还是反熔丝结构,都只能编程一次,因而又合称为OTP器件,即一次性可编程(OneTimeProgrammable)器件。(4)EPROM型。称为紫外线擦除点可编程逻辑器件。是用较高的编程电压进行编程,当需要再次编程时,用紫外线进行擦除。与熔丝、反熔丝型不同,可多次编程。可编程逻辑器件大致的演变过程如下:(1)20世纪70年代熔丝编程的PROM和PLA器件是最早的可编程的逻辑器件。(2)20世纪70年代末,对PLA进行了改进,AMD公司推出PAL器件。(3)20世纪80年代初,Lattice公司发明点可擦写的比PAL使用灵活的GAL器件。(4)20世纪80年代中期,Xilinx公司提出现场可编程概念,同时产生了世界上第一片FPGA器件。同一时期,Altera公司推出EPLD器件,较GAL器件有更高的集成度,可以用紫外线或点擦除。(5)20世纪80年代末,Lattice公司又提出在系统可编程技术,并且推出了一系列具备在系统可编程能力的CPLD器件,将可编程逻辑器件的性能和应用技术推向一个全新的高度。进入20世纪90年代后,可编程逻辑集成电路技术进入飞速发展时期。器件的可用逻辑门数超过了百万门,并出现了内嵌复杂功能模块(如加法器、乘法器、RAM、CPU核、DSP核、PLL等)的SOPC(Systemonprogrammablechip)。2.3EPF10K10LC84-4芯片简介本设计采用EPF10K10LC84-4芯片,下面将对其进行简单介绍。EPF10K10LC84-4是84pinPLCC封装,另外还有其它类型的管脚和封装,有很强的选择性。具有以下主要特点:(1)1万个等效逻辑门,含有572个逻辑单元(LEs)、72个逻辑阵列块(LABs)、3个嵌入式阵列块(EABs),并具有720个片内寄存器,可以在不占用内部资源的条件下实现6144bit的片内存储器;(2)内部模块间采用高速、延时可预测的快速通道连接,最高工作频率可以达到150MHz以上;(3)逻辑单元间具有高速、高扇出的级联链和快速进位链;(4)片内还有三态网络和6个全局时钟、4个全局清零信号以及丰富的I/O资源;(5)每个I/O引脚可以选择为三态控制或集电极开路输出,可以通过编程控制每个I/O引脚的速度以及I/O寄存器的使用。2.4电子时钟的设计方案数字电子钟的设计方法有多种,例如,可用中小规模集成电路组成电子钟;也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟;还可以利用单片机来实现电子钟等等方案一:运用单片机内部的定时/计数器来实现电子时钟的方法,该方案设计由单片机AT89S51芯片和LCD数码管为核心,辅以必要的电路,构成了一个单片机电子时钟。方案二:采用专用的时钟芯片实现,通过单片机读取时钟芯片的计时时间,在数码管上显示出来,就可以实现电子时钟功能,典型的时钟芯片有:DS1302,DS12887,X1203,PCF8583等都可以实现电子时钟功能。方案三:采用FPGA来实现电子时钟功能,运用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电子时钟硬件总体框图在每个功能模块分项设计和组合前,先简单介绍一下每个方块的功能作用[8]。(1)分频器通过分频将4MHz的信号分频为1Hz的秒信号和100Hz的同步扫描时钟信号。(2)1Hz的秒信号输入到秒计数电路,当计数器溢出时,向分计数器进位,当分计数器溢出时,向时计数器进位。(3)BCD译码电路是将计数器的十六进制计数值转换为数码管显示所需要的段码。(4)位码电路是用来选通某一位数码管,使其显示数字。(5)扫描同步电路作用控制同一个数码管的段码和位码同步,同时对多个数码管轮流扫描。(6)键盘控制电路作用是启动电子时钟计时,设定时间等。3.2显示电路设计显示电路有LCD和LCD显示电路,系统中选用LCD显示电路,LCD器件是一种发光二极管显示器。其特点如下:(1)LCD显示器具备稳定、高速、简单的系统;(2)LCD显示结构简单、性能稳定;(3)LCD显示应用在成熟的生产技术上。发光二极管组成的显示器是单片机应用产品中最常用的廉价输出设备。八段发光二极管结构如图3.3所示。图3.3八段发光二极管外型发光二极管的阳极连在一起的称为共阳极显示器,阴极连在一起的称为共阴极显示器。1位显示器有8个发光二极管组成,其中7个发光二极管a~g控制7个笔段的亮或暗,另一个控制一个小数点的亮和暗,这种笔画式的八段显示器能显示的字符少。字符的形象有些失真,但控制方便,使用简单[9]。图3.4共阴极数码管图3.5共阳极数码管显示器的显示方法有静态和动态两种方法。显示器位数较少时,采用静态显示的方法是合适的。当位数较多时,用静态显示所需的I/O太多,一般采用动态显示方法,所以在系统中我们采用动态显示。此类数码管的工作特点是:(1)数码管片选端清0时,对应位的数码管才有可能亮;(2)每次只能有一个片选端清0,即只能动态移位显示相应的数据;(3)控制器通过控制数码管显示相应数字要用查表子程序来实现。系统中显示电路是由分频电路、扫描电路、BCD码多路选择器、位选码电路和BCD译码器构成的。扫描电路所需要的扫描时钟信号为100Hz,是通过分频器将系统的4MHz时钟信号经过10000分频之后,再通过四分频得到的。系统中采用四个十进制计数器相级联实现10000分频,然后通过两个T触发器实现四分频得到100Hz信号。十进制计数器的仿真图如图3.7所示。十进制计数器的VHDL语言描述见附录程序1[10]图3.7十进制计数器的仿真图扫描电路是动态数码管显示的核心部件,通过扫描电路使得同一位数码管的段码、位码能够同步选择并稳定显示数据。其VHDL语言描述见附录程序2图3.8扫描电路仿真图扫描电路是由四位二进制计数器组成的状态机构成的,其仿真图如图3.8所示。其中SCAN为扫描时钟信号输入端,COMCLK为状态输出端。BCD码多路选择器是输入的四位的BCD码根据扫描电路的输出进行选择,然后通过BCD译码器将对应的BCD码转换成显示所需要的段码。见附录程序3[11]BCD译码器是将输入的四位二进制数转换成七段显示代码,通过对应的显示代码驱动LCD显示相应的数据,其仿真波形如图3.9所示。其VHDL语言描述见附录程序4图3.9BCD译码器仿真波形位选码电路的作用是在扫描电路作用下,依次输出对应的数码管的位选码。其仿真波形如图3.10所示。程序见附录程序5图3.10位选码仿真波形3.3电子时钟计数器电路设计电子时钟是由两个60进制计数器和一个二十四进制计数器组成的,其中二十四进制计数器用于时计数器,60进制计数器用于秒和分计数器。秒和分计数器是由六十进制计数器组成的,而六十进制计数器是由一个十进制计数器和一个六进制计数器组成的[12]。(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六十进制计数器原理图电子时钟电路的小时计数器是由二十四进制计数器组成的,系统需要将二十四进制计数器的计数值分解为两位的BCD码,然后再送到数码管上显示[13]。(1)二十四进制计数器其仿真图如图3.16所示。二十四进制计数器的VHDL语言描述见附录程序6图3.16二十四进制计数器仿真波形由二十四进制计数器生成的图标文件如图3.17所示:图3.17二十四进制计数器图标(2)二十四进制计数器计数值分解电路时计数器分为时个位和时十位,所以需要将二十四进制计数器的计数值分为BCD码十位和BCD码个位,其仿真图如图3.18所示,它生成的图标文件如图3.19所示。其VHDL语言描述见附录程序7图3.18二十四进制计数器的计数值分解为十位和个位仿真图图3.19二十四进制计数器的计数值分解为十位和个位生成的图标(3)时计数器总体电路时钟系统总体电路如图3.20所示,其中CNT10为十进制计数器,CNT6为六进制计数器;CNT23为二十四进制计数器;ZHHUAN为将二十四进制计数器的计数值分解为十位数据和个位数据的转换电路;CLK2为输入的秒信号;ENT2为使能信号,高电平有效。图3.20时钟系统总体键盘的硬件结构为独立式键盘,直接连到EPF10K10LC84-4芯片的引脚上,其特点是便于编程操作[14]。(1)开始/停止键KEY的设计我们将此键经去抖后连接一T触发器,使其输出为电平方式,即按键盘一次,电平进行一次翻转。输出Q0端接74161芯片的ENT端,从而达到了控制秒表的启动停止。其原理图如图3.21所示。图3.21KEY的MAX+plusII原理图(2)清零键KEY1的设计为了使键盘达到按下清零,松开恢复的功能,KEY1键我们应用脉冲输出方式,即按键盘一次,输出一个脉冲信号。输出端Q0连接74161芯片的CLRN端。这样在按下键盘时输出为低电平使能CLRN,松开后为高电平,禁止了该引脚。电路图如图3.22所示。图3.22KEY1键的MAX+plusII原理图结论在刚获课题时,根据题目内容我首先阅读了大量的相关书籍和资料,这使我在脑海中产生出设计的雏形,接下来就这个构想将整个设计分为VHDL硬件描述语言的装置器件FPGA/CPLD的介绍、VHDL语言对电子钟的设计(七段显示器的显示设计、时间计数跟时间显示、弹跳现象的消除及时间设定和显示)部分。分别对每一部分翻阅了相关的资料,逐步的选定方案与电路设计程序。本次设计重点在于对VHDL语言的应用,以电子钟作为一个具体的模型进行设计。在整个设计的过程中虽然力求合理规范,也存在着一些缺憾,比如,在对电子钟的设计中,有些功能模块的设计不是最简便的方式,同时肯定还有欠考虑的地方。总之,在系统的软硬件设计上由于能力所限,不一定是最佳选择;一些设计方案可能存在不足,这些有待进一步检验。

参考文献[1]黄峰鹤.数字钟的设计与制作[J].信息技术.2015(05)[2]曹啸敏.数字钟电路的设计[J].信息技术.2015(10)[3]肖看.电子设计工程师认证实操实训基础系列讲座(8)第四讲简易数字钟设计(上)[J].电子世界.2015(10)[4]方国红,雷晨,孙艺玫,刘一萌,刘浩.地震专用数字钟的研制及试运行结果[J].东北地震研究.2015(03)[5]戴树鸿.数字钟电路的制作[J].家电检修技术.2015(02)[6]刘敏,刘丰.数字钟的制作[J].科技资讯.2015(29)[7]孙立香.一种具有整点报时带闹钟时间可调的数字钟[J].电子制作.2015(18)[8]徐作华.基本数字钟电路的设计、制作与检测[J].数字技术与应用.2015(04)[9]石悦.多功能数字钟设计[J].现代商贸工业.2015(01)[10]郭占苗.简易数字钟制作[J].电子世界.2015(12)[11]黄峰鹤.数字钟的设计与制作[J].信息技术.2015(05)[12]曹啸敏.数字钟电路的设计[J].信息技术.2015(10)[13]肖看.电子设计工程师认证实操实训基础系列讲座(8)第四讲简易数字钟设计(上)[J].电子世界.2015(10)[14]方国红,雷晨,孙艺玫,刘一萌,刘浩.地震专用数字钟的研制及试运行结果[J].东北地震研究.2015(03)[15]戴树鸿.数字钟电路的制作[J].家电检修技术.2015(02)[16]刘敏,刘丰.数字钟的制作[J].科技资讯.2013(29)[17]孙立香.一种具有整点报时带闹钟时间可调的数字钟[J].电子制作.2013(18)[18]徐作华.基本数字钟电路的设计、制作与检测[J].数字技术与应用.2013(04)[19]石悦.多功能数字钟设计[J].现代商贸工业.2012(01)[20]郭占苗.简易数字钟制作[J].电子世界.2011(12)

附录程序1:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT10ISPORT(CLK,RST,EN:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUT:OUTSTD_LOGIC);ENDCNT10;ARCHITECTUREbehavOFCNT10ISBEGINPROCESS(CLK,RST,EN)VARIABLECQI:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFRST='1'THENCQI:=(OTHERS=>'0');ELSIFCLK'EVENTANDCLK='1'THENIFEN='1'THENIFCQI<"1001"THENCQI:=CQI+1;ELSECQI:=(OTHERS=>'0');ENDIF;ENDIF;ENDIF;IFCQI="1001"THENCOUT<='1';ELSECOUT<='0';ENDIF;CQ<=CQI;ENDPROCESS;ENDbehav;其中,CLK为外部脉冲输入端;RST为复位端,高电平有效,EN为使能端,高电平有效;CO为计数器的计数值输出端;COUT为进位输出端。程序2LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSCANISPORT(SCAN:INSTD_LOGIC;COMCLK:OUTSTD_LOGIC_VECTOR(1DOWNTO0));END;ARCHITECTUREBEHAVEOFSCANISSIGNALQ:STD_LOGIC_VECTOR(1DOWNTO0):="00";BEGINPROCESS(SCAN)BEGINIFSCAN'EVENTANDSCAN='1'THENIFQ=3THENQ<="00";ELSEQ<=Q+1;ENDIF;ENDIF;ENDPROCESS;COMCLK<=Q;END;程序3LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYBCDMUXISPORT(CLK:INSTD_LOGIC_VECTOR(1DOWNTO0);BCDDATA:INSTD_LOGIC_VECTOR(15DOWNTO0);BCDLCD:OUTSTD_LOGIC_VECTOR(3DOWNTO0));END;ARCHITECTUREBEHAVEOFBCDMUXISBEGINBCDLCD(3DOWNTO0)<=BCDDATA(3DOWNTO0)AFTER5msWHENCLK="00"ELSEBCDDATA(7DOWNTO4)AFTER5msWHENCLK="01"ELSEBCDDATA(11DOWNTO8)AFTER5msWHENCLK="10"ELSEBCDDATA(15DOWNTO12)AFTER5ms;END;其中,CLK为输入选择,BCDDATA为输入数据,BCDLCD为输出数据。程序4LIBRARYieee;USEieee.std_logic_1164.all;USEieee.std_logic_unsigned.all;ENTITYbcdymqISPORT(bcdin:INstd_logic_vector(3DOWNTO0);bcdout:BUFFERstd_logic_vector(7DOWNTO0));ENDbcdymq;ARCHITECTUREbehaveOFbcdymqISBEGINbcdout(7DOWNTO0)<="00111111"WHENbcdin(3DOWNTO0)="0000"ELSE--0"00000110"WHENbcdin(3DOWNTO0)="0001"ELSE--1"01011011"WHENbcdin(3DOWNTO0)="0010"ELSE--2"01001111"WHENbcdin(3DOWNTO0)="0011"ELSE--3"01100110"WHENbcdin(3DOWNTO0)="0100"ELSE--4"01101101"WHENbcdin(3DOWNTO0)="0101"ELSE--5"01111101"WHENbcdin(3DOWNTO0)="0110"ELSE--6"00000111"WHENbcdin(3DOWNTO0)="0111"ELSE--7"01111111"WHENbcdin(3DOWNTO0)="1000"ELSE--8"01101111"WHENbcdin(3DOWNTO0)="1001"ELSE--9"01110111"WHENbcdin(3DOWNTO0)="1010"ELSE--A"01111100"WHENbcdin(3DOWNTO0)="1011"ELSE--B"00111001"WHENbcdin(3DOWNTO0)="1100"ELSE--C"01011110"WHENbcdin(3DOWNTO0)="1101"ELSE--D"01111001"WHENbcdin(3DOWNTO0)="1110"ELSE--E"01110001"WHENbcdin(3DOWNTO0)="1111"ELSE--FZZZZZZZZ";ENDbehave;其中,bcdin为四位二进制数输入端,bcdout为七段显示代码输出端程序5LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYBITISPORT(CLK:INSTD_LOGIC_VECTOR(1DOWNTO0);LCDENABLE:OUTSTD_LOGIC_VECTOR(3DOWNTO0));END;ARCHITECTUREBEHAVEOFBITISBEGINLCDENABLE<="1110"WHENCLK="00"ELSE"1101"WHENCLK="01"ELSE"1011"WHENCLK="10"ELSE"0111";END;其中,CLK为扫描选择信号输入端,LCDENABLE为位选码数据输出端程序6LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT23ISPORT(CLK,RST,EN:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR(4DOWNTO0);COUT:OUTSTD_LOGIC);ENDCNT23;ARCHITECTUREbehavOFCNT23ISBEGI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论