基于CPLD的1/100秒计时器电路
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于CPLD的1/100秒计时器电路
本设计为基于CPLD的1/100秒计时器电路。
计时器能实现0.01s~59.99s 的计时功能,计时误差≤ 0.01s,具有启、停和清零功能,计时数据采用七段数码管显示。
所有电路采用美国ALTERA公司的EPM7128SLC84-15芯片实现,使外围电路简单,性能可靠,特别是该芯片具有现场可编程功能,使修改设计简单。
在软件设计中使用了功能按键消抖技术,使功能操作准确无误。
标签:CPLD VHDL 计时器
一、引言
1/100s计时器常用于体育竞赛及各种要求有较高精确定时的领域。
本文设计的1/100s计时器具有如下功能:
1.分、秒、1/100秒计时功能;
2.具有分、秒、1/100秒显示功能;
3.具有启停功能;
4.具有复位功能。
整个系统的设计借助于VHDL,在EDA设计工具maxplus 下进行仿真,得到了良好的结果。
由于采用模块化的设计思想,使设计变得简单、方便、灵活性强。
二、设计方案分析
如图1所示,为1/100s计时器的整体方框图。
包括四部分组成:计时控制芯片(cpld)、复位及启停开关、四位数码管、时钟。
根据计时器的功能特点,具体实现时可分为五个子模块:键输入模块、时钟产生模块、定时计数数模块、控制模块、四位数码管显示驱动模块。
各模块的功能独立,可扩充性强,具有再次开发的潜力。
各模块的关系如图2所示。
三、模块设计
1.键输入模块(keyin)
键输入模块(keyin)即键扫描电路,25HZ键扫描脉冲对按键扫描,产生启/停单脉冲(stst)和清零单脉冲(res),并具有消抖功能。
键扫描电路工作原理如下(以产生清零单脉冲res为例,启/停单脉冲stst与此相同):
IF(keyclk’EVENT AND keyclk=‘0’)THEN
res1<=res0;
res0<=reset_sw;
stst1<=stst0;
stst0<=start_stop_sw;
END IF;
2.时钟产生模块(clkgen)
时钟产生模块是一个分频电路,对1000HZ时钟脉冲(clk)分频产生100HZ的计时脉冲(cntclk)和25HZ的键扫描脉冲(keyclk)。
3.定时计数模块(Cntblk)
定时计数模块为分、秒、1/100秒计时电路。
两个10进制计数器进行1/100秒计时,一个6进制计数器和一个10进制计数器进行秒计时,限于实验板只有四位数码管,没有设计分计时功能。
10进制计数器子模块前面已经生成,将10进制计数器程序适当修改可设计一个6进制计数器。
在原理图编辑器中调用三个10进制计数器和一个6进制计数器及相应输入输出端口即可建成定时计数数模块(Cntblk),编译通过后点File/Greate Default Symbol,生成符号(注.vhd文件编译完成时会自动生成符号,而.GDF文件编译完成时不会自动生成符号,要手动生成)。
4.控制模块(ctrl)
控制模块产生定时计数模块的使能控制信号(cnten)。
…
IF( res=‘1’)THEN
enb1<=‘0’;
ELSIF(stst’EVENT AND stst=‘1’)THEN
enb1<=NOT enb1;
END IF;
END PROCESS;
cnten<=enb1 AND cntclk;
…
若res=0,则cnten=0;若stst发生一次跳变,则cnten=cntclk,若stst发生二次跳变,则cnten=0。
5.四位数码管显示驱动模块(Disp)
因为实验板上四个共阴数码管是四位一体的,即四个数码管的码段(a~g)是共用的,若要逐位显示可通过位选端(A)控制,但必须采用扫描方式,只要扫描频率足够快,将看不到闪烁(图7)。
当A4A3A2A1=“1110”,显示第一位;当A4A3A2A1=“1101”,显示第二位;
当A4A3A2A1=“1011”,显示第三位;当A4A3A2A1=“0111”,显示第四位。
四位数码管显示驱动模块的原理框如图8:
四进制加法计数器模块(cnt4_v)对时钟脉冲clk计数,四个时钟脉冲循环一次,产生00,01,10,11四种状态,分别对应四个数码管的四位。
二-四译码器模块(decode2_4_v)将00,01,10,11译码成位选信号1110,1101,1011,0111从dig_sel[3..0]端口输出。
十六-四多任务器模块(multi16_4_v)从输入的待显示的十六位数据d[15..0]中每次选取四位输出。
七段译码器模块(seven_v)将待显示的四位二进制数据转换成七段码从dig_out[6..0]端口输出。
三、结束语
本设计从总体要求出发,采用自顶向下逐步细化的方法,将系统模块化,使得系统具有很强的扩充性,并且在实现设计的基础上,采用maxplus的仿真环境得到理想的仿真效果。
在软件设计中使用了功能按键消抖技术,使功能操作准确无误。
参考文献
[1]梁丽:基于CPLD的多功能计时器的设计[J].北京工商大学学报,2005.23~1,53~55
[2]郭在华马洪明杨玲:基于数字逻辑的多功能计时器的设计及实现[J].世界电子元器件,2003~3,73~74
[3]张胜宇谭作亘:基于CPLD的计算机并口EPP模式通讯实现[J].微计算机信息,2007~26,231~233
“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文”。