量程自动转换数字频率计

合集下载

自动换挡型1HZ-9.99KHZ频率计

自动换挡型1HZ-9.99KHZ频率计

自动换挡型1HZ-9.99KHZ频率计一.设计任务与要求1.设计一个能测量1HZ-9.99KHZ、TTL电平的频率计,具有自动换挡动能。

要求用三位数字显示,1-999HZ显示单位为HZ、1KHZ-9.99KHZ显示单位为0.01KHZ。

画出完整的电路图,说明电路的工作原理。

2.根据参考电路分析其工作原理并解答思考题。

3.根据原理电路图,在印刷电路图中标出元器件的位置及代号,并完成跳线,使连接完整。

4.组装、调试频率计;写出实验、调试报告。

二.方案设计与论证总体分析:数字频率计的主要功能是测量周期信号的频率。

频率即是单位时(1S)内信号发生周期变化的次数。

如果我们能在给定的1S时间内对信号波形计数,并将计数结果显示出来,就能读取被测信号的频率。

数字频率计首先必须获得相对稳定与准确的时间,同时将被测信号转换成幅度与波形均能被数字电路识别的脉冲信号,然后通过计数器计算这一段时间间隔内的脉冲个数,将其换算后显示出来。

其最基本的工作原理为:当被测信号在特定时间段T内的周期个数为N时,则被测信号的频率f=N/T。

方案一:图1是数字频率计的组成框图。

被测信号Vx经放大整形电路变成计数器所要求的脉冲信号I,其频率与被测信号的频率f x 相同。

时基电路提供标准时间基准信号II,其高电平持续时间t1=1 秒,当l秒信号来到时,闸门开通,被测脉冲信号通过闸门,计数器开始计数,直到l秒信号结束时闸门关闭,停止计数。

若在闸门时间1s内计数器计得的脉冲个数为N,则被测信号频率f x =NHz。

逻辑控制电路的作用有两个:一是产生锁存脉冲IV,使显示器上的数字稳定;二是产生清“0”脉冲V,使计数器每次测量从零开始计数。

各信号之间的时序关系如图1所示。

图1——数字频率计的组成框图和波形图电路原理图如图2所示。

该电路主要由四部分组成:放大整形电路、时基电路、逻辑控制电路以及输出显示电路。

放大整形电路由晶体管3DG100与74LS00等组成,其中3DGl00组成放大器将输入频率为f x的周期信号如正弦波、三角波等进行放大,与非门74LS00构成施密特触发器,它对放大器的输出信号进行整形,使之成为矩形脉冲。

基于AT98C51单片机数字频率计

基于AT98C51单片机数字频率计

摘要51系列单片机是国内目前应用最广泛的一种8位单片机之一,随着嵌入式系统、片上系统等概念的提出和接受及应用,51系列单片机还会在继后很长一段时间占据嵌入式低端市场。

重要的。

,因此,作为新世纪的大学生,在信息产业高速发展的今天,掌握单片机的基本结构、原理和使用时非常重要的。

随着电子技术的发展,当前数字系统的设计正朝着速度快、容量大、体积小、重量轻的方向发展。

在电子技术中,频率是最基本的参数之一,并且与许测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。

本设计所要介绍的是以单片机AT89C51为核心设计了一种量程自选的数字频率计。

在本文的设计采用单片机内部的定时器/计数器对脉宽的机器周期数进行计数,从而求得被测信号的频率值, 最后通过静态显示电路显示数值由于单片机内部振荡频率很高, 所以一个机器周期的量化误差相当小, 可以有效地提高低频信号的测量准确性。

关键字:单片机,AT98C51,量程自选频率计目录摘要 (1)一、设计目的 (3)二、设计要求及指标 (3)三、单元电路分析 (3)1、上拉电路 (3)2、信号输入电路 (6)3、显示电路 (7)四、系统框图 (9)五、仿真图 (10)六、仿真结果 (10)七、软件介绍 (12)八、心得体会 (13)九、参考文献 (13)附录源程序 (14)一设计目的1.掌握量程自选数字频率计的设计、组装与调试方法。

2.熟悉集成元器件的选择和集成电路芯片的逻辑功能及使用方法。

3.熟悉仿真软件的使用。

二设计要求及指标1.输入信号的频率量程可以自动选择。

2.测试结果用6位数码管显示。

三单元电路分析1、上拉电路AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。

使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

东华大学数电实验-数字频率计报告

东华大学数电实验-数字频率计报告

目录第一章技术指标1.1整体功能要求1.2系统结构要求1.3电气指标第二章设计原理分析2.1 测频方法分析2.2 低频信号的周期测量方法2.3 整体设计过程第三章单元电路设计3.1 测频采样定时信号及测周时基信号产生3.2计数,锁存和显示3.3控制信号产生3.4 信号选择及量切换控制3.5自校调试信号产生3.6整体电路图第四章测试与调整4.1测频采样电路的调测4.2计数,锁存和显示电路的调测4.3控制信号电路的调测4.4 信号选择及量切换电路的调测4.5测试方法步骤、记录的数据4.6整体电路图第五章设计小结参考文献第一章技术指标1.整体功能要求要求设计一个测量TTL方波信号频率或周期的数字系统。

用按键选择测量信号频率或周期。

测量值采用4个LED七段数码管显示,并以发光二极管指示测量对象:频率(周期)以及测量值的单位:Hz(s)、KHz(ms)。

频率和周期的测量范围都有4档量程。

2.系统结构要求数字频率计的整体结构要求如图所示。

图中被测信号为外部信号,送入测量电路进行处理、测量,档位转换用于选择测试的项目------频率、周期,若测量频率则进一步选择档位。

3.电气指标3.1被测信号波形:矩形波。

3.2 测量频率范围:0.1Hz~999.9KHz,分4档:第一档:100.1Hz~999.9Hz第二档:1.000kHz~9.999kHz第三档:10.00kHz~99.99kHz第四档:100.0kHz~999.9kHz3.3 测量周期范围:0.1us~999.9ms第一档:1.000ms~9.999ms第二档:10.00ms~99.99ms第三档:100.0ms~999.9m第四档:1.000s~9.999s3.4 测量结果显示4位有效数字,测量精度为万分之一。

3.5 量程切换可以采用两个按键手动切换或由电路控制自动切换。

3.6 设计一个周期性方波电路输出频率/周期计调试所需的信号。

输出信号的频率范围与测量范围相同,分为四个量程。

浅析数字频率计的原理及其应用

浅析数字频率计的原理及其应用

浅析数字频率计的原理及其应用作者:杨振羽来源:《武汉科技报·科教论坛》2013年第10期【摘要】随着电子信息产业的发展,信号作为其最基础的元素,其频率的测量在科技研究和实际应用中的作用日益重要,而且需要测频的范围也越来越宽。

传统的频率计通常采用组合电路和时序电路等大量的硬件电路构成,产品不但体积较大,运行速度慢,而且测量范围低,精度低。

因此,随着对频率测量的要求的提高,传统的测频的方法在实际应用中已不能满足要求。

【关键词】数字;频率计;应用一、引言在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。

测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。

电子计数器测频有两种方式:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法,如周期测频法。

直接测频法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量。

数字频率计在电子、通讯等领域中的实验、研究开发、生产用途非常的广泛,它可以由逻辑电组成,也可以用单片机控制。

由逻辑电路组成的频率计,结构复杂,组装、调试比较麻烦;由单片机控制的频率计,数据采集、计算、译码及量程的自动转换,都可以由CPU来完成,简化了电路,提高了系统的可靠性。

在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。

测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。

电子计数器测频有两种方式:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法,如周期测频法。

直接测频法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量。

基于PIC16F628A频率计模块使用

基于PIC16F628A频率计模块使用

菜单功能有:
— "ProG":按住编程键显示“ProG”,放开后进入编程模式。
— "Quit":设置不作任何修改,退出编程模式。
— "Add":保存屏上显示先前测量的频率值,并将之后测量的频率值加上此值。
— "Sub":保存屏上显示先前测量的频率值,并将之后测量的频率值减去此值。
— "Zero":设置频率偏移值为零,显示值即是频率的实际测量值。之前设置频偏值被删
“PSave”/ 长按 设定或取消
“NoPSv”
节电模式
短按
长按 “Add”
显示一个加上频偏的频率, 详细见文字说明。
短按
长按 “Sub”
显示一个减去频偏的频率, 详细见文字说明。
短按 长按 “Zero”
显示无频偏的实际频率, 详细见文字说明。
短按
“Table”
长按
短按 短按 短按
长按
ቤተ መጻሕፍቲ ባይዱ
短按
长按
短按
进入编程模式方法,按住编程按键,直到 LED 显示屏上的显示“ProG”。然后放开按键,现 在处于编程模式的第一个菜单中。要选择下一个菜单或参数,请短按一下编程按键。要执行 所选的功能,请长按编程按键直至屏幕显示闪烁。
频率范围
显示
闸门时间
小数点
0 ~ 9.999 kHz
X.XXX
1 秒 闪烁(意味着频率单位是"kHz")
10 ~ 99.999 kHz
XX.XXX
1/2 秒 闪烁
100 ~ 999.99 kHz
XXX.XX
1/4 秒 闪烁
1 ~ 9.9999 MHz

自动换挡频率计设计

自动换挡频率计设计

实验七自动换挡频率计设计一、实验目的1、学习设计一个三位或者多位十进制数字式频率计,量程为1KHZ到99MHZ。

2、通过小数点表示量程范围。

二、实验要求1、当小于1KHZ时,不在其量程范围内,显示为0。

2、当在1KHZ到999KHZ时,频率计自动换到KHZ的档位,;三个数码管分别显示对应的数字,用一个小数点表示其量程单位为千。

3、当在1MHZ到99MHZ时,频率计自动换到MHZ的档位,;三个数码管分别显示对应的数字,用两个小数点表示其量程单位为M.4、采用动态数码管输出其所测频率。

三、实验仪器PC机、Quartus II软件、EDA实验箱四、实验原理1、当计数时间相同时,标准频率为Nx,被测频率为Fs则实际测得的频率的个数为Nx对标准信号的计数个数为Ns,这下式成立:Fx/Nx= Fs/NsFx= Fs×Nx/Ns2、本次设计采用1秒为门时间, 标准频率为8HZ。

利用十进制计出来的数即为实际被测出来的频率。

3、可以用两个计数器来实现测频率的功能,一个count_basic_8以8HZ为时钟信号的计数器产生1秒的控制信号;另一个pinglvji为以被测频率信号的 clk为时钟信号的计数器,其在1秒钟计数的个数即为实际被测出来的频率。

(1)以8HZ为时钟信号的计数器,令其计数个数为8,当计数未满八时,置控制cout 信号输出为高,频率计数器均可以计数,当计满一秒钟,即计满八时,cout为0,控制计数器均停止计数,这样变产生了一个一秒的控制信号,通过这个信号cout可以控制下一个被测频率计数器的总计数时间为一秒钟。

利用start控制count_basic_8计数器的开始,即频率计数器均开始计数;利用clr复位清零。

(2)pinglvji通过一个以clk为时钟信号的计数器,令其计数使能由en控制,在en 为1时,计数,当en为0时,输出所记的数值。

每来一个脉冲计一次数。

因为此次计数最大有八位,因此每一位用一个四位std_logic_vector表示便于十进制计数调整。

在FPGA上用VHDL实现数字频率计 实验报告

数字系统设计实验报告一、设计要求:1、(1)频率测量范围10Hz~1MHz(2)量程自动转换,量程分为10KHz (1s) 、100KHz (0.1s) 、1MHz (10ms)三档。

转换规则如下:当读数大于9999时,频率计处于超量程状态,下一次测量时,量程自动增大一档;当读数小于0999时,频率计处于欠量程状态,下一次测量时,量程自动减小一档(3)数据采用记忆显示方式,即计数过程中不显示数据,待计数过程结束以后,显示计数结果,并将此显示结果保持到下一次计数结束。

(4)用发光二极管显示量程二、方案选则1测量原理:当预置门控信号为高电平时,启动计数器,被测信号(频率为fx) 计数当预置门控信号为低电平时,关闭计数器设在一次预置门控时间Tg内对被测信号计数值为Nx,则fx= Nx / Tg2具体方案:本设计中将2MHz的时钟分三次频,分别作为防抖电路的周期信号、显示模块片选信号、计数及锁存模块闸门信号。

防抖电路滤去窄波,显示模块用模4计数器来分别输出四位测量结果。

计数器通过在0.1s内对输入信号的高电平(发生期)进行计数来得出结果,并且为了达到换挡目的,测量时计六位数,通过结果选择档位进行输出。

二、原理图三、总体电路图四、流程图五、设计清单1、防抖电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY debounce ISPORT(key,cp: IN STD_LOGIC; --复位键imp:OUT STD_LOGIC); --去掉窄波后输出END debounce;ARCHITECTURE base OF debounce ISSIGNAL ql,q2:STD_LOGIC;BEGINPROCESS(cp)BEGINIF cp'event AND cp='1'THENq2<=ql; ql<=key;END IF;END PROCESS;imp<=ql AND NOT q2;END base;时序仿真波形:2、分频电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;ENTITY dividefre4 ISPORT(cp_2m:IN STD_LOGIC; --2MHzcpl:OUT STD_LOGIC; --200Hzcp2:OUT STD_LOGIC; --25Hzcp3:OUT STD_LOGIC); --5HzEND dividefre4;ARCHITECTURE behavior OF dividefre4 IS SIGNAL tout:INTEGER RANGE 0 TO 4999; --5000分频SIGNAL toutl:INTEGER RANGE 0 TO 7; --8分频SIGNAL tout2:INTEGER RANGE 0 TO 39; --40分频SIGNAL cp_1:STD_LOGIC;SIGNAL cp_2:STD_LOGIC;SIGNAL cp_3:STD_LOGIC;SIGNAL cp:STD_LOGIC;BEGINPROCESS(cp_2m) –分出400Hz时钟BEGINIF(cp_2m'event AND cp_2m='1')THENIF tout=4999 THENtout<=0;ELSE tout<=tout+1;END IF;IF tout=2499 THENcp<='0';ELSE cp<='1';END IF;END IF;END PROCESS;PROCESS(cp) --200Hz时钟BEGINIF(cp'event AND cp='1')THENcp_1<=NOT cp_1;END IF;END PROCESS;PROCESS(cp_1) --25Hz时钟和5HzBEGINIF(cp_1'event AND cp_1='1')THENIF toutl=7 THEN toutl<=0;ELSE toutl<=toutl+1;END IF;IF toutl=3 THENcp_2<='1';ELSIF toutl=7 THEN cp_2<='0'; --8分频得25Hz END IF;IF tout2=39 THEN tout2<=0; --40分频得5HzELSE tout2<=tout2+1;END IF;IF tout2=39 THENcp_3<='1';ELSIF tout2=19 THEN cp_3<='0';END IF;END IF;END PROCESS;cpl<=cp_1;cp2<=cp_2;cp3<=cp_3;END behavior;仿真波形:(因原程序所分频倍数太大,所以这里将5000倍分频降至50倍)3、计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;ENTITY fretest ISPORT(enable:IN STD_LOGIC; --使能cp3:IN STD_LOGIC; --闸门INput:IN STD_LOGIC; --被测信号reset:IN STD_LOGIC; --复位信号overflow:OUT STD_LOGIC; --大于1000kHzPlay0,playl,play2,play3:OUT INTEGER RANGE 0 TO 9;decimal:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));--小数点,即档位END fretest;ARCHITECTURE behavior OF fretest ISSIGNAL r0_1,r1_1,r2_1,r3_1,r4_1,r5_1:INTEGER RANGE 0 TO 9;BEGINPROCESS(INput,enable,reset,cp3)BEGINIF enable='0'THEN NULL; --不测量ELSIF(input'event AND input='1')THEN --检测被测信号IF reset='1'THEN --同步复位,高电平有效overflow<='0';r0_1<=0;r1_1<=0;r2_1<=0;r3_1<=0;r4_1<=0;r5_1<=0;ELSIF cp3='0'THEN --闸门为0时清零Overflow<='0';r0_1<=0;r1_1<=0;r2_1<=0;r3_1<=0;r4_1<=0;r5_1<=0;ELSE --闸门为高电平计数r0_1<=r0_1+1;IF r0_1=9 THEN r1_1<=r1_1+1;r0_1<=0;IF(r1_1=9)THEN r2_1<=r2_1+1;r1_1<=0;IF(r2_1=9)THEN r3_1<=r3_1+1;r2_1<=0;IF(r3_1=9)THEN r4_1<=r4_1+1;r3_1<=0;IF(r4_1=9)THEN r5_1<=r5_1+1;r4_1<=0;IF(r5_1=9)THEN r5_1<=0;overflow<='1'; --大于1000kHz END IF;END IF;END IF;END IF;END IF;END IF;END IF;END IF;END PROCESS;PROCESS(r5_1,r4_1)BEGINIF r5_1=0 AND r4_1=0 THEN --为小于9999Hz时play0<=r0_1;playl<=r1_1;play2<=r2_1;play3<=r3_1;decimal<="100";ELSIF r5_1=0 THEN --为几十kHz时play0<=r1_1;playl<=r2_1;play2<=r3_1;play3<=r4_1;decimal<="010";ELSE --为几百kHz时play0<=r2_1;playl<=r3_1;play2<=r4_1;play3<=r5_1;decimal<="001";END IF;END PROCESS;END behavior;仿真波形4、锁存器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;ENTITY frelatch ISPORT(reset:IN STD_LOGIC; --复位cp3:IN STD_LOGIC; --时钟Overflow: IN STD_LOGIC; --大于1000kHz表示play0,playl,play2,play3:IN INTEGER RANGE 0 TO 9;decimal:IN STD_LOGIC_VECTOR(2 DOWNTO 0);--小数点overlatch:OUT STD_LOGIC; --大于1000kHzp0latch,pllatch,p21atch,p31atch:OUT INTEGER RANGE 0 TO 9; delatch:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));--小数点END frelatch;ARCHITECTURE behavior OF frelatch ISBEGINPROCESS(cp3,reset)BEGINIF reset='1'THENoverlatch<='0';p0latch<=0;pllatch<=0;p21atch<=0;p31atch<=0;delatch<=decimal;ELSIF cp3'event AND cp3='0'THENoverlatch<=overflow;p0latch<=play0;pllatch<=playl;p21atch<=play2;p31atch<=play3;delatch<=decimal;END IF;END PROCESS;END behavior;仿真波形5、显示模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;ENTITY display ISPORT( cpl:IN STD_LOGIC; --时钟overflow:IN STD_LOGIC; --高于1000kHz标志p0,p1,p2,p3:IN INTEGER RANGE 0 TO 9;--BCD码输入 show:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--7段码输出 sel:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));--位扫描码END dISplay;ARCHITECTURE behavior OF display ISSIGNAL count: INTEGER RANGE 0 TO 3;SIGNAL sel_1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(cpl)BEGINIF(cpl'event AND cpl='1') THENIF count=3 THEN count<=0;ELSEcount<=count+1;END IF;END IF;END PROCESS;PROCESS(count)BEGINCASE count ISWHEN 0=>sel_1<="1110"; --第0位WHEN 1=>sel_1<="1101"; --第1位WHEN 2=>sel_1<="1011"; --第2位WHEN 3=>sel_1<="0111"; --第3位END CASE;END PROCESS;PROCESS(overflow,sel_1)BEGINIF(overflow='1')THENshow<="0110111"; --高于1000kHz,显示HELSIF(sel_1(0)='0')THEN --第0位数码管译码CASE p0 ISWHEN 0=>show<="1111110";--显示0,a-gWHEN 1=>show<="0110000";--1WHEN 2=>show<="1101101";--2WHEN 3=>show<="1111001";WHEN 4=>show<="0110011";WHEN 5=>show<="1011011";WHEN 6=>show<="0011111";WHEN 7=>show<="1110000";WHEN 8=>show<="1111111";WHEN 9=>show<="1110011";END CASE;ELSIF(sel_1(1)='0')THEN --第1位译码 CASE p1 ISWHEN 0=>show<="1111110";WHEN 1=>show<="0110000";WHEN 2=>show<="1101101";WHEN 3=>show<="1111001";WHEN 4=>show<="0110011";WHEN 5=>show<="1011011";WHEN 6=>show<="0011111";WHEN 7=>show<="1110000";WHEN 8=>show<="1111111"; WHEN 9=>show<="1110011";END CASE;ELSIF(sel_1(2)= '0')THEN --第2位译码 CASE p2 ISWHEN 0=>show<="1111110";WHEN 1=>show<="0110000";WHEN 2=>show<="1101101";WHEN 3=>show<="1111001";WHEN 4=>show<="0110011";WHEN 5=>show<="1011011";WHEN 6=>show<="0011111";WHEN 7=>show<="1110000";WHEN 8=>show<="1111111";WHEN 9=>show<="1110011";END CASE;ELSIF(sel_1(3)='0')THEN --第3位译码 CASE p3 ISWHEN 0=>show<="1111110";WHEN 1=>show<="0110000";WHEN 2=>show<="1101101";WHEN 3=>show<="1111001";WHEN 4=>show<="0110011";WHEN 5=>show<="1011011";WHEN 6=>show<="0011111";WHEN 7=>show<="1110000";WHEN 8=>show<="1111111";WHEN 9=>show<="1110011";END CASE;END IF;END PROCESS; sel<=sel_1; END behavior; 仿真波形。

基于51单片机的数字频率计设计

基于51单片机的数字频率计一、设计说明1.数字频率计概述数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。

它是一种用十进制数字显示被测信号频率的数字测量仪器。

它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。

在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。

本数字频率计将采用定时、计数的方法测量频率,采用一个1602A LCD显示器动态显示6位数。

测量范围从1Hz—10kHz的正弦波、方波、三角波,时基宽度为1us,10us,100us,1ms。

用单片机实现自动测量功能。

基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。

它以测量周期的方法对正弦波、方波、三角波的频率进行自动的测量。

2.频率测量仪的设计思路与频率的计算频率测量仪的设计思路主要是:对信号分频,测量一个或几个被测量信号周期中已知标准频率信号的周期个数,进而测量出该信号频率的大小,其原理如右图所示。

若被测量信号的周期为,分频数m1,分频后信号的周期为T,则:T=m1Tx。

由图可知:T=NTo(注:To为标准信号的周期,所以T为分频后信号的周期,则可以算出被测量信号的频率f。

)由于单片机系统的标准频率比较稳定,而是系统标准信号频率的误差,通常情况下很小;而系统的量化误差小于1,所以由式T=NTo可知,频率测量的误差主要取决于N值的大小,N值越大,误差越小,测量的精度越高。

3.设计原理及系统分析基本设计原理:直接用十进制数字显示被测信号频率的一种测量装置。

它以测量周期的方法对正弦波、方波、三角波的频率进行自动的测量。

若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可表示为f=N/T。

其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频率等于被测频率fx。

时间基准信号发生器提供标准的时间脉冲信号,若其周期为1s,则门控电路的输出信号持续时间亦准确地等于1s。

用CPLD设计频率计中量程自动转换的一种实现方法

用CPLD设计频率计中量程自动转换的一种实现方法
陈琼;徐精华
【期刊名称】《南昌航空大学学报(自然科学版)》
【年(卷),期】2004(018)004
【摘要】本文主要介绍以CPLD为核心制作频率计中其量程自动转换的一种实现方法,使其结构简单、工作可靠、使用方便,具有较高的实用价值和经济价值.
【总页数】4页(P65-68)
【作者】陈琼;徐精华
【作者单位】南昌航空工业学院,电子工程系,江西,南昌,330034;南昌航空工业学院,电子工程系,江西,南昌,330034
【正文语种】中文
【中图分类】TM935
【相关文献】
1.基于量程自动转换的频率计设计 [J], 吴建新
2.峰值检测器量程自动转换的一种实现方法 [J], 叶晓慧;李小珉;张森
3.用ISP器件设计量程自动转换的数字频率计 [J], 李改梅;田振清
4.一种适用于液晶显示的自动转换量程的方法 [J], 赵勇;曹善逊
5.基于MPU+CPLD数字频率计的量程扩展设计与实现 [J], 周征;陈瑞
因版权原因,仅展示原文概要,查看原文内容请购买。

频率计课程设计实验报告

课程设计报告课程设计名称:电子系统综合课程设计课程设计题目:频率计频率计课程设计实验报告一、设计任务要求1、根本要求:设计一个3位十进制数字显示的数字式频率计,其频率测量范围在1MHz内。

量程分别为10kHz,100kHz和1MHz三档,即最大读数分别为和999kHz。

这里要求量程可以自动转换,详细要求如下:1〕、当读数大于999时,频率计处于超量程状态,此时显示器发出溢出指示〔最高位显示F,其余各位不显示数字〕,下一次测量时,量程自动增大一档。

2〕、当读数小于099时,频率计处于欠量程状态,下一次测量时,量程自动减小一档。

3〕、采用记忆显示方式,即计数过程中不显示数据,待计数过程完毕以后,显示测频结果,并将此显示结果保持到下一次计数完毕,显示时间不小于1s。

4〕、小数点位置随量程变更自动移位。

二、设计方案1、系统功能〔根本功能和附加功能〕根本功能:显示待测频率,LED灯显示小数点,显示待测频率的量程。

附加功能:实现量程自由变化,通过拨码开关控制待测频率大小。

2、系统设计方案说明1、分频模块:由于测频时不同量程档需要不同的时基信号,分频模块是必不可少的。

系统通过试验箱给定的50MHZ的频率通过分频变成0.5HZ,即1秒钟得计数时间,通过1秒钟的记数时间里待测频率上升沿的数量实现频率测定,待测频率通过分频,多路器等实现各频率的测定2 计数模块:想要实现频率的测定,其实就是在1秒钟的计数时间里对待测频率信号上升沿进展计数,所以计数模块是不可缺少的,本计数器需输出指示超量程和欠量程状态的信号。

3 量程控制模块:对待测频率的量程进展判断,确定量程以后,根据不同的量程,在试验箱上显示,我们的设计是4个量程〔1,2,3量程和超量程〕。

:4 BCD译码模块:用到实验箱SOPC上的6个静态共阳数码管中的后三个数码管,并且试验箱内部有译码器,只需要输入4位数就可以在数码管上显示。

三、各模块程序如下:1、分频模块程序:1〕百分频模块程序:module plj(clk,dingshi);input clk;output dingshi;reg [40:0] counter;reg dingshi;always @(posedge clk)beginif (counter==49) //计数时钟上升沿数量,100次时钟周期begin //输出一周期信号,得到100分频信号。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

量程自动转换数字频率计的设计1.设计目标:A.设计一个3位十进制数字式频率计,其测量范围为1MHz,量程分10kHz,100kHz和1MHz 三档(最大读数分别为9.99kHz,99.9kHz,999kHz)。

被测信号应是一符合CMOS电路要求的脉冲或正弦波。

B.要求量程可根据被测量的频率大小自动转换,即当计数器溢出时,产生一个换挡信号,让整个计数时间减少为原来的1/10,从而实现换挡功能。

C.要求实现溢出报警功能,即当频率高于999kHz时,产生一个报警信号,点亮LED灯,从而实现溢出报警功能。

D.小数点位置随量程变化自动移位。

E.采用记忆显示方式,即计数过程中不显示数据,待计数过程结束后,显示计数结果,并将此显示结果保持到下一次计数结束。

显示时间应不小于1秒。

2.设计思路及实现方案:1.频率计的工作原理:常用的测量频率的方法有两种,一种是测周期法,一种是测频率法。

测周期法需要有基准系统时钟频率Fs,在待测信号一个周期Tx内,记录基准系统时钟频率的周期数Ns,则被测频率可表示为:Fx=Fs/Ns测频率法就是在一定时间间隔Tw(该时间定义为闸门时间)内,测得这个周期性信号的重复变换次数为Nx,则其频率可表示为:Fx=Nx/Tw本设计采用的是直接测频率的方法。

2.频率计的原理框图:频率计的系统设计可分为3位十进制计数模块,闸门控制模块,译码显示模块,可自动换挡模块和分频模块。

其原理框图如下:其中,可自动换挡模块为闸门控制模块提供3个挡,也就是三个测量范围的基准时钟信号,通过计数器的最高位的溢出情况来判定工作在第几挡。

闸门控制模块根据基准时钟信号产生基准时钟信号周期2倍的周期使能信号,随后为锁存器产生一周期性地锁存信号,再然后为计数模块产生一周期性的清零信号。

3位十进制计数模块在使能信号和清零信号的控制下对被测信号的波形变化进行计数,若产生溢出则为自动换挡模块输出一换挡信号。

译码显示模块显示被测信号的频率。

3.设计过程(包括关键模块的仿真结果及贴图)1.分频模块:输入信号为4MHZ的高频脉冲,经过分频器后得到1KHZ的脉冲。

分频器的代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenping2 isport(clk : in std_logic;clk_out : out std_logic);end fenping2;architecture behavior of fenping2 isbeginprocess(clk)variable count: integer range 0 to 1999;variable x: std_logic;beginif clk'event and clk='1' thenif count<1999thencount:=count+1;elsecount:=0;x:=not x;end if;end if;clk_out<=x;end process;end architecture behavior;模块说明:clk为4MHZ时钟脉冲输入端,clk_out为1KHZ脉冲输出端。

由于输入为高频信号,不易仿真且代码编译无误,这里没有给出时序波形图。

经软件编译后,得到模块为:2.3位十进制计数模块:3位十进制计数模块包含3个级联十进制计数器,用来对施加到时钟脉冲输入端的待测信号产生的脉冲进行计数,十进制计数器具有计数使能、清零控制和进位输出功能。

用于计数的时间间隔(计数允许周期T)由闸门控制模块的控制信号发生器所产生的使能信号来控制,计数使能信号也在闸门控制模块中产生。

自动换挡模块决定计数器读数的单位。

1位十进制计数器的VHDL源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count10 isport (CLK,RST,EN : in std_logic;CQ : out std_logic_vector(3 downto 0);COUNT : out std_logic );end count10;architecture behav of count10 isbeginprocess(CLK, RST, EN)variable CQ1 : std_logic_vector(3 downto 0);beginif RST = '1' then CQ1 := (others =>'0') ;elsif CLK'event and CLK='1' thenif EN = '1' thenif CQ1 < 9 then CQ1 := CQ1 + 1;else CQ1 := (others =>'0');end if;end if;end if;if CQ1 = 9 then COUNT <= '1';else COUNT <= '0';end if;CQ <= CQ1;end process;end behav;以上源程序编译成功后,生成计数器模块如下:3位十进制计数模块为:3.闸门控制模块:以基准信号的周期为一秒为例,频率测量的基本原理是计算一秒内待测信号的脉冲个数,这就要求能产生一个周期为2秒,占空比为50%的周期信号TSTEN。

用这个信号作为计数器的EN输入端,使其计数时间正好为1秒。

当TSTEN为高电平时,计数开始,低电平时,计数停止。

在计数器停止期间,首先要产生一个锁存信号LOAD,用其上升沿控制锁存器REG12将之前的计数结果存入锁存器中,并由显示模块将其显示出来。

设置锁存器是为了让显示稳定,不会因为周期性的清零信号使得数值不断闪烁。

锁存之后需有一清零信号CLR_CNT将计数器清零,为下一秒的计数操作做准备。

闸门控制模块的VHDL源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity testctl isport (clk : in std_logic;clr_cnt : out std_logic;tsten : out std_logic;load : out std_logic );end testctl;architecture behav of testctl issignal a:std_logic;beginprocess(clk)beginif clk'event and clk='1' thena<=nota;end if;end process;process(clk,a)if a='0' and clk='0' thenclr_cnt<='1';else clr_cnt<='0';end if;end process;load<=not a;tsten<= a;end behav;时序仿真结果如下:编译后生成的模块为:其中,clk为基准信号输入端,clr_cnt为清零信号,tsten为计数使能信号,load为锁存允许信号。

4.可自动换挡模块:本设计通过控制基准时钟信号来实现量程的自动转换。

在第一个计数器的CLK端接一周期为0.001s(1KHz)的时钟信号,其测量范围为100-999000Hz,为2挡;在第一个计数器的COUNT端将会得到周期为0.01s的信号,即为1挡,其测量范围为10-99900Hz;在第二个计数器的COUNT端将会得到0.1s的信号,即为0挡,其测量范围为0-9990Hz。

这里还需要一个3选1选择器来选择第几个计数器的COUNT端作为基准时钟信号。

3选1选择器可根据3位十进制计数模块的溢出情况来作为选择标准。

3选1选择器的VHDL源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mux31 isport (a: in std_logic_vector(3 downto 0);y: out std_logic;o: out std_logic;input0: in std_logic;input1: in std_logic;input2: in std_logic;);end mux31;architecture behav of mux31 isbeginprocess(input0,input1,input2,a)begincase a iswhen"0000"=> y <=input0;o<=’0’;when"0001"=> y <=input1; o<=’0’;when"0010"=> y <=input2; o<=’0’;when others=> y<='0';o<='1';end case;end process;end behav;生成的模块为:仿真波形为:当输入为0000时:当输入为0001时:当输入为0010时:当输入为0011时:可以看到,设计完全符合要求,o端可以作为量程溢出标志。

综上,量程自动转换模块为:5.译码显示模块:译码显示模块的设计分为显示锁存器的设计,七段数码显示译码器的设计和小数点显示模块的设计3部分。

显示锁存器是在计数结束后,利用load信号的上升沿把最新计数结果保存起来。

其源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity reg12 isport(load : in std_logic;din0,din1,din2: in std_logic_vector(3 downto 0);dout0,dout1,dout2: out std_logic_vector(3 downto 0));end reg12;architecture behav of reg12 isbeginprocess(load)beginif load'event and load='1'thendout0<=din0;dout1<=din1;dout2<=din2;end if;end process;end architecture behav;生成的模块为:仿真结果为:七段数码显示译码器的vhdl源程序如下:library ieee;use ieee.std_logic_1164.all;entity seg7 isport( dat:in std_logic_vector(3 downto 0);tmp:out std_logic_vector(6 downto 0));end seg7;architecture arc of seg7 isbeginprocess(dat)begincase dat iswhen "0000"=>tmp<="0000001";when "0001"=>tmp<="1001111";when "0010"=>tmp<="0010010";when "0011"=>tmp<="0000110";when "0100"=>tmp<="1001100";when "0101"=>tmp<="0100100";when "0110"=>tmp<="0100000";when "0111"=>tmp<="0001111";when "1000"=>tmp<="0000000";when "1001"=>tmp<="0000100";when "1010"=>tmp<="0001000";when "1011"=>tmp<="1100000";when "1100"=>tmp<="0110001";when "1101"=>tmp<="1000010";when "1110"=>tmp<="0110000";when "1111"=>tmp<="0111000";end case;end process;end arc;生成的模块为:小数点显示模块的源程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dot isport (dang_in: in std_logic_vector(3 downto 0);dang: out std_logic_vector(2 downto 0)); end dot;architecture one of dot isbeginprocess(dang_in)begincase dang_in iswhen"0000"=>dang<="100"; when"0001"=>dang<="010"; when"0010"=>dang<="001";when others=>dang<="111";end case;end process;end one;经编译后生成的模块为:6.量程自动转换数字频率计顶层文件:(见附录)4 遇到的问题及解决方案选择做量程自动转换的数字频率计这个命题,完全是出于个人兴趣,但是一旦开始这方面的考虑时,还是遇到了很多问题的。

相关文档
最新文档