毕业设计(论文)基于CPLD多功能等精度数字频率计的设计_第1页
毕业设计(论文)基于CPLD多功能等精度数字频率计的设计_第2页
毕业设计(论文)基于CPLD多功能等精度数字频率计的设计_第3页
毕业设计(论文)基于CPLD多功能等精度数字频率计的设计_第4页
毕业设计(论文)基于CPLD多功能等精度数字频率计的设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、河南机电高等专科学校毕业设计/论文绪论测频一直以来都是电子和通讯系统工作的重要手段之一。高精度的测频仪和频率发生器有着广泛的市场前景。以往的测频仪都是在低频段利用测周的方法、高频段用测频的方法,其精度往往会随着被测频率的下降而下降。该测频仪利用等精度的测频原理,保证了整个测试范围内恒定的测试精度。在器件选择上,该测频仪采用atmel公司生产的at89c51单片机和altera公司所生产的max 7000系列中的epm7128slc84-15。at89c51是一种低功耗、高性能的8位cmos单片机。片内有4kb的闪烁可编程/擦除只读存储器(fperom),并且与mcs-51引脚和指令系统完全兼容

2、。芯片上的fperom允许在线或采用通用的编程器对其重复编程,可循环写入/擦除1000次。并且有宽工作电压范围、存储数据保存时间长(10年)等优点。是一款性价比较高的单片机。epm7128slc84-15是在altera公司的第二代max结构基础上,采用先进的氧化物半导体e2prom技术制造的。可容纳各种各样、独立的组合逻辑和时序逻辑函数。可以快速而有效的重新编程,并保证可编程擦除100次。epm7128slc84-15包含128个宏单元。每16个宏单元组成一个逻辑阵列块,同时,每个宏单元有一个可编程的“与”阵和固定的“或”阵,以及一个具有独立可编程时钟、时钟使能、清除和置位功能的可配置触发器

3、。单片机的软件采用汇编语言编写,cpld的各种功能块用vhdl语言描述实现。测频仪器性能也各不相同。该测频仪将cpld的高速高可靠性、单片机的灵活控制功能和等精度测频原理较高的测量精度相结合,具有速度快、功能全、精度高等特点,适合于教学及科研工作使用。第1章 等精度测频原理1.1等精度测频原理等精度测频的实现方法可以用图1-1来简化说明。图1-1 等精度测频原理框图图1-1中的门控信号是可预制的宽度为tpr的一个脉冲。count1和count2是两个可控计数器。标准频率信号从count1的时钟输入端clk输入,其频率为fs;经整形后的被测信号从count2的时钟输入端clk输入,设其实际频率为

4、fxe ,测量频率为fx。当门控信号为高电平时,被测信号的上沿通过d触发器的q端同时启动计数器count1和count2。对被测信号fx和标准频率信号fs同时计数。当门控信号为低电平时,随后而至的被测信号的上沿将使这两个计数器同时关闭。设在一次门控时间tpr中对被测信号计数值为nx。对标准频率信号的计数值为ns。则:(标准频率和被测频率的门宽时间tpr完全相同)就可以得到被测信号的频率值为:误差分析如下:在一次测量中,由于fx计数的起停时间都是由该信号的上升沿触发的,在tpr时间内对fx的计数nx无误差;在此时间内fs的计数ns最多相差一个脉冲,即,则下式成立:所以有: 根据相对误差公式有:代

5、入整理得:又因为:所以:即:其中:由以上推导结果可得出下面结论:(1) 相对测量误差与频率无关。(2) 增大tpr或提高fs,可以增大ns,减少测量误差,提高测量精度。(3) 标准频率误差为fs/fs,由于晶体的稳定度很高,标准频率误差可以进行校准。(4) 等精度测频方法测量精度与预置门宽度和标准频率有关,与被测信号的频率无关。在预置门时一间和常规测频闸门时间相同而被测信号频率不同的情况下,等精度测量法的测量精度在整个测量范围内保持恒定不变,而常规的直接测频法(在低频时用测周法,高频时用测频法),其精度会随着被测信号频率的下降而下降。1.2 基本性能指标(1) 频率测试功能:测频范围0.1hz

6、60mhz,测频精度:测频全域相对误差恒为百万分之一(由led的显示位数决定)。(2) 周期测试功能:信号测试范围与精度要求与测频功能相同。(3) 脉宽测试功能:测试范围0.11s1s,测试精度0.01s。(4) 占空比测试功能:测试精度1%99%。第2章 硬件电路设计2.1 系统原理框图系统组成原理框图如图2-1所示。由一片cpld完成各种测试功能,对标准频率和被测信号进行计数。单片机对整个测试系统进行控制,包括对键盘信号的读入与处理;对cpld测量过程的控制、测量结果数据的处理;最后将测量结果送led显示输出。被测信号整形电路主要对被测信号进行限幅、放大、再经施密特触发器整形后送入cpld

7、。用50mhz的有源晶振作为cpld的测试标准频率。电源部分采用220v交流电经变压、滤波、稳压后得到5v电压供整个系统使用。单片机由外接12mhz标准晶振提供时钟电路。图2-1 系统原理框图2.2 键控制模块图2-2为按键接口电路,因为按键数量较少,所以采用独立式按键结构。图2-2 键盘接口电路每个按键各接一根输入线,从而使一根线上按键的工作状态不会影响其它线上的工作状态。八个按键通过一片并入串出的74ls165接入单片机,单片机的p3.0口为串行数据输入线,p3.1口提供741.s165移位所需的时钟信号,p3.2口控制74ls165的并行置入和串行移位信号线。p3.5为信号封所线,防止按

8、键按下时的强电流对显示造成影响。按键的消抖用软件延时的方法实现。八个键分别为测频、测周期、测占空比、测脉宽、自校五个功能键和0.1秒、1秒、10秒三个时间键。74ls165的8个i/0口通过3k的电阻接高电平,当扫描到某一位为低电平时表示有按键按下。2.3 显示模块测试结果输出显示模块如图2-3所示。8位8段led采用共阳极接法,显示方式为静态显示,静态显示方式显示亮度较高,而且显示状态稳定。根据实际亮度需求每段led接5k的限流电阻。at89c51的p3.0口为数据输出线,数据经8片出入并处74ls164以串行方式送入led(数据从最右端串行移入),每片74ls164驱动一只led。p3.1

9、为串行移位时钟线。p3.4为数据封锁线。图2-3 显示模块2.4 单片机主控模块如图2-4所示,该模块主要完成单片机对cpld的控制。单片机p1口的8根口线为控制信号线,具体控制功能如下:pl.0 (end):脉宽计数结束状态信号,end=1计数结束。pl.1 (tf):tf=0时等精度测频,tf=1时测脉宽。p1.2 (choise):自校/测频选择,choise=1测频,choise=0自校。p1.3 (start):当tf=0时,作为预置门闸,门宽由键盘输入值决定,start=1时预置门打开,start=0时关门;当tf=1时,start有第二功能,此时,当start=0时测负脉宽,当s

10、tart=1时测正脉宽,利用此功能可分别获得脉宽和占空比数据。p1.4 (clr/trig):当tf=0时系统全清零功能,当tf=1时clr/trig的上跳沿将启动count2,进行脉宽计数。p1.5 (eend):等精度测频计数结束状态信号,eend=0时计数结束。p1.6 (adra);p1.7 (adrb):计数值读出选通控制。若令ad=adra, adrb,则当ad=00、01、10、11时可从p0口和p2口由低8位至高8位分别读出两组4个8位计数值。单片机p0口的8根口线接cpld的a0a7口,输出的是标准频率的计数值。单片机p2口的8根口线接cpld的b0b7口,输出的是被测频率的

11、计数值。图2-4 单片机主控模块2.5 输入信号整形模块图2-5为输入信号整形电路。被测信号经限幅电路(由两片in4148组成)限幅后,由两级直接耦合放大器放大,最后再由施密特触发器整形,送入cpld进行测频。该电路r,c参数根据实际所测信号的带宽确定,如频率较高(大于70mhz)则电路和pcb布线都需作较大改动。本测频仪调试阶段所用信号为信号发生器输出的标准信号,故对该电路部分未做深入分析,如果要做实际应用,该电路部分还需进一步研究。图2-5 输入信号整形模块2.6 cpld实现模块该系统的测试功能都是由cpld完成的。根据等精度的测频原理,利用vhdl语言编写各部分逻辑模块,实现框图如图2

12、-6所示。图2-6 测试原理框图fch模块为测频、测周、自校选择控制模块,contrl1控制标准频率和被测频率的计数装置,contrl2为脉宽和占空比测量的控制模块,count1、count2是两个32位的计数器,分别对标准频率和被测频率进行计数,并将计数结果由8位总线输出到单片机。2.6.1 测频/测周期的实现测频/测周期时,先由单片机给出控制信号,令tf=0,choise=1,选择测频/测周,再由单片机将clr端置高完成测试电路的初始化。接下来单片机将门控信号start置为高电平,由被测信号的上升沿将两个计数器同时打开,对被测频率和标准频率同时进行计数。定时结束后,单片机把contrl的s

13、tart端置为低电平。在被测信号的下一个脉冲的上沿到来时,count1停止计数,同时关断count2对fs的计数。计数结束后由eend端输出的低电平来指示计数的结束,单片机即可通过adra、adrb分别读回标准频率和被测频率的计数值。图2-7是控制部分电路。如图所示,当start为高电平时,紧接着fin的下一个高电平使q端置高,将标准频率由clk2送入conut2进行计数,被测频率由clk1送入count1进行计数,同时将eend置为高电平,作为结束状态标志。当start为低电平时,紧接着的fin的下一个脉冲上升沿将两个计数器通道切断,并将eend置为低电平,通知单片机计数已结束。图2-7 测

14、频/测周期控制电路2.6.2 脉宽和占空比测量模块设计图2-8为脉宽测量电路图。在测量开始前先向电路的clr端送一个正脉冲以便进行电路的工作状态初始化。然后将gate的cnl端置为高电平,表示开始脉冲宽度的测量。在被测脉冲的上升沿到来时,contrl2的pul端输出高电平,标准频率进入到count2。在被测频率下降沿到来时,contrl2的pul端输出低电平,计数器count2被关断。最后山单片机读出计数结果,并通过测量原理中的计算公式得出脉冲宽度。contrl2子模块的主要特点是:电路的设计保证了只有contrl2被初始化过后才能工作,否则pul输出始终为零。只有在先检测到上升沿后pul才为

15、高电平,然后在检测到下降沿时,pul输出为低电平;endd输出高电平以便通知单片机计数已经结束;如果先检测到下降沿,pul并无变化;在检测到上沿并紧接一个下沿后,contrl2不再发生变化直到下一个初始化信号到来。图2-8 脉宽测量电路图2.7 电源模块整个电路的供电电源如图2-6所示,220交流电经变压、滤波后,由一片7805将输出电压稳压在+5v。图2-9 电源模块第3章 软件部分设计3.1 单片机主程序图3-1表示单片机主程序流程图。各种测试功能流程如下:系统初始化后,由键盘扫描子程序读入要执行的功能键。比如要执行的功能为测频功能,那么读入键之后马上跳转到测频子程序,测频子程序先置测频控

16、制位clr(p1.4),tf(p1.1), choise(p1.2),将cpld内的计数器清零,然后通过键盘将顶置门的时间值读入单片机,打开预置门进行测频计数,等预置门时间到后,关断预置门,cpld关断预置门后将给单片机一个结束信号,单片机读到结束信号后,通过置adra,adrb的四个状态,分四次将测频结果的32位数据读入单片机,计算后将结果转换为bcd码送led显示输出。测周期时只要将计算结果由频率值取倒转换为周期值即可。自校子程序与测频子程序相同。脉宽的测量子程序与周期测量子程序基本一致,只是脉宽测量是在被测信号的脉宽内对标准频率进行计数,所以在cpld内要有对上下沿的处理过程,而且技术结

17、果为一组数据,不像测频和测周期一样同时对被测信号和标准信号进行计数。占空比子程序是在脉宽子程序的基础上,先付一个脉宽进行计数,测得计数值为n1,然后将输入信号反相,再测其脉冲宽度,测得计数值为n2,则可以计算出:在空闲状态程序始终扫描键盘,等待输入,并在led上显示cpuready的字样。执行完某一功能后程序又会回到键盘扫描状态上来。图3-1 单片机主程序流程图图3-2为测频子程序流程图,测周期、测脉宽等子程序除了计算部分有所区别外其余与测频子程序流程基本一致,这里不再详细列出。图3-2 测频子程序流程图测频主程序:key1: lcall clear ;调led熄灭子程序lcall time

18、;调tpr时间值mov r0, 20h clr p1.1 ;tf=0测频setb p1.2 ;choise=1setb p1.4 ;系统初始化(clr=1)clr p1.4setb p1.3 ;start=1dely: acall d_100ms djnz r0, dely clr p1.3 ;start=0eend: mov c, p1.5 ;将eend状态送至c jc eend mov a, #pp111111b ;置p3.7(adra),p3.6(adrb)=0 anl p3, a nop mov a, p0 ;将ns的值存入7073h单元 mov 70h, a ;将nx的值存入7477

19、h单元 mov a, p2 mov 74h, a setb p3.6 nop mov a, p0 mov 71h, a mov a, p2 mov 75h, a setb p3.7 clr p3.6 nop mov a, p0 mov 72h, amov a, p2 mov 76h, a setb p3.6 nop mov a, p0 mov 73h, a mov a, p2 mov 77h, a mov r0, #80h ;50m标准频率转换为16进制为2faf080 mov r1, 0f0h mov r2, #0fah mov r3, #02h ;r3为最高位 mov r4, 74h mo

20、v r5, 75h mov r6, 76h mov r7, 77h acall mul_sub ;调四字节乘法子程序 acall ndiv ;调除法子程序 acall bin_bcd ;调二进制转换bcd码子程序 acall extd ;调字节展开子程序 acall disp ;送led显示 ret字节展开子程序:extd: mov r1, #30h mov r7, #04hagan: mov a, r0 mov r3, a anl a, #00001111b mov r1, a mov a, r3 inc r1 anl a, #11110000b mov r1, a inc r1 inc r

21、0 djnz r7, agan ret延时0.1s子程序:d_100ms: mov r7, #0c8hdl12: mov r6, #0f9hdl11: djnz r6, dl11djnz r7, dl12retled熄灭子程序:clear: mov r7, #08hmov r0, #30hmov a, #12h ;显示熄灭abcl: mov r0, ainc r0djnz r7, abclret3.2 显示子程序其流程图如图3-3。显示数据由单片机的串行口p3.0送出,p3.1口提供串行移位的时钟信号,p3.4口控制数据的输出。显示的数据存放在从30h开始的工ram单元中。串行口设为方式0。显

22、示用查表的方式,将要显示的段形码预先存入以tab开头的码表中。图3-3 显示子程序流程图具体程序如下:disp: setb p3.4 ;开显示控制 mov r7, #08h ;置显示个数 mov r0, #30h ;置显示缓冲区指针 mov scon, #00h ;设串行口方式0send: mov a, r0 add a, #0dh ;设置偏移值 movc a, a+pc mov sbuf, a ;启动发送wait: jnb ti, wait clr ti inc r0 djnz r7, send clr p3.4 rettab: db 0c0h, 0f9h, 0a4h, 0b0h, 99h,

23、 db 92h, 82h, 0f8h, 80h, 98h, db 88h, 83h, 0c6h, 0a1h, 86h, 8eh, db 7fh, 0ffh, 0c6h, 8ch, 0c1h, db 0ceh, 86h, 88h, 0a1h, 91h, db 86h, 0c8h, 0f8h, 86h, 0ceh, db 0bfh, 92h, 0f0h,3.3 键盘扫描子程序该程序采用查询方式进行工作。程序开始后,先在led上给出cpuready的提示字,然后进入键盘扫描方式。单片机通过74ls165不断查询键盘,当有键输入时,将键值读入到预存单元,然后采用软件消抖的方法,用软件延时10ms,再读

24、键值,和原键值进行比较,若和原值不相同,证明是由抖动引起的。重新扫描键盘。若相同,则跳转到相应功能子程序执行。相应功能子程序开始执行后,对按键不会再响应,直至程序执行完为止,再进入键盘扫描状态。具体程序如下:keyin : acall load ;装入cpureadyacall disp ;调显示子程序start: clr p3.2 ;并行置入键值setb p3.2 ;允许串行移位mov scon, #000a0000b ;设置串行口模式0,启动接受wait: jnb ri, waiticlr rimov a, sbufanl a, #1fh ;屏蔽高三位(时间值)mov r3, a ;暂存键

25、值acall d_10ms ;延时,去抖clr p3.2setb p3.2mov scon, #0001000bwait2: jnb ri, wait2clr rimov a, sbufanl a, #1fhmov 20h, acjne a, 21h, keyincjne a, #ieh, t0_2acall key1 ;测频子程序t0_2 cjne a, #1dh, t0_3acall key2 ;测周期子程序t0_3 cjne a, #1bh, t0_4acall key3 ;脉宽测量t0_4 cjne a, #17h, t0_5 acall key4 ;自效子程序t0_5 cjne a,

26、 #0fh, startacall key5 ;占空比测量jmp keyin延时10毫秒子程序:d10_ms: mov r7, #14hloop1: mov r6, #0f9hloop2: djnz r6, l00p2djnz r7, loop1ret提示字装入子程序:load: mov r7, #08hmov r0, #30hmov a, #13hld: mov r0, ainc r0inc adjnz r7, ldret3.4 时间值输入子程序键盘设有三个时间值键,分别为0.s 、1s和10s,来控制预置门的开关时间。在执行功能子程序之前会提示先输入时间值(在led上显示enter-sj)

27、。测高频时用0.1秒作门控时间,在满足测量精度要求下可减少计数值,减少程序运算量。测低频时,用1秒或10秒作门控时间,由其在测低于1hz 的低频时,至少要选择10秒的门控时间,才可能使被测信号被计数一个以上的脉冲。其程序执行过程与键盘扫描子程序相同。具体程序如下:time: mov r7, #08hmov r0, #30hmov a, #19h ;显示enter-sjlp: mov r0, ainc r0inc r0djnz r7, lplcall dispbegin: clr p3.4setb p3.4mov scon, 0001000bwt1: jnb ri, wticlr rimov a

28、, sbufanl a, #0e0h ;屏蔽功能键mov r3, alcall d_10msclr p3.4mov scon, #0001000bwt2: jnb ri, wt2clr rimov a, sbufanl a, #0e0hmov 22h, acjne a, 22h, begincjne a, #0c0h, s_10mov 20h, #01hrets_10 cjne a, #0a0h, s_20mov 20h, #0ahmov 20h, #0ahrets_20 cjne a, #0a0h, s_20mov 20h, #0ah ;start=0.1srets_20 cjne a, #

29、60h, beginmov 20h, #0ah ;start=1srets_20 cjne a, #60h, gegin mov 20h, #64h ;start=10sret3.5 计算及数值转换子程序单片机读入测频计数结果后,还要根据等精度测频原理进行计算,才能得到最终的测量结果。这部分计算主要包括:四字节数乘法子程序;八字节数除以四字节数除法子程序;二进制转换日cd 码子程序。3.6 误差来源探讨表3-1是一组实验测试数据结果:表3-1实验测试数据预置门宽被测参考频率被测频率值标准频率值10s1hz147185153010s1hz147185432010s1h1

30、22hz123499703901s122hz123499703851s122hz123499703870.1s978hz99050175190.1s978hz99050175180.1s978hz99050175190.1s125khz12525050095180.1s125khz12525050095190.1s125khz12525050095190.1s256khz25050050097200.1s256khz25050050097190.1s256khz2505005009719本频率计样机的制作和调试已全部完成,各种测试指标达到预期目标。由于没有比理论误差史高精度的频率源,所以只能作

31、误差来源可能性的探讨,无法准确的测出其相对误差。现将误差来源作如下分析:按照等精度测频原理的理论分析,其测频相对误差应为,即使在门宽时间为0.1s 时,其相对误差也在百万分之一以上,而现有条件无法提供精度在千万分之一以上的被测频率。但在实际测频过程中,被测频率每次的测试结果都稳定不变,标准频率计数值只有在个位出现误差,这和理论计算的结果是相吻合的,证明该频率计己达到预计设计要求。预计误差来源有以下儿和可能:(1) 被测频率的不稳定性(如信号发生器在产生1khz的频率时总是在ikh和999hz上跳动)。(2) 单片机在产生门宽信号时其上升沿和下降沿的建立时间过长,每次产生的门宽信号不一样,造成计

32、数结果的误差。(3) 由于该频率及采用8位led显示,最高显示精度为百万分之一,其舍去位数仍有有效数字,所以会造成低于测量精度的显示误差。第4章 结束语多功能等精度数字频率计的设计己接近尾声,在整个设计过程中所出现的一系列问题,使我受益颇丰。在硬件的做板过程中,由于经验不足,出现了元件布局不恰当;自定义封装过孔太小等问题。焊接时由于pcb板的制作工艺较粗糙,经常会出现焊接短路问题,排除起来比较麻烦。在调试过程中,对标准频率的计数较准确,但被测频率的计数出现了错误。由于标准频率用的是单片机的p0口按收,而被测频率用的是p2口接收,p2口在单片机的使用过程中经常被用作地址线的高8位,目前推测有可能是仿真器在工作过程中已经运用了p2口,导致p2 口在接收cpld数据过程中出现了

温馨提示

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

评论

0/150

提交评论