您所在的位置:e-works首页 > 产品创新数字化(PLM) > EDA

基于FPGA的仪表用多功能数字时钟的嵌入设计

发表时间:2008-6-19 朱湘萍 包本刚 来源:万方数据
本文介绍了一种基于FPGA实现的多功能数字时钟的设计方案,它可以显示年、月、日、时、分、秒、星期,并且可以设定闹钟和整点报时。该方案可以嵌人到采用FPGA芯片实现的仪器仪表中,具有结构简单,功能强大,性价比高的特点,稍加改动可适用于许多仪器仪表系统中,具有很好的可移植性。
     0 引 言
    
     近年来,可编程逻辑器件的广泛使用引发了电子产品领域的一场新的革命。可编程逻辑器件具有设计灵活,速度快,更改方便,功耗低等优点,在数字系统的设计中得到了广泛的应用,并将逐步替代中、小规模的数字集成芯片。
    
     在许多仪器仪表中都要用到数字时钟,目前通常是采用专用的数字时钟芯片,但是这种芯片功能固定,不利于嵌入式应用。而且,在仪器仪表的许多应用场合已经采用了FPGA可编程芯片。这样一来,为我们在使用硬件空间的FPGA器件中再嵌人一个数字时钟提供了极大的方便,而且不会增加成本,并可以使系统结构更加简单,体积更小,成本更低,具有很好的嵌人式和可移植特性。
    
     1 基于FPGA的系统总体设计方法
    
     为了实现:(1)显示年、月、日、时、分、秒、星期,并且可以进行调整时间;(2)可以设定闹钟和整点报时的功能,数字时钟在总体上主要分为三大部分:输人界面部分、FPGA核心功能部分和输出界面部分,其系统设计框图如图1所示。
    


     数字时钟的FPGA内部系统结构如图2所示。其中包括状态机、闹钟时间寄存器、计时器、编码键盘、键盘接口电路、BCD数码管编码电路、蜂鸣器驱动电路、多路选通器和铃声管理九个部分。其中键盘接口电路负责从键盘电路的扫描信号和驱动信号中译码按键值,并产生按键标志位keypesresd信号;状态机负责接收键盘按键信号,并给出其他各个模块的控制信号和用户输人的新设定时间或闹钟时间buffertime;闹钟寄存器中存储着闹钟时间alarmtime;计时器是实现计时的功能部件,它给出当前时间time;多路选通器的功能则是如果数字时钟在计时状态下则把计时器的输出信号time送到显示模块,如果数字时钟是在校对时间和设定闹钟时间状态下则把状态机的输出信号buffertime送到显示模块;铃声管理模块根据系统的当前时间time、闹钟时间alarntime、闹钟开关状态alarmon和整点报时开关状态houralarmon来决定是否驱动蜂鸣器。
    
     2  FPGA内部部分模块电路的VRDL设计与仿真

    
     按照以上的设计方案,我们把数字时钟的几个关键核心数字模块全部集成在一片PFGA芯片内,实现了一个SOC系统。但是由于篇幅的关系,我只能把几重要模块的VHDL设计思想及其仿真结果在下面进行介绍。
    
     2.1 计时器电路模块的VHDL设计与仿真
    
     计时器模块是数字时钟的核心模块,计时器是实现计时功能的部件,它给出当前时间计数值阅,由十五BCD码来表示,每一组有四位。第一、二、三、四组BCD码表示年;第五、六组BCD码表示月;第七、八组BCD码表示日;第九、十组BCD码表示小时;第十一、十二组BCD码表示分钟;第十三、十四组BCD码表示秒钟;第十五位表示周。用BCD码表示时间的好处在于,能方便地直接送到显示模块进行译码。整个计数器的外围接口电路如图3所示。其总体仿真波形如图4所示:在做该仿真时有一小技巧,不要对所有情况进行仿真,因为全面仿真会花费大量时间,而且不容易把握住问题的关键。正确的方法是选择一些重要的情况进行仿真,在图3中选择计数器进位时的情况来进行仿真,具体来说是先让计数器加载上即将进位的计数值,然后看计数器进位是否正确。如图4所示,就验证了时间为23:95:95时刻进位天的个位加1,星期加l。
    


     2.2校时和设闹状态机模块的VHDL设计与仿真
    
     在数字时钟系统的设计中,要实现对校时、设闹整点报时、产生闹钟铃声等不同工作状态的控制,而我们又没有加专门的控制芯片,因此我们采用了VHDL语言强大的状态机建模描述功能来实现对数字时钟的功能控制。在本设计中,我们采用了校时和设闹状态机、闹钟和整点报时开关状态机、闹钟和整点报时状态机、闹钟铃声产生状态机共4个状态机。其具体的设计过程我们不加以讨论,下面我们以校时和设闹状态机为例说明状态机在数字时钟功能控制中的作用和设计过程。根据功能我们设计如图5所示的状态转移图。状态机的仿真波形图如图6所示。在仿真时序图中,用户向计时器输人207年4月42 日的仿真图。YEARLD在输人年的最高位时置1,当输人完年的四个数字位后YEARLD 置零,年计时器完成置数过程。以此类推,月、日、时、分、秒和星期都采用同样的过程完成时间参数的设置。
    


     2.3 数字时钟顶层模块的VHDL设计与仿真
    
     根据数字时钟的系统设计框图,我们设计了键盘接口电路模块、计时器模块、状态机模块、显示控制模块、铃声管理模块、时间寄存器模块等几个底层VHDL模块。因此,我们就可以根据VHDL的层次化设计思想,把底层模块按照系统设计框图连接成为一个顶层VHDL文件。其顶层模块电路图如图7所示。
    


     其中,clkin为外部频率输人端,输人时钟频率为1MHz,keyin为键盘信号输人,alarm-signal为报时闹钟信号控制输出端,Keydrv为键盘扫描信号输出端,Selout为LED位选信号输出端,bcd为BCD码信号输出端。其仿真波形图如图8所示。
    
     3 结 论
    
     经过以上的功能设计,我们把设计好的VHDL文件在QuatrusII6.0中进行了仿真,验证了其功能的可靠性,并且把其下载到FPGA器件中与外围器件一起构成了一个数字钟的硬件电路,进行了实际的功能测试,得到了良好的效果。我们只要对以上所设计的系统,根据仪器仪表中对时钟电路的具体要求,进行必要的VHDL改进,便可以成为一个可移植的嵌人式时钟系统。

本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。

责任编辑:童伟