用CPLD实现的数字钟控系统
发布时间:2008/9/2 0:00:00 访问次数:708
在系统编程(isp)器件是在20世纪90年代出现的最先进的可编程器件,它无须编程,可通过pc机经下载电缆直接对安装在用户目标版上的isp器件重复编程,实现系统重构,它给电子产品的设计和产生带来了革命性的变化。
isp synario system是lattice半导体公司的isplsi系列器件的开发软件,软件内除了基本逻辑器件库外,还有一个较为完善的宏(macro)器件库,每一个宏器件是一组预先编好存放在库中的逻辑方程,它代表一个逻辑模块,设计时可作为逻辑器件调用。充分利用宏器件可以使逻辑设计大大简化。
在进行复杂逻辑系统设计时,可以将整个系统划分为若干模块,而每个模块还可划分为若干子模块,设计时可由底层模块开始向上逐级设计、调试(或仿真),最后进行顶层组装调试。逻辑系统中的子模块可以直接用abel-hdl语言编辑,也可直接由电路图编辑而成。以下简要介绍利用isplsi1032e器件构成的数字钟控系统。
1 数字钟控系统的基本结构
数字钟控系统结构框图如图1所示,数字钟部分由秒、分、时计数电路,上、下午(a/p)转换电路,译码显示电路以及校时电路等组成。七只led数码管分别显示上、下午和时、分、秒。钟控部分由二—十进制译电路,时间选择矩阵电路,定时电路以及发声电路等组成。脉冲信号发生器提供秒脉冲和发声高频振荡源。整个系统除了系统控制开关、脉冲信号发生器、发声电路以及led数码管外,其余部分(如虚线框内所示)全部在一片isplsi1032e内实现。
图1 数字钟控系统结构框图
2 数字钟在isplsi1032e内的实现
数字钟内核心部分是时、分、秒计数器,选用宏器件中的两位十进制递增计数器cdu38分别构成时、分、秒计数器。cdu38是一个由abe-hdl语言编辑的两位十进制递增计数器,其逻辑符号及功能表如图2所示。输出端:q7 ̄q0以8421bcd码形式输出两位十进制数,cao为进位输出端。输入端:clk为脉冲输入端(上跳沿触发),cd为清零端,cai为进位输入(计数容许)端,en为选片使能端,ld为同步置数控制端,d7 ̄d0为置数输入端。可以通过“反馈置数”方式利用宏器件cdu38组成100以内的任意进制计数器。
图2 宏器件cdu38的逻辑符号(a)和功能表(b)
2.1 秒计数模块
秒计数器为一60进制递增计数器,将cdu38的输出端q6、q4、q3、q0通过与门2控制置数控制端ld,因为置数输入端d7 ̄d0全部接“地”,所以当计数器从0计数至59时,ld端为高电平,为置数做好准备。同时进位输出cao(取自ld端)也为高电平,可用做高位计数器的级连信号。当第60个脉冲到来时,计数器置零,实现60进制计数。秒计数器子电路如图3所示,图中输出端q7 ̄q0采用总线表示方式,其模块符号见图8数字钟模块中i-8。
图3 秒计数器子电路
2.2 分计数模块
分计数器子电路如图4所示,其模块符号见图8数字钟模块中i-7。分计数器也是一个60进制递增计数器,其构成思路与秒计数器相同,不再赘述。在分计数子电路中为cdu38输出端配接了两个输出高电平有效的bcd7段显示译码子模块(ttl47gb),可直接驱动7段显示led数码管。输出高电平有效的bcd7段显示译码子模块符号与用abel—hdl语言编写的子程序如图5所示。
图4 分计数器子电路
图5 bcd7段显示译码电路模块符号与子程序
2.3 时计数模块
时计数器子电路如图6所示,其模块符号见图8数字钟模块中i-5。时计数器也是利用cdu38通过“反馈置数”方式构成。采用12小时计时制,q4、q1经与门i19和i11接止ld端,计数之间采用同步级连方式,当q4和q1为“1”且进位输入端cai(接分计数器进位输出cao)为高电平,此时对应时间为12时59分59秒,这时cdu38的ld端为高电平,而d7 ̄d1接“地”,d0接高电平,因此在下一个秒脉冲到来之时,时计数器数值为01(分、秒计数器均为00),实现12进制计数。
在系统编程(isp)器件是在20世纪90年代出现的最先进的可编程器件,它无须编程,可通过pc机经下载电缆直接对安装在用户目标版上的isp器件重复编程,实现系统重构,它给电子产品的设计和产生带来了革命性的变化。
isp synario system是lattice半导体公司的isplsi系列器件的开发软件,软件内除了基本逻辑器件库外,还有一个较为完善的宏(macro)器件库,每一个宏器件是一组预先编好存放在库中的逻辑方程,它代表一个逻辑模块,设计时可作为逻辑器件调用。充分利用宏器件可以使逻辑设计大大简化。
在进行复杂逻辑系统设计时,可以将整个系统划分为若干模块,而每个模块还可划分为若干子模块,设计时可由底层模块开始向上逐级设计、调试(或仿真),最后进行顶层组装调试。逻辑系统中的子模块可以直接用abel-hdl语言编辑,也可直接由电路图编辑而成。以下简要介绍利用isplsi1032e器件构成的数字钟控系统。
1 数字钟控系统的基本结构
数字钟控系统结构框图如图1所示,数字钟部分由秒、分、时计数电路,上、下午(a/p)转换电路,译码显示电路以及校时电路等组成。七只led数码管分别显示上、下午和时、分、秒。钟控部分由二—十进制译电路,时间选择矩阵电路,定时电路以及发声电路等组成。脉冲信号发生器提供秒脉冲和发声高频振荡源。整个系统除了系统控制开关、脉冲信号发生器、发声电路以及led数码管外,其余部分(如虚线框内所示)全部在一片isplsi1032e内实现。
图1 数字钟控系统结构框图
2 数字钟在isplsi1032e内的实现
数字钟内核心部分是时、分、秒计数器,选用宏器件中的两位十进制递增计数器cdu38分别构成时、分、秒计数器。cdu38是一个由abe-hdl语言编辑的两位十进制递增计数器,其逻辑符号及功能表如图2所示。输出端:q7 ̄q0以8421bcd码形式输出两位十进制数,cao为进位输出端。输入端:clk为脉冲输入端(上跳沿触发),cd为清零端,cai为进位输入(计数容许)端,en为选片使能端,ld为同步置数控制端,d7 ̄d0为置数输入端。可以通过“反馈置数”方式利用宏器件cdu38组成100以内的任意进制计数器。
图2 宏器件cdu38的逻辑符号(a)和功能表(b)
2.1 秒计数模块
秒计数器为一60进制递增计数器,将cdu38的输出端q6、q4、q3、q0通过与门2控制置数控制端ld,因为置数输入端d7 ̄d0全部接“地”,所以当计数器从0计数至59时,ld端为高电平,为置数做好准备。同时进位输出cao(取自ld端)也为高电平,可用做高位计数器的级连信号。当第60个脉冲到来时,计数器置零,实现60进制计数。秒计数器子电路如图3所示,图中输出端q7 ̄q0采用总线表示方式,其模块符号见图8数字钟模块中i-8。
图3 秒计数器子电路
2.2 分计数模块
分计数器子电路如图4所示,其模块符号见图8数字钟模块中i-7。分计数器也是一个60进制递增计数器,其构成思路与秒计数器相同,不再赘述。在分计数子电路中为cdu38输出端配接了两个输出高电平有效的bcd7段显示译码子模块(ttl47gb),可直接驱动7段显示led数码管。输出高电平有效的bcd7段显示译码子模块符号与用abel—hdl语言编写的子程序如图5所示。
图4 分计数器子电路
图5 bcd7段显示译码电路模块符号与子程序
2.3 时计数模块
时计数器子电路如图6所示,其模块符号见图8数字钟模块中i-5。时计数器也是利用cdu38通过“反馈置数”方式构成。采用12小时计时制,q4、q1经与门i19和i11接止ld端,计数之间采用同步级连方式,当q4和q1为“1”且进位输入端cai(接分计数器进位输出cao)为高电平,此时对应时间为12时59分59秒,这时cdu38的ld端为高电平,而d7 ̄d1接“地”,d0接高电平,因此在下一个秒脉冲到来之时,时计数器数值为01(分、秒计数器均为00),实现12进制计数。
上一篇:扩展数字家庭的存储容量