等精度数字频率计 EDA技术综合应用实例与分析 ppt课件.ppt
《等精度数字频率计 EDA技术综合应用实例与分析 ppt课件.ppt》由会员分享,可在线阅读,更多相关《等精度数字频率计 EDA技术综合应用实例与分析 ppt课件.ppt(145页珍藏版)》请在三一办公上搜索。
1、第13章 等精度数字频率计的设计与分析,13.1 系统设计要求 13.2 系统设计方案 13.3 主要VHDL和单片机源程序 13.4 系统仿真/硬件验证 13.5 设计技巧分析 13.6 系统扩展思路,13.1 系统设计要求,基于传统测频原理的频率计的测量精度将随被测信号频率的下降而降低,在实用中有较大的局限性,而等精度频率计不但具有较高的测量精度,而且在整个测频区域内保持恒定的测试精度。本系统设计的基本指标如下:,(1) 对于频率测试功能,测频范围为0.1 Hz70 MHz;对于测频精度,测频全域相对误差恒为百万分之一。 (2) 对于周期测试功能,信号测试范围与精度要求与测频功能相同。 (
2、3) 对于脉宽测试功能,测试范围为0.1 s1 s,测试精度为0.01 s。 (4) 对于占空比测试功能,测试精度为1%99%。,13.2 系统设计方案,13.2.1 系统设计方案选择 根据频率计的设计要求,我们可将整个电路系统划分为几个基本模块,如图13.1所示。各模块的实现均有几种不同的设计方案。,图13.1 频率计组成模块框图,1频率测量模块 (1) 直接测频法:把被测频率信号经脉冲整形电路处理后加到闸门的一个输入端,只有在闸门开通时间T(以秒计)内,被计数的脉冲送到十进制计数器进行计数。 (2) 组合测频法:是指在高频时采用直接测频法,低频时采用直接测量周期法测信号的周期,然后换算成频
3、率。,(3) 倍频法:是指把频率测量范围分成多个频段,使用倍频技术,根据频段设置倍频系数,将经整形的低频信号进行倍频后再进行测量,对高频段则直接进行测量。倍频法较难实现。 (4) 等精度测频法:其实现方式可用图13.2来说明。,(13.1),由此可推得,(13.2),图13.2 等精度测频法原理框图,若所测频率值为fx,其真实值为fxe,标准频率为fs,一次测量中,由于fx计数的起停时间都是由该信号的上跳沿触发的,因此在Tpr时间内对fx的计数Nx无误差,在此时间内的计数Ns最多相差一个脉冲,即et1,则下式成立:,(13.3),(13.4),可分别推得,(13.5),(13.6),根据相对误
4、差的公式有,(13.7),经整理可得到,(13.8),因et1,故et/Ns1/Ns,即,Ns=Tprfs,(13.9),2周期测量模块 (1) 直接周期测量法:用被测信号经放大整形后形成的方波信号直接控制计数门控电路,使主门开放时间等于信号周期Tx,时标为Ts的脉冲在主门开放时间进入计数器。设在Tx期间计数值为N,可以根据以下公式来算得被测信号周期: Tx=NTs (13.10) 经误差分析,可得结论:用该测量法测量时,被测信号的频率越高,测量误差越大。,(2) 等精度周期测量法:该方法在测量电路和测量精度上与等精度频率测量完全相同,只是在进行计算时公式不同,用周期1/T代换频率f即可,其计
5、算公式为 Tx=,(13.11),3脉宽测量模块 在进行脉冲宽度测量时,首先经信号处理电路进行处理,限制只有信号的50%幅度及其以上部分才能输入数字测量部分。脉冲边沿被处理得非常陡峭,然后送入测量计数器进行测量。 测量电路在检测到脉冲信号的上升沿时打开计数器,在下降沿时关闭计数器,设脉冲宽度为Twx,计算公式为 Twx=,(13.12),4占空比测量模块 测一次脉冲信号的脉宽,记录其值为Twx1,然后将信号反相,再测一次脉宽并记录其值为Twx2,通过下式计算占空比:,占空比= 100%,5标准频率发生电路 本模块采用高频率稳定度和高精度的晶振作为标准频率发生器。,13.2.2 系统总体设计方案
6、 等精度数字频率计涉及到的计算包括加、减、乘、除,耗用的资源比较大,用一般中小规模CPLD/FPGA芯片难以实现。因此,我们选择单片机和CPLD/FPGA的结合来实现。电路系统原理框图如图13.3所示,其中单片机完成整个测量电路的测试控制、数据处理和显示输出;CPLD/FPGA完成各种测试功能;键盘信号由AT89C51单片机进行处理,它从CPLD/FPGA读回计数数据并进行运算,向显示电路输出测量结果;显示器电路采用七段LED动态显示,由8个芯片74LS164分别驱动数码管。,图13.3 等精度数字频率计电路系统原理框图,系统的基本工作方式如下: (1) P0口是单片机与FPGA的数据传送通信
7、口,P1口用于键盘扫描,实现各测试功能的转换;P2口为双向控制口。P3口为LED的串行显示控制口。系统设置5个功能键:占空比、脉宽、周期、频率和复位。 (2) 7个LED数码管组成测量数据显示器,另一个独立的数码管用于状态显示。 (3) BCLK为测频标准频率50 MHz信号输入端,由晶体振荡源电路提供。 (4) 待测信号经放大整形后输入CPLD/FPGA的TCLK。,13.2.3 CPLD/FPGA测频专用模块的VHDL程序设计 利用VHDL设计的测频模块逻辑结构如图13.4所示,其中有关的接口信号规定如下: (1) TF(P2.7):TF=0时等精度测频;TF=1时测脉宽。 (2) CLR
8、/TRIG(P2.6):当TF=0时系统全清零功能;当TF=1时CLRTRIG的上跳沿将启动CNT2,进行脉宽测试计数。 (3) ENDD(P2.4):脉宽计数结束状态信号,ENDD=1计数结束。,(4) CHOICE(P3.2):自校/测频选择,CHOICE=1测频;CHOICE=0自校。 (5) START(P2.5):当TF=0时,作为预置门闸,门宽可通过键盘由单片机控制,START=1时预置门开;当TF=1时,START有第二功能,此时,当START=0时测负脉宽,当START=1时测正脉宽。利用此功能可分别获得脉宽和占空比数据。 (6) EEND(P2.3):等精度测频计数结束状态信
9、号,EEND=0时计数结束。 (7) SEL2.0(P2.2,P2.1,P2.0):计数值读出选通控制。,图13.4 测频模块逻辑图,1测频/测周期的实现 (1) 令TF=0,选择等精度测频,然后在CONTRL的CLR端加一正脉冲信号以完成测试电路状态的初始化。 (2) 由预置门控信号将CONTRL的START端置高电平,预置门开始定时,此时由被测信号的上沿打开计数器CNT1进行计数,同时使标准频率信号进入计数器CNT2。,(3) 预置门定时结束信号把CONTRL的START端置为低电平(由单片机来完成),在被测信号的下一个脉冲的上沿到来时,CNT1停止计数,同时关断CNT2对fs的计数。 (
10、4) 计数结束后,CONTRL的EEND端将输出低电平来指示测量计数结束,单片机得到此信号后,即可利用ADRC(P2.2)、ADRB(P2.1)、ADRA(P2.0)分别读回CNT1和CNT2的计数值,并根据等精度测量公式进行运算,计算出被测信号的频率或周期值。,2控制部件设计 如图13.5所示,当D触发器的输入端START为高电平时,若FIN端来一个上升沿,则Q端变为高电平,导通FINCLK1和FSDCLK2,同时EEND被置为高电平作为标志;当D触发器的输入端START为低电平时,若FIN端输入一个脉冲上沿,则FINCLK1与FSDCLK2的信号通道被切断。,图13.5 测频与测周期控制部
11、分电路,3计数部件设计 图13.4中的计数器CNT1/CNT2是32位二进制计数器,通过DSEL模块的控制,单片机可分4次将其32位数据全部读出。 4脉冲宽度测量和占空比测量模块设计 根据上述脉宽测量原理,设计如图13.6(CONTRL2)所示的电路原理示意图。,图13.6 脉冲宽度测量原理图,测量脉冲宽度的工作步骤如下: (1) 向CONTRL2的CLR端送一个脉冲以便进行电路的工作状态初始化。 (2) 将GATE的CNL端置高电平,表示开始脉冲宽度测量,这时CNT2的输入信号为FSD。 (3) 在被测脉冲的上沿到来时,CONTRL2的PUL端输出高电平,标准频率信号进入计数器CNT2。,(
12、4) 在被测脉冲的下沿到来时,CONTRL2的PUL端输出低电平,计数器CNT2被关断。 (5) 由单片机读出计数器CNT2的结果,并通过上述测量原理公式计算出脉冲宽度。CONTRL2子模块的主要特点是:电路的设计保证了只有CONTRL2被初始化后才能工作,否则PUL输出始终为零。,只有在先检测到上沿后PUL才为高电平,然后在检测到下沿时,PUL输出为低电平;ENDD输出高电平以便通知单片机测量计数已经结束;如果先检测到下沿,PUL并无变化;在检测到上沿并紧接一个下沿后,CONTRL2不再发生变化直到下一个初始化信号到来。占空比的测量方法是通过测量脉冲宽度记录CNT2的计数值N1,然后将输入信
13、号反相,再测量脉冲宽度,测得CNT2计数值N2则可以计算出: 占空比,100%,(13.14),13.2.4 单片机控制与运算程序的设计 主要单片机控制与运算程序流程图如图13.7图13.14所示。,图13.7 主程序流程图,图13.8 显示子程序流程图,图13.9 频率、周期计数子程序流程图,图13.10 键扫子程序流程图,图13.11 测周期子程序流程图,图13.12 测频率子程序流程图,图13.13 测脉宽子程序流程图,图13.14 脉宽、占空比计数子程序流程图,13.3 主要VHDL和单片机源程序,13.3.1 主要VHDL源程序-频率计测试模块DJDPLJ.VHDLIBRARY IE
14、EE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DJDPLJ IS PORT(CHEKF, FINPUT, CHOICE: IN STD_LOGIC; START, CLRTRIG, FSTD, TF: IN STD_LOGIC;,SEL: IN STD_LOGIC_VECTOR(2 DOWNTO 0); OO: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); EEND: OUT STD_LOGIC; -CPBZ ENDD: OUT STD_LOGIC; END ENTITY
15、DJDPLJ; ARCHITECTURE ART OF DJDPLJ IS COMPONENT FIN ISPORT(CHKF, FIN, CHOIS: IN STD_LOGIC; FOUT: OUT STD_LOGIC);,END COMPONENT FIN; COMPONENT CONTRL ISPORT(FIN, START, CLR, FSD: IN STD_LOGIC; CLK1, EEND, CLK2, CLRC: OUT STD_LOGIC); END COMPONENT CONTRL; COMPONENT CNT ISPORT(CLK, CLR: IN STD_LOGIC; Q
16、: OUT STD_LOGIC_VECTOR(31 DOWNTO 0);,END COMPONENT CNT ; COMPONENT CONTRL2 ISPORT(FIN, START, CLR: IN STD_LOGIC; ENDD, PUL: OUT STD_LOGIC); END COMPONENT CONTRL2; COMPONENT GATE ISPORT(CLK2, FSD, CNL, PUL: IN STD_LOGIC; CLKOUT: OUT STD_LOGIC);,END COMPONENT GATE; SIGNAL INCLK: STD_LOGIC; SIGNAL FOUT
17、, CLRC: STD_LOGIC; SIGNAL CLK1, CLK2, CLKOUT, PUL: STD_LOGIC; SIGNAL Q1, Q2: STD_LOGIC_VECTOR(31 DOWNTO 0); BEGIN OO= Q1(7 DOWNTO 0) WHEN SEL=000 ELSE Q1(15 DOWNTO 8) WHEN SEL=001 ELSE Q1(23 DOWNTO 16) WHEN SEL=010 ELSE,Q1(31 DOWNTO 24) WHEN SEL=011 ELSE Q2(7 DOWNTO 0) WHEN SEL=100 ELSE Q2(15 DOWNTO
18、 8) WHEN SEL=101 ELSE Q2(23 DOWNTO 16) WHEN SEL=110 ELSE Q2(31 DOWNTO 24) WHEN SEL=111 ELSE 00000000; FENPIN: PROCESS(FSTD) IS BEGIN IF FSTDEVENT AND FSTD=1 THEN INCLK=NOT INCLK;,END IF; END PROCESS FENPIN; FCH: FIN PORT MAP(CHKF=CHEKF, FIN=FINPUT, CHOIS=CHOICE, FOUT=FOUT); CON: CONTRL PORT MAP(FIN=
19、FOUT, START=START, CLR=CLRTRIG, FSD=INCLK, CLK1=CLK1, EEND=EEND, CLK2=CLK2, CLRC=CLRC); CONT1: CNT PORT MAP(CLK=CLK1, CLR=CLRC, Q=Q1);,CONT2: CNT PORT MAP(CLK=CLKOUT, CLR=CLRC, Q=Q2); CON2: CONTRL2 PORT MAP(FIN=FOUT, START=START, CLR=CLRC,PUL=PUL, ENDD=ENDD); GATE1: GATE PORT MAP(CLK2=CLK2, FSD=INCL
20、K, CNL=TF, PUL=PUL, CLKOUT=CLKOUT); END ARCHITECTURE ART;,-计数模块CNT.VHDLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT IS PORT(CLK, CLR: IN STD_LOGIC; Q: OUT STD_LOGIC_VECTOR(31 DOWNTO 0); END ENTITY CNT; ARCHITECTURE ART OF CNT IS,SIGNAL CNT: STD_LOGIC_VECTOR(3
21、1 DOWNTO 0); BEGIN PROCESS(CLK, CLR) ISBEGINIF CLR=1 THEN CNT=00000000000000000000000000000000; ELSIF CLKEVENT AND CLK=1 THEN CNT=CNT+1; END IF; END PROCESS; Q=CNT; END ARCHITECTURE ART;,-测频、周期控制模块CONTRL.VHDLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY CONTRL IS PORT(FIN, START, CLR, FSD: IN STD
22、_LOGIC; CLK1, EEND, CLK2, CLRC: OUT STD_LOGIC); END ENTITY CONTRL; ARCHITECTURE ART OF CONTRL IS SIGNAL QQ1: STD_LOGIC; BEGIN PROCESS(FIN, CLR, START) IS,BEGINIF CLR=1 THEN QQ1=0; ELSIF FINEVENT AND FIN=1 THEN QQ1=START; END IF; END PROCESS; CLRC=CLR; EEND=QQ1; CLK1=FIN AND QQ1; CLK2=FSD AND QQ1; EN
23、D ARCHITECTURE ART; -测脉宽、占空比控制模块CONTRL2.VHDLIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CONTRL2 IS PORT (FIN, START, CLR: IN STD_LOGIC; ENDD, PUL: OUT STD_LOGIC); END ENTITY CONTRL2; ARCHITECTURE ART OF CONTRL2 IS SIGNAL QQ: STD_LOGIC_VECTOR(3 DOWNTO 1); SIGNAL
24、A0, B0, C0, F2: STD_LOGIC; SIGNAL S: STD_LOGIC_VECTOR(1 DOWNTO 0);,BEGIN S(0)=QQ(3); S(1)=QQ(2); PROCESS(START, S) ISBEGIN IF START=1 THEN F2=FIN; ELSE F2=NOT FIN; END IF; IF S=2 THEN PUL=1; ELSE PUL=0; END IF; IF S=3 THEN ENDD=1;ELSE ENDD=0;,END IF; END PROCESS; A0=F2 AND QQ(1); B0=NOT A0; C0=NOT F
25、2; PROCESS(C0, CLR) ISBEGINIF CLR=1 THEN QQ(1)=0; ELSIF C0EVENT AND C0=1 THEN QQ(1)=1; END IF; END PROCESS;,PROCESS(A0, CLR) ISBEGINIF CLR=1 THEN QQ(2)=0; ELSIF A0EVENT AND A0=1 THEN QQ(2)=1; END IF; END PROCESS; PROCESS(B0, CLR) IS BEGINIF CLR=1 THEN QQ(3)=0; ELSIF B0EVENT AND B0=1 THEN QQ(3)=1; EN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 等精度数字频率计 EDA技术综合应用实例与分析 ppt课件 精度 数字频率计 EDA 技术 综合 应用 实例 分析 ppt 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-1548798.html