基于单片机和CPLD的等精度数字频率计设计.docx
《基于单片机和CPLD的等精度数字频率计设计.docx》由会员分享,可在线阅读,更多相关《基于单片机和CPLD的等精度数字频率计设计.docx(78页珍藏版)》请在冰豆网上搜索。
![基于单片机和CPLD的等精度数字频率计设计.docx](https://file1.bdocx.com/fileroot1/2023-5/27/ef847e5b-74cc-4db4-b86f-c119e93c5795/ef847e5b-74cc-4db4-b86f-c119e93c57951.gif)
基于单片机和CPLD的等精度数字频率计设计
题目基于单片机和CPLD的等精度数字频率计设计
学生姓名付静娟学号1213014063
所在学院物理与电信工程学院
专业班级电子1203班
指导教师梁芳
完成地点物理与电信工程学院实验室
2016年6月1日
毕业论文﹙设计﹚任务书
院(系)物电学院专业班级电子信息工程电子学生姓名付静娟
一、毕业论文﹙设计﹚题目基于单片机和CPLD的等精度数字频率计设计
二、毕业论文﹙设计﹚工作自__2016__年_3_月_2_日起至__2016年6月_15_日止
三、毕业论文﹙设计﹚进行地点:
物电学院实验室
四、毕业论文﹙设计﹚的内容要求:
频率信号抗干扰能力强、易于传输,可以获得较高的测量精度,所以测频率方法的研究越来越受到重视。
本课题的等精度数字频率计设计,采用当今电子设计领域流行的EDA技术,以CPLD为核心,配合AT89C51单片机,采用多周期同步测频原理,实现了0.01Hz-1MHz信号频率的等精度频率测量。
设计中用一块复杂可编程逻辑器件CPLD(ComplexProgrammableLogicDevice)芯片EPM7128SLC84-15完成各种时序逻辑控制、计数功能。
在QuartusⅡ平台上,用VHDL语言编程完成了CPLD的软件设计、编译、调试、仿真和下载。
用AT89C51单片机作为系统的主控部件,实现整个电路的测试信号控制、数据运算处理、键盘扫描和控制数码管的显示输出
五、毕业论文﹙设计﹚应收集资料及参考文献:
[1]谢檬,申忠如.基于CPLD的等精度频率计的设计《微计算机信息》,2011,27(14)
[2]张青林.基于单片机和CPLD的数字频率计设计《合肥学院学报:
自然科学版》,2010(20)
[3]李建忠,《单片机原理及应用》,西安,西安电子科技大学出版社,2002;
[4]谢自美等.电子线路设计、实验、测试.[M].华中科技大学出版社
六、进度安排:
1─4周:
查阅资料及方案论证,完成开题报告;
5─10周:
熟悉开发环境,完成单元电路、模块调试;
11─13周:
完成系统总装及调试;
14─15周:
系统优化,及测试;
16周:
整理资料,撰写论文。
17周:
准备答辩。
指导教师签名系(教研室)主任签名
专业负责人签名批准日期
基于单片机和CPLD的等精度数字频率计设计
付静娟
(陕西理工学院物理与电信工程学院电子信息工程专业,2012级3班,陕西汉中723000)
指导教师:
梁芳
[摘要]本设计是基于单片机和CPLD的等精度数字频率计设计,在设计中采用EPM7128SLC84-15完成了各种时序的逻辑控制、计数功能。
并在QuartusII软件上,用VHDL语言来实现CPLD的软件的设计、编译、调试、仿真、下载。
用AT89C51作为系统的主控部件,实现了电路的测试信号控制、数据处理、键盘扫描和显示输出,CPLD芯片实现了电路的测量功能。
本课题将单片机AT89C51的控制灵活性及CPLD的现场可编程性相结合,不但大大缩短了开发研制周期,而且使系统的结构紧凑、测频范围宽、精度高等优点。
[关键字]数字频率计;CPLD;AT89C51
SuchasprecisiondigitalfrequencymeterbasedonsinglechipmicrocomputerandCPLDdesign
JingjuanFu
(Grade12,Class03,Majorelectronicsandinformationengineering,SchoolofPhysicsandTelecommunicationEngineering,ShaanxiUniversityofTechnology,Hanzhong723000,Shaanxi)
Tutor:
FangLiang
Abstract:
ThisdesignisbasedonsinglechipmicrocomputerandCPLD,digitalfrequencymeterdesignprecision.UsedinthedesignofEPM7128SLC84-15completedvarioustemporallogiccontrol,countingfunction.ImplementedusingVHDLlanguageandonthesoftware,thesofewaredesignofCPLD,compilation,debugging,simulation,download.UsingAT89C51asasystemofmastercontrolparts,therealizationofthetestsignalcontrolcircuit,dataprocessing,keyboardscanninganddisplayoutput.
Keywords:
Digitalfrequenecymeter;CPLD;AT89C51Singlechipcomputer
1.引言
测量频率是电子测量技术中最常见的测量之一。
不少物理量的测量,如时间、速度等都涉及到或本身可转化为频率的测量[1]。
目前,市场上具有多种多功能、高精度、高频率的数字频率计,但是价格不菲。
而在实际工程中,并不是对所有信号的频率测量都要求达到非常高的精度[10]。
本系统以单片机AT89C51为核心,采用自上向下的设计方法,设计出了基于复杂可编程逻辑器件数字频率计[3]。
用AT89C51单片机作为系统的主控部件,完成电路的数据运算处理、测试信号控制、控制数码管显示和键盘扫描[4]。
用VHDL语言编程,由CPLD(ComplexProgrammableLogicDevice)完成多种时序控制电路和计数功能[11]。
不仅能够测量正弦波、方波和三角波等信号的频率,而且还能对其他多种物理量进行测量[8]。
该系统具有可靠性高、结构紧凑、精度高和测频范围宽等特点[6]。
在本次设计中采用EPM7128SLC-15的复杂可编程器件,采用先进的氧化物半导体技术制造,可容纳组合逻辑函数和时序逻辑函数,可快速有效的快速编程,EPM7128SLC-15包括128个宏单元,每16个宏单元组成一个逻辑阵列块,同时,每一个宏单元都有一个可编程的“与”阵和固定的“或”阵,以及一个独立可编程时钟、时钟使能、清除置位功能的触发器[5]。
单片机的软件采用汇编语言编写,CPLD的各个模块采用硬件编程性语言,实现各个模块的功能[16]。
而传统的频率计一般由分立元件组成,其测量范围、测量精度以及测量速度都受到很大的限制[2]。
单片机的发展改变了这种状况,但由于单片机本身也受到工作频率以及内部计数器位数等原因的影响,无法让单片机得到更好的应用。
随着大规模的可编程逻辑器件技术的发展,结合单片机采用底层汇编语言编程的利用,可以精确的控制测频计数闸门的开启和关闭,从而进一步提高了测量精度。
对于基于单片机和CPLD的等精度数字频率计设计具有良好的应用价值和推广前景[14]。
1.1背景
随着电子技术的发展,当前数字电路的设计在朝着容量大、速度快、重量轻、体积小的方向前进。
推动这个潮流迅猛发展的导火索就是逐渐进步和改善善的设计问题。
目前数字系统的设计可以直接与用户的需求相连接,根据系统的功能和行为性要求,自上而下的逐层完成相应综合、描述、验证与仿真、优化、一直到器件生成。
这样可以更好的缩短设计的周期,用此来适应当今品种多、批发量小的电子市场的需求,使产品具有更好的竞争力。
电子设计(EDA)的关键性技术之一就是要求用形式化的方法来描述数字系统的硬件性电路,即要用所谓的硬件描述性语言来表达硬件电路。
因此硬件描述语言和相关仿真、综合技术的研究是当今电子设计自动化区域的一个重要性课题。
CPLD是一种新兴的高密度大规模可编程逻辑器件,它具有门陈列的高密度和PLD器件的灵活性和易用性,目前已成为一种主要的可编程性逻辑器件。
可编程性逻辑器件的最大特点是可以通过软件编程的方式对它的器件结构和工作方法进行重新设置,能够随时进行设计的调整用来满足产品的升级,以便硬件设计可以如同软件设计一样方便快速,用来改变了传统数字设计以及用单片机形成的数字系统设计的方法、过程和概念,从而使电子设计技术的操作和系统形成在整体上发生了变化。
数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。
随着复杂可编程逻(CPLD)的广泛应用,以EDA工具作为开发手段,运用VHDL语言。
将使整个系统大大简化。
提高整体的性能和可靠性。
因此,数字频率计的设计具有广泛的使用价值和应用前景。
1.2研究目的
建立基于单片机和CPLD数字频率计的模型、选择适宜的测量策略和显示方法,用仿真工具在计算机上实现数字频率计系统的仿真控制,并对频率计进行仿真训练。
获取开发经验,为更进一步的研究、开发数字频率计奠定良好的基础。
当今电子设计领域流行的EDA技术,以CPLD为核心,配合AT89C51单片机,采用多周期同步测频原理,实现0.01HZ--1MHZ信号频率的等精度频率测量。
不但大大缩短开发研制周期,而且使本系统具有结构紧凑、体积小、可靠性高、测频范围宽、精度高等优点。
2.方案选择与论证
2.1方案选择
方案一:
采用通用的51单片机AT89S51作为系统控制核心单元,以适当的软件和硬件资源完成以单片机为核心的等精度数字频率计的软引件设计及系统实现。
完成整个测量电路的测试控制、数据处理和显示输出。
由于51单片机自身的速度问题,测量的范围较小。
在快速测量下,要保证高精度的测频,必须采用较高的标准信号;而单片机受本身的时钟频率和若干指令运算的限制,测频速度较慢,无法满足高速和高精度的测频要求。
方案二:
采用先进的EDA技术及自上而下的设计,把控制灵活、资源丰富及良好的人机对话功能的单片机和具有现场可编程的复杂逻器件以及现资源丰富的CPLD芯片完美结合起来,实现了等精度频率的测量。
由于CPLD具有易于预测延时,连续性连接结构,因此电路仿真会更加准确,而且它的编程方便,速度快,集成度高,价格低,从而很好的缩短了周期,产品性价比也比较高。
CPLD芯片采用流行的VHDL语言编程,可以精确地控制测频计数闸门的开启和关闭,从而进一步提高了测量精度。
2.1.1方案论证
等精度数字频率计涉及到的计算包括加、减、乘、除,耗用的资源比较大,用一般中小规模CPLD/FPGA芯片难以实现,因此选择AT89C51单片机和复杂可编程逻器件的结合来实现。
电路系统原理框图如图2.1所示,我们用单片机来完成整个测量电路的数据处理、测试控制和显示性输出;CPLD/FPGA芯片完成多种测试的功能;键盘控制的命令使用74LSl65并入串出移位寄存器来读入单片机,实现测试频率、测试脉宽及占空比的功能,单片机从CPLD/FPGA芯片读回计数数据并且进行运算,向显示电路输出结果;显示器电路用七段LED数码管动态显示,由8个芯片74LSl64分别进行驱动数码管。
设计如图1.1所示:
电源部分
显示电路
键盘输入
时钟电路
单
片
机
CPLD
芯片
50MHZ标准频率
自校输入
被测信号整形电路
图2.1系统框图
2.1.2测频原理
(1)传统的测频原理是在一定的时间间隔中测某个信号周期性信号的重复变化的次数N,它的频率可以表示为f=N/T,其测频原理如图2.2,这种测量方式的精度会跟随被测信号频率的变化而发生变化。
计数翻译器
闸门电路
脉冲形成电路
门控电路
时基信号发生
图2.2传统测频框图
(2)采用基于CPLD等精度测频率时,其原理图如图所示,方波的预置门控信号开始由低电平变为高电平的时候,被测信号的上升沿会启动D触发器,D触发器的Q端同时开启计数器CNT1和CNT2,且同时计数,当预置门控信号为低电平时,随后的被测信号的计数器会关闭。
设FX为被测信号,FS为基准频率信号,若在一次预置门高电平脉宽时间内被测信号计数值Nx,基准频率计数值为Ns,则有:
FX=(FS/Ns)*Nx
COUNT1
CLKEN
CLKOUT1
CLR
DQ
>
门控信号
COUNT2
CLKEN
CLKOUT2
CLR
标准信号
被测信号
清零信号
图2.3测频原理图
3.整体方案设计
3.1系统方案
电路系统的原理框图如3.1所示,其中单片机完成了整个测量电路的数据处理、测试控制和显示性输出;CPLD芯片完成了多种测试性功能;键盘控制的命令通过74LSl65并入串出移位寄存器进行读入,用此来实现测脉宽、测频率和测占空比的功能,单片机从CPLD读回计数的数据并且进行运算,向显示电路输出结果;显示电路采用七段LED数码管进行动态显示,由8个芯片74LSl64来进行驱动。
系统总的设计在硬件电路中包括显示模块、键盘控制模块、信号放大整形模块以及单片机模块和CPLD主控模块。
键盘控制模块采用了5个功能键和3个时间键,键值读入利用了74LSl65来实现,显示模块利用了74LSl64实现其LED的串行显示。
系统采用CPLD芯片来实现多种测试功能,采用标准信号频率和被测信号频率分别进行计数。
用单片机来控制整个测试系统,包括对键盘信号的读入和处理;对CPLD芯片的控制、结果数据处理;之后会将测量的结果送到LED进行输出。
被测信号的整形放大电路其主要作用是对被测信号进行放大限幅、最后经过施密特触发器整形之后再送到CPLD芯片。
使用50MHz的晶振,作为CPLD的测试标准频率信号,单片机由外接12MHz标准晶振提供时钟电路。
电源部分
50MHZ标准频率
CPLD
芯片
单
片
机
显示电路
被测信号整形电路
键盘输入
自校输入
时钟电路
图3.1系统框图
系统工作的方式如下所示:
(1)P0口是单片机和CPLD的数据传送口,P1口采用键盘的扫描,完成了各种测试功能的切换;P2口是一个控制口;P3口让其为LED的串行显示口,系统设置了5个功能键:
脉宽、占空比、频率、周期以及复位。
(2)显示电路采用数码管显示输出,7个LED数码管构成了数据的显示器,还有一个数码管利用其进行状态显示。
(3)测频的标准频率信号50MHZ信号采用晶体振荡源电路进行提供。
3.2电源模块
整个电路的供电电源如图所示,220V交流电经变压、整流、滤波后,由一片7805三端稳压器向系统提供+5V电压信号。
本设计采用5V电源电压供电,直流稳压电源电路包括整流滤波、电源变压器以及稳压电路。
电源的变压器会把交流电220V电压变换为所需要得值,在通过整流电路把交流电压改为脉动直流电压。
因为这个直流电压还包含有大的纹波,因而必须通过滤波电路来进行滤除,因此得到平滑直流电压。
但是这种电压会跟随电网进行波动(一般会有大概10%的波动左右),并且负载和温度也会发生变化。
因此在整流滤波电路以后,还必须有稳压电路。
稳压电路它的主要作用是当电网电压负载、温度和波动发生变化时,让输出的直流电压保持在稳定状态。
采用输出电压为+5V的7805进行输出。
变压器会把电网为220V的电压转换为+9V电压,经过二极管的桥式整流以后,会把7~8V的电压送到7805的输入端,用电容C5和C6实现频率的补偿,以防稳压器7805产生了高频自激以及抑制电路所带入的一个高频干扰,C4和C7采用了电解电容,以减少稳压电源的输出端由输入电源模块带入得低频性干扰。
D8为大电流保护二极管,防止在输入端偶然短路到地时,输出端大电容上存储的电压反极性加到输出、输入端之间而损坏芯片。
图中用一个发光二极管来检测电源电路是否通电,同时还可作为电源电路是否出现故障的标志,当LED亮则完好,否则电源电路可能未上电或出现错误,起到一个很好的自动电源检测功能。
图3.2电源模块电路
3.3显示电路
系统硬件电路中,单片机MCU与FPGA进行数据交换占用了P0口、P1口和P3口,因此数据显示电路的设计采用静态显示的方式,显示电路由8个共阳极数码管以及8片1位串入,8位并出的74LS164芯片构成。
采用这种显示不仅是占用了较少的单片机端口,而且很好的把单片机资源进行了利用,其编码规律也容易掌握,让软件编程也得到了简化,在实验的过程中,其可靠性也得到了很好的体现。
其显示电路如下图4.4。
74LS164是8位的高速串入/并出的移位寄存器,它会随着时钟信号的一个高低变化,串行数据通过一个2输入与门同步的送入,使用独立于时钟的主控复位端让寄存器的输出端变为低电平,并且采用肖特基钳位电路,达到了高速运行目的。
除此之外它还有之下的一些特点:
①异步主控复位;②35MHz的移位频率;③同步数据传输;④门控串行输入;⑤静电的放电值是大于3500V的;⑥利用钳位二极管进行限制终端。
在这个设计中,74LS164它的连接方式是:
74LS164输出端Q0~Q7接LED数码管的dp、g、f、e、d、c、b、a,并且Q7连接剩下一个74LS164的A,B端,脉冲CLK连单片机的TXD端口,单片机的RXD端连接到第一个芯片的AB端,74LS164芯片的RET端接VCC。
在这种状态下,数码管编码状态如下表所示。
表3.1数码管的编程表
显示数码
段码
显示数码
段码
0
0c0h
8
80h
1
0f9h
9
90h
2
0a4h
A
88h
3
0b0h
B
83h
4
99h
C
0c6h
5
92h
D
0a1h
6
82h
E
86h
7
0f8h
F
8eh
3.4其它电路
单片机的时钟电路由12MHz的晶振提供。
CPLD的标准频率信号由50MHZ的有源晶振提供。
自校输入信号取自单片机的12MHZ晶振。
被测信号经过放大整形电路调理后输入。
4.测频模块的工作原理及设计
4.1CPLD测频专用模块设计
利用VHDL设计的测频模块逻辑结构如图所示
OUT[EEND]
FINCONTRL
CLK
Q[31…0]
CLR
FINCLK1
STARTEEND
CLRCLK2
FSDCLRC
CHKFFOUT
FIN
CHOIS
INT[CHEKF]CNT1
INT[FINPUT]
Q[31…0]
Q[31…0]
OO[7…0]
SEL[2…0]
INT
[CHOICE]DSEL
INT[DLRTRIG]
TFINT[SEL]
CLK2CLKOUT
FSD
CNL
PUL
FINENDD
STARTPUL
CLR
CONTRL2GATECNT2
CLK
Q[31...0]
CLR
INT
[START]
OUT
OUT[ENDD]
图4.1测频模块框图
其中有关的接口信号规定如下:
(1)TF(P2.7):
TF=0时等精度测频;TF=1时测脉宽;
(2)CLR/TRIG:
当TF=0时系统全部实现清零;TF为高电平时CLR/TRIG的上升沿将启动计数器2,进行脉宽计数;
(3)ENDD(P2.4):
ENDD=1计数结束,脉宽计数结束信号;
(4)CHOICE(P3.2):
自校/测频选择,当P3.2位高电平时为测频功能;P3.2为低电平时实现其自校功能;
(5)START(P2.5):
当TF=0时,其端口作为预置门控信号,门宽可以通过键盘用单片机进行控制,当P2.5为高电平时预置门开,且其端口有第二种功能,此时,当P2.5为低电平时测的是负脉宽,为高电平时测正脉宽,采用这个功能可以得到脉宽及占空比的输出数据;
(6)EEND(P2.3):
EEND=0时等精度计数结束;
(7)SEL[2…0](P2.2,P2.1,P2.0):
计数值的读出选通信号控制。
4.1.1测频/周期的实现
图4.2测频测周期原理图
(1)令TF=0,进行等精度测频率,在CONTRL端连接一个正脉冲,以便测试初始化电路状态;
(2)将预置门控信号的测频测周期模块的START端置为高电平,这时预置门就会开始定时,而且被测信号的上升沿就会打开计数器1进行计数,同时会让标准信号频率进入计数器2;
(3)预置门定时结束时会把测频测周期的START端置为低电平,等到被测信号的上升沿到来时,计数器1停止计数,同时关断计数器2对fs的计数;
(4)计数结果结束以后,EEND端会输出低电平来表示计数的结束,单片机在得到这个信号后,就可以利用P2.2、P2.1、P2.0分别读回计数器1和计数器2的计数结果值,并且采用等精度测量频率或周期的公式进行基本运算,计算后得频率及周期。
4.1.2控制部件的设计
如图所示,在D触发器输入端START是高电平时,如果FIN端是上升沿,则其Q端就会被置为高电平,此时导通FIN到CLK1和FSD到CLK2,并且EEND端会被置为高电平作为它的标志位;在D触发器输入端START被置为低电平的时候,如果FIN端输入了脉冲的上升沿,则FIN到CLK1与FSD到CLK2的通道就会被切断。
图4.3测频测周期原理图
4.1.3计数设计
在测频专用框图中,计数器1与计数器2都是32位的计数器,由DSEL模块进行控制,单片机分四次将32位的数据全部进行读出。
图4.4计数模块
4.1.4脉冲宽度的测量及占空比模块的设计
根据脉宽测量的原理,设计如图下所示的原理图电路。
图4.5脉冲宽度的测量和占空比模块
图4.6脉宽占空比内部图
脉冲宽度工作如下:
(1)给CONTRL2的清零端送一个脉冲用来初始化电路的工作状态;
(2)把GATE所在的CNL端口置为高电平状态,用来表示脉冲宽度的测量,此时计数器2输入信号是FSD。
(3)当被测信号的上升沿到来时,CONTRL2的PUL端口输出为高电平时,标准信号就会进入计数器2进行计数。
(4)当被测信号的下降沿到来时,CONTRL2的PUL端口为低电平时,计数器2就会将被切断。
(5)此时单片机就会读出计数器2的计数结果,并且由测量公式,计算出它的脉冲宽度,CONTRL2模块特点就是:
只有在CONTRL2模块被进行初始化以后才能进行工作,不然PUL输出的始终是零。
当其在先检测到上升沿以后PUL才是高电平,接着在检测为下降沿时,PUL的输出为低电平;当ENDD检测输出为高电平,就会通知单片机这个测量计数结束;当先检测为下降沿时,并且PUL没有变化;在检测到上升沿并紧接着一个下降沿后,测脉宽测占空比模块就不会发生变化一直到另外的初始化的信号来到。
占空比的测式方法为,记录下测量的脉冲宽度的记录值,即计数器1的计数值N1,在将输入信号进行反相,再次测量脉冲宽度,就会得到计数器2的计数值为N2,则占空比为:
占空比=N1/(N1+N2)*100%
5.单片机的主控模块
5.1AT89C51单片机性能
AT89C51的内部含有4K字节的可编程且可擦除的快闪存储器以及128个字节的RAM。
它是一个高性能,低电压的且由CMOS构成的8位的单片机。
利用了ATNIEL高密度且不容易