一种基于fpga的频率测量方法

文档序号:6177396阅读:238来源:国知局
一种基于fpga的频率测量方法
【专利摘要】本发明提供一种基于FPGA的频率测量方法,采用一个标准的基准时钟,在单位时间(1s)里对被测信号的脉冲数进行计数,即为信号的频率,由于闸门的起始和结束时刻对于信号来说是随机的,将会有一个脉冲周期的量化误差,进一步分析测量准确度:设待测信号脉冲周期为Tx,频率为Fx,当测量时间为T=1s时,测量准确度为&=Tx/T=1/Fx;已知直接测频法的测量准确度与信号的频率有关:当待测信号频率越高,测量准确度也越高,反之测量准确度也越低;直接测频法只适合测量频率较高的信号,不能满足在整个测量频段内的测量精度保持不变频率的要求,为克服低频段测量的不准确问题,采用门控信号和被测信号对计数器的使能信号进行双重控制,提高了准确度。
【专利说明】—种基于FPGA的频率测量方法
【技术领域】
[0001]本发明涉及电子设计自动化(EDA)领域,尤其涉及一种基于FPGA的频率测量方法或数字频率计的设计方法。
【背景技术】
[0002]伴随着集成电路(IC)技术的发展,电子设计自动化(EDA)逐渐成为重要的设计手段,已经广泛应用于模拟与数字电路系统等许多领域。电子设计自动化是一种实现电系统或电子产品自动化设计的技术,它与电子技术、微电子技术的发展密切相关,它吸收了计算机科学领域的大多数最新研究成果,以高性能的计算机作为工作平台,促进了工程发展。
[0003]数字频率计是一种基本的测量仪器。它被广泛应用与航天、电子、测控等领域。采用等精度频率测量方法具有测量精度保持恒定,不随所测信号的变化而变化的特点。本文首先综述了 EDA技术的发展概况,FPGA/CPLD开发的涵义、优缺点,VHDL语言的历史及其优点,概述了 EDA软件平台QUARTUS II ;然后介绍了频率测量的一般原理,利用等精度测量原理,通过FPGA运用VHDL编程,利用FPGA(现场可编程门阵列)芯片设计了一个8位数字式等精度频率计,该频率计的测量范围为0-100MHZ,利用QUARTUS II集成开发环境进行编辑、综合、波形仿真,并下载到CPLD器件中,经实际电路测试,仿真和实验结果表明,该频率计有较高的实用性和可靠性。

【发明内容】

[0004]本发明的目的是提供一种基于FPGA的频率测量方法。
[0005]本发明的目的是按以下方式实现的,采用一个标准的基准时钟,在单位时间(Is)里对被测信号的脉冲数进行计数,即为信号的频率,由于闸门的起始和结束时刻对于信号来说是随机的,将会有一个脉冲周期的量化误差,进一步分析测量准确度:设待测信号脉冲周期为Tx,频率为Fx,当测量时间为T=Is时,测量准确度为& =Tx/T=l/Fx ;已知直接测频法的测量准确度与信号的频率有关:当待测信号频率越高,测量准确度也越高,反之测量准确度也越低;直接测频法只适合测量频率较高的信号,不能满足在整个测量频段内的测量精度保持不变频率的要求,为克服低频段测量的不准确问题,采用门控信号和被测信号对计数器的使能信号进行双重控制,提高了准确度,当门控信号为I时,使能信号并不为1,只有被测信号的上升沿到来时,使能端才开始发送有效信号,两个计数器同时开始计数,当门控信号变为O时,使能信号并不是立即改变,而是当被测信号的下一个上升沿到来时才变为0,计数器停止计数,因此测量的误差最多为一个标准时钟周期,当采用IOOMHz的信号作为标准信号时,误差最大为0.01 μ s ;具体步骤如下:
I)利用串行总线数据传输方法,计算每秒钟内待测信号脉冲个数,要求计数使能信号TSTEN能产生一个I秒脉宽的周期信号,并对频率计的每一计数器cntlO的ENA使能端进行同步控制,当TSTEN为高电平时,允许计数;低电平时,停止计数,并保持其所计的数,在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前I秒钟的计数值锁存进32位锁存器REG32B中,并由外部的译码器译出并稳定显示,锁存信号之后,必须由清零信号CLR_CNT对计数器进行清零,为下一秒钟的计数操作做准备;
2)当系统正常工作时,脉冲发生器提供的IHz的输入信号,经过测频控制信号发生器进行信号的变换,产生计数信号,被测信号通过信号整形电路产生同频率的矩形波,送入计数模块,计数模块对输入的矩形波进行计数,将计数结果送入锁存器中,保证系统稳定显示数据,显示译码驱动电路将二进制表示的计数结果转换成相应的能够在液晶屏显示的十进制结果;
3)频率计采用等精度频率测量法,测量精度保持恒定,不随所测信号的变化而变化,在快速测量的要求下,要保证较高精度的测频,必须采用较高的标准频率信号,单片机受本身时钟频率和若干指令运算的限制,测频速度较慢,无法满足高速、高精度的测频要求;而采用高集成度、高速的现场可编程门阵列FPGA为实现高速、高精度的测频提供了保证;
4)等精度测量方法的闸门时间不是固定的值,而是被测信号周期的整数倍,即与被测信号同步,因此,避除了对被测信号计数所产生± I个字误差,并且达到了在整个测试频段的等精度测量,在测量过程中,有两个计数器分别对标准信号和被测信号同时计数,首先给出闸门开启信号,即预置闸门上升沿信号,此时计数器并不开始计数,而是等到被测信号的上升沿信号到来时,计数器才真正开始计数,然后预置闸门关闭信号,即下降沿信号到时,计数器并不立即停止计数,而是等到被测信号的上升沿信号到来时才结束计数,完成一次测量过程,能够看出,实际闸门时间t与预置闸门时间tl并不严格相等,但差值不超过被测信号的一个周期;
5)等精度测频方法中,CNTl和CNT2是两个可控计数器,标准频率信号从CNTl的时钟输入端CLK输入;经整形后的被测信号从CNT2的时钟输入端CLK输入,当预置门控信号为高电平时,经整形后的被测信号的上升沿信号通过D触发器的Q端同时启动CNTl和CNT2,CNTUCNT2同时对标准频率信号和经整形后的被测信号进行计数,分别为Ns与Nx,当预置门信号为低电平的时候,后而来的被测信号的上升沿信号将使两个计数器同时关闭,所测得的频率为(Fs/Ns) *NX,则等精度测量方法测量精度与预置门宽度的标准频率有关,与被测信号的频率无关,在预置门时间和常规测频闸门时间相同而被测信号频率不同的情况下,等精度测量法的测量精度不变;
6)误差分析:设在一次实际闸门时间t中计数器对被测信号的计数值为Nx,对标准信号的计数值为Ns。标准信号的频率为fs,则被测信号的频率如式(2-1):
fx=(Nx/Ns).fs(2-1)
由式1-1可知,若忽略标频fs的误差,则等精度测频可能产生的相对误差如式(2-2): δ=(Ifxe-fxI/fxe)X100%(2-2)
其中fxe为被测信号频率的准确值;
在测量中,由于fx计数的起停时间都是由该信号的上升沿触发的,在闸门时间t内对fx的计数Nx无误差(t=NxTx) Jtfs的计数Ns最多相差一个数的误差,即I ANsI≤1,其测量频率如式(2-3):
fxe=[Nx/(Ns+ Δ Ns)].fs(2-3)
将式(2_1)和(2_3)代入式(2_2),并整理如式(2_4): δ =I Δ Ns I/Ns ≤ 1/Ns=l/(t.fs)(2-4) 由上式看出,测量频率的相对误差与被测信号频率的大小无关,仅与闸门时间和标准信号频率有关,即实现了整个测试频段的等精度测量,闸门时间越长,标准频率越高,测频的相对误差就越小,标准频率可由稳定度好精度高的高频率晶体振荡器产生,在保证测量精度不变的前提下,提高标准信号频率,可使闸门时间缩短,即提高测试速度;
7)系统总体设计如下:
当系统正常工作时,由系统时钟提供的IOOMHz的输入信号,经过信号源模块,先通过100分频产生IMHZ的时钟信号,再将IMHZ的时钟信号分频产生多种频率输出,其中IHZ的输出频率被作为控制模块的时钟输入,7812HZ的输出频率被作为显示模块的时钟输入,由控制模块产生的计数使能信号testen和清零信号clr对计数模块进行控制,而由其产生的锁存信号load对锁存模块进行控制,一旦计数使能信号为高电平,并且时钟上升沿到来,计数器便开始正常计数,清零信号到来则计数清零,而当锁存信号为高电平时,数据便被锁存器锁存,然后将锁存的数据输出到显示模块显示出来,数据锁存保证系统可以稳定显示数据,显示器部分用1602液晶显示,数字频率计是由5个部分组成组成,分别是:分频器、门控电路、计数器、锁存器和显示器;
其中:根据数字频率计的系统原理,gate_control控制信号发生器,gate_control的计数使能信号gate_C0ntr0l能产生一个I s宽的周期信号,并对频率计的每一计数器couter的ENA使能端进行同步控制:当gate_control高电平时允许计数、低电平时停止计数;
flip_latch为锁存器,在信号load的上升沿时,立即对模块的输入口的数据锁存到flip_latch的内部,并由flip_latch的输出端输出,然后,1062液晶屏输出。在这里使用了锁存器,好处是稳定显示数据,不会由于周期性的清零信号而不断闪烁counter为十进制计数器,有一时钟使能输入端ENA,用于锁定计数值。当高电平时允许计数,低电平时禁止计数。将八个十进制计数器counter级联起来实现8位十进制计数功能[2’7]。LCD_Driver为七段译码显示驱动电路,将频率计数的结果译成能在数码管上显示的相对应的阿拉伯数字,便于读取测量的结果;
为了实现系统功能,测频控制信号发生器gate_control、计数器counter、锁存器flip_latch存在一个工作时序的问题,设计时需要综合考虑;
8位数字频率计的顶层框图main, bdf,设计实现包括信号源模块F1MHZ、CNT、频率计模块FREQ和显示模块LCD_Drive三大模块,下面分别介绍三个模块的结构和实现方法;
信号源模块
信号源是为了产生IMHz的门控信号和待测的定频信号,而对输入系统时钟elk(50MHz)进行分频的模块,设计源代码gate_control.v对输入系统时钟elk (50MHz)进行分频产生IMHz信号;
分频器
CLK为PIN1MHZ输入的IMHZ信号,freql为输出给控制信号发生器的IHZ信号; 测频控制信号产生器
控制模块的作用是产生测频所需要的各种控制信号,控制信号的标准输入时钟为1HZ,每两个时钟周期进行一次频率测量,该模块产生的个控制信号用于在每次测量开始时,对计数器进行复位,以清除上次测量的结果,该复位信号高电平有效,持续半个时钟周期的时间,fdiv为计数允许信号,在fdiv信号的上升沿时刻计数模块开始对输入信号的频率进行测量,测量时间恰为一个时钟周期,正好为单位时间1S,在此时间里被测信号的脉冲数进行计数,即为信号的频率,然后将值锁存,并送到数码管显示出来,设置锁存器的好处是使显示的数据稳定,不会由于周期性的清零信号而不断闪烁,在每一次测量开始时,都必须重新对计数器清O ;
锁存器
锁存器模块也是必不可少的,测量模块测量完成后,在load信号的上升沿时刻将测量值锁存到寄存器中,然后输出到显示模块,锁存器是起数据保持的作用,它将会把数据保存到下次触发或复位,锁存器模块是主从触发器组成的,用于存储数据来进行交换,使数据稳定下来保持一段时间不变化,直到新的数据将其替换;
程序是用来实现锁存器模块的功能,在锁存信号load的上升沿到来时,锁存器将测量值锁存到寄存器,然后输出到显示模块,锁存输出并不是立即进行的,而是经历了一个短暂的延时,这是由于硬件引起的;
十进制计数器
计数器模块是由8个带有异步清零端,进位信号输出的模为10的计数模块级连而成,通过counter进行元件例化实现,此十进制计数器的特殊之处是,有一时钟使能输入端ENA,用于锁定计数器,当高电平计数允许,低电平时计数禁止,计数器模块用于对输入信号的脉冲进行计数,该模块必须有计数允许、异步清零等端口,以便于控制模块对其进行控制;
程序模块实现的功能是带使能端的10进制计数,程序要求只有当使能端信号为高电平时计数器才能正常工作,每个时钟的上升沿到来时计数器加1,因为这里要实现的是10进制计数,所以当计数到10时计数器清零,同时产生进位信号,这里的进位信号仅为一个脉冲信号,一旦计数从10变为1,脉冲信号立即变为低电平,同时该计数器也应带有清零信号,一旦清零信号为高电平,计数器立即清零;
显示模块是IXD1602液晶显示屏:
液晶显示屏驱动模块型号是IXD1602。
[0006]本发明的有益效果是:本发明提供了为克服低频段测量的不准确问题,采用门控信号和被测信号对计数器的使能信号进行双重控制,大大提高了准确度。当门控信号为I时,使能信号并不为1,只有被测信号的上升沿到来时,使能端才开始发送有效信号,两个计数器同时开始计数。当门控信号变为O时,使能信号并不是立即改变,而是当被测信号的下一个上升沿到来时才变为0,计数器停止计数。因此测量的误差最多为一个标准时钟周期。当采用IOOMHz的信号作为标准信号时,误差最大为0.01 μ S。
【专利附图】

【附图说明】
[0007]图1是等精度测频原理波形图图;
图2是等精度测频实现原理图;
图3是数字频率计的原理框图;
图4是fdiv封装图;
图5是fdiv的时序仿真图;图6是flip_latch的封装图;
图7是flip_latch的时序仿真图;
图8是counter的封装图;
_是CNTlO的时序仿真图;
图10是IXD1602液晶显示屏驱动模块结构图;
图11是IXD1602液晶显示屏驱动模块的仿真图。
【具体实施方式】[0008]参照说明书附图对本发明的方法作以下详细地说明。
[0009]等精度测频方法是在直接测频方法的基础上发展起来的。它的闸门时间不是固定的值,而是被测信号周期的整数倍,即与被测信号同步,因此,避除了对被测信号计数所产生±1个字误差,并且达到了在整个测试频段的等精度测量。其测频原理如图2.1所示。在测量过程中,有两个计数器分别对标准信号和被测信号同时计数。首先给出闸门开启信号(预置闸门上升沿),此时计数器并不开始计数,而是等到被测信号的上升沿到来时,计数器才真正开始计数。然后预置闸门关闭信号(下降沿)到时,计数器并不立即停止计数,而是等到被测信号的上升沿到来时才结束计数,完成一次测量过程。可以看出,实际闸门时间t与预置闸门时间tl并不严格相等,但差值不超过被测信号的一个周期。
[0010]等精度测频原理波形图如图1所示:
等精度测频的实现方法可简化为图2所示。CNTl和CNT2是两个可控计数器,标准频率信号从CNTl的时钟输入端CLK输入;经整形后的被测信号从CNT2的时钟输入端CLK输入。当预置门控信号为高电平时,经整形后的被测信号的上升沿通过D触发器的Q端同时启动CNTl和CNT2。CNTUCNT2同时对标准频率信号和经整形后的被测信号进行计数,分别为Ns与Nx。当预置门信号为低电平的时候,后而来的被测信号的上升沿将使两个计数器同时关闭,所测得的频率为(FS/NS)*NX。则等精度测量方法测量精度与预置门宽度的标准频率有关,与被测信号的频率无关。在预置门时间和常规测频闸门时间相同而被测信号频率不同的情况下,等精度测量法的测量精度不变。图2是等精度测频实现原理图误差分析
设在一次实际闸门时间t中计数器对被测信号的计数值为Nx,对标准信号的计数值为Ns。标准信号的频率为fs,则被测信号的频率如式(2-1):
fx=(Nx/Ns).fs(2-1)
由式1-1可知,若忽略标频fs的误差,则等精度测频可能产生的相对误差如式(2-2): δ=(Ifxe-fxI/fxe)X100%(2-2)
其中fxe为被测信号频率的准确值。
[0011]在测量中,由于fx计数的起停时间都是由该信号的上升沿触发的,在闸门时间t内对fx的计数Nx无误差(t=NxTx) difs的计数Ns最多相差一个数的误差,即I ANsI≤1,其测量频率如式(2-3):
fxe=[Nx/(Ns+ Δ Ns)].fs(2-3)
将式(2_1)和(2_3)代入式(2_2),并整理如式(2_4): δ =I Δ Ns I/Ns≤ 1/Ns=l/(t.fs)(2-4) 由上式可以看出,测量频率的相对误差与被测信号频率的大小无关,仅与闸门时间和标准信号频率有关,即实现了整个测试频段的等精度测量。闸门时间越长,标准频率越高,测频的相对误差就越小。标准频率可由稳定度好、精度高的高频率晶体振荡器产生,在保证测量精度不变的前提下,提高标准信号频率,可使闸门时间缩短,即提高测试速度。
[0012]系统的总体设计
当系统正常工作时,由系统时钟提供的IOOMHz的输入信号,经过信号源模块,先通过100分频产生IMHZ的时钟信号,再将IMHZ的时钟信号分频产生多种频率输出,其中IHZ的输出频率被作为控制模块的时钟输入,7812HZ的输出频率被作为显示模块的时钟输入,由控制模块产生的计数使能信号testen和清零信号clr对计数模块进行控制,而由其产生的锁存信号load对锁存模块进行控制,一旦计数使能信号为高电平,并且时钟上升沿到来,计数器便开始正常计数,清零信号到来则计数清零,而当锁存信号为高电平时,数据便被锁存器锁存,然后将锁存的数据输出到显示模块显示出来,数据锁存保证系统可以稳定显示数据,显示器部分用1602液晶显示。
[0013]数字频率计的原理框图如图3所示。主要由5个部分组成组成,分别是:分频器、门控电路、计数器、锁存器和显示器。
[0014]根据数字频率计的系统原理,gate_control控制信号发生器。gate_control的计数使能信号gate_control能产生一个I s宽的周期信号,并对频率计的每一计数器couter的ENA使能端进行同步控制:当gate_control高电平时允许计数、低电平时停止计数。
[0015]flip_latch为锁存器。在信号load的上升沿时,立即对模块的输入口的数据锁存到flip_latch的内部,并由flip_latch的输出端输出,然后,1062液晶屏输出。在这里使用了锁存器,好处是可以稳定显示数据,不会由于周期性的清零信号而不断闪烁。counter为十进制计数器。有一时钟使能输入端ENA,用于锁定计数值。当高电平时允许计数,低电平时禁止计数。将八个十进制计数器counter级联起来实现8位十进制计数功能[2'7]。LCD_Driver为七段译码显示驱动电路,可以将频率计数的结果译成能在数码管上显示的相对应的阿拉伯数字,便于读取测量的结果。
[0016]为了实现系统功能,测频控制信号发生器gate_C0ntr0l、计数器counter、锁存器flip_latch存在一个工作时序的问题,设计时需要综合考虑。
[0017]8位数字频率计的顶层框图(main, bdf ),设计实现包括信号源模块(F1MHZ、CNT),频率计模块(FREQ)和显示模块(LCD_Drive)三大模块。下面分别介绍三个模块的结构和实现方法。
[0018]信号源模块
信号源是为了产生IMHz的门控信号和待测的定频信号,而对输入系统时钟elk(50MHz)进行分频的模块,设计源代码gate_control.v对输入系统时钟elk (50MHz)进行分频产生IMHz信号。
[0019]分频器
fdiv的封装图如图4,图中CLK为PIN1MHZ输入的IMHZ信号,freql为输出给控制信号发生器的IHZ信号。
[0020]fdiv的工作时序仿真图如图5所示。
[0021]测频控制信号产生器 控制模块的作用是产生测频所需要的各种控制信号。控制信号的标准输入时钟为1HZ,每两个时钟周期进行一次频率测量。该模块产生的个控制信号用于在每次测量开始时,对计数器进行复位,以清除上次测量的结果,该复位信号高电平有效,持续半个时钟周期的时间。fdiv为计数允许信号,在fdiv信号的上升沿时刻计数模块开始对输入信号的频率进行测量,测量时间恰为一个时钟周期(正好为单位时间Is),在此时间里被测信号的脉冲数进行计数,即为信号的频率。然后将值锁存,并送到数码管显示出来。设置锁存器的好处是使显示的数据稳定,不会由于周期性的清零信号而不断闪烁。在每一次测量开始时,都必须重新对计数器清O。
[0022]锁存器
锁存器模块也是必不可少的,测量模块测量完成后,在load信号的上升沿时刻将测量值锁存到寄存器中,然后输出到显示模块。锁存器是起数据保持的作用,它将会把数据保存到下次触发或复位。主要是主从触发器组成的。用于存储数据来进行交换,使数据稳定下来保持一段时间不变化,直到新的数据将其替换。
[0023]锁存器flip_latch 的封装如图 6。elk 接 gate_control 的 latch_en 端。
[0024]锁存器flip_latch的工作时序图如图7所示。
[0025]本程序是用来实现锁存器模块的功能,但它的程序相当简单,在锁存信号load的上升沿到来时,锁存器将测量值锁存到寄存器,然后输出到显示模块。但从仿真图3.9中可以明显的看出,锁存输出并不是立即进行的,而是经历了一个短暂的延时,这是由于硬件引起的。
[0026]十进制计数器
计数器模块是由8个带有异步清零端,进位信号输出的模为10的计数模块级连而成。通过(counter)进行元件例化实现。此十进制计数器的特殊之处是,有一时钟使能输入端ENA,用于锁定计数器。当高电平计数允许,低电平时计数禁止。计数器模块用于对输入信号的脉冲进行计数,该模块必须有计数允许、异步清零等端口,以便于控制模块对其进行控制。
[0027]counter的封装如图8所示,其中CLR为复位接gate_control的couter_clr端,EN 接 gate_control 的 couter_en 端,Q[3..0]接锁存器的 A[3...0]端。
[0028]有时钟使能的十进制计数器counter的工作时序仿真图,如图9所示。
[0029]此程序模块实现的功能是带使能端的10进制计数。程序要求只有当使能端信号为高电平时计数器才能正常工作,每个时钟的上升沿到来时计数器加1,因为这里要实现的是10进制计数,所以当计数到10时计数器清零,同时产生进位信号,这里的进位信号仅为一个脉冲信号,一旦计数从10变为1,脉冲信号立即变为低电平。同时该计数器也应带有清零信号,一旦清零信号为高电平,计数器立即清零。
[0030]显示模块IXD1602液晶显示屏简介:
1.简介
工业字符型液晶,能够同时显示16x02即32个字符。(16列2行)
注:为了表示的方便,后文皆以I表示高电平,O表示第电平。
[0031]2.管脚功能
1602采用标准的16脚接口,其中:第I脚:vss为电源地;
第2脚:VDD接5V电源正极;
第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个IOK的电位器调整对比度);
第4脚:RS为寄存器选择,高电平I时选择数据寄存器、低电平O时选择指令寄存器; 第5脚:RW为读写信号线,高电平⑴时进行读操作,低电平(O)时进行写操作;
第6脚:E (或EN)端为使能(enable)端;
第7~14脚:DO~D7为8位双向数据端;
第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。
[0032]3.操作控制
操作控制表
操作
读状态
写指令
读数据
写数据` 输入
RS=O, Rff=I, E=I
RS=O, Rff=O,
D0~7=指令码,E=H脉冲
RS=I,Rff=I, E=I
RS=I,Rff=O,
D0~7=数据,E=H脉冲。
[0033]4.字符集
1602液晶模块内部的字符发生存储器(CGROM)已经存储了 160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B (41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
[0034]因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如’ A’。
[0035]以下是1602的16进制ASCII码表地址:
读的时候,先读左边那列,再读上面那行,如:感叹号!的ASCII为0x21,字母B的ASCII为0x42 (前面加Ox表示十六进制)。
[0036][编辑本段]指令集
1602通过D(TD7的8位数据端传输数据和指令。
[0037]显示模式设置:(初始化)
0011 0000 [0x38]设置16 X 2显示,5 X 7点阵,8位数据接口;
显示开关及光标设置:(初始化)
0000 IDCB D显示(I有效)、C光标显示(I有效)、B光标闪烁(I有效)OOOO OlNS N=I (读或写一个字符后地址指针加I &光标加1),
N=O (读或写一个字符后地址指针减I &光标减I),
S=I且N=I (当写一个字符后,整屏显示左移) s=0当写一个字符后,整屏显示不移动 数据指针设置:
数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H)
其他设置:
01H(显示清屏,数据指针=0,所有显示=0) ;02H(显示回车,数据指针=0)。
[0038]IXD1602液晶显示屏驱动模块,结构如图11所示;
Latch_en 接 gate_control 中的 latch_en, clk_LCD 接 elk。
[0039]仿真参数:定时为1/25KHZ计数值为10测量输入信号频率为25Khz/10=2.5KHZLCD显示为IOHZ。
[0040]除说明书所述的技术特征外,均为本专业技术人员的已知技术。
【权利要求】
1.一种基于FPGA的频率测量方法,其特征在于包括:采用一个标准的基准时钟,在单位时间(Is)里对被测信号的脉冲数进行计数,即为信号的频率,由于闸门的起始和结束时刻对于信号来说是随机的,将会有一个脉冲周期的量化误差,进一步分析测量准确度:设待测信号脉冲周期为Tx,频率为Fx,当测量时间为T=Is时,测量准确度为& =Tx/T=l/Fx ;已知直接测频法的测量准确度与信号的频率有关:当待测信号频率越高,测量准确度也越高,反之测量准确度也越低;直接测频法只适合测量频率较高的信号,不能满足在整个测量频段内的测量精度保持不变频率的要求,为克服低频段测量的不准确问题,采用门控信号和被测信号对计数器的使能信号进行双重控制,提高了准确度,当门控信号为I时,使能信号并不为1,只有被测信号的上升沿到来时,使能端才开始发送有效信号,两个计数器同时开始计数,当门控信号变为O时,使能信号并不是立即改变,而是当被测信号的下一个上升沿到来时才变为O,计数器停止计数,因此测量的误差最多为一个标准时钟周期,当采用.1OOMHz的信号作为标准信号时,误差最大为0.01 μ s ;具体步骤如下: .1)利用串行总线数据传输方法,计算每秒钟内待测信号脉冲个数,要求计数使能信号TSTEN能产生一个I秒脉宽的周期信号,并对频率计的每一计数器cntlO的ENA使能端进行同步控制,当TSTEN为高电平时,允许计数;低电平时,停止计数,并保持其所计的数,在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前I秒钟的计数值锁存进32位锁存器REG32B中,并由外部的译码器译出并稳定显示,锁存信号之后,必须由清零信号CLR_CNT对计数器进行清零,为下一秒钟的计数操作做准备; .2)当系统正常工作时,脉冲发生器提供的IHz的输入信号,经过测频控制信号发生器进行信号的变换,产生计数信号,被测信号通过信号整形电路产生同频率的矩形波,送入计数模块,计数模块对输入的矩形波进行计数,将计数结果送入锁存器中,保证系统稳定显示数据,显示译码驱动电路将二进制表示的计数结果转换成相应的能够在液晶屏显示的十进制结果; .3)频率计采用等精度频率测量法,测量精度保持恒定,不随所测信号的变化而变化,在快速测量的要求下,要保证较高精度的测频,必须采用较高的标准频率信号,单片机受本身时钟频率和若干指令运算的限制,测频速度较慢,无法满足高速、高精度的测频要求;而采用高集成度、高速的现场可编程门阵列FPGA为实现高速、高精度的测频提供了保证; .4)等精度测量方法的闸门时间不是固定的值,而是被测信号周期的整数倍,即与被测信号同步,因此,避除了对被测信号计数所产生± I个字误差,并且达到了在整个测试频段的等精度测量,在测量过程中,有两个计数器分别对标准信号和被测信号同时计数,首先给出闸门开启信号,即预置闸门上升沿信号,此时计数器并不开始计数,而是等到被测信号的上升沿信号到来时,计数器才真正开始计数,然后预置闸门关闭信号,即下降沿信号到时,计数器并不立即停止计数,而是等到被测信号的上升沿信号到来时才结束计数,完成一次测量过程,能够看出,实际闸门时间t与预置闸门时间tl并不严格相等,但差值不超过被测信号的一个周期; .5)等精度测频方法中,CNTl和CNT2是两个可控计数器,标准频率信号从CNTl的时钟输入端CLK输入;经整形后的被测信号从CNT2的时钟输入端CLK输入,当预置门控信号为高电平时,经整形后的被测信号的上升沿信号通过D触发器的Q端同时启动CNTl和CNT2,CNTUCNT2同时对标准频率信号和经整形后的被测信号进行计数,分别为Ns与Nx,当预置门信号为低电平的时候,后而来的被测信号的上升沿信号将使两个计数器同时关闭,所测得的频率为(Fs/Ns) *NX,则等精度测量方法测量精度与预置门宽度的标准频率有关,与被测信号的频率无关,在预置门时间和常规测频闸门时间相同而被测信号频率不同的情况下,等精度测量法的测量精度不变; 6)误差分析:设在一次实际闸门时间t中计数器对被测信号的计数值为Nx,对标准信号的计数值为Ns,标准信号的频率为fs,则被测信号的频率如式(2-1): fx=(Nx/Ns).fs(2-1) 由式1-1可知,若忽略标频fs的误差,则等精度测频可能产生的相对误差如式(2-2): δ=(Ifxe-fxI/fxe)X100%(2-2) 其中fxe为被测信号频率的准确值; 在测量中,由于fx计数的起停时间都是由该信号的上升沿触发的,在闸门时间t内对fx的计数Nx无误差(t=NxTx) Jtfs的计数Ns最多相差一个数的误差,即I ANsI≤1,其测量频率如式(2-3): fxe=[Nx/(Ns+ Δ Ns)].fs(2-3) 将式(2_1)和(2_3)代入式(2_2),并整理如式(2_4): δ =I Δ Ns I/Ns ^ 1/Ns=l/(t.fs)(2-4) 由上式看出,测量频率的相对误差与被测信号频率的大小无关,仅与闸门时间和标准信号频率有关,即实现了整个测试频段的等精度测量,闸门时间越长,标准频率越高,测频的相对误差就越小,标准频率可由稳定度好精度高的高频率晶体振荡器产生,在保证测量精度不变的前提下,提高标 准信号频率,可使闸门时间缩短,即提高测试速度; 7)系统总体设计如下: 当系统正常工作时,由系统时钟提供的IOOMHz的输入信号,经过信号源模块,先通过100分频产生IMHZ的时钟信号,再将IMHZ的时钟信号分频产生多种频率输出,其中IHZ的输出频率被作为控制模块的时钟输入,7812HZ的输出频率被作为显示模块的时钟输入,由控制模块产生的计数使能信号testen和清零信号clr对计数模块进行控制,而由其产生的锁存信号load对锁存模块进行控制,一旦计数使能信号为高电平,并且时钟上升沿到来,计数器便开始正常计数,清零信号到来则计数清零,而当锁存信号为高电平时,数据便被锁存器锁存,然后将锁存的数据输出到显示模块显示出来,数据锁存保证系统可以稳定显示数据,显示器部分用1602液晶显示,数字频率计是由5个部分组成组成,分别是:分频器、门控电路、计数器、锁存器和显示器; 其中:根据数字频率计的系统原理,gate_control控制信号发生器,gate_control的计数使能信号gate_C0ntr0l能产生一个I s宽的周期信号,并对频率计的每一计数器couter的ENA使能端进行同步控制:当gate_control高电平时允许计数、低电平时停止计数; flip_latch为锁存器,在信号load的上升沿时,立即对模块的输入口的数据锁存到flip_latch的内部,并由flip_latch的输出端输出,然后,1062液晶屏输出,在这里使用了锁存器,好处是稳定显示数据,不会由于周期性的清零信号而不断闪烁; counter为十进制计数器,有一时钟使能输入端ENA,用于锁定计数值,当高电平时允许计数,低电平时禁止计数,将八个十进制计数器counter级联起来实现8位十进制计数功能[2’7]; LCD_Driver为七段译码显示驱动电路,将频率计数的结果译成能在数码管上显示的相对应的阿拉伯数字,便于读取测量的结果; 为了实现系统功能,测频控制信号发生器gate_control、计数器counter、锁存器flip_latch存在一个工作时序的问题,设计时需要综合考虑; 8位数字频率计的顶层框图main, bdf,设计实现包括信号源模块F1MHZ、CNT、频率计模块FREQ和显示模块LCD_Drive三大模块,下面分别介绍三个模块的结构和实现方法; 信号源模块 信号源是为了产生IMHz的门控信号和待测的定频信号,而对输入系统时钟elk(50MHz)进行分频的模块,设计源代码gate_control.V对输入系统时钟elk (50MHz)进行分频产生IMHz信号; 分频器 CLK为PIN1MHZ输入的IMHZ信号,freql为输出给控制信号发生器的IHZ信号; 测频控制信号产生器 控制模块的作用是产生测频所需要的各种控制信号,控制信号的标准输入时钟为1HZ,每两个时钟周期进行一次频率测量,该模块产生的个控制信号用于在每次测量开始时,对计数器进行复位,以清除上次测量的结果,该复位信号高电平有效,持续半个时钟周期的时间,fdiv为计数允许信号,在fdiv信号的上升沿时刻计数模块开始对输入信号的频率进行测量,测量时间恰为一个时钟周期,正好为单位时间ls,在此时间里被测信号的脉冲数进行计数,即为信号的频率,然后将值锁存,并送到数码管显示出来,设置锁存器的好处是使显示的数据稳定,不会由于周期性的清`零信号而不断闪烁,在每一次测量开始时,都必须重新对计数器清O ; 锁存器 锁存器模块也是必不可少的,测量模块测量完成后,在load信号的上升沿时刻将测量值锁存到寄存器中,然后输出到显示模块,锁存器是起数据保持的作用,它将会把数据保存到下次触发或复位,锁存器模块是主从触发器组成的,用于存储数据来进行交换,使数据稳定下来保持一段时间不变化,直到新的数据将其替换; 程序是用来实现锁存器模块的功能,在锁存信号load的上升沿到来时,锁存器将测量值锁存到寄存器,然后输出到显示模块,锁存输出并不是立即进行的,而是经历了一个短暂的延时,这是由于硬件引起的; 十进制计数器 计数器模块是由8个带有异步清零端,进位信号输出的模为10的计数模块级连而成,通过counter进行元件例化实现,此十进制计数器的特殊之处是,有一时钟使能输入端ENA,用于锁定计数器,当高电平计数允许,低电平时计数禁止,计数器模块用于对输入信号的脉冲进行计数,该模块必须有计数允许、异步清零等端口,以便于控制模块对其进行控制; 程序模块实现的功能是带使能端的10进制计数,程序要求只有当使能端信号为高电平时计数器才能正常工作,每个时钟的上升沿到来时计数器加1,因为这里要实现的是10进制计数,所以当计数到10时计数器清零,同时产生进位信号,这里的进位信号仅为一个脉冲信号,一旦计数从10变为1,脉冲信号立即变为低电平,同时该计数器也应带有清零信号,一旦清零信号为高电平,计数器立即清零。
【文档编号】G01R23/10GK103499739SQ201310439616
【公开日】2014年1月8日 申请日期:2013年9月25日 优先权日:2013年9月25日
【发明者】符云越 申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1