作者: 时间:2007-10-31 来源: | |||||
引言 传统时间控制器功能简单,硬件线路多,设计复杂,可靠性差。随着CPLD(复杂可编程逻辑器件)的飞速发展,它以其编程方便、集成度高,速度快、价格低等特点越来越受到广大电子设计人员的青睐。 本文介绍一种以CPLD[1]为核心、以VHDL[2]为开发工具的时间控制器,该控制器不仅具有时间功能,而且具有定时器功能,能在00:00~23:59之间任意设定开启时间和关闭时间,其设置方便、灵活,广泛应用于路灯、广告灯箱、霓虹灯等处的定时控制。 1 系统设计方案 l.l 系统总体结构 FUNC-CTRL模块控制系统处于不同的功能状态,并产生不同的控制信号分别控制TIME-SET模块和CLOCK模块,而这3个模块的输出连接到COMPARE模块,当系统时间处在开启时间和关闭时间段时,则定时器输出端done输出控制信号,DISP_CTRL(输出选择模块)根据功能模块的控制信号选择不同功能状态的时间输出,通过SELTIME(动态扫描模块)和DELED(七段译码模块)驱动七段数码管显示相应的时间。 1.2 系统功能要求 2 子模块功能设计及仿真 2.1 CLOCK模块 其中: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模块 2.3 COMPARE模块 该模块部分VHDL源程序如下: 2.4 FUNC_CTRL模块 1)DISP_CTRL模块 该模块根据功能控制模块输出的控制信号en_on、en_off的值来选择输出信号,当en_on=l时,输出值为定时器的开启时问信号,当en_off=1时,输出值为定时器的关闭时间信号,en_time=1时,输出值为系统时间校对信号,其他情况则输出系统时间。 2)SELTIME模块及DELED模块 时间显示的4个数码管采用动态扫描[3]输出,一般只要每个扫描频率超过人的眼睛视觉暂留频率24 Hz以上就可以达到点亮单个显示而不闪烁,扫描频率采用1 kHz信号。动态扫描输出信号通过BCD-七段显示译码器[4](DELED)连接到数码管显示具体数字。 动态扫描的部分程序如下(其中clk1为扫描时钟输入信号,sel为数码管片选信号): 2.6 1 Hz标准时钟产生模块 系统时钟输入信号CLK1K为1 kHz信号,它可作为动态扫描时钟信号,如果把1 kHz信号经过3个10分频器FEN10便可得到标准的1 Hz时钟信号,作为系统时间模块的标准秒输入信号。 3 系统部分功能仿真 在fun功能转换键上升沿来之后,系统时间调整指示灯ledtime变为高平,系统当前处在数字时钟校正状态,set_min是分钟设置端,sel[1..O]是片选信号,led[6..0]为数码管的输入信号,从图中可知符合功能要求。由于篇幅限制,略去其余模块的仿真图。 本系统采用的CPLD芯片为Altera公司的EPF10KLC84-3芯片,用VHDL和MAX+PLUSⅡ10.0软件工具开发。设计输入完成后,进行整体的编译和逻辑仿真,然后进行转换、延时仿真生成配置文件,最后下载至CPLD器件,完成结构功能配置,实现其硬件功能。 4 结束语 |
标签: CPLD VHDL 时间控制器 |
文章评论(0条评论)
登录后参与讨论