老古开发网首页
导航:老古开发网首页文章索引文章分类EDA/IC设计→[以CPLD为核心的定时器]
| -文章搜索 - 最新文章 - |

以CPLD为核心的定时器

发布时间:2006年5月12日 点击次数:334
来源:国外电子元器件   作者:北方工业大学 王振红 钱 飞
 

    摘要:文章介绍了以EDA技术作为开发手段来实现99分钟内定时的设计构成和各电路模块的功能,并给出了各模块的设计源程序。

    关键词:VHDL语言 CPLD 定时器

传统的99分钟定时器的设计硬件连线比较复杂,可靠性差。随着CPLD的出现,基于VHDL语言的定时器电路设计将变得相对简单而且性能稳定,这点充分体现了可编程逻辑器件数字电路中的优越性。

1 总体结构

在设计具有整体清零功能,并可在99分钟内任意定时的定时器时,笔者采用了MAX7128LC84-15作为主芯片和两位数码管,并采用时钟信号来提供秒信号设计了一个简单的定时器。该定时器的工作方式是以秒速度递增置预定时间,而以分速度递减至零。同时,该定时器还具有报警或启动其它电路的功能。

基于VHDL语言,并使用Top-Down的设计方法设计的定时器的总体架构如图1所示。

图中的控制计数部分由一个计数模块构成,用来实现计数等主要功能,而显示部分则用来对计数结果进行扫描译码和输出显示。其输出接到数据码管,包括两个模块,分别为二选一选器模块和译码器模块。

计数模块用来输入秒信号,并输出两个四位的BCD码,可分别用来表示个位与十位,也可整体复位清零。该计数器以秒的速度递增至清零。该计数器以秒的速度递增至99来实现置位;而以分的速度递减到零以实现计时功能。

二选一选择器模块用于这个位与十位进行循环扫描输出,并将输出送到译码器;

译码器模块可对输入的四位BCD码进行七段码译码,然后输出到数码管。

2 电路设计

图2所示为TIMER模块的示意图。其中,RES用来整体复位清零;CLK和于提供秒信号,其频率为1Hz;CLKIII是用来扫描输出的,应选用频率大于50Hz的时钟;CN用来置位,高电平有效,利用它能够以秒的速度将定时顺从零递增到所定时的时间,也能够以分的速度将定时退调到零。COUT的输出为高电平,可用于启动各种电路或发出警报。该定时器的时间变化都可在数码管上显示出来。图3是该定时器的线路构成图。

3 程序设计

该定时器的程序设计中主要包含CRTL计数模块、SEL2选择模块和DSIP译码器模块三部分的设计。

3.1 计数模块

CTRL计数模块是该定时器的核心部分。REF为复位端,用来清零,采用异步复位方式;CN用于置位,高电平有效。COUT端将在定时结时产生高电平。LOW和HIGH为四位BCD码输出端口,可用于显示。当CN有效时,CLK脉冲上升沿到来,计数加1;当CN为低电平时,置位结束,进入计时阶段,每60个时钟周期(相当于一分钟)发出一个脉冲,使输出计数减1,直到计时结束,命名COUT位为高电平为止。该模块的源程序如下:

library ieee;

use ieee.std-logic-1164.all;

use ieee.std-logic-unsigned.all;

entity ctrl is port (cn,res,clk:in std-logic;

cout:out std-logic;

low,high:out std-logic-vector(3 downto 0));

end ctrl;

architecture rtl of ctrl is signal displow,disphigh;std-logic-vector(3 downto 0);

begin

a:process(clk,cn,res)

variable cnt:integer range 0 to 59;

begin

if(res=''0'')then

displow<="0000";

disphigh<="0000";

cnt:=0;

cout<=''0''

elsif(clk''event and clk=''1'')then

if cn=''1''then

if displow<="1001"then

diplow<=dislow+''1'';

else displow<="0000";

disphigh<=disphigh+''1'';

end if;

else

if cont<59 then

cnt:=cnt+1;

else

cnt:=0

if displow>=1 then

displow<=displow-''1'';

elsif displow=1 then

displow<="0000";

if disphigh=0 then

cout<=''1''

end if;

elsif(disphigh>0)then

disphigh<=disphigh-''1'';

displow<="1001";

end if;

end if;

end if;

end if;

end process;

high<=disphigh;

low<=displow;

end rlt;

3.2 选择模块

二选一选择模块SEL2的主要作用是接收由ctlr输出的四位BCD码,并通过选择信号sel进行选择输出。其源程序如下:

entity sel2 is

port (d1,d2:in std-logic-vector(3 downto 0))

sel:in std-lgogic;

q:out std-logic-vector(3 downto 0);

end sel2;

architecture rtl of sel2 is

begin

q<=d1 when sel=''1''else

d2;

end rtl;

3.3 译码器模块

译码器模块DISP的作用是对输入四位BCD码进行七段码译码,其输出Q0~Q6分别接数码管的a~g段,它的操作规程源程序如下:

entity disp is

port(d:in std-logic-vector(3 downto 0);

q:out std_logic_vector(6 downto 0);

end dsip;

architecture rtl of disp is

begin

process(d)

begin

case d is

when "0000"=>q<="0111111";

……

when others=>q<="1101111";

end case;

end process;

end rtl;

4 结束语

笔者对该定时器系统进行了仿真测试,得到了预期的效果。实际应用后,也取得很好的效果。因此,该定时器以其体积小、外设简单、工作可靠等优点充分体现了新器件技术应用的优越性。


欢迎进入老古论坛进行讨论
[EDA/IC设计] 相关文章:
用AlteraFLEX10K可编程逻辑器件实现复用器的设计
简介:
摘要: 以三路固定时分复用器的设计为例,介绍了Altera公司的FLEX10K嵌入式可编程逻辑器件的自顶向下设计方法,给出了FLEX 10K嵌入式可编程器件在Mux+plus Ⅱ环境下对多路时分复用器的仿真实现。 关键词: 可编程逻辑器件 Mux+plus Ⅱ 时分复用 仿真 FLEX 10K ......

利用单片机实现CPLD的在系统编程
Anasift提供针对模拟IC设计的DFM优化工具
基于CPLD的开放式四轴运动控制器的设计
单片机+CPLD结构体系在电子设计中的应用
分时复用时CPLD设计变频系统中的应用
一种基于移位寄存器的CAM的VerilogHDL实现
一种交通信息服务系统的设计
用单片机实现可编程逻辑器件的配置
循环冗余校验码的单片机及CPLD实现
 
下一个:[另类其他]旋转变压器—数字转换器AD2S83在伺服系统中的应用
简介:
摘 要: 介绍了旋转变压器-数字转换器AD2S83在伺服系统中的应用,重点介绍了该器件与主控芯片DSP(TMS320F240)的接口电路设计。 关键词: 伺服系统 旋转变压器-数字转换器 在伺服系统中,需要实时地检测出电机转子的位置,包括转子的绝对位置和增量式位置,同时还需检测出电机的速度,以实现对电机的转矩、速度、及其驱动的机构的......
 

上一个:[另类其他]机械传动间隙的实时检测电路设计

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:否 执行时间:16毫秒