毕业设计(论文)-基于单片机和CPLD的等精度数字频率计设计.doc_第1页
毕业设计(论文)-基于单片机和CPLD的等精度数字频率计设计.doc_第2页
毕业设计(论文)-基于单片机和CPLD的等精度数字频率计设计.doc_第3页
毕业设计(论文)-基于单片机和CPLD的等精度数字频率计设计.doc_第4页
毕业设计(论文)-基于单片机和CPLD的等精度数字频率计设计.doc_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

陕西理工学院毕业设计题 目 基于单片机和CPLD的等精度数字频率计设计 学生姓名 学号 所在学院 物理与电信工程学院 专业班级 电子1203班 指导教师 完成地点 物理与电信工程学院实验室 2016 年 6 月 1 日陕西理工学院毕业设计毕业论文设计任务书院(系) 物电学院 专业班级 电子信息工程电子 学生姓名 一、毕业论文设计题目 基于单片机和CPLD的等精度数字频率计设计 二、毕业论文设计工作自_2016 _年_ 3_月_ 2 _日 起至_2016 年 6 月_ 15 _日止三、毕业论文设计进行地点: 物电学院实验室 四、毕业论文设计的内容要求:频率信号抗干扰能力强、易于传输,可以获得较高的测量精度,所以测频率方法的研究越来越受到重视。本课题的等精度数字频率计设计,采用当今电子设计领域流行的EDA技术,以CPLD为核心,配合AT89C51单片机,采用多周期同步测频原理,实现了0.01Hz-1MHz信号频率的等精度频率测量。设计中用一块复杂可编程逻辑器件CPLD(Complex Programmable Logic Device)芯片EPM7128SLC84-15完成各种时序逻辑控制、计数功能。在Quartus平台上,用VHDL语言编程完成了CPLD的软件设计、编译、调试、仿真和下载。用AT89C51单片机作为系统的主控部件,实现整个电路的测试信号控制、数据运算处理、键盘扫描和控制数码管的显示输出 五、 毕业论文设计应收集资料及参考文献:1谢檬,申忠如.基于CPLD的等精度频率计的设计微计算机信息,2011,27(14) 2张青林.基于单片机和CPLD的数字频率计设计 合肥学院学报:自然科学版,2010(20) 3李建忠,单片机原理及应用,西安,西安电子科技大学出版社,2002; 4谢自美等.电子线路设计、实验、测试.M.华中科技大学出版社 六、进度安排: 1 4周:查阅资料及方案论证,完成开题报告; 5 10周:熟悉开发环境,完成单元电路、模块调试; 1113周:完成系统总装及调试; 1415周:系统优化,及测试; 16 周:整理资料,撰写论文。 17 周:准备答辩。 指导教师签名 系(教研室)主任签名 专业负责人签名 批准日期 基于单片机和CPLD的等精度数字频率计设计(陕西理工学院物理与电信工程学院电子信息工程专业,2012级3班,陕西 汉中 723000)指导教师:摘要本设计是基于单片机和CPLD的等精度数字频率计设计,在设计中采用EPM7128SLC84-15完成了各种时序的逻辑控制、计数功能。并在Quartus II软件上,用VHDL语言来实现CPLD的软件的设计、编译、调试、仿真、下载。用AT89C51作为系统的主控部件,实现了电路的测试信号控制、数据处理、键盘扫描和显示输出,CPLD芯片实现了电路的测量功能。本课题将单片机AT89C51的控制灵活性及CPLD的现场可编程性相结合,不但大大缩短了开发研制周期,而且使系统的结构紧凑、测频范围宽、精度高等优点。关键字数字频率计;CPLD;AT89C51Such as precision digital frequency meter based on single chip microcomputer and CPLD designJingjuan Fu(Grade12,Class03,Major electronics and information engineering,School of Physics and Telecommunication Engineering,Shaanxi University of Technology,Hanzhong 723000,Shaanxi)Tutor:Fang LiangAbstract: This design is based on single chip microcomputer and CPLD,digital frequency meter design precision.Used in the design of EPM7128SLC84-15 completed various temporal logic control, counting function. Implemented using VHDL language and on the software, the sofeware design of CPLD ,compilation, debugging, simulation, download. Using AT89C51 as a system of master control parts, the realization of the test signal control circuit, data processing ,keyboard scanning and display output. Keywords: Digital frequenecy meter ;CPLD ; AT89C51 Single chip computer目录1.引言11.1背景11.2研究目的12.方案选择与论证22.1方案选择22.1.1 方案论证22.1.2 测频原理23.整体方案设计43.1 系统方案43.2 电源模块43.3 显示电路53.4其它电路64.测频模块的工作原理及设计74.1 CPLD测频专用模块设计74.1.1测频/周期的实现74.1.2 控制部件设计84.1.3 计数设计84.1.4 脉冲宽度的测量及占空比模块的设计95.单片机的主控模块105.1 AT89C51单片机性能105.2单片机控制模块116.实验测试与误差分析136.1 测量精度分析136.2 实验测试与误差分析136.2.1 实验测试方法13I6.2.2 系统硬件的验证136.2.3 误差分析147.软件的使用与概述157.1 AT89C51单片机keil的使用157.2 Quartus开发FPGA/CPLD的流程概述167.3 Quartus 的使用方法178.总结20致谢21参考文献22附录23II陕西理工学院毕业设计1.引言测量频率是电子测量技术中最常见的测量之一。不少物理量的测量, 如时间、速度等都涉及到或本身可转化为频率的测量1。目前, 市场上具有多种多功能、高精度、高频率的数字频率计, 但是价格不菲。而在实际工程中, 并不是对所有信号的频率测量都要求达到非常高的精度10。本系统以单片机AT89C51为核心,采用自上向下的设计方法,设计出了基于复杂可编程逻辑器件数字频率计3。用AT89C51单片机作为系统的主控部件,完成电路的数据运算处理、测试信号控制、控制数码管显示和键盘扫描4。用VHDL语言编程,由CPLD(Complex Programmable Logic Device)完成多种时序控制电路和计数功能11。不仅能够测量正弦波、方波和三角波等信号的频率,而且还能对其他多种物理量进行测量8。该系统具有可靠性高、结构紧凑、精度高和测频范围宽等特点6。在本次设计中采用EPM7128SLC-15 的复杂可编程器件,采用先进的氧化物半导体技术制造,可容纳组合逻辑函数和时序逻辑函数,可快速有效的快速编程,EPM7128SLC-15包括128个宏单元,每16个宏单元组成一个逻辑阵列块,同时,每一个宏单元都有一个可编程的“与”阵和固定的“或”阵,以及一个独立可编程时钟、时钟使能、清除置位功能的触发器5。单片机的软件采用汇编语言编写,CPLD的各个模块采用硬件编程性语言,实现各个模块的功能16。而传统的频率计一般由分立元件组成,其测量范围、测量精度以及测量速度都受到很大的限制2。单片机的发展改变了这种状况,但由于单片机本身也受到工作频率以及内部计数器位数等原因的影响,无法让单片机得到更好的应用。随着大规模的可编程逻辑器件技术的发展,结合单片机采用底层汇编语言编程的利用,可以精确的控制测频计数闸门的开启和关闭,从而进一步提高了测量精度。对于基于单片机和CPLD的等精度数字频率计设计具有良好的应用价值和推广前景14。1.1背景随着电子技术的发展,当前数字电路的设计在朝着容量大、速度快、重量轻、体积小的方向前进。推动这个潮流迅猛发展的导火索就是逐渐进步和改善善的设计问题。目前数字系统的设计可以直接与用户的需求相连接,根据系统的功能和行为性要求,自上而下的逐层完成相应综合、描述、验证与仿真、优化、一直到器件生成。这样可以更好的缩短设计的周期,用此来适应当今品种多、批发量小的电子市场的需求,使产品具有更好的竞争力。电子设计(EDA)的关键性技术之一就是要求用形式化的方法来描述数字系统的硬件性电路,即要用所谓的硬件描述性语言来表达硬件电路。因此硬件描述语言和相关仿真、综合技术的研究是当今电子设计自动化区域的一个重要性课题。CPLD是一种新兴的高密度大规模可编程逻辑器件,它具有门陈列的高密度和PLD器件的灵活性和易用性,目前已成为一种主要的可编程性逻辑器件。可编程性逻辑器件的最大特点是可以通过软件编程的方式对它的器件结构和工作方法进行重新设置,能够随时进行设计的调整用来满足产品的升级,以便硬件设计可以如同软件设计一样方便快速, 用来改变了传统数字设计以及用单片机形成的数字系统设计的方法、过程和概念,从而使电子设计技术的操作和系统形成在整体上发生了变化。数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。随着复杂可编程逻(CPLD)的广泛应用,以EDA工具作为开发手段,运用VHDL语言。将使整个系统大大简化。提高整体的性能和可靠性。因此,数字频率计的设计具有广泛的使用价值和应用前景。12研究目的建立基于单片机和CPLD数字频率计的模型、选择适宜的测量策略和显示方法,用仿真工具在计算机上实现数字频率计系统的仿真控制,并对频率计进行仿真训练。获取开发经验,为更进一步的研究、开发数字频率计奠定良好的基础。当今电子设计领域流行的EDA技术,以CPLD为核心,配合AT89C51单片机,采用多周期同步测频原理,实现0.01HZ-1MHZ信号频率的等精度频率测量。不但大大缩短开发研制周期,而且使本系统具有结构紧凑、体积小、可靠性高、测频范围宽、精度高等优点。2.方案选择与论证2.1方案选择方案一:采用通用的51单片机AT89S51作为系统控制核心单元,以适当的软件和硬件资源完成以单片机为核心的等精度数字频率计的软引件设计及系统实现。完成整个测量电路的测试控制、数据处理和显示输出。由于51单片机自身的速度问题,测量的范围较小。在快速测量下,要保证高精度的测频,必须采用较高的标准信号;而单片机受本身的时钟频率和若干指令运算的限制,测频速度较慢,无法满足高速和高精度的测频要求。 方案二:采用先进的EDA技术及自上而下的设计,把控制灵活、资源丰富及良好的人机对话功能的单片机和具有现场可编程的复杂逻器件以及现资源丰富的CPLD芯片完美结合起来,实现了等精度频率的测量。由于CPLD具有易于预测延时,连续性连接结构,因此电路仿真会更加准确,而且它的编程方便,速度快,集成度高,价格低,从而很好的缩短了周期,产品性价比也比较高。CPLD芯片采用流行的VHDL语言编程,可以精确地控制测频计数闸门的开启和关闭,从而进一步提高了测量精度。2.1.1 方案论证等精度数字频率计涉及到的计算包括加、减、乘、除,耗用的资源比较大,用一般中小规模CPLDFPGA芯片难以实现,因此选择AT89C51单片机和复杂可编程逻器件的结合来实现。电路系统原理框图如图2.1所示,我们用单片机来完成整个测量电路的数据处理、测试控制和显示性输出;CPLDFPGA芯片完成多种测试的功能;键盘控制的命令使用74LSl65并入串出移位寄存器来读入单片机,实现测试频率、测试脉宽及占空比的功能,单片机从CPLDFPGA芯片读回计数数据并且进行运算,向显示电路输出结果;显示器电路用七段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)*NxCOUNT1CLKENCLK OUT1CLRD Q门控信号COUNT2CLKENCLK OUT2CLR标准信号被测信号 清零信号 图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电压,经过二极管的桥式整流以后,会把78V的电压送到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输出端Q0Q7接LED数码管的dp、g、f、e、d、c、b、a,并且Q7连接剩下一个74LS164的A,B端,脉冲CLK连单片机的TXD端口,单片机的RXD端连接到第一个芯片的AB端,74LS164芯片的RET端接VCC。在这种状态下,数码管编码状态如下表所示。表3.1 数码管的编程表显示数码段 码显示数码段 码00c0h880h10f9h990h20a4hA88h30b0hB83h499hC0c6h592hD0a1h682hE86h70f8hF8eh3.4其它电路单片机的时钟电路由12MHz的晶振提供。CPLD的标准频率信号由50 MHZ的有源晶振提供。自校输入信号取自单片机的12MHZ晶振。被测信号经过放大整形电路调理后输入。 4.测频模块的工作原理及设计4.1 CPLD测频专用模块设计利用VHDL设计的测频模块逻辑结构如图所示OUTEEND FIN CONTRLCLKQ310CLRFIN CLK1START EENDCLR CLK2FSD CLRCCHKF FOUTFINCHOISINTCHEKFCNT1INTFINPUTQ310Q310 OO70SEL20INTCHOICEDSELINTDLRTRIGTFINTSELCLK2 CLKOUTFSDCNLPULFIN ENDDSTART PULCLRCONTRL2GATECNT2CLK Q31.0CLRINTSTARTOUTOUTENDD图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)SEL20(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.1 AT89C51单片机性能AT89C51的内部含有4K字节的可编程且可擦除的快闪存储器以及128个字节的RAM。它是一个高性能,低电压的且由CMOS构成的8位的单片机。利用了ATNIEL高密度且不容易失去的存储器的制造技术进行了制造,和MCS-51指令集以及输出的管脚相互兼容。因为将多功能的8位CPU及快闪存储器已经组合在了单个芯片中,ATMEL公司的AT89C51它是一种高效的微控制器,为很多的嵌入式系统提出了一种灵活性较高而且价格低廉的方案。图5.1 AT89C51管脚图(1)AT89C51的基本特性:*与MCS-51兼容*4K字节的可编程性快闪存储器*寿命:1000次的擦与写*数据的保存时间:十年*128*8位的内部随机存储存储器*32位的可编程端口I/O线*两个且16位的定时/计数器*中断源五个*可编程的串行通道*低功耗闲置及掉点模式*时钟电路及片内振荡器(1)每个管脚具体的说明如下: P0口:P0口是一个8位的开路且双向控制的I/O口,它的引脚可以驱动TTL门8个,当P1口管脚输入了数据时,应该先把P1口置。当成为数据总线/外部地址使用的时候,它用于传输低8位地址以及8位数据,当快闪编程的时候,P0口输入,如果作为快闪校验的时候,P0口输出,此时P0口的外部就会被拉到高电平。 P1口:P1口利用内部提供了上拉电阻且拥有8位的双向I/O口,P2口缓冲器可以驱动TTL门4个,如果P2口被置为高电平时,它的管脚就会被内部的上拉电阻进行拉高,作为它的输入。当P2口作为外部程序的存储器或者外部数据的存储器进行存取的时候,P2口就会输出地址的高8位。P3口:P3口的管脚拥有八个且带有内部上拉电阻的I/O口,可以驱动TTL门4个。如果P3口被写入1时,它就会被内部置为高电平,然后用做输入。P3口还可以作为单片机的特殊的功能口,如下所示:管脚的备选功能:* P3.0 RXD (串行的输入口)* P3.1 TYD(串行的输出口)* P3.2 /INTO (外部中断零)* P3.3 /INTI(外部中断1)* P3.4 T0(计时器0外部输入)* P3.4 T1(计时器1外部输入)* P3.6 WR (外部数据选通)* P3.7 /RD(外部数据存储器读选通)* P3 口同时为快闪编程和编程校验接收一些控制信号5.2单片机控制模块系统初始化后,主程序不断扫描键盘子程序,当开始键按下后,程序转到测频率的子程序执行测频功能。那么读入开始键之后马上跳转到测频子程序,此时子程序会先置测频率的控制位P1.0,把CPLD内部清零,然后通过健盘把预置门的定时时间读到单片机,然后预置门开始测频计数,等到预置门的时间结束之后,关预置门,当关预置门以后CPLD会给单片机信号,单片机读到此信号后,通过置 SS1,SS0的四个状态,分四次把测频结果32位数据读入到单片机,计算后把结果转为BCD码并送LED显示。显示子程序通过查表方式,将频率测量值以十进制的形式显示出来。开始初始化键盘扫描开始键按下测频子程序显示子程序结束NY Y图5.2 程序图单片机的测频控制的电路如图所示,单片机完成了测量电路的数据处理、测试控制及显示输出,并且CPLD模块完成了多种的测试功能。+5vB0B1B2B3B4B5B6B7 FSB8 FXB9B10 FC B11B12B13B14B15P1.0 VCC P1.1 P0.0P1.2 P0.1P1.3 P0.2P1.4 P0.3P1.5 P0.4P1.6 P0.5P1.7 P0.6REST/VDD P0.7P3.0 EA P3.1 ALEP3.2 PSENP3.3 P2.0P3.4 P2.1P3.5 P2.2P3.6 P2.3P3.7 P2.4XTAL1 P2.5XTAL2 P2.6VSS P2.7标准频率被测频率 自校频率 S0 AT89C51CLR CSAS ED1SS1GNDSTROBE CLK 图5.3 单片机的测频电路 (1)当CPLD对频率计数的时候,用了32位的计数器,单片机分别用四次把32位数据进行读出。采用单片机的P0口读计数器输出B7.0的标准信号频率值,P2口读被测信号的值,计数器COUNT就会输出通道B15.8。被读到的四组的8位数据会由单片机的SS1,SS0地址编码进行选择。然后通过P1口进行输出控制。(2) CS:CS为高电平时,测脉宽;CS=0时,等精度的测频;P1.0口控制CS。(3) CLR:清零。(4) ED2:脉宽计数的结束信号,当其为高电平时计数就会结束。(5) AS:自校与测频选择模块。AS=1,测频,AS=0,自校。(6) STROBE:作为预置门闸信号,门宽会通过键盘采用单片机进行控制,当其为高电平时,预置门就会打开;当其为低电平时,预置门就会关闭。(7) ED1:测频计数的结束信号,ED1=0的时候计数结束。(8) SS0,SS1:计数位读出选通控制。若令SS=SS1,SS0,则当SS=0,1,2,3时可从P0口和P2口由低8位至高8位分别读出两组4个8位计数值。(9) FS为标准频率信号输入,此频率来源于50MHZ的晶振。(10) FX为被测信号输入。(11) FC为自校频率,取自单片机的外接晶振。6.实验测试与误差分析6.1 测量精度分析 由前面部分所表述的测量性原理可知,这个系统测频公式为FX=(FS/Ns)*Nx它的误差分析为下:设所测到的频率值是FX,真实值是FXE,标准频率是FS。在测量中,因为FX计数起停时间是由信号上升沿进行触发的,在Tpr时间内FX的计数NX无误差;此时一个周期里的计数值Ns最多会相差一个正负脉冲,即:|et|1则:FX/Nx=FS/NsFXE/Nx=FS/(Ns+et)由此推得:FX=(FS/Ns)*NxFXE=FS/(Ns+et)*Nx由相对误差的公式可得:FXE/FXE=|FXE-FX|/FXE可以得:FXE/FXE=|et|/Ns因为 |et|1 所以|et|/NS1/Ns即|=FXE/FXE1/NsNs=TprFS由此可知:(1)相对的测量误差的结果和频率之间没有关系。(2)增大周期或着提高FS,可增大Ns,以此来减小测量误差,提高它测量的精度。(3)标准信号频率误差是FS/FS,因为晶体的稳定度比较高,标准频率信号的误差可进行校准。(4)这个测频系统测量精度和预置门的宽度与标准频率之间有关,然跟被测信号频率没有关系。 当预置门的时间与常规的闸门时间之间相同,但是与被测的频率不一样的情况下,这个测频系统它使用的测量方法的精度保持不变。为了保持测量精度不变,可以采用高频率的稳定度与高精度且恒温可以微调节的振荡器为标准频率的发生器,故我们选择50MHZ晶振。6.2 实验测试与误差分析6.2.1 实验测试方法 本系统中既含有CPLD自编程的硬件性设计电路,又包括有单片机的控制电路,整个系统就会比较复杂,所以我们用了自底向上的方法,即先进行每个单元电路模块的软件仿真与硬件测试,且对每个单元电路模块进行软件仿真与硬件调试,且在每个单元电路模块调试好以后会进行系统的联调,最后在对硬件进行编程固化与系统的组装。系统的软/硬件开发环境如下:(1) 系统的开发软件:Quartus 9.0.(2) 单片机及CPLD芯片的调试设备。6.2.2 系统硬件的验证1.单元模块电路调试 FPGA/CPLD测频的专用电路调试:使用Quartus 9.0与计算机以及实验系统的软件与设备,对复杂可编程逻器件测控模块电路进行硬件语言程序的调试,以及仿真和编程下载,硬件测试等。2.系统联合起来调试:在每个单元电路进行调试好以后就可以进行系统之间的联调。3.系统硬件的验证:系统联合进行调试成功以后,可以将单片机的程序经过编程器固化连接到单片机里并插到EDA实验系统的单片机的插座上,把VHDL设计进行适配后的网表,对CPLD进行编程的下载,然后输入相关信号,且进行有关的性能指标测试,最后到满足系统设计的要求为止。 实验测试的数据如6.1表所示,其被测频率计数值的Nx与标准频率的计数值Ns,它是直接到内存单元里获得的十六进制数,测试频率是经过转换以后显示在LED上的被测频率值。表6.1 测试数据被测频率FINPUT/Hz 标准频率 FSD/MHz闸门时间 TF/S 被测频率计数值 标准频率计数值 测试频率NX NS /Hz15010A 1C1FECF5 1.059649115010A 1C1FECF0 1.059649111225050101A 1C1FECF5 1.05964917B 2FA7CD6 123.072881225017B 2FA7CD6 123.072881225017B 2FA7CD6 123.07288978500.163 4C8FAE 986.54350978500.163 4C8FAF 986.543359781551551552502505050505050500.10.10.10.10.10.163 4C8FAF 986.5433530ED 4C706F 125.0120430ED 4C706F 125.0219830ED 4C706F 125.0120861DA 4C7137 250.0140061DA 4C7137 250.01400250500.161DA 4C7138 250.013976.2.3 误差分析 误差分析:需要强调的是,由于实验设备有限,表格中的数据均取自单片机和实验开发系统上所输出的频率,故所有被测频率只能作为参考,他们的精度无法保证。所以,在这里进行误差分析的时候,被测参考频率的误差首先作为其中的一个因数;其二,在本系统中,我们采用8片LED显示,虽然采用浮点显示,但也只能显示8位数据,而实际运算结果多于8位,故实际所显示的结果只能保证8位有效数字,这个将成为引发误差的第二个原因;第三,前面精度分析计算的相对误差不超过1/Ns,根据表中的数据可知,此误差比较小;第四,在实际测量中,被测信号有时不能达到仿真时的效果,在闸门打开的时候,由于CPLD内部各逻辑单元延时的不一致性,从而不能使标准信号和被测信号同时计数,也会导致误差。7.软件的使用与概述7.1 AT89C51单片机keil的使用(1)打开keil软件;(2)单击project,选择New Project,选择保存路径;(3)选择对应的芯片的型号,如图7.1所示图7.1 选择芯片(3)单击File-New,出现了一个空白的Text1文档,在空白的文档处输入我们写的程序;(4)点击File-save,出现如下图7.2所示的页面,在输入文件名时,如果为c语言编程后缀为.C若用汇编程序编程,则后缀为.ASM图7.2 保存格式(5)添加文件到工程文件,选中刚才保存的文件,点击Add File to GroupSource Group;添加刚才保存的.C或.ASM文件,打开文件前面的加号,就会发现文件已经添加在中如图7.3所示;图7.3 添加工程(6)当文件添加在工程中的时候,就需要进行编译前的设置,点击Options for Target,在点击OutPut,在Create HEX File前打勾,表示编译需要产生十六进制文件,这个文件是我们烧写到单片机的必须文件,点击确定;(7)在进行编译,点击Project-Rebuild all target files,进行编译,将其产生的hex文件烧写到单片机中。7.2 Quartus开发FPGA/CPLD的流程概述FPGA基于开发流程主要包含有一下几个步骤:设计输入、设计仿真、设计综合、布局布线与配置。(1)设计输入(Design Entry)这一步的主要目的是建立源文件且形成了顶层的原理图文件。这环节就好像在Protel里画原理图,事实上就是把多种逻辑器件利用连线把它们连接在起来。 在CPLD的Quartus的设计中包含的逻辑器件: 基本元件;用户的自

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论