传统时间控制器功能简单,硬件线路多,设计复杂,可靠性差。随着cpld(复杂可编程逻辑器件)的飞速发展,它以其编程方便、集成度高,速度快、价格低等特点越来越受到广大电子设计人员的青睐。
本文介绍一种以cpld为核心、以vhdl为开发工具的时间控制器,该控制器不仅具有时间功能,而且具有定时器功能,能在00:00~23:59之间任意设定开启时间和关闭时间,其设置方便、灵活,广泛应用于路灯、广告灯箱、霓虹灯等处的定时控制。
1 系统设计方案
1.1 系统总体结构
时间控制器主要由clock(数字时钟)、timeset(定时器开启时间和关闭时间设置)、compare(比较输出)、func-ctrl(功能控制模块)和显示输出控制模块等组成。
系统方框图如图l所示。
func-ctrl模块控制系统处于不同的功能状态,并产生不同的控制信号分别控制time-set模块和clock模块,而这3个模块的输出连接到compare模块,当系统时间处在开启时间和关闭时间段时,则定时器输出端done输出控制信号,disp_ctrl(输出选择模块)根据功能模块的控制信号选择不同功能状态的时间输出,通过seltime(动态扫描模块)和deled(七段译码模块)驱动七段数码管显示相应的时间。
1.2 系统功能要求
a)具有数字时钟功能,用4个数码管分别显示小时、分钟,并且具有时间校对功能。
b)能方便地设定定时器的开启时间和关闭时间,通过比较器输出时间控制信号。
c)具有4种功能状态:系统时间校对状态、开启时间设定状态、关闭时间设定状态、时钟正常显示状态,通过功能转换键(fun)可以使系统在这4种状态之间循环变化,并且可以通过指示灯led显示当前系统功能状态,数码管显示相应功能状态的时间,如当前在开启时间设定状态下,开启时间设置指示灯ledon会亮,数码管同时显示当前设置的时间。
d)开启时间设定、关闭时间设定和时间校对采用共同的时调节键set_hour和分调节键set_min;每按一下set_hour键,小时就会自动加1,采用24进制计数,当计数到23时又会恢复为00;每按一下set_min键,分钟会自动加1;采用60进制计数,当计数到59时,又会恢复为00。
2 子模块功能设计及仿真
2.1 clock模块
clock模块内部整体框图如图2所示。
其中:second为60进制秒计数器,minute为60进制分钟计数器,hour为24进制小时计数器;clk为标准的1hz时钟信号作为秒计数输入,秒计数器的进位输出作为分钟minute的计数时钟,而minute进位输出作为小时hour模块的时钟输入;输入端set_rain、set_hour和en_time分别为校分、校时和时间设置控制信号。模块hour_min把小时和分钟输出合成时间输出信号time[13..0](小时采用24进制,只需6位二进制表示,分钟用8位二进制表示)。
2.2 time_set模块
开启时问模块主要设置定时器歼启时间,可以设定具体几时几分,而关闭时间则设定定时器关闭时间,起始时间设定模块与结束时间设定模块功能相同,采用同一个time_set模块。该模块由一个24进制小时计数器和一个60进制分钟计数器组成,当控制端en为高电平时,通过调节键set_hour和set_min分别设置小时和分钟信号,从而设置开启时问和关闭时间,并产生时间信号data[13..0]。仿真结果如图3所示。
2.3 compare模块
compare模块实现系统当前时间与设定的开启时间和关闭时间的比较,从而输出定时控制输出信号。由于系统时间的小时和分钟分别采用24进制和60进制方式,分3种情况讨论:
a)当系统设定的开启时间小于关闭时间时,只要当前系统时间大于等于开启时间而小于关闭时间,则输出端co的输出信号为高电平,否则为低电平。
b)当系统设定的开启时间大于关闭时间时,则当系统时间大于等于关闭时间而小于开启时间时,输出端co为低电平,否则为高电平。
c)如果开启时间等于关闭时间,则输出端co为低电平,仿真结果如图4。
该模块部分vhdl源程序如下:
2.4 func_ctrl模块
利用功能转换键(fun)使系统处在不同的功能状态:系统时间校对状态、开启时间设定状态、关闭时间设定状态、正常显示状态。利用功能转换键实现4个功能状态之间循环变化,并产生相应的控制信号(en_time、en_on、en_off)去控制clock模块、time_set、模块和disp_ctrl模块等。在调整过程中,只有被选择到的功能状态指示灯被点亮,其他灯不亮,在正常模式状态下,状态灯都不亮。
其部分源程序如下:
2.5 显示控制模块
1)disp_ctrl模块
该模块根据功能控制模块输出的控制信号en_on、en_off的值来选择输出信号,当en_on=l时,输出值为定时器的开启时问信号,当en_off=1时,输出值为定时器的关闭时间信号,en_time=1时,输出值为系统时间校对信号,其他情况则输出系统时间。
2)seltime模块及deled模块
时间显示的4个数码管采用动态扫描输出,一般只要每个扫描频率超过人的眼睛视觉暂留频率24 hz以上就可以达到点亮单个显示而不闪烁,扫描频率采用1 khz信号。动态扫描输出信号通过bcd-七段显示译码器(deled)连接到数码管显示具体数字。
动态扫描的部分程序如下(其中clk1为扫描时钟输入信号,sel为数码管片选信号):
2.6 1 hz标准时钟产生模块
系统时钟输入信号clk1k为1 khz信号,它可作为动态扫描时钟信号,如果把1 khz信号经过3个10分频器fen10便可得到标准的1 hz时钟信号,作为系统时间模块的标准秒输入信号。
3 系统部分功能仿真
各部分模块完成后生成图形符号,在max+plusⅱ中采用图形法把各部分连接起来,如图1所示,对系统部分模块进行功能仿真,图5为系统时间设置仿真图。
在fun功能转换键上升沿来之后,系统时间调整指示灯ledtime变为高平,系统当前处在数字时钟校正状态,set_min是分钟设置端,sel[1..o]是片选信号,led[6..0]为数码管的输入信号,从图中可知符合功能要求。由于篇幅限制,略去其余模块的仿真图。
本系统采用的cpld芯片为altera公司的epf10klc84-3芯片,用vhdl和max+plusⅱ10.0软件工具开发。设计输入完成后,进行整体的编译和逻辑仿真,然后进行转换、延时仿真生成配置文件,最后下载至cpld器件,完成结构功能配置,实现其硬件功能。
4 结束语
该系统运用先进的eda软件和vhdl,采用模块法白顶向下的设计原则,并借助于cpld实现时间控制器的设计,充分体现了现代数字电路设计系统芯片化,芯片设计化设计的思想突破了传统电子系统的设计模式,使系统开发速度快、成本低、系统性能大幅度提高。
关于交流耦合和直流恢复的区别
分享PCB设计布局规则与技巧
终身设计PCB开发团队怎样去设计
追问电动汽车动力电池安全隐患的根源
电源抑制比是什么意思?电源抑制比怎么提高?
基于CPLD和VHDL实现时间控制器系统的设计
基于单片机的调光控制器设计
新视智科锂电池隔膜缺陷视觉检测系统,助力企业降本提质增效
货拉拉完成7轮融资:打造互联网物流商城
无线电波频谱是如何工作的?
PowerVR GPU采用PVR3C三重压缩技术来解决问题
ruby到底前景怎么样_ruby前景分析
赛普拉斯TrueTouch单层传感器助力龙旗智能手机触摸屏
不复位MCU继续调试的方法
八代酷睿核显的尴尬,核显遭遇研发瓶颈
基于HBS的分布式智能照明及安防系统的研制
SoC功耗是一个关键的差异化功能
模组化手机玩真的,Lattice、TI名列其中
Qualcomm推出全新骁龙700 骁龙700都有哪些亮点
我国新经济发展和新旧动能转换的引擎 “独角兽”企业摇篮