0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于CPLD和VHDL实现时间控制器系统的设计

电子设计 来源:郭婷 作者:电子设计 2019-09-25 07:55 次阅读

传统时间控制器功能简单,硬件线路多,设计复杂,可靠性差。随着CPLD(复杂可编程逻辑器件)的飞速发展,它以其编程方便、集成度高,速度快、价格低等特点越来越受到广大电子设计人员的青睐。

本文介绍一种以CPLD为核心、以VHDL为开发工具的时间控制器,该控制器不仅具有时间功能,而且具有定时器功能,能在00:00~23:59之间任意设定开启时间和关闭时间,其设置方便、灵活,广泛应用于路灯、广告灯箱、霓虹灯等处的定时控制。

1 系统设计方案

1.1 系统总体结构

时间控制器主要由CLOCK(数字时钟)、TIMESET(定时器开启时间和关闭时间设置)、COMPARE(比较输出)、FUNC-CTRL(功能控制模块)和显示输出控制模块等组成。

系统方框图如图l所示。

基于CPLD和VHDL实现时间控制器系统的设计

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所示。

基于CPLD和VHDL实现时间控制器系统的设计

其中: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所示。

基于CPLD和VHDL实现时间控制器系统的设计

2.3 COMPARE模块

COMPARE模块实现系统当前时间与设定的开启时间和关闭时间的比较,从而输出定时控制输出信号。由于系统时间的小时和分钟分别采用24进制和60进制方式,分3种情况讨论:

a)当系统设定的开启时间小于关闭时间时,只要当前系统时间大于等于开启时间而小于关闭时间,则输出端co的输出信号为高电平,否则为低电平。

b)当系统设定的开启时间大于关闭时间时,则当系统时间大于等于关闭时间而小于开启时间时,输出端co为低电平,否则为高电平。

c)如果开启时间等于关闭时间,则输出端co为低电平,仿真结果如图4。

该模块部分VHDL源程序如下:

基于CPLD和VHDL实现时间控制器系统的设计

2.4 FUNC_CTRL模块

利用功能转换键(fun)使系统处在不同的功能状态:系统时间校对状态、开启时间设定状态、关闭时间设定状态、正常显示状态。利用功能转换键实现4个功能状态之间循环变化,并产生相应的控制信号(en_time、en_on、en_off)去控制CLOCK模块、TIME_SET、模块和DISP_CTRL模块等。在调整过程中,只有被选择到的功能状态指示灯被点亮,其他灯不亮,在正常模式状态下,状态灯都不亮。

其部分源程序如下:

基于CPLD和VHDL实现时间控制器系统的设计

基于CPLD和VHDL实现时间控制器系统的设计

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为数码管片选信号):

基于CPLD和VHDL实现时间控制器系统的设计

2.6 1 Hz标准时钟产生模块

系统时钟输入信号CLK1K为1 kHz信号,它可作为动态扫描时钟信号,如果把1 kHz信号经过3个10分频器FEN10便可得到标准的1 Hz时钟信号,作为系统时间模块的标准秒输入信号。

3 系统部分功能仿真

各部分模块完成后生成图形符号,在MAX+PLUSⅡ中采用图形法把各部分连接起来,如图1所示,对系统部分模块进行功能仿真,图5为系统时间设置仿真图。

基于CPLD和VHDL实现时间控制器系统的设计

在fun功能转换键上升沿来之后,系统时间调整指示灯ledtime变为高平,系统当前处在数字时钟校正状态,set_min是分钟设置端,sel[1..O]是片选信号,led[6..0]为数码管的输入信号,从图中可知符合功能要求。由于篇幅限制,略去其余模块的仿真图。

本系统采用的CPLD芯片Altera公司的EPF10KLC84-3芯片,用VHDL和MAX+PLUSⅡ10.0软件工具开发。设计输入完成后,进行整体的编译和逻辑仿真,然后进行转换、延时仿真生成配置文件,最后下载至CPLD器件,完成结构功能配置,实现其硬件功能。

4 结束语

该系统运用先进的EDA软件和VHDL,采用模块法白顶向下的设计原则,并借助于CPLD实现时间控制器的设计,充分体现了现代数字电路设计系统芯片化,芯片设计化设计的思想突破了传统电子系统的设计模式,使系统开发速度快、成本低、系统性能大幅度提高。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    449

    文章

    48573

    浏览量

    413078
  • cpld
    +关注

    关注

    32

    文章

    1244

    浏览量

    168566
  • vhdl
    +关注

    关注

    30

    文章

    816

    浏览量

    127810
收藏 人收藏

    评论

    相关推荐

    基于CPLDVHDL的智能拨号报警系统的设计与实现

    本文采用CPLD控制核心实现了智能报警系统。由于利用EDA技术进行系统设计,外围器件少、体积小、功耗低、可靠性高。通过修改
    发表于 02-20 14:34 4584次阅读
    基于<b class='flag-5'>CPLD</b>和<b class='flag-5'>VHDL</b>的智能拨号报警<b class='flag-5'>系统</b>的设计与<b class='flag-5'>实现</b>

    基于CPLD的SPI控制器的研究与实现

    我要做基于CPLD的SPI控制器的研究与实现,有没有会的人,求教,有什么资料推荐点也行
    发表于 04-27 14:37

    基于VHDL怎么实现交通灯控制器

    应用VHDL语言设计数字系统,大部分设计工作可在计算机上完成,从而缩短系统开发时间,提高工作效率。下面介绍基于VHDL设计交通灯
    发表于 10-18 07:21

    如何采用Altera的CPLD器件实现时间统一系统的B码源设计?

    如何采用Altera的CPLD器件实现时间统一系统的B码源设计?
    发表于 05-07 06:21

    怎么实现基于CPLD和MT8880的远程控制及播音系统设计?

    介绍了一种基于CPLD和MT8880的远程控制及语音通信的解决方案。给出了系统的原理框图和关键电路, 并对关键电路的工作原理进行了说明; 最后给出了系统主机
    发表于 05-26 07:01

    怎么实现基于CPLD的异步串行通讯控制器的设计?

    本文在对异步串行通信协议进行分析的基础上,根据实际工程的需要,对异步串行通信控制器进行了详细设计,并结合CPLD器件,采用VHDL语言,对设计方案进行了实现和验证,通过最后时序仿真的波
    发表于 05-28 06:53

    怎么实现基于CPLD的双屏结构液晶控制器的设计?

    液晶控制器原理是什么?怎么实现基于CPLD的双屏结构液晶控制器的设计?
    发表于 06-04 06:09

    CPLD 实现GPIB控制器的设计

    GPIB 控制器芯片是组建自动测试系统的核心,在测试领域应用广泛。本文拟讨论用ALTERA公司的低成本CPLD实现 GPIB 控制器的功
    发表于 07-28 17:16 22次下载

    基于VHDL的微型打印机控制器设计

    介绍基于VHDL的微型打印机控制器的设计。论述了微型打印机的基本原理,以及实现控制器VHDL语言设计。打印机的数据来自
    发表于 12-23 16:44 60次下载

    基于CPLD的电梯控制器的设计

    探讨电梯控制技术的发展历史和技术现状,仔细研究CPLD器件的工作原理,开发流程以及VHDL语言的编程方法;采用单片CPLD器件,在MAX+plusⅡ软件环境下,运用
    发表于 12-27 15:27 56次下载

    VHDL语言在CPLD实现串行通信

    摘 要: 串行通信是实现远程测控的重要手段。采用VHDL语言在CPLD实现了串行通信,完全可以脱离单片机使用。 关键词:
    发表于 06-20 12:43 643次阅读
    用<b class='flag-5'>VHDL</b>语言在<b class='flag-5'>CPLD</b>上<b class='flag-5'>实现</b>串行通信

    基于CPLD的电池管理系统双CAN控制器的设计

    基于CPLD的电池管理系统双CAN控制器的设计 本文针对整车对电池管理系统提出双CAN通信的要求,设计了由CPLD、TMS320LF240
    发表于 01-12 09:51 871次阅读
    基于<b class='flag-5'>CPLD</b>的电池管理<b class='flag-5'>系统</b>双CAN<b class='flag-5'>控制器</b>的设计

    基于VHDL的DRAM控制器设计

    本文提出一种新颖的解决方案:利用80C186XL的时序特征,采用CPLD技术,并使用VHDL语言设计实现DRAM控制器
    发表于 02-02 11:29 1299次阅读
    基于<b class='flag-5'>VHDL</b>的DRAM<b class='flag-5'>控制器</b>设计

    基于VHDL的SDRAM控制器实现

    基于VHDL的SDRAM控制器实现
    发表于 01-22 13:43 12次下载

    VHDL TFT LCD屏控制器CPLD程序免费下载

    本文档的主要内容详细介绍的是VHDL TFT LCD屏控制器CPLD程序免费下载。
    发表于 01-20 17:03 3次下载
    <b class='flag-5'>VHDL</b> TFT LCD屏<b class='flag-5'>控制器</b>的<b class='flag-5'>CPLD</b>程序免费下载