基于单片机与fpga的等精度频率计的设计单片机.docx
《基于单片机与fpga的等精度频率计的设计单片机.docx》由会员分享,可在线阅读,更多相关《基于单片机与fpga的等精度频率计的设计单片机.docx(59页珍藏版)》请在冰豆网上搜索。
![基于单片机与fpga的等精度频率计的设计单片机.docx](https://file1.bdocx.com/fileroot1/2023-2/23/b31d5465-3a04-4c3d-9372-9ef220c0cef8/b31d5465-3a04-4c3d-9372-9ef220c0cef81.gif)
基于单片机与fpga的等精度频率计的设计单片机
题目:
基于单片机与FPGA的等精度频率计的设计
---------单片机部分
基于单片机与FPGA的等精度频率计的设计---------单片机部分
摘要
本设计课题为基于单片机与FPGA的等精度频率计的设计。
本设计以AT89C51单片机作为系统的主控部件,实现整个电路的信号控制、数据运算处理等功能;一片现场可编程逻辑器件FPGA芯片FLEXEPF10K20RC208-4完成各种时序逻辑控制、计数功能。
本文详细论述了等精度数字频率计的测频原理、硬件电路的组成、设计和单片机软件编程设计、系统的误差分析。
其中硬件电路包括键盘控制模块、显示模块和测量模块,键盘模块采用独立式的键盘,实现了测频功能,还实现了周期、脉宽、占空比测量等功能的选择;显示模块采用静态显示方式,因此电路结构简单,显示方便;AT89C51单片机的软件编程采用灵活易读的C语言。
本设计将AT89C51单片机的控制灵活性和FPGA芯片的现场可编程性相结合,不但大大缩短了开发研制周期,而且使本系统具有结构紧凑、体积小、可靠性高、测频范围宽、精度高等优点。
关键词:
EDA技术;单片机;频率计;FPGA
BasedontheMCUandFPGAsuchasthefrequencyaccuracyofdesign
----SCMpart
Abstract
ThedesignissuesforthefrequencyofsuchasthefrequencyaccuracyofdesignwhichbasedontheMCUandFPGA.InthedesignAT89C51asamaincomponent,completedthewholecircuit’ssignalcontrol,thedataprocessingfunctionsandsoon;afieldprogrammablelogicdeviceFPGAandchipFLEXEPF10K20RC208-4completedlogiccontrolingandcountingfunction.
Thispaperdiscussesindetailtheaccuracyofthefiguressuchasthefrequencyinfrequencymeasurementprinciple,hardwarecircuitcomponents,designandmicrocontrollersoftwaredesign.Circuitincludeshardwarekeyboardcontrolmodule,moduleandmeasurementmodulekeyboardmoduleofsixkeyschoice,itnotonlycompletesthefunctionaltestfrequencybutalsocompletesthecycle,pulsewidth,dutycyclemeasurementfunctionofchoice;Modulestaticdisplaymodemadethecircuitsimple,andconventiontoshow;AT89C51flexiblesoftwareprogramminginClanguageaccessibility.ThedesignwhichcombinatedAT89C51controlflexibilityandFPGAFieldProgrammablePhasenotonlygreatlyshortensthedevelopmentcycletime,butalsomakesthesystemhavetheadvantagesofcompact,smallsize,highreliability,Measuringfrequencyrange,thehigherprecision.
Keywords:
EDAtechnology;Microcontroller;Cymometer;FPGA
第一章引言
一.1研究背景与意义
随着科学技术与计算机应用的不断发展,以单片机作为核心的测量控制系统层出不穷。
在被测信号中,较多的是模拟和数字开关信号,此外还经常遇到以频率为参数的测量信号,例如流量、转速、晶压力传感器以及经过参变量―频率转换后的信号等等。
频率信号抗干扰性强,易于传输,可以获得较高的测量精度,所以研究测频方法是电子测量领域的重要内容。
传统的数字频率计一般由分离元件搭接而成,其测量范围、测量精度和测量速度都受到很大的限制。
虽然单片机的发展与应用改善了这一缺陷,但由于单片机本身也受到工作频率及内部计数器位数等因素的限制,所以无法在此领域取得突破性的进展。
随着新型可编程逻辑器件FPGA技术的发展,能够将大量的逻辑功能集成在单个器件中,FPGA根据不同的需要所提供的门数可以从几百万到上百万门,从根本上解决了单片机的先天性不足。
本课题所设计的等精度数字频率计不但集成度远远超过了以往的数字频率计,而且在标准频率等外部条件的允许下,可以根据不同场合的精度要求,对硬件描述语言进行一定的改动,使系统在精度提高的同时,而不增加系统硬件,从而降低系统的整体造价。
此外,系统芯片(SCO)的发展也要求其包含频率测量的功能,所以用FPGA实现数字频率计也是实现系统芯片的前提条件。
该数字频率计的设计及实现应用计数器法,基于上述优势开发的频率计具有良好的应用价值和推广前景。
一.2频率计的发展概况
传统的数字频率计可以通过普通的硬件电路组合来实现,一般由分离元件搭接而成,其开发过程、调试过程十分繁琐,而且由于电子器件之间的互相干扰,影响频率计的精度,体积较大,已不适应电子设计的发展要求[1][2]。
MSC-51系列单片机具有体积小、功能强、性能价格比高等特点,广泛应用于工业测量、控制和智能化仪器、仪表等领域。
以MSC-51系列单片机为核心的频率计设计,较分离元件搭接而成的频率计改善了性能、提高了可靠性,并可以采用软件实现各种频率测量方法[3]。
但由于受到单片机本身特性的影响,其晶振最大只能为24MHz,以单片机为核心的频率计的测频范围及精度受到很大的制约。
随着EDA技术的发展,现代频率计的设计多采用基于FPGA芯片的方法来实现频率计的设计,即通过VHDL(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage)硬件描述语言的设计,用FPGA来实现。
FPGA(FieldProgrammableGateArray)即现场可编程逻辑器件是由存放在片内RAM中的程序来设置其工作状态的,因此工作时需要对片内的RAM进行编程。
用户可以根据不同的配置模式,采用不同的编程方式。
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,培植完成后,FPGA进入工作状态。
掉电后,FPGA恢复成白片,内部逻辑关系消失,因此FPGA能够反复使用。
FPGA的编程无须专用的FPGA编程器,只需使用通用的EPROM、PROM编程器即可。
当需要修改FPGA功能时,只需换一片EPROM即可。
这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。
因此,FPGA的使用非常灵活。
同时EDA开发工具的通用性、设计语言(本设计为VHDL)的标准化以及设计过程几乎与所用器件的硬件结构无关,所以设计成功的各类逻辑功能块软件有很好的兼容性和可移植性,可以在很短的时间内完成十分复杂的系统设计。
一.3论文所做的工作与研究内容
随着EDA(ElectronicsDesignAutomation)技术的发展和可编程逻辑器件的广泛应用,传统的自下而上的数字电路设计方法、工具、器件已远远落后于当今技术的发展。
基于EDA技术正在承担起越来越多的数字系统设计任务。
本设计主要论述了利用FPGA进行测频计数,单片机实施控制,实现多功能频率计的过程,使得频率计具有了测量精度高、功能丰富、控制灵活等特点。
该频率计依照等精度的测量原理,克服了传统计数器测频原理随被测信号频率下降而降低的缺点。
等精度测量方法不但具有较高的精度,而且在整个频率域保持恒定的测量精度。
该频率计利用FPGA来实现对频率、周期、脉宽、占空比的测量计数,由单片机实现对系统的控制、数据的显示、数据运算及数制转换等功能。
本设计的主要工作包括以下几项内容:
⑴简述了当今频率计的发展状况,对几种常用的测频方法进行了介绍和对比。
⑵详细地论述了等精度频率计的测频原理。
在FPGA和单片机的基础上采用等精度的测量方法,实现了高精度的频率、周期、脉宽和占空比的测量。
⑶采用MSC-51单片机来实现对功能键的控制、数据运算、码制转换、数据显示等功能。
⑷完成了频率计的系统硬件电路的设计,同时完成了基于数字硬件电路设计平台Max+plusⅡ的FPGA硬件电路设计,FPGA模块用来完成高速计数器的功能;单片机完成测试控制、数据处理等功能,并对整个系统进行总体控制。
⑸对频率计的系统性能进行分析,分别分析了低端频率和高端频率得出本设计的测频范围是0.01Hz~40MHz,同时分析了测量精度。
本文分6章介绍了基于FPGA和单片机的等精度数字频率计的设计原理、设计方法、开发步骤,并且对频率计的测量结果和实际输入频率进行比较,分析了本设计影响测量精度的主要因素。
第二章等精度数字频率计测频原理与设计方法
二.1等精度数字频率计测频原理
二.1.1数字频率计的测频方法简介
目前数字频率计的测频方法可以有以下几种实现方法:
⑴直接测量法
直接测量法是把频率信号经脉冲形成电路后加闸门的一个输入端,只有在闸门开通时间T(以秒计)内,计数脉冲被送到十进制计数器进行计数。
设计数器的值为N,由频率定义可以计算得到被测信号频率为:
(2-1)
经分析,此种测量在低频段的相对测量误差较大。
增大T可以提高测量精度,但在低频段仍不能满足任务要求。
⑵组合法
直接测量周期法在低频段精度高。
组合法是指在低频时采用直接测量周期法测量信号的周期,然后换算成频率。
这种方法在一定程度上可以弥补方法⑴的不足,电路实现较为复杂。
⑶倍频法
直接测量法在高频段有着很高的精度。
可以把频率测量范围分为多个频段,使用倍频技术,根据频段设置倍频系数将经整形的低频信号进行倍频后进行测量,高频段则进行直接测量。
⑷直接测量周期法
用被测信号经放大整形后形成的方波信号直接控制计门控电路,使主门开放时间等于信号周期,时标为Ts的脉冲在主门开放时间进入计数器。
设T为被测周期,Ts为时标,在Tx时间计数值为N,可以根据以下公式来算得被测信号周期:
(2-2)
此种方法,被测信号频率越高,测量误差越大。
采用多个周期进行计数取平均值的方法虽可提高精度,每一次的等待时间较长,显然是不可取的[4]。
本课题测频原理为等精度测频原理[5],下面就等精度测频原理进行具体叙述。
二.1.2等精度测频原理
等精度测频法的最大特点是在整个被测频率范围内都能达到相同的测量精度,而与被测信号频率大小无关。
其原理图如图2.1所示。
图2.1等精度测频原理图
图2.2等精度频率计测频波形时序图
当方波预置门控信号CL可由单片机发出,CL的时间宽度对测频精度影响较小,所以可以在1秒至0.1秒间选择,在此设其宽度为Tpr。
BZH和TF模块是两个可控的32位高速计数器,BENA和ENA分别是它们的计数允许信号端,高电平有效。
标准频率信号从BZH的时钟输入端BCLK输入,设其频率为Fs;经整形后的被测信号从与BZH相似的32位计数器TF的时钟输入端TCLK输入,设其真实频率为Fxe,被测频率为Fx。
测频原理说明如下:
测频开始前,首先发出一个清零信号CLR,使两个计数器和D触发器置零,同时通过信号ENA禁止两个计数器计数。
这是一个初始化操作。
然后由单片机发出允许测频命令,即令预置门控信号CL为高电平,这时D触发器要一直等到被测信号的上升沿通过时Q端才被置1,与此同时,将同时启动计数器BZH和TF,进入“计数允许周期”。
在此期间,BZH和TF分别对标准频率信号(频率为Fs)和被测信号(频率为Fx)同时计数。
当Tpr秒后,预置门控信号CL被单片机置为低电平,但此时两个计数器仍没有停止计数,一直等到随后而至的被测信号的上升沿到来时,才通过D触发器将把这两个计数器同时关闭。
设Fx为整形后的被测信号频率,Fs为基准信号频率,设在一次预置门时间Tpr中对被测信号的计数值为Nx,对标准频率信号的计数值为Ns,则有下式成立:
(2-3)
不难得到测得的频率为:
(2-4)
最后通过控制SEL选择信号和64位至8位的多路选择器MUX64-8,将计数器BZH和TF中的两个32位数据分8次读入单片机并按式(2-4)进行计算和结果的显示。
二.2等精度数字频率计的设计方法
二.2.1电子系统的设计方法
现代电子系统一般由模拟子系统、数字子系统和微处理器子系统三大部分组成。
从概念上讲,凡是利用数字技术处理和传输信息的电子系统都可以称为数字系统。
传统的数字系统设计只能对电路板进行设计,通过设计电路板来实现系统功能。
利用EDA工具,采用可编程器件,通过设计芯片来实现系统功能,这种方法称为基于芯片的设计方法。
新的设计方法能够由设计者定义器件的内部逻辑,将原来由电路板设计完成的大部分工作放在芯片的设计中进行。
这样不仅可以通过芯片设计实现多种数字逻辑系统,而且由于管脚定义的灵活性,大大减轻了电路图设计和电路板设计的工作量和难度,从而有效的增强了设计的灵活性,提高了工作效率。
同时,基于芯片的设计可以减少芯片的数量,缩小系统体积,降低能源消耗。
图2-2所示为电子系统的传统设计方法和基于芯片的设计方法。
图2-2(a)传统设计方法(b)基于芯片设计方法
可编程逻辑器件和EDA技术给今天的硬件系统设计者提供了强有力的工具,使得电子系统的设计方法发生了质的变化。
现在,只要拥有一台计算机、一套相应的EDA软件和空白的可编程逻辑器件芯片,在实验室里就可以完成数字系统的设计和生产。
第三章主要芯片及设计工具简介
三.1主要芯片性能介绍
三.1.1AT89C51单片机性能介绍
图3-1AT89C51引脚图
AT89C51是一个内含4K字节可编程可擦除的快闪存储器(FlashMemory)和128个字
节RAM,低电压,高性能CMOS结构的8位单片机。
采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和快闪存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
⑴AT89C51的主要特性如下:
●与MCS-51兼容
●4K字节可编程快闪存储器
●寿命:
1000次写/擦
●数据保留时间:
十年
●128*8位内部RAM
●32可编程I/0线
●两个16位定时器/计数器
●五个中断源
●可编程串行通道
●低功耗的闲置和掉电模式
●片内振荡器和时钟电路
⑵其管脚的具体说明如下:
VCC:
供电电压
GND:
接地
P0口:
P0口为一个8位漏级开路双向I/O口,每个引脚可驱动8个TTL门电流。
当P1口的管脚输入数据时,应先把口置‘1’。
作为外部地址/数据总线使用时,用于传送8位数据和低8位地址。
在快闪编程时,P0口输入,当快闪进行校验时,P0口输出,此时P0外部必须被拉至高电平。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能驱动4个TTL门。
P1口管脚写入‘1’后,被内部上拉为高,可用作输入。
P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
P2口:
P2口是一个内部提供上拉电阻的8位双向I/0口,P2口缓冲器可驱动4个TTL门电流,当P2口被写‘1’时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
P1口当用作外部程序存储器或外部数据存储器进行存取时,P2口输出16位地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P3口:
P3口管脚是八个带内部上拉电阻的双向I/O口,可驱动4个TTL门电流。
当P3口写入‘1’后,被内部上拉为高电平,并用作输入。
P3口也可作为AT89C51的一些特殊功能。
如下表所示:
管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2(外部中断0)
P3.3(外部中断1)
P3.4T0(计时器0外部输入)
P3.5T1(计对器1外部输入)
P3.6(外部数据存储器写选通)
P3.7〔外部数据存储器读选通)
P3口同时为快闪编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:
外部程序存储选择信号,输入,低电平有效。
当保持低电平时,则在此期间外部存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式为1时,将内部锁定为RESET;当端保持高电平时,将从内部程序存储器读取指令码,只有当程序计数器PC大于内部程序存储器地址空间时,才从外部程序存储器读取指令码,因此在没有内部ROM或不适用内部ROM的系统中,/VPP引脚一律接地。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
⑶振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡都可以采用。
如采用外部时钟源驱动器件,XTAL2应不接。
由于输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
⑷芯片擦除:
整个EPROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦除操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM、定时器、计数器、串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所有其它芯片的功能,直到下一个硬件复位为止[6]。
三.1.2FLEX10K系列芯片性能介绍
随着电子技术的发展,电子系统的设计方法也发生了很大的变化。
传统的设计方法正逐步退出历史舞台,而基于EDA技术的芯片设计正在成为电子系统设计的主流。
大规模可编程逻辑器件CPLD和FPGA是当今应用最广泛的两类可编程专用集成电路(ASIC)。
可编程逻辑器件是20世纪70年代发展起来的一种新型逻辑器件,是一种由用户编程来实现某种逻辑功能的新型器件,芯片内的逻辑门、触发器等硬件资源可由用户配置来连接实现专用的用户逻辑功能。
它是大规模集成电路技术飞速发展与计算机辅助设计、计算机辅助生产和计算机辅助测试相结合的一种产物,是现代数字系统向超高集成度、超低功耗、超小封装和专用化方向发展的重要基础。
它的应用和发展不仅简化了电路设计,降低了成本、提高了系统的可靠性和保密性,而且给数字系统的设计方法带来了革命性的变化。
目前常用的可编程逻辑器件从结构上可划分为两大类:
CPLD和现场可编程门阵列FPGA。
FPGA是20世纪80年代中期出现的可编程逻辑器件,其结构类似于掩膜可编程门阵列(MPGA),它由许多独立的可编程模块构成,用户可以通过编程将这些模块连接起来实现不同的设计。
FPGA兼容了MPGA和PLD两者的优点,因而具有更高的集成度、更强的逻辑实现能力和更好的设计灵活性。
FPGA具有掩膜可编程门阵列(MPGA)的通用结构,它由逻辑功能块排成阵列组成,并由可编程的互连资源连接这些逻辑功能块以及相应的输入/输出单元来实现不同的设计。
其中FPGA的功能由逻辑结构的配置数据决定。
工作时这些配置数据存放在片内的SRAM或熔丝上。
基于SRAM的FPGA器件在工作前需要从芯片外部加载配置数据。
用户可以控制加载过程,在现场修改器件的逻辑功能,即所谓的现场编程。
FLEX(FlexiblLogicElementMatrix)10K系列芯片是ALTERA公司新近推出的PLD产品。
与ALTERA公司先前推出的MAX7000系列EPLD相比,FLEX10K(以下简称10K)系列具有更加丰富的内部资源(最多可达10万门),更加充裕的可配置的I/O管脚(最多达406条)。
再加上其低廉的价格,使得10K系列芯片受到越来越多用户的欢迎。
由于10K系列芯片是以可重新配置的CMOS静态RAM单元为基础构成的,因此必须在每次开机时对芯片进行配置。
本测频系统选用FPGA器件是Alter公司所生产的FLEX10KEPF1020RC(208-4)。
FLEX10K系列是第一款多达25万门的嵌入式PLD,FLEX10K具有高密度和意欲在设计中实现复杂宏函数和存储器的特点,因此可以适应系统级设计的要求。
每个FLEX10K器件都包含一个嵌入式阵列,它为设计者提供了有效的嵌入式门阵列和灵活的可编程逻辑。
另外,FLEX10K器件也提供多电压I/O接口,它允许器件桥接在不同电压工作系统中。
FLEX10K还具有多个低失真时钟,以及时钟锁定和时钟自举锁相环电路,内部三态总线等特性。
其具体性能特点如下:
⑴工业界第一种嵌入式PLD系列,具有在单个器件中系统集成的能力,具有实现宏函数的嵌入式阵列和实现普通功能的逻辑阵列。
⑵高密度具有10000到250000个可用门,高达40960位内部RAM。
⑶系统级特点支持多电压I/O接口;低功耗,维持状态时电流小于0.5mA,遵守PCI总线规定;内置JTAG边界扫描测试电路;器件采用先进SRAM工艺制造;通过外部EPROM、集成控制器或JTAG接口电路实现电路可重构(ICR);时钟锁定和时钟自举有助于减少时钟延迟/变形和对时钟进行倍频;器件内低变形时钟树形分布;所有器件都经过100%的性能测试。
⑷灵活的内部连接快速通道连续式布线结构带来快速可预测的连线延时;具有可以用来实现快速加法器、计数器和比较器的专用位链;具有实现告诉、多输入逻辑函数专用级连链;模仿三态功能可以是内部三态总线;6个全局时钟信号和4个全局清除信号。
⑸功能强大的I/O引脚每个引脚都有一个独立的三态输出使能控制;每个I/O引脚都有漏极开路选择;可编程输出电压摆率控制可以减小开关噪声。
⑹具有快速建立时间和时钟到输出的外部寄存器。
⑺多样的封装形式84到600引脚的各种封装,封装形式有TQFP、PQFP、BGA和PLC等;同一种封装中的各种FLEX10K