基于FPGA的电子时钟设计.doc_第1页
基于FPGA的电子时钟设计.doc_第2页
基于FPGA的电子时钟设计.doc_第3页
基于FPGA的电子时钟设计.doc_第4页
基于FPGA的电子时钟设计.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

黄河科技学院毕业设计说明书 第32页1 绪论现代社会的标志之一就是信息产品的广泛使用,而且是产品的性能越来越强,复杂程度越来越高,更新步伐越来越快。支撑信息电子产品高速发展的基础就是微电子制造工艺水平的提高和电子产品设计开发技术的发展。前者以微细加工技术为代表,而后者的代表就是电子设计自动化(Electronic Design Automation, EDA)技术。本设计采用的VHDL是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计;支持结构、数据流、行为三种描述形式的混合描述,覆盖面广、抽象能力强,因此在实际应用中越来越广泛。ASIC是专用的系统集成电路,是一种带有逻辑处理的加速处理器。而FPGA是特殊的ASIC芯片,与其他的ASIC芯片相比,它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检测等优点。钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。1.1 选题背景本节将从FPGA嵌入式应用开发技术与数字钟技术发展的客观实际出发,通过对该技术发展状况的了解,以及课题本身的需要,指出研究基于FPGA的芯片系统与设计数字钟的设计与实现的必要性。1.1.1 课题相关技术的发展 当今电子产品正向功能多元化,体积最小化,功耗最低化的方向发展。它与传统的电子产品在设计上的显著区别师大量使用大规模可编程逻辑器件,使产品的性能提高,体积缩小,功耗降低。同时广泛运用现代计算机技术,提高产品的自动化程度和竞争力,缩短研发周期。EDA技术正是为了适应现代电子技术的要求,吸收众多学科最新科技成果而形成的一门新技术。美国ALTERA公司的可编程逻辑器件采用全新的结构和先进的技术,加上MaxplusII(或最新的QUARTUS)开发环境,更具有高性能,开发周期短等特点,十分方便进行电子产品的开发和设计。EDA技术以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译,逻辑化简,逻辑分割,逻辑映射,编程下载等工作。最终形成集成电子系统或专用集成芯片的一门新技术。本设计利用VHDL硬件描述语言结合可编程逻辑器件进行的,并通过数码管动态显示计时结果。数字钟可以由各种技术实现,如单片机等。利用可编程逻辑器件具有其他方式没有的特点,它具有易学,方便,新颖,有趣,直观,设计与实验项目成功率高,理论与实践结合紧密,体积小,容量大,IO口丰富,易编程和加密等特点,并且它还具有开放的界面,丰富的设计库,模块化的工具以及LPM定制等优良性能,应用非常方便。因此,本设计采用可编程逻辑器件实现。1.1.2 课题研究的必要性 现在是一个知识爆炸的新时代。新产品、新技术层出不穷,电子技术的发展更是日新月异。可以毫不夸张的说,电子技术的应用无处不在,电子技术正在不断地改变我们的生活,改变着我们的世界。在这快速发展的年代,时间对人们来说是越来越宝贵,在快节奏的生活时,人们往往忘记了时间,一旦遇到重要的事情而忘记了时间,这将会带来很大的损失。因此我们需要一个定时系统来提醒这些忙碌的人。数字化的钟表给人们带来了极大的方便。近些年,随着科技的发展和社会的进步,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的需求。多功能数字钟不管在性能还是在样式上都发生了质的变化,有电子闹钟、数字闹钟等等。1.2 课题研究的内容本设计主要研究基于FPGA的电子时钟,要求显示时、分、秒,以24小时循环计数。为了保证计时的稳定及准确须由晶体振荡器提供时间基准信号。2 电子时钟的设计方案2.1 电子时钟设计要求(1)采用24小时制式,用6个数码管进行“时”、“分”、“秒”的显示;(2)具有复位功能。2.2 电子时钟设计方案电子时钟的设计方法有多种,例如,可用中小规模集成电路组成电子钟;也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟;还可以利用单片机来实现电子钟等等。方案一:运用单片机内部的定时计数器来实现电子时钟的方法,该方案设计由单片机AT89S51芯片和LED数码管为核心,辅以必要的电路,构成了一个单片机电子时钟。时钟的基本显示原理:时钟开始显示为0时0分0秒,也就是数码管显示000000,然后每秒秒的个位加1,到9后,秒的十位加1,秒的个位回0。秒的十位到5后,即59秒,分钟加1,秒的十位回0。依次类推,时钟最大的显示值为23小时59分59秒。这里只要确定了1秒的定时时间, 其它位均以此为基准往上累加。方案二:采用专用的时钟芯片实现,通过单片机读取时钟芯片的计时时间,在数码管上显示出来,就可以实现电子时钟功能,典型的时钟芯片有:DS1302,DS12887,X1203,PCF8583等都可以实现电子时钟功能。方案三:采用FPGA来实现电子时钟功能,运用VHDL语言来描述电子时钟的各个功能模块。将电子时钟分为六十进制计数器和二十四进制计数器两个基本的功能模块,然后将两个六十进制计数器和一个二十四进制计数器相级联,就构成一个具有时、分、秒的电子时钟1。比较方案一、方案二和方案三:方案一是用软件实现,即用单片机内部的可编程定时计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;方案二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,但该方案还具备日历功能,造成功能上的浪费;方案三是采用FPGA实现,运用VHDL语言描述,设计方法简单,而且运用有源晶振作为系统的时钟源,通过分频得到1Hz的信号,计时精度很高,不低于方案二的计时精度,而且运用VHDL语言来描述电子时钟是完全的硬件实现。通过以上比较,采用FPGA来实现电子时钟功能2。2.3电子时钟构成电子时钟实际上是一个对标准频率(1Hz)进行计数的计数电路。同时标准的1Hz时间信号必须做到准确稳定,通常使用石英晶体振荡器电路构成电子时钟3。本系统拟采用Altera公司Cyclone系列的EP1C12Q240C8芯片。电子时钟系统结构框图如图2.1所示。 FPGA Altera EP1C12Q240C8复位按键6个LED数码管显示时、分、秒晶体振荡器 图2.1 电子时钟的系统结构框图2.4 电子时钟的工作原理振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,然后经过分频器输出标准秒脉冲。秒计数器满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照“24翻1”规律计数。计数满后各计数器清零,重新计数。计数器的输出分别经译码器送数码管显示。时基电路可以由石英晶体振荡电路构成,晶振频率经过分频就可以得到秒脉冲信号。译码显示电路由七段译码器完成。3 EDA技术简介3.1 FPGA系统设计流程一般说来,一个比较大的完整的项目应该采用层次化的描述方法:分为几个较大的模块,定义好各功能模块之间的接口,然后各个模块再细分去具体实现,这就是自顶向下的设计方法。目前这种高层次的设计方法已被广泛采用。高层次设计只是定义系统的行为特征,可以不涉及实现工艺,因此还可以在厂家综合库的支持下,利用综合优化工具将高层次描述转换为针对某种工艺优化的网络表,使工艺转化变得轻而易举。CPLD/FPGA系统设计的工作流程如图3.1所示。流程说明:(1)按照“自顶向下”的设计方法进行系统划分。(2)输入VHDL代码,这是设计中最为普遍的输入方式。此外,还可以采用图形输入方式,这种输入方式具有直观、容易理解的优点。(3)将以上的设计输入编译成标准的VHDL文件。(4)进行代码级的功能仿真,主要是检验系统功能设计的正确性。这一步骤适用于大型设计,因为对于大型设计来说,在综合前对源代码仿真,就可以大大减少设计重复的次数和时间。一般情况下,这一仿真步骤可略去。(5)利用综合器对VHDL源代码进行综合优化处理,生成门级描述的网络表文件,这是将高层次描述转化为硬件电路的关键步骤。综合优化是针对ASIC芯片供应商的某一产品系列进行的,所以综合的过程要在相应的厂家综合库的支持下才能完成。(6)利用产生的网络表文件进行适配前的时序仿真,仿真过程不涉及具体器件的硬件特性,是较为粗略的。一般的设计,也可略去这一步骤。(7)利用适配器将综合后的网络表文件针对某一具体的目标器件进行逻辑映射操作,包括底层器件配置、逻辑分割、逻辑优化和布局布线。(8)在适配完成后,产生多项设计结果:a、适配报告,包括芯片内部资源利用情况,设计的布尔方程描述情况等;b、适配后的仿真模型;c、器件编程文件。根据适配后的仿真模型,可以进行适配后时序仿真,因为已经得到器件的实际硬件特性(如时延特性),所以仿真结果能比较精确的预期未来芯片的实际性能。如果仿真结果达不到设计要求,就修改VHDL源代码或选择不同速度和品质的器件,直至满足设计要求4。最后将适配器产生的器件编程文件通过编程器或下载电缆载入到目标芯片CPLD/FPGA中。 系统划分编译器代码级功能仿真综合器适配前时序仿真适配器CPLD/FPGA实现适配后仿真模型适配后时序仿真适配报告ASIC实现VHDL代码或图形方式输入仿真综合库器件编程文件图3.1 CPLD/FPGA系统设计流程3.2 QuartusII设计平台3.2.1 软件开发环境及基本流程 本设计所用软件主要是QuartusII,在此对它做一些介绍。QuartusII是Altera提供的FPGA/CPLD开发集成环境,Altera是世界上最大的可编程逻辑器件供应商之一。QuartusII提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。Altera公司的QuartusII 开发工具人机界面友好、易于使用、性能优良,并自带编译、仿真功能。QuartusII软件完全支持VHDL设计流程,其内部嵌有VHDL逻辑综合器。QuartusII 也可以利用第三方的综合工具,如FPGA Compiler II,并能直接调用这些工具。同样,QuartusII具备仿真功能,同时也支持第三方的仿真工具。此外,QuartusII与MATLAB和DSP Builder结合,可以进行基于FPGA的DSP系统开发,是DSP硬件系统实现的关键EDA技术5。QuartusII包括模块化的编译器。编译器包括的功能模块有分析/综合器、适配器、装配器、时序分析器、设计辅助模块、EDA网表文件生成器、编辑数据接口等。可以通过选择Start Compilation来运行所有的编译器模块,也可以通过选择Start单独运行各个模块。在Compiler Tool窗口中,可以打开该模块的设置文件或报告文件,或者打开其它相关窗口。图3.2上排所示的是QuartusII编译设计主控界面,它显示了QuartusII自动设计的各主要处理环节和设计流程,包括设计输入编辑、设计分析与综合、适配、编程文件汇编、时序参数提取以及编程下载几个步骤。图3.2下排的流程框图是与上面的QuartusII设计流程相对照的标准的EDA开发流程。图3.2 QuartusII设计流程在设计输入之后,QuartusII的编译器将给出设计输入的错误报告。QuartusII拥有性能良好的设计错误定位器,用于确定文本或图形设计中的错误。在进行编译后,可对设计进行时序仿真。在仿真前,需要利用波形编辑器编辑一个波形激励文件。编译和仿真检测无误后,便可将下载信息通过QuartusII提供的编程器下载入目标器件中了。QuartusII图形用户界面的基本设计流程如下:1、使用New Project Wizard(File菜单)建立新工程并指定目标器件或器件系列。2、使用Text Editor(文本编辑器)建立 Verilog HDL、VHDL或Altera硬件描述语言(AHDL)设计。可以使用Block Editor(原理图编辑器)建立流程图或原理图。流程图中可以包含代表其它设计文件的符号;还可以使用MegaWizard Plug-In Manager生成宏功能模块和IP内核的自定义变量,在设计中将它们实例化。3、(可选)使用 Assignment Editor、Settings 对话框(Assignments 菜单)、Floorplan Editor或LogicLock功能指定初始设计的约束条件。4、(可选)使用SOPC Builder或DSP Builder建立系统级设计。5、(可选)使用Software Builder为Excalibur器件处理器或Nios嵌入式处理器建立软件和编程文件。6、使用Analysis & Synthesis对设计进行综合。7、(可选)使用仿真器对设计执行功能仿真。8、使用Fitter对设计执行布局布线。在对源代码进行少量更改之后,还可以使用增量布局布线。9、使用Timing Analyzer对设计进行时序分析。10、使用仿真器对设计进行时序仿真。 11、(可选)使用物理综合、时序底层布局图、LogicLock功能、Settings对话框和 Assignment Editor进行设计优化,实现时序关闭。12、使用Assembler为设计建立编程文件。 13、使用编程文件、Programmer 和Altera硬件编程器对器件进行编程;或将编程文件转换为其它文件格式以供嵌入式处理器等其它系统使用。14、(可选)使用SignalTap II Logic Analyzer、SignalProbe功能或Chip Editor对设计进行调试。15、(可选)使用Chip Editor、Resource Property Editor和Change Manager进行工程更改管理。3.2.2 具体设计流程1、建立工作库文件夹和编辑设计文件首先建立工作库目录,以便存储工程项目设计文件。任何一项设计都是一项工程(Project),都必须首先为此工程建立一个放置与此工程相关的所有设计文件的文件夹。此文件夹将被EDA软件默认为工作库。一般来说,不同的设计项目最好放在不同的文件夹中,而同一工程的所有文件都必须放在同一文件夹中。2、创建工程使用New Project Wizard可以为工程指定工作目录、分配工程名称以及指定最高层设计实体的名称,还可以指定要在工程中使用的设计文件、其它源文件、用户库和EDA工具,以及目标器件系列和具体器件等。3、编译前设置在对工程进行编译处理前,必须做好必要的设置。步骤如下:(1)选择FPGA目标芯片;(2)选择配置器件的工作方式;(3)选择配置器件和编程方式;(4)选择输出设置;(5)选择目标器件闲置引脚的状态。4、全程编译QuartusII编译器是由一系列处理模块构成的,这些模块负责对设计项目的检错、逻辑综合、结构综合、输出结果的编辑配置,以及时序分析。在这一过程中,将设计项目适配到FPGA目标器中,同时产生多种用途的输出文件。编译器首先检查出工程设计文件中可能的错误信息,供设计者排除。然后产生一个结构化的以网表文件表达的电路原理图文件。如果编译成功,可以见到如图3.3所示的工程管理窗口左上角显示了工程(例如工程div)的层次结构和其中结构模块耗用的逻辑宏单元数;在此栏下是编译处理流程,包括数据网表建立、逻辑综合、适配、配置文件装配和时序分析等;最下栏是编译处理信息;中栏式编译报告项目选择菜单,单击其中各项可以详细了解编译与分析结果。5、时序仿真工程编译通过后,必须建立VWF文件对其功能和时序性质进行仿真测试,以了解设计结果是否满足原设计要求。图3.3 全编译后出现报错信息3.3 VHDL语言的特点(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计6。4 电子时钟顶层设计4.1 电子时钟顶层设计分析根据前边叙述的电子钟的设计要求、工作原理和设计方案,这里给出系统顶层结构框图如图4.1所示。按键控制时计数器分计数器秒计数器分频器扫描显示电路七段数码显示译码电路位选通控制电路六个LED数码管显示时、分、秒1Hz1Mz基准信号图4.1 电子时钟顶层结构框图 用三个百分频器把1MHz的信号变成1Hz。然后信号进入控制秒的计数器,当第60个脉冲时钟到来时,产生一个进位信号,送到控制分的计数器,同理,当第60个脉冲时钟到来时,产生一个进位信号,送到控制小时的计数器。当小时计数器计数到24时,完成一个周期,跳转到零。输出是由七段数码显示器和扫描器来完成的。扫描器时钟取至前面分频未结束时的一个100Hz的信号。这样就能够时、分、秒的动态显示7。4.2 电子时钟顶层电路原理图电子时钟顶层电路原理图如图4.2所示。图4.2 电子时钟顶层原理图5 各模块电路的设计与仿真5.1 分频模块电路设计与仿真晶体振荡器是构成数字式时钟的核心,振荡器的稳定度及频率的精度决定了数字钟计时的准确程度,它保证了时钟的走时准确及稳定8。本系统使用的晶体振荡器电路给数字钟提供一个频率稳定准确的1MHz的方波信号,其输出至分频电路。分频模块的结构框图如图5.1所示。图5.1 分频模块结构框图分频模块的VHDL语言描述如下。library IEEE; use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;use IEEE.std_logic_unsigned.all;entity fp isport (rst,clk : in STD_LOGIC; - 复位、基准信号脉冲输入 what: out STD_LOGIC);end fp;architecture a of fp is signal count100 : integer range 0 to 99; - 100分频 signal tt:std_logic;begin process (rst,clk) begin if rst=1 then count100=0; - 复位 elsif rising_edge(clk) then count100= count100 + 1 ;tt=tt; if count100=99 then count100=0;tt=not tt; end if ; end if; what=tt; end process;end a;分频模块仿真波形图如图5.2所示。图5.2 分频模块仿真波形图仿真波形分析:由仿真波形图可知,当clk为上升沿,what为下降沿时,count100输出由99变为0,并且count100都是由0到99循环,所以,这是一个100分频模块。5.2 秒计数模块设计与仿真秒信号发生器是数字电子钟的核心部分,它的精度和稳定度决定了数字钟的质量,通常用晶体振荡器产生的脉冲9。秒计数模块的结构框图如图5.3所示。图5.3 秒计数模块结构框图秒计数模块VHDL语言描述如下。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity second isport(clk,reset:in std_logic; - clk为1Hz的秒脉冲输入信号,reset为秒清零(复位)信号sec1,sec2:out std_logic_vector(3 downto 0); - 秒模块的个位和十位分别用4位二进制数表示 carry:out std_logic);- 为秒模块进位输出end second;architecture rt1 of second is signal sec1_t,sec2_t:std_logic_vector(3 downto 0);begin process(clk,reset) begin if reset=1then sec1_t=0000; - 检测秒模块的1Hz脉冲上升沿sec2_t=0000; elsif clkevent and clk=1then if sec1_t=1001then - 秒的个位是否到“9” sec1_t=0000; if sec2_t=0101then - 秒个位到“9”后,十位计数到“5”sec2_t=0000; else sec2_t=sec2_t+1; end if; else sec1_t=sec1_t+1; end if; if sec1_t=1001 and sec2_t=0101then carry=1; - 秒模块的60秒进位输出enmin置“1”,向分模块产生进位else carry=0; - 秒计数值“0000000”(零秒) end if; end if; end process; sec1=sec1_t; sec2=sec2_t;end rt1;秒模块仿真波形图如图5.4所示。图5.4 秒模块仿真波形图仿真波形分析:由仿真波形图可知,当clk和carry为上升沿时,sec1输出由9变为0,并且sec1都是由0到9循环,sec2输出由5变为0,并且sec2都是由0到5循环,所以,这是一个60进制的秒控制模块。5.3 分计数模块模块电路设计与仿真分模块的结构框图如图5.5所示。图5.5 分模块结构框图分模块的VHDL语言描述如下。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minute is port (clk,reset:in std_logic; - clk为分钟模块的脉冲输入信号,接秒模块的进位输出 min1,min2:out std_logic_vector(3 downto 0); - 分的个位和十位分别用4位二进制表示 carry:out std_logic); - carry为分钟模块的进位输出end minute;architecture rt1 of minute is signal min1_t,min2_t:std_logic_vector(3 downto 0);beginprocess(clk,reset)begin if reset=1then - 复位 min1_t=0000; - 分钟模块的个位复位 min2_t=0000; - 分钟模块的十位复位 elsif clkevent and clk=1then - 检测分钟模块的脉冲上升沿 if min1_t=1001then - 分钟的个位到“9”后 min1_t=0000; - 分钟的个位清零 if min2_t=0101then - 分钟的十位到“5”后 min2_t=0000; - 分钟的十位清零 else min2_t=min2_t+1; - 分钟的十位如果不到“5”就加1 end if; else min1_t=min1_t+1; - 分钟的个位如果不到“9”就加1 end if; if min1_t=1001 and min2_t=0101then - 分钟个位到“9”后,十位计数到“5” carry=1; - 分钟模块的60分钟进位输出carry置“1”,向时模块产生进位 else carry=0; - 分钟计数值回零“0”(零分) end if; end if;end process; min1=min1_t; min2=min2_t;end rt1;分模块仿真波形图如图5.6所示。图5.6 分模块仿真波形图仿真波形分析:由仿真波形图可知,当clk和carry为上升沿时,min1输出由9变为0,并且min1都是由0到9循环,min2输出由5变为0,并且min2都是由0到5循环,所以,这是一个60进制的分控制模块。5.4 时计数模块电路设计与仿真时模块的结构框图如图5.7所示。图5.7时模块的结构框图时模块的VHDL语言描述如下。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hour is port (clk,reset:in std_logic;hour1,hour2:out std_logic_vector(3 downto 0); - 小时的个位和十位分别用4位二进制表示 end hour;architecture rt1 of hour is signal hour1_t,hour2_t:std_logic_vector(3 downto 0);beginprocess(clk,reset)begin if reset=1then -复位 hour1_t=0000; - 小时的个位复位 hour2_t=0000; - 小时的十位复位 elsif clkevent and clk=1then - 检测小时模块的脉冲上升沿 if hour1_t=0011 and hour2_t=0010then - 如果小时的个位到“3”后,十位到“2” hour1_t=0000; - 小时的个位清零 hour2_t=0000; - 小时的十位清零 else if hour1_t=1001then - 小时的个位到“9”后 hour1_t=0000; - 小时的个位清零 if hour2_t=0010then - 小时的十位到“2”后 hour2_t=0000; - 小时的十位清零 else hour2_t=hour2_t+1; - 小时的十位不到“2”加1 end if; else hour1_t=hour1_t+1; - 小时的十位不到“9”加1 end if; end if; end if;end process; hour1=hour1_t; hour2=hour2_t;end rt1;时模块仿真波形图如图5.8所示。图5.8 时模块仿真波形图仿真波形分析:由仿真波形图可知,当clk为上升沿时,hour1输出由9变为0,并且hour1都是由0到9循环,hour2输出由2变为0,并且hour2都是由0到2循环,所以,这是一个24进制的时控制模块。5.5 扫描显示电路设计与仿真扫描电路是动态数码管显示的核心部件,通过扫描电路使得同一位数码管的段码、位码能够同步选择并稳定显示数据。所谓动态扫描显示方式是在显示某一位LED显示块的数据的时候,让其它位不显示,然后在显示下一位的数据,同时关闭其他显示块。这样做可以使每一个显示块显示与自己相对应的数据。只要保证每一位显示的时间间隔不要太大,利用人眼的视觉暂留的现象,就可以造成各位数据同时显示的假象10。扫描显示模块结构框图如图5.9所示。图5.9 扫描显示模块结构框图扫描显示模块的VHDL语言描述如下。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mux6_1scan is port(clkscan,reset:in std_logic; - 动态扫描输入脉冲 in1,in2,in3,in4,in5,in6:in std_logic_vector(3 downto 0); - 4位二进制分别表示时、分、秒的个位、十位的计数输入 data:out std_logic_vector(3 downto 0); sel:out std_logic_vector(2 downto 0); - 3位数码管位选输出,接外部3-8译码器输出,译码输出再经驱动接数码管共阴极端end mux6_1scan;architecture rt1 of mux6_1scan is signal count:std_logic_vector(2 downto 0); - 定义内部计数节点,六进制循环计数(6个数码管显示)begin process(clkscan,reset) begin if reset=1then count=000; elsif clkscanevent and clkscan=1then - 检测动态扫描输入脉冲上升沿 if count=101then count=000; else countdatadatadatadatadatadata=in6; - “101”时选择“时的十位”计数值显示end case;end process; seldoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdout=0000000; - 除了“0-9”外其他的字形码 end case; end process;end behav;七段显示模块仿真波形图如图5.12所示。 图5.12 七段显示模块仿真波形图5.7 位选通控制电路设计位选通控制可由一个三线八线译码器实现,低电平有效,三线八线译码器的三个输入端A0、A1、A2分别接六选一扫描显示电路输出sel2.0的三个输出端口,三线八线译码器A3、A2、A0分别对应sel2.0,三线八线译码器有八个输出端,因为有六个LED数码管,所以选用六个输出端。六个输出端分别接六个数码管的公共端(COM),三线八线译码器输出端Y0、Y1分别接显示秒个位和秒十位的数码管的公共端(COM),Y2、Y3分别接显示分钟的个位和十位的数码管的公共端(COM),Y4、Y5分别接显示小时的个位和十位的数码管的公共端(COM),这样就可以实现LED数码管的正常显示11。三线八线译码器的结构框图如图5.13所示。图5.13 三线八线译码器结构框图三线八线译码器的VHDL语言描述如下。library IEEE;use IEEE.std_logic_1164.all;entity ls138 is port ( A : in std_logic_vector (2 downto 0); - A2.0为三线八线译码器的三路输入 S1,S2,S3 : in std_logic; - S1、S2,S3为三个选通端,其状态用以控制译码器的工作 Y : out std_logic_vector (7 downto 0) - Y7.0为译码器的八路输出 );end entity;architecture ls138_arch of ls138 is signal s : std_logic_vector(2 downto 0);begin S = S1&S2&S3; process(A, S) begin Y 1); if S=100 then - S1=1,S2=S3=0时,译码器正常工作,低电平有效 case A is when 000 = Y Y Y Y Y Y Y Y NULL; - 其他输出为NULL end case; end if; end process;end architecture;5.8 数码管显示电路设计显示电路有LCD和LED显示电路,这次课题中选用LED显示电路,LED器件是一种发光二极管显示器。其特点如下:(1)能在低电压、小电流条件下驱动发光,能与CMOS、ITL电路兼容。(2)发光响应时间极短(01s),高频特性好,单色性好,亮度高。(3)体积小,重量轻,抗冲击性能好。(4)寿命长,使用寿命在10万小时以上,甚至可达100万小时。成本低。因此它被广泛用作数字仪器仪表、数控装置、计算机的数显器件。发光二极管组成的显示器是最常用的廉价输出设备。七段发光二极管结构如图5.14所示。图5.14 七段发光二极管根据数码管内二极管连接方式的不同,可分为共阳极方式和共阴极方式,两种方式所接的译码器类型也有所不同。共阴极方式和共阳极方式分别如图5.15和5.16所示。1位显示器有7个发光二极管组成,其中7个发光二极管ag控制7个笔段的亮或暗,这种笔画式的七段显示器能显示的字符少。字符的形象有些失真,但控制方便,使用简单。为防止电路中电流过大而烧坏二极管,电路中需串联限流电阻。 图5.15 共阴极方式 图5.16 共阳极方式LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类12。(1)静态显示驱动 静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个IO口进行驱动,静态驱动的优点是编程简单,显示亮度高,缺点是占用IO口多,如驱动5个数码管静态显示则需要5735根IO口来驱动。故实际应用时必须增加驱动器进行驱动,增加了硬体电路的复杂性。(2)动态显示驱动 数码管动态显示最为广泛的一种显示方式之一,动态驱动是将所有数码管的7个显示笔划a、b、c、d、e、f、g的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的IO线控制,当输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为几个毫秒,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的IO口,而且功耗更低13。这次设计中选用动态显示驱动方式,并用共阴极显示器。将六个数码管的七个显示笔画a、b、c、d、e、f、g的同名端连在一起,然后分别接到七段数码显示译码电路输出端的七个端口上,数码管g、f、e、d、c、b、a分别对应DOUT6.0。位选通控制电路轮流选中六个数码管,这样就能实现时、分、秒的动态显示。结 论以上对电子钟从硬件设计方案的选择到用硬件描述语言的设计,都进行了详细的介绍。现在对本次设计进行一次总结。在刚获课题时,根据题目内容我首先阅读了大量的相关书籍和资料,这使我在脑海中产生出设计的雏形,接下来就这个构想将整个设计分为VHDL硬件描述语言的装置器件FPGA/CPLD的介绍、VHD

温馨提示

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

评论

0/150

提交评论