tag 标签: 数字频率计

相关博文
  • 热度 15
    2015-3-12 15:17
    1004 次阅读|
    0 个评论
      0 引 言   EDA技术是以大规模可编程逻辑器件为设计载体,以硬件语言为系统逻辑描述的主要方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件设计的电子系统到硬件系统的设计,最终形成集成电子系统或专用集成芯片的一门新技术。其设计的灵活性使得EDA技术得以快速发展和广泛应用。   本文以Max+PlusⅡ软件为设计平台,采用VHDL语言实现数字频率计的整体设计。   1 工作原理   众所周知,频率信号易于传输,抗干扰性强,可以获得较好的测量精度。因此,频率检测是电子测量领域最基本的测量之一。频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,即闸门时间为1 s。闸门时间可以根据需要取值,大于或小于1 s都可以。闸门时间越长,得到的频率值就越准确,但闸门时间越长,则每测一次频率的间隔就越长。闸门时间越短,测得的频率值刷新就越快,但测得的频率精度就受影响。一般取1 s作为闸门时间。   数字频率计的关键组成部分包括测频控制信号发生器、计数器、锁存器、译码驱动电路和显示电路,其原理框图如图1所示。   2 设计分析   2.1 测频控制信号发生器   测频控制信号发生器产生测量频率的控制时序,是设计频率计的关键。这里控制信号CLK取为1 Hz,2分频后就是一个脉宽为1 s的时钟信号FZXH,用来作为计数闸门信号。当FZXH为高电平时开始计数;在FZXH的下降沿,产生一个锁存信号SCXH,锁存数据后,还要在下次 FZXH上升沿到来之前产生清零信号CLEAR,为下次计数做准备,CLEAR信号是上升沿有效。   2.2 计数器   计数器以待测信号FZXH作为时钟,在清零信号CLEAR到来时,异步清零;FZXH为高电平时开始计数。本文设计的计数器计数最大值是99 999 999。   2.3 锁存器   当锁存信号SCXH上升沿到来时,将计数器的计数值锁存,这样可由外部的七段译码器译码并在数码管上显示。设置锁存器的好处是显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存器的位数应跟计数器完全一样,均是32位。   2.4 译码驱动电路   本文数码管采用动态显示方式,每一个时刻只能有一个数码管点亮。数码管的位选信号电路是74LS138芯片,其8个输出分别接到8个数码管的位选;3个输入分别接到EPF10K10LC84-4的I/O引脚。   2.5 数码管显示   本文采用8个共阴极数码管来显示待测频率的数值,其显示范围从O~99 999 999。   以下是数码管段选的程序:   2.6 程序   综合以上模块分析,可以得到如下程序:   3 结 语   本文采用EDA设计方法,把数字频率计系统组建分解成若干个功能模块进行设计描述,选用Altera公司生产的FPGA产品FLEX10K系列的 EPF10K10LC84-4芯片,下载适配后,便可以在数码管上显示出待测频率的数值。实验证明,其软件设计思想清晰,硬件电路简单,具有一定的实用性。
  • 热度 16
    2013-6-10 00:09
    1584 次阅读|
    0 个评论
      采用TMS320F2812 DSP芯片为控制单元,在无需任何门控器件控制的情况下,利用DSP 2812丰富的软件资源实现了等精度测量。根据每个门闸时间内高频标准脉冲的个数与已知被测信号的个数,求得被测信号频率,再通过多次平均得到最终结果。   * 本作品获得2008年德州仪器(TI) C2000 DSP大奖赛命题组一等奖,并得到合肥工业大学2008年大学生创新性实验计划项目的资助   作品的意义与概况   随着微电子技术和计算机技术的飞速发展, 各种电子测量仪器在原理、功能、精度及自动化水平等方面都发生了巨大的变化, 特别是DSP技术诞生以后,电子测量技术更是迈进了一个全新的时代。近年来,DSP逐渐成为各种电子器件的基础器件,逐渐成为21世纪最具发展潜力的朝阳行业,甚至被誉为信息化数字化时代革命旗手。在电子测量技术中,频率是最基本的参数之一,它与许多电参量和非电量的测量都有着十分密切的关系。例如,许多传感器就是将一些非电量转换成频率来进行测量的,因此频率的测量就显得更为重要。数字频率计是用数字来显示被测信号频率的仪器,被测信号可以是正弦波、方波或其它周期性变化的信号。   数字频率计广泛采用了高速集成电路和大规模集成电路,使得仪器的体积更小、耗电更少、精度和可靠性更高。而传统的频率计测量误差较大,范围也较窄,因此逐渐被新型的数字频率计所代替。基于DSP的等精度频率计以其测量准确、精度高、方便、价格便宜等优势将得到广泛的应用。   我们设计的简易数字频率计在未采用任何门控器件控制的情况下,在很宽的范围内实现了等精度频率测量,0.5Hz~10MHz的范围内测量方波的最大相对误差小于2e-6,测量正弦波的最大相对误差小于3.5e-5;结果通过RS232通讯显示在计算机上,可以很方便地监测数据。   方案设计   总体介绍   传统的等精度测频法使用门控器件产生门控信号,从而实现实际门闸信号与被测信号同步,消除对被测信号计数产生的一个脉冲的误差,其原理图如图1所示。 图1 传统的等精度测量原理   由硬件控制计数的门闸时间,当预置们信号(即定闸门信号)为高电平时,基准信号计数器CNT1和被测信号计数器CNT2并不启动,而是等被测信号的上升沿来到时才同时开始计数;当预置们信号为低电平时,两个计数器并不马上关闭,同样要等到被测信号上升沿来到后再关闭;于是,实际闸门时间就是被测信号周期的整数倍,从而实现了闸门与被测信号的同步。但是,实际的门闸时间并不固定,与被测信号的频率有关。此外,无论是采用计数器还是单片机,在实现等精度测量时总是离不开门控器件。   本设计基于DSP丰富的软件资源,经过判断和处理,完成了对被测信号频率的等精度测量。硬件上无需任何门控器件,简化了电路。系统框图如图2所示,信号处理部分以TMS320F2812 DSP芯片作为控制和测量的核心;信号调理部分主要是完成对信号的放大、整形和限幅;标准频率信号由30MHz有源晶振产生,作为高频标准填充脉冲;通过DSP的SCI模块与上位机实现通信,结果显示在上位机上。 图2 系统框图   频率/周期测量   在对被测信号频率和周期的测量中,等精度测量是基于DSP比较匹配时T1PWM引脚输出电平的跳变作为门闸信号的开启和关闭,由于比较匹配发生在被测信号的上升沿,从而实现了门闸时间与被测信号的同步。原理图如图3所示。 图3 本等精度频率测量原理   通用定时器T1时钟输入选择外部定时器时钟,此处用调理后的被测信号作为定时器T1的时钟输入,定时器T2时钟输入选择内部CPU时钟,用来产生高频标准填充脉冲。F2812片上EVA中通用定时器T1在发生比较匹配事件时,其比较输出引脚T1CMP输出信号会自动改变电平状态,产生PWM波。捕获单元CAP1设置为上升沿捕获,T1PWM输出的PWM波上升沿被CAP1捕获到,读取此时定时器T2的计数值,同理在下一次比较匹配时再次读取定时器T2的计数值。通过两次T2CNT值的相减,即可获得该门闸时间内标准填充脉冲的个数,然后求出被测信号频率。    基于DSP比较匹配时T1PWM引脚输出电平的跳变作为门闸信号的开启和关闭,由于比较匹配发生在被测信号的上升沿,从而实现了门闸时间与被测信号的同步。两个相邻的比较匹配产生的PWM波的上升沿分别作为门闸信号的开启和关闭信号,其中被测信号的个数为整数,并且是由我们自己任意设定的。定时器T2时钟输入选择内部CPU时钟,用来产生标准填充脉冲。设定捕获单元CAP1为上升沿捕获,当其捕获到上升沿时读取堆栈CAPFIFO内的值,在下一次捕获到时再读堆栈内的值,计算出标准填充脉冲的个数Ny,保证Ny的个数不小于一定的值,即可保证门闸时间大于一定的值。假设现在希望一个门闸时间内高频填充脉冲的总数不小于n,当Nyn时,就增大定时器T1的定时周期,即增大定时器T1周期寄存器TIPR的值。存在公式T1PR+1=n/Ny,由于n/Ny不一定为整数,假an/Nya+1(a为整数),则取n/Ny=a+1,表现在被测信号上,则与传统的用硬件控制一样,用下一个被测信号的上升沿作为门闸信号的关闭信号,只不过该上升沿发生在下一次的比较匹配时。然后,再在该门闸时间内读取高频填充脉冲的个数,有Ny≥n,从而得出高精度的被测信号频率。在本设计中,定时器T1并不关闭,前一门闸时间的关闭信号同时作为下一门闸信号的开启信号。   周期测量与频率测量的基本原理完全相同,测出信号频率,根据公T=1/f即可得出被测信号的周期。   误差分析   定时器T1计数的启停时间都是由该信号的上升沿触发的,在一次测量时间内对被测信号的计数无误差;在此时间内标准频率脉冲的计数个数Ny,最多相差一个脉冲,故理论误差为:   |d|≤1/Ny   显然,测量精度仅仅与Ny有关,只要Ny值足够大,就能保证精度。   硬件设计   如图4所示,将被测信号经过高速运放OPA2690进行放大,在经过高速比较器TL3016进行整形 ,由于比较器在对低频正弦波信号进行整形时,输出波形的边沿有比较严重的抖动,影响测量。解决办法是对比较器加入正反馈,加速信号边沿,同时形成滞环,可有效消除抖动。整形后的信号经过高速施密特触发SN74LVC1G14进行限幅和进一步整形。测量部分主要使用DSP2812芯片上定时器T1的时钟输入引脚TCLKINA、定时器T1的比较输出引脚T1PWM和捕获单元CAP1的输入引脚CAP1,即可完成频率测量。通讯部分选择MAX3221作为RS-232电平转换器件,通过9芯标准RS-232口与上位机进行串行通信。主要使用了DSP的串行通信发送引脚SCIRXD和串行通信接收引脚SCITXD。 图4  硬件电路连接图   软件设计   软件设计部分主要包括以下四部分: ·初始化:对变量参数、系统时钟、PIE、EV、Flash、GPIO等进行配置。 ·中断模块:SCI中断和定时器T2、T3上溢中断。 ·数据处理模块:分段+取算术平均值。 ·输出操作模块:数据经RS-232传给上位机。   图5为测频率、周期软件流程图,图6为定时器2的溢出中断流程图。 图5  测频率、周期流程图 图6  定时器T2溢出中断流程图   在该部分初始化时,要进行以下配置:通用定时器T1时钟输入为外部定时器时钟,通用定时器T2时钟输入为内部时钟输入,用来对标准脉冲进行计数,该标准脉冲由外部30MHz的有源晶振提供;捕获单元1设置为上升沿捕获,用来捕获T1PWM引脚输出PWM波的上升沿,在每次比较匹配时读取定时器T2的计数值T2CNT,该值保存在CAP1FIFO内。初始化时要将捕获单元1的状态寄存器中的FIFO堆栈状态设置成空堆栈;将定时器T1的定时周期设置为4个被测信号的周期长度,通过测得的定时器T1的一个定时周期内的标准脉冲的个数,计算出被测信号频率,然后对被测信号进行分段,分别为低频段(小于46.875Hz),中频段(大于46.875Hz,小于2343.75KHz),以及高频段(大于2343.75 KHz),其中分段的依据是定时器的计数饱和值为65536和计数个数应大于等于1。若信号频率为中高频段则重新配置定时器T1,定时器T2的寄存器,来改变定时周期以及每个门闸时间内的高频填充脉冲的个数。在定时器T1的下一个定时周期内计算出频率和周期。另外,定时器T2的溢出次数要在第一次发生比较匹配时清零,而是否是第一次发生比较匹配则通过设置一个标志来判断。当溢出次数清零后才开始记溢出次数,直到第二次发生比较匹配。    下一步改进意见   该方法的测量误差主要来自硬件部分,整形电路的优劣直接关系到测量精度的高低。所以我们下一步的工作就是改进整形电路的整形效果和抗干扰性能,尽最大可能减小信号整形带来的误差。   由于DSP定时器在计数时存在计数饱和的情况,因此在实现该等精度测量时存在上限,即当被测信号频率高于高频填充脉冲的频率时,该方法就不能实现等精度了。可以在该方案的基础上进行以下处理:选择定时器T1定时周期内被测信号的个数固定,可设置T1PR为65529,同时将定时器T2的时钟修改为75MHz,这样就能保证每个门闸时间内高频填充脉冲的个数,从而在对高频信号实现频率和周期测量时保证了精度。   但选择定时器T1时钟输入为外部时钟时对被测信号的输入范围存在限制,如果要进一步提高测量的信号的范围,使得范围达到上百兆或上G赫兹,可以考虑相位测量的方法,将被测信号设为360度,根据被测信号与标准信号之间的X度相位差,计算被测信号频率。
  • 热度 16
    2012-6-14 15:36
    1306 次阅读|
    0 个评论
      4 、仿真波形 仿真时F0=10MHZ,FX=0.1MHZ.计数输出结果应该为640000。  
  • 热度 16
    2012-6-14 15:35
    1498 次阅读|
    0 个评论
    3 、设计代码 LIBRARY IEEE;   USE IEEE.STD_LOGIC_1164.ALL;   USE IEEE.STD_LOGIC_UNSIGNED.ALL;   USE IEEE.STD_LOGIC_ARITH.ALL;   ENTITY fre IS            --------- 实体名为 fre   PORT(      F0: IN STD_LOGIC;                ----- 高频信号输入端      FX:IN STD_LOGIC;                ----- 低频信号输入端      RESET:IN BIT;                    ----- 复位端口      O_FRE:OUT STD_LOGIC_VECTOR(23 DOWNTO 0));----- 测频结果输出端   END ENTITY fre;   ARCHITECTURE ART OF fre IS   SIGNAL EN : BIT;           ------ 高频计数使能信号   SIGNAL N0 :INTEGER RANGE 0 TO 64000000:=0;----- 高频计数结果传递信号     SHARED VARIABLE N00:INTEGER RANGE 0 TO 64000000; --- 高频计数信号   SHARED VARIABLE NXX:INTEGER   RANGE 0 TO 20;    --- 低频计数信号   BEGIN   FXX:PROCESS(FX,RESET)IS              -------- 低频计数进程    BEGIN        IF(RESET='1')THEN                      --------- 复位信号,高电平使能          NXX:=0;        ELSIF(FX'EVENT AND FX='1')THEN     ------- 上升沿触发          IF(NXX=20)THEN                  ------- 低频计到 20 个脉冲周期            NXX:=0;           ELSE            NXX:=NXX+1;          END IF;        END IF;   END PROCESS FXX;   F00:PROCESS(F0,RESET)IS               ------------ 高频计数进程     BEGIN     IF(RESET='1')THEN      N00:=0;      EN='0';     ELSIF(NXX=20)THEN    ------- 当低频率计到 20 个脉冲时,高频率计数清零          N00:=0;          EN='0';      ELSIF(F0'EVENT AND F0='1')THEN          IF(NXX=11)THEN             ---- 当低频率计数十个脉冲时间到时将高 - ------ 频率计数结果送出,并使计数停止。                   N0=N00;              EN='1';       ELSIF(EN='0')THEN    ------- 当 EN 为 0 时高频计数             IF(NXX=0)THEN    ------ 两者同时计数,减少计数不同步产生的误差               N00:=0;                 ELSE               N00:=N00+1;              END IF;           END IF;      END IF;   END PROCESS F00;   SHOW:PROCESS(F0,EN)IS           -------- 计算频率进程   VARIABLE N:INTEGER   RANGE 0 TO 64000000:=0;   BEGIN     IF(RESET='1')THEN   N:=0; ELSIF(EN='1')THEN     N:=640000000/N0;   END IF;           O_FRE=CONV_STD_LOGIC_VECTOR(N,24);----- 将 INTEGER 转换为       -----STD_LOGIC_VECTOR 类型,并且与 O_FRE 长度相同   END PROCESS SHOW;   END ARCHITECTURE ART;              
  • 热度 19
    2012-6-14 15:32
    1505 次阅读|
    0 个评论
    1H z — 64MHz 数字频率计设计   1 、方案设计      采用用高频信号去检测低频的信号方法,通过对高频率脉冲个数的计数得到低频率的信号的频率,所以在设计中不能采用一般情况下,用高频产生一个 1s 的使能信号,在这个 1s 内用低频率计数,计数结果即为低频率信号的脉冲。所以在这里用的方案为:高频率信号与低频率信号同时计数,计数时间为通过对低频率的计数产生的,如计低频率 Nx 个脉冲的时间,在这段时间内高频率信号同时也计数,当低频率信号计到 Nx 个脉冲的同时高频率信号的计数也停止,假设计数结果为 N0 ,假设高频率信号的频率为 F0 ,低频率信号频率为 Fx, 则可通过       计算出低频率信号的频率。在此实验过程中 Nx=10. 通过多次重复上述计数过程来使计算结果较为准确。 2 、方案原理图
相关资源