基于单片机系统和CPLD的数字频率计的设计

发布者:文江桂青最新更新时间:2011-12-23 关键字:单片机系统  数字频率计 手机看文章 扫描二维码
随时随地手机看文章

  引言

  在传统的控制系统中,通常将单片机作为控制核心并辅以相应的元器件构成一个整体。但这种方法硬件连线复杂、可靠性差,且在实际应用中往往需要外加扩展芯片,这无疑会增大控制系统的体积,还会增加引入干扰的可能性。对一些体积小的控制系统,要求以尽可能小的器件体积实现尽可能复杂的控制功能,直接应用单片机及其扩展芯片就难以达到所期望的效果。

  复杂可编程逻辑器件(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选择后,从控制模块CONTROL1的FX1端输入,基准频率信号从FS端输入,CLR是初始化信号。在进行频率或周期测量时,完成如下步骤:

  (1)在CLR端加正脉冲信号完成测试电路状态的初始化。

  (2)由预置门控信号将STROBE置高电平,预置门开始定时,此时由被测信号的上沿打开计数器COUNT,同时对基准频率信号和被测信号进行计数。

  (3)顶置门定时结束信号把STROBE置为低电平(由单片机来完成),在被测信号的下一个脉冲的上沿到来时,COUNT停止计数。

  (4)计数结束后,ED1端输出低电平来指示测量计数结束,单片机得到此信号后,即可利用SS0,SS1进行选择,四次分别读回COUNT中基准频率信号和被测信号计数值,并根据上述测量公式进行运算,计算出被测信号的频率或周期值。

  系统软件设计

  本系统的单片机主控及其外围电路模块用Keil C语言编写,软件模块对应于硬件电路的每一个部分,还包括部分数据计算和转换模块。CPLD模块用VHDL语言编写,并在Max+PlusⅡ平台上,完成 CPLD的软件设计、编译、调试、仿真和下载。系统初始化后,主程序不断扫描键盘子程序,当其键按下时,程序跳转到相应的子程序执行其功能,然后返回继续 执行键盘扫描主程序。其主程序流程图如图5所示。

  

  图5 系统主程序流程

  试验测试的结果如表1所示。

  结论

  本文将智能控制灵活、逻辑运算能力强的单片机和集成度高、运算速度快的CPLD相结合,突破了传统电子系统设计的瓶颈,使设计的系统具有结构紧凑、体积小,可靠性高,测频范围宽、精度高等优点。它可作为独立的仪表使用,也可用做其他仪器仪表的组成部分。

关键字:单片机系统  数字频率计 引用地址:基于单片机系统和CPLD的数字频率计的设计

上一篇:基于单片机实现嵌入式因特网终端的设计
下一篇:松下分体空调单片机控温度检测回路联接电路图

推荐阅读最新更新时间:2024-03-16 12:49

Proteus与Arduino的整合在单片机系统开发中的应用
  1.引言   Arduino是一款便捷灵活、方便上手的开源电子原型平台,具有接口丰富、编程环境简便、自由度大与可拓展性强等优点.它基于AVR平台,对AVR库进行了二次编译封装,将复杂的单片机底层代码封装成简单实用的函数,使使用者不用关心单片机编程繁琐的细节,如寄存器、地址指针等基本不用管,从而大大降低了单片机系统开发难度,特别适合老师、学生和一些业余爱好者使用。   由于Arduino使用者一般都是那些对电路知识、电子技术及单片机技术等了解不深入的初学者,如何在Arduino开发过程中快速有效的提高他们的单片机系统开发能力及电子电路设计能力是一个需要迫切解决的问题。   Proteus的引入较好的解决了存在的问题。  
[单片机]
Proteus与Arduino的整合在<font color='red'>单片机系统</font>开发中的应用
单片机系统总线及总线构造
对于没有内部ROM的单片机或者当程序较长、片内ROM容量不够时,用户必须在单片机外部扩展程序存储器。MCS-51单片机片外有16条地址线,即P0口和P2口,因此最大寻址范围为64 KB(0000H~FFFFH)。 MCS-51系列单片机片外引脚可以构成如图所示的三总线结构: 地址总线(AB) 数据总线(DB) 控制总线(CB) 所有外部芯片都通过这三组总线进行扩展。
[单片机]
<font color='red'>单片机系统</font>总线及总线构造
基于单片机系统中的多任务多线程机制的实现
首先要指出的是一点是,我们不是讨论嵌入式实时多任务操作系统(RTOS)的设计。我们讨论的是,在不使用RTOS的控制系统中,如何体现多任务多线程机制的程序设计思想。 一些嵌入式设备可以需要操作系统,例如掌上电脑、PDA、网络控制器等高性能的手持设备和移动设备。它们往往和无线通信、互联网访问和多媒体处理等复杂而强大的功能联系在一起;对CPU要求也很高,往往是以通用CPU为原型的各种高端嵌入式处理器。 作为一个完整的操作系统,RTOS有一个可靠性很高的实时内核,将CPU时间、中断、I/O、定时器等资源都包括起来,留给用户一个标准的应用程序接口(API);根据各个任务的优先级,合理地在不同任务之间分配CPU的时间,保证程序执
[单片机]
提高单片机系统可靠性的研究
  目前,大量的嵌入式系统均采用了单片机,并且这样的应用正在更进一步扩展;但是多年以来人们一直为单片机系统的可靠性问题所困惑。在一些要求高可靠性的控制系统中,这往往成为限制其应用的主要原因。   1 单片机系统的失效分析   一个单片机系统的可靠性是其自身软硬件与其所处工作环境综合作用的结果,因此系统的可靠性也应从这两个方面去分析与设计。对于系统自身而言,能不能在保证系统各项功能实现的同时,对系统自身运行过程中出现的各种干扰信号及直接来自于系统外部的干扰信号进行有效的抑制,是决定系统可靠性的关键。有缺陷的系统往往只从逻辑上去保证系统功能的实现,而对于系统运行过程中可能出现的潜在的问题考虑欠缺,采取的措施不足,在干扰信号真正袭来的时
[单片机]
提高<font color='red'>单片机系统</font>可靠性的研究
利用EPP接口协议实现高速数据通信
前言 单片机系统中常常需要具备与PC机通信的功能,便于将单片机中的数据传送到PC机中用于统计分析处理;有时又需要将PC机中的数据装入单片机系统中,对单片机程序进行验证和调试。目前常用的通信方式是串行通信,但传输速率太低,以9600bps计算,传输1MB至少需要10min(分钟)以上。并行通信克服了串行通信传输速率低的缺点。标准并行口SPP(Standard Parallel Port)方式实现了由PC机向外设的单向传输,但实现PC机接收外设发送的数据则非常麻烦;而增强型并行口EPP(Enhanced Parallel Port)协议却很好地解决了这一问题,能够实现稳定的高速数据通信。   一、EPP接口协议介绍 E
[嵌入式]
单片机系统中的红外通信接口
摘要:本文结合复费率电能表中红外通信的设计实从事贸易,介绍了单片机系统中红外通信的软硬件设计方法,并给出了具体的电路原理和通信源程序。 在许多基于单片机的应用系统中,系统需要实现遥控功能,而红外通信则是被采用较多的一种方法。一般市场上的摇控器协议简单、保密性不强、抗干扰能力较弱。这里,我们介绍一种基于字节传输的红外遥控系统,可以适合于各种复杂的应用场合。 红外通信的基本原理 红外通信的基本原理是发送端将基带二进制信号调制为一系列的脉冲串信号,通过红外发射管发射红外信号。常用的有通过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种方法。本系统采用的为永时市制方法。数据比特的
[单片机]
<font color='red'>单片机系统</font>中的红外通信接口
单片机系统软件如何巧妙抗干扰
在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51 单片机 系统为例,对微机系统软件抗干扰方法进行研究。 1 软件抗干扰方法的研究 在工程实践中,软件抗干扰研究的内容主要是: 一、消除模拟输入信号的嗓声(如数字滤波技术);二、程序运行混乱时使程序重入正轨的方法。本文针对后者提出了几种有效的软件抗干扰方法。 1.1 指令冗余 CPU取指令过程是先取操作码,再取操作数。当PC受干扰出现错误,程序便脱离正常轨道“乱飞”,当乱飞到某双字节指令,若取指令时刻落在操作数上,误将操作数当作操作码,程序将出错。若“飞” 到了三字节指令,出错机率更大。 在关键地方人为插入一些单
[单片机]
<font color='red'>单片机系统</font>软件如何巧妙抗干扰
AM30L V0064D在单片机系统中的典型应用
摘要:AM30LV0064D是AMD公司生产的一种新型超与非(U1traNAND)结构的闪速存储器(Flash)。本文介绍它的工作原理,以及它与AT89LS8252单片机的硬件接口电路和PLD内部逻辑控制设计的代码,并对编程操作的软件流程进行了描述。 关键词:AM30LV0064D U1traNAND 闪速存储器 1 概述 AM30LV0064D是AMD公司生产的一种新型非易失性闪速存储器。或非(NOR)结构的Flash具有高速的随机存取功能,但成本较高;新的UltraNAND结构的Flash相对于NOR结构的Flash,具有价格低,容量特别大的优势,支持对存储器高速地连续存取。谝芯片工作电压范围在2.7~3.6V,特别适
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved