cpld数字频率计综合设计.doc_第1页
cpld数字频率计综合设计.doc_第2页
cpld数字频率计综合设计.doc_第3页
cpld数字频率计综合设计.doc_第4页
cpld数字频率计综合设计.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

计数式数字频率计的CPLD实现目录一、概述4二、题目要求5三、设计方案的选择53.1 频率测量方案比较63.1.1 直接测量法63.1.2 组合测频法63.1.3 倍频法63.2.1直接测量误差73.2.2 标准频率误差83.2.3 脉冲宽度测量理论误差分析8四、单元电路设计84.1 整波电路模块84.2 计数模块94.3 脉冲测量模块94.4 数据变换模块104.5 量程选择模块104.6 译码模块10五、方案的实现11六、测试和调试126.1 硬件调试126.2硬件测试126.3测试数据记录表166.4测量结果分析17七、实验元器件清单17八、实验程序17九、结束语25参考文献25计数式数字频率计的CPLD实现一、概述数字频率计是数字电路中的一个典型应用,是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用AHDL语言,将使整个系统大大简化, 提高整体的性能和可靠性。采用ADHL编程设计实现的数字频率计,除被测信号的整形部分、键输入部分和数码显示部分以外,其余全部在一片CPLD芯片上实现,整个系统非常精简。在不更改硬件电路的基础上,对系统进行各种改进还可以进一步提高系统的性能。该数字频率计具有高速、精确、可靠和抗干扰性强等优点。本文用AHDL在CPLD器件上实现一种8位数字频率计测频系统,能够用十进制数码显示被测信号的频率,不仅能够测量正弦波、方波和三角波等信号的频率,而且还能对其他多种物理量进行测量。具有体积小、可靠性高、功耗低的特点。二、题目要求基本要求:测量频率范围:100Hz100MHz,测量相对误差:1%;测量信号:方波峰峰值35V(与TTL兼容),闸门时间:1s;显示控制:静态8位七段LED显示,且要求显示稳定,刷新时间与闸门时间相同。提高要求:测量频率范围:100Hz100MHz和1Hz1MHz两档,相应的闸门时间为1s和100ms,用一开关量选择控制。显示控制:动态扫描8位七段LED显示,且要求显示无闪烁,内容刷新时间与闸门时间相同。三、设计方案的选根据频率计的设计要求,电路系统可划分为几个基本模块,如图1.1所示计数方式频率输出被测信号脉冲宽度测量电路译码器数据转换显示器量程1HZ1MHZ和100HZ100MHZ由开关K选择图1.1 频率计组成模块框图3.1 频率测量方案比较3.1.1 直接测量法大家都知道,如果根据基本原理实现对频率的数字化测量,是一种直接测量的手段,这种方法比较简单,如果能满足设计要求的话,应该作为首要的选择方案。下面我们简单分析一下使用该方法是否能满足设计要求,把被测频率信号经脉冲整形电路处理后加到闸门的一个输入端,只有在闸门开通时间T(以秒计)内, 被计数的脉冲送到十进制计数器进行计数。设计数器的值为N,则可以得到被测信号频率为f = N / T,经过对照数字化直接测量频率的原理我们可以发现,本测量在低频率段的相对测量误差较大,即在低频率段不能满足本设计的要求。3.1.2 组合测频法 是指在高频时采用直接测量法,低频时采用直接测量周期法测信号的周期,然后换算成频率。这种方法可以在一定程度上弥补方法(1)的不足,但是难以确定最佳分测点,而且电路实现比较复杂。3.1.3 倍频法是指把频率测量范围分成多个频率段,使用倍频技术,根据频率段设置倍频系数,将经过整形的低频信号进行倍频后再进行测量,对高频率段则直接进行测量, 倍频法比较难以实现。经过分析我们选择第二种方法测量,在1HZ1MHZ量程上采用直接测量周期法测信号的周期,然后换算成频率,在100HZ100MHZ量程上采用直接测量法。3.2 理论误差分析3.2.1直接测量误差 若所测频率值为fx, 被测频率的真实值为fxe, 标准频率为fs, 在一次测量中, 预置门时间为Tpr, 被测信号计数值为Nx, 标准频率信号计数值为Nx. 由于fx计数的起停时间都是由该信号的上升沿触发的, 因此在Tpr时间内对fx的计数Nx无误差, 在此时间内的计数Ns最多相差一个脉冲, 即et 1, 则下式成立: fx / Nx = fs / Ns -(式3.1) fxe / Nx = fs / ( Ns + et ) -(式3.2)可以分别推得 fx = fs Nx / Ns -(式3.3) fxe = fs Nx / ( Ns + et ) -(式3.4)根据相对误差公式有 | = fxe / fxe = ( fxe - fx ) / fxe -(式3.5)经过整理可以得到 fxe / fxe = et / Ns -(式3.6)因为et 1, 故et / Ns 1 / Ns, 即 et / Ns 1 / Ns Ns = Tpr fs -(式3.7) 根据以上分析, 可以知道在直接测量100Hz-100MHz中最大误差是测量100Hz频率是误差为1%,因此满足题目要求。 3.2.2 标准频率误差 标准频率误差为fs / fs, 因为晶体的稳定度很高, 标准频率误差可以进行校准, 相对于量化误差, 校准后的标准频率误差可以忽略。3.2.3 脉冲宽度测量理论误差分析 根据方案中的脉冲宽度测量方法, 分析脉冲宽度测量误差. 设被测信号的脉冲宽度为Twxe, 标准频率信号频率为fs, 则脉冲宽度的测量值为: Twx = Nx / fs -(式2.8) 在一次测量中, 对标准频率信号的计数值Nx可能产生1个标准频率信号周期的计数误差, 则脉冲宽度测量相对误差为: |Twx / Twx| = ( 1 fs ) / ( Nx fs ) = 1 / Nx -(式2.9)其中Nx = Twx fs. 可以看出, 在fs一定的时候, 脉冲宽度越小, 误差越大.在测量1HZ-1Mhz量程中最大误差在测量1MHz上,误差为: 当Twx = 1s, fs = 100MHz时, Nx = 100, 则有: |Twx / Twx| = 1 / 100 = 1% 因此在测量1HZ-1Mhz量程中误差也满足题目要求。四、单元电路设计4.1 整波电路模块 电路图如下,fin为输入被测信号,通过此模块,将信号二分频输出,并得到占空比为50%的方波信号。FS 图4-14.2 计数模块电路图如下,计数器模块为该电路中的核心模块,它的功能是:对系统40MHZ时钟进行分频得到1HZ的频率信号,在高电平时对输入信号进行计数,在低电平时将所计的数输出到量程选择模块锁存。图4-24.3 脉冲测量模块 此模块完成脉冲测量方式,为了提高测量精度,首先将系统时钟inclk分频得到1MHZ的时钟,在为高电平时计数,低电平时将测量数据输出。图4-34.4 数据变换模块 电路图如下,该模块完成脉冲测量数据到频率的转换,公式为:f=1000000/采样值。图4-44.5 量程选择模块 电路图如下,此模块完成计数方式与脉冲测量方式得到的数据之间的切换,其中K为高电平时选择计数方式,K为低电平时选择脉冲测量方式数据。图4-54.6 译码模块 此模块由两个电路组成一个十六进制转换BCD码转换模块16tobcd和显示输出模块decode7s组成。 16tobcd模块电路图如下,完成十六进制到BCD码转换。图4-6 decode7s模块电路图如下,主要完成7段共阴极数码管的译码及驱动,其中8位BCD码由mout31.0输入,7SA6.0、7SB7.0分别为两个扫描显示的段输出,sela3.0、selb3.0为八个扫描显示的位选择。7sc6.0、6sd6.0为两个静态显示数码管的段输出,显示“”字样。整体设计采用高位灭零显示方式。图4-7五、方案的实现8个七段数码管 CPLD40MHZ晶振电源图5-1整个方案我们在实验室进行仿真成功,通过将程序烧录到CPLD中,布置引脚观察实验结果。六、测试和调试6.1 硬件调试 在软件设计编译成功后,我们进行了每个模块在实验装置上的调试,不断修改程序直至每个模块达到预计要求。之后将所有模块连接好,进行整体调试,下图是调试成功结果,进行数码管测试,显示“8888888888”。图6-16.2硬件测试(1) 为了得到不同频率的测试信号我们专门设计了一个分频模块来产生不同频率的信号,电路图如下。图6-2(2)量程1Hz-1MHz测试调节分频模块输出信号的频率为20Hz,测试结果如下图所示。图6-3调节分频模块输出信号的频率为500Hz,测试结果如下图所示。图6-4调节分频模块输出信号的频率为5000Hz,测试结果如下图所示。图6-5(3)量程100Hz-100MHz测试调节分频模块输出信号的频率为5000Hz,测试结果如下图所示。K为高电平图6-7调节分频模块输出信号的频率为10MHz,测试结果如下图所示。K为高电平 图6-8调节分频模块输出信号的频率为40MHz,测试结果如下图所示K为高电平图6-96.3测试数据记录表 量程1Hz-1MHz100HZ-100MHz被测信号实际频率20Hz500Hz5000Hz5000Hz10MHz40MHz测试频率20Hz500Hz5000 Hz4999Hz10MHz39.999999MHz测试误差0000.02%00表6-16.4测量结果分析 通过在实验室硬件仿真结果可知基本完成了课程要求的任务,通过开关对量程进行选择,在低量程中可以经测量小于的频率。在测量误差上小于,且显示无闪烁并采用高位灭零显示。七、实验元器件清单()开发系统MAX+PLUS10.0()使用器件ACEX EP1K100QC2008-3(3)实验系统CPLDEE4使用开发系统。八、实验程序实验程序总图如下:图8-1208.1分频模块fpsubdesign fp(inclk:input;outputf :output;)Variablema 26.0:dff;fd:dff;beginma.clk=inclk;fd.clk=inclk; if ma=1 thenma=0;fd=! fd;elsema=ma+1;fd=fd;end if;outputf=fd;end;8.2计数模块fsurveyasubdesign fsurveya(inclk,fin:input;mf25.0 :output;)Variablema 26.0:dff;fd:dff;st1.0:dff;mc 25.0,mf25.0:dff;beginma.clk=inclk;fd.clk=inclk;st.clk=inclk;mc.clk=fin;mf.clk=inclk; if ma=79999999 thenma=0;fd=! fd;elsema=ma+1;fd=fd;end if;case st is when 0= mc=0;mf=mf;if fd then st=1;else st=0;end if;when 1=MF=MF;If fd then st =1;mc=mc+1;elsest=2;mc=mc;end if;when 2= mf=mc;mc=mc;st=0;end case;end;8.3脉冲测量模块fsurveybSubdesign fsurveyb(inclk,fin:input;mf25.0 : output;)Variablema25.0 , mf25.0, mc25.0:dff;mfd: dff;st1.0:dff;beginma.clk=inclk;mfd.clk=inclk;st.clk=inclk;mf.clk=inclk; mc.clk=mfd;if ma=19 thenma=0;mfd=! Mfd;elsema=ma+1;mfd=mfd;end if ;case st iswhen 0= mf=mf;mc=0;if fin thenst=1;elsest=0;end if;when 1=mf=mf;if fin thenst=1; elsest=0;end if;when 1=mf=mf;if fin thenmc=mc+1;st=1;elsest=2;mc=mc;end if;when 2=mf=mc;mc=mc;st=0;end case;end;8.4数据变换模块div10mcincludedivide32.inc;subdesign div10mc(inclk,mf25.0:input;mfo25.0:output;)variablemdiv32:divide32;beginmdiv32.inclk=inclk;mdiv32.a=100000000;mdiv32.b=(0,mf);mfo=mdiv32.c25.0;end;8.5量程选择模块selsubdesignsel(mf25.0,mfo25.0,k:input;mfout25.0:output;)beginIfkthenmfout =mf ;elsemfout =mfo;end if;end;8.6十六进制转换BCD码模块16tobcdsubdesign 16tobcd(mf25.0,inclk:input;mout31.0:output;)variablema25.0,mout31.0:dff;st1.0:dff;moutx31.0:dff;beginma.clk=inclk;st.clk=inclk;moutx31.0.clk=inclk;mout.clk=inclk;case st iswhen 0=ma=mf;st=1;mout=mout;when 1= mout=mout;if ma99 thenst=1;ma=ma-100; if moutx11.8=9 then moutx11.8=0; if moutx15.12=9 then moutx15.12=0; if moutx19.16=9 then moutx19.16=0; if moutx23.20 =9 thenmoutx23.20=0; if moutx27.24=9 then moutx27.24=0;moutx31.28=moutx31.28+1; elsemoutx27.24=moutx27.24+1;moutx31.28=moutx31.28;end if;elsemoutx23.20=moutx23.20+1;moutx31.24=moutx31.24;end if;ElseMoutx19.16=moutx19.16+1;moutx31.20=moutx31.20;End if;ElseMoutx15.12=moutx15.12+1;moutx31.16=moutx31.16;End if;Else Moutx11.8=moutx11.8+1;moutx31.12=moutx31.12;End if;Else Moutx31.8=moutx31.8;If ma9 then St=1;ma=ma-10; Moutx7.4=moutx7.4+1;ElseMoutx7.4=moutx7.4;Moutx3.0=ma3.0;St=2;End if;End if;When 2= mout=moutx;moutx=moutx;st=0;end case;end;8.7译码驱动模块decode7ssubdesign decode7s(mout31.0,inclk,k:input;7sa6.0,7sb7.0,sela3.0,selb 3.0:output;7sc6.0,7sd6.0:output;)variablema9.0,f,sta1.0,stb1.0,mda3.0,mdb3.0:dff;begin7sc=h5b;7sd=h76;mda.clk=inclk;mdb.clk=inclk;ma.clk=inclk;sta.clk=f;stb.clk=f;f.clk=inclk;if ma=1000 then ma=0;f=!f;elsema=ma+1;f=f;end if;sta=sta+1;stb=stb+1;case sta iswhen 0= Mda=mout31.28;If mout 31.28=0 thenSela=0;ElseSela=8;End if;When 1=Mda=mout27.24;If mout31.24=0 thenSela=0;ElseSela=4;End if;When 2=Mda=mout23.20;If mout31.20=0 thenSela=0;ElseSela=2;End if;When 3=Mda=mout19.16;If mout31.16=0 thenSela=0;Else Sela=1;End if;End case;Case stb isWhen 0=Mdb=mout15.12;If mout31.12=0 thenselb=0;Elseselb=8;End if; When 1=Mdb=mout11.8;If k then7sb7=gnd;Else7sb7=vcc;End if;If mout31.8=0 thenSelb=0;ElseSelb=4;End if;When 2=Mdb=mout7.4;Selb=2;When 3=Mdb=mout3.0;Selb=1;End case;TableMd

温馨提示

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

评论

0/150

提交评论