基于51单片机和CPLD的数字频率计的设计
引言
在传统的控制系统中,通常将单片机作为控制核心并辅以相应的元器件构成一个整体。但这种方法硬件连线复杂、可靠性差,且在实际应用中往往需要外加扩展芯片,这无疑会增大控制系统的体积,还会增加引入干扰的可能性。对一些体积小的控制系统,要求以尽可能小的器件体积实现尽可能复杂的控制功能,直接应用单片机及其扩展芯片就难以达到所期望的效果。
复杂可编程逻辑器件(CPLD)具有集成度高、运算速度快、开发周期短等特点,它的出现,改变了数字电路的设计方法、增强了设计的灵活性。基于此,本文提出了一种采用Altera公司的CPLD(ATF1508AS) 和Atmel公司的单片机(AT89S52)相结合的数字频率计的设计方法。该数字频率计电路简洁,软件潜力得到充分挖掘,低频段测量精度高,有效防止了干扰的侵入。独到之处体现在用软件取代了硬件。
CPLD开发环境简介
1 VHDL语言
VHDL(Very High Speed Integrated Circuit Hardware Description Language,超高速集成电路硬件描述语言)是由美国国防部开发的一种快速设计电路的工具,目前已经成为IEEE的一种工业标准硬件描述语言。相比传统的电路系统设计方法,VHDL具有多层次描述系统硬件功能的能力,支持自顶向下和基于库的设计的特点,因此设计者可以不必了解硬件结构。从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用VHDL对电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,下载到具体的CPLD器件中去,从而实现可编程的专用集成电路(ASIC)的设计。
2 Max+PlusⅡ开发工具
Max+PlusⅡ开发工具是美国Altera公司自行设计的一种CAE软件工具。它具有全面的逻辑设计能力,设计者可以自由组合文本、图形和波形输入法,建立起层次化的单器件或多器件设计。利用该工具配备的编辑、编译、仿真、综合、芯片编程等功能,将设计的电路图或电路描述程序变成基本的逻辑单元写入到可编程芯片中(如CPLD、FPGA),做成ASIC芯片。
它支持FLEX、MAX及Classic等系列CPLD器件,设计者无须精通器件内部的复杂结构 ,只需用自己熟悉的设计输入工具,如高级行为语言、原理图或波形图进行设计输入,它便将这些设计转换成目标结构所要求的格式,从而简化了设计过程。而且 Max+PlusⅡ提供了丰富的逻辑功能库供设计者使用。设计者利用以上这些库及自己添加的宏功能模块,可大大减轻设计的工作量。使用Max+PlusⅡ 设计CPLD器件的流程如图1所示。
图1 Max+PlusⅡ设计CPLD器件的流程图
等精度测频原理
本系统采用等精度测频的原理来测量频率,其原理如图2所示。
图2 等精度测频原理图
图2中的门控信号是可预置的宽度为Tpr的一个脉冲。CNT1和CNT2是两个可控计数器。标准频率信号从CNT1的时钟输入端FS输入,其频率为Fs;被测信号经整形后从CNT2的时钟输入端FIN输入,设其实际频率为Fxe,测量频率为Fx。
当门控信号为高电平时,被测信号的上沿通过D触发器的Q端同时启动计数器CNT1和CNT2。对被测信号Fx和标准频率信号Fs同时计数。当门控信号为 低电平时,随后而至的被测信号的上沿将使这两个计数器同时关闭。设在一次门控时间Tpr中对被测信号计数值为Nx,对标准频率信号的计数值为Ns,则:
Fx/Nx=Fs/Ns(标准频率和被测频率的门宽时间Tpr完全相同)就可以得到被测信号的频率值为:
Fx=(Fs/Ns)×Nx
系统硬件电路设计
1 系统总体设计
本系统的硬件电路包括键盘控制模块、显示模块、输入信号整形模块以及单片机主控和CPLD模块。键盘控制模块设置5个功能键和3个时间选择键,键值的读入采用一片74LS165来完成,显示模块用8只74LS164完成LED的串行显示。
系统由一片CPLD完成各种测试功能,对标准频率和被测信号进行计数。单片机对整个测试系统进行控制,包括对键盘信号的读入与处理;对CPLD测量过程 的控制、测量结果数据的处理;最后将测量结果送LED显示输出。被测信号整形电路主要对被测信号进行限幅、放大、再经施密特触发器整形后送入CPLD。用 50MHz的有源晶振作为CPLD的测试标准频率。单片机由外接12MHz标准晶振提供时钟电路。系统组成原理如图3所示。
图3 系统原理框图
2 CPLD逻辑模块设计
根据等精度测频原理,利用VHDL实现的测频顶层电路模块逻辑结构如图4所示。
图4 系统顶层模块图
该模块由4个子模块构成。其中CONTROL1为测频或测周期控制模块;CONTROL2为测脉宽和占空比控制模块;CHOICE为自校与测量选择模块;COUNT为基准频率和被测频率计数器模块。
被测信号脉冲经CHOICE选择后
- 关于RTX51 TINY的分析与探讨(05-30)
- 浅析8051模块化编程技巧(05-28)
- 基于DSP和单片机通信的液晶显示设计方案(07-20)
- 锁相环控制及初始化简析(08-27)
- 基于MSP430自动胀管控制器的研究(09-07)
- 嵌入式C实现延时程序的不同变量的区别(03-01)