1、第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 第第13章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 13.1 系统设计要求系统设计要求 13.2 系统设计方案系统设计方案 13.3 主要主要VHDL和单片机源程序和单片机源程序 13.4 系统仿真系统仿真/硬件验证硬件验证 13.5 设计技巧分析设计技巧分析 13.6 系统扩展思路系统扩展思路 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 13.1 系统设计要求系统设计要求 基于传统测频原理的频率计的测量精度将随被测信号频率的下降而降低,在实用中有较大的局限性,而等精
2、度频率计不但具有较高的测量精度,而且在整个测频区域内保持恒定的测试精度。本系统设计的基本指标如下:第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 (1) 对于频率测试功能,测频范围为0.1 Hz70 MHz;对于测频精度,测频全域相对误差恒为百万分之一。 (2) 对于周期测试功能,信号测试范围与精度要求与测频功能相同。 (3) 对于脉宽测试功能,测试范围为0.1 s1 s,测试精度为0.01 s。 (4) 对于占空比测试功能,测试精度为1%99%。第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 13.2 系统设计方案系统设计方案 13.2
3、.1 系统设计方案选择 根据频率计的设计要求,我们可将整个电路系统划分为几个基本模块,如图13.1所示。各模块的实现均有几种不同的设计方案。第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 图13.1 频率计组成模块框图 标准频率信号发生电路脉冲宽度测量电路脉冲信号处理电路占空比测量电路前置放大电路波形整形电路控制与数据处理电路显示电路稳压电源频率、周期测量电路被测信号输入预置门控信号第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 1频率测量模块 (1) 直接测频法:把被测频率信号经脉冲整形电路处理后加到闸门的一个输入端,只有在闸门开通时间
4、T(以秒计)内,被计数的脉冲送到十进制计数器进行计数。 (2) 组合测频法:是指在高频时采用直接测频法,低频时采用直接测量周期法测信号的周期,然后换算成频率。 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 (3) 倍频法:是指把频率测量范围分成多个频段,使用倍频技术,根据频段设置倍频系数,将经整形的低频信号进行倍频后再进行测量,对高频段则直接进行测量。倍频法较难实现。 (4) 等精度测频法:其实现方式可用图13.2来说明。 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 ssxxNfNf (13.1) 由此可推得 sxsxNNff (1
5、3.2) 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 图13.2 等精度测频法原理框图 标准频率信号预置门控信号QD清零信号被测信号CNT2OUT2CLRCLKCLKENCNT1OUT1CLRCLKCLKEN第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 若所测频率值为fx,其真实值为fxe,标准频率为fs,一次测量中,由于fx计数的起停时间都是由该信号的上跳沿触发的,因此在Tpr时间内对fx的计数Nx无误差,在此时间内的计数Ns最多相差一个脉冲,即et1,则下式成立:ssxxNfNf (13.3) etNfNfssxxe (13.4
6、) 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 可分别推得 sxsxNNffetNNffsxsxe (13.5) (13.6) 根据相对误差的公式有 xexxexexefffff (13.7) 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 经整理可得到 sxexeNetff(13.8) 因et1,故et/Ns1/Ns,即 xexeffsN1Ns=Tprfs (13.9) 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 2周期测量模块 (1) 直接周期测量法:用被测信号经放大整形后形成的方波信号直接控制计数
7、门控电路,使主门开放时间等于信号周期Tx,时标为Ts的脉冲在主门开放时间进入计数器。设在Tx期间计数值为N,可以根据以下公式来算得被测信号周期: Tx=NTs (13.10) 经误差分析,可得结论:用该测量法测量时,被测信号的频率越高,测量误差越大。第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 (2) 等精度周期测量法:该方法在测量电路和测量精度上与等精度频率测量完全相同,只是在进行计算时公式不同,用周期1/T代换频率f即可,其计算公式为 Tx= xssNNT (13.11) 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 3脉宽测量模
8、块 在进行脉冲宽度测量时,首先经信号处理电路进行处理,限制只有信号的50%幅度及其以上部分才能输入数字测量部分。脉冲边沿被处理得非常陡峭,然后送入测量计数器进行测量。 测量电路在检测到脉冲信号的上升沿时打开计数器,在下降沿时关闭计数器,设脉冲宽度为Twx,计算公式为 Twx= sxfN (13.12) 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 4占空比测量模块 测一次脉冲信号的脉宽,记录其值为Twx1,然后将信号反相,再测一次脉宽并记录其值为Twx2,通过下式计算占空比:占空比= 100% 2wx1wx1wxTTT 5标准频率发生电路 本模块采用高频率稳定度和
9、高精度的晶振作为标准频率发生器。 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 13.2.2 系统总体设计方案 等精度数字频率计涉及到的计算包括加、减、乘、除,耗用的资源比较大,用一般中小规模CPLD/FPGA芯片难以实现。因此,我们选择单片机和CPLD/FPGA的结合来实现。电路系统原理框图如图13.3所示,其中单片机完成整个测量电路的测试控制、数据处理和显示输出;CPLD/FPGA完成各种测试功能;键盘信号由AT89C51单片机进行处理,它从CPLD/FPGA读回计数数据并进行运算,向显示电路输出测量结果;显示器电路采用七段LED动态显示,由8个芯片74LS1
10、64分别驱动数码管。第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 图13.3 等精度数字频率计电路系统原理框图 信号放大与整形电路TCLKBCLK显示驱动74LS1648晶振CPLD/FPGA电源P0P2P1.0P1.3RETAT89C51单片机P3.0P3.1占空比脉宽周期频率88复位50 MHz待测信号数码显示LED8第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 系统的基本工作方式如下: (1) P0口是单片机与FPGA的数据传送通信口,P1口用于键盘扫描,实现各测试功能的转换;P2口为双向控制口。P3口为LED的串行显示控制口。
11、系统设置5个功能键:占空比、脉宽、周期、频率和复位。 (2) 7个LED数码管组成测量数据显示器,另一个独立的数码管用于状态显示。 (3) BCLK为测频标准频率50 MHz信号输入端,由晶体振荡源电路提供。 (4) 待测信号经放大整形后输入CPLD/FPGA的TCLK。第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 13.2.3 CPLD/FPGA测频专用模块的VHDL程序设计 利用VHDL设计的测频模块逻辑结构如图13.4所示,其中有关的接口信号规定如下: (1) TF(P2.7):TF=0时等精度测频;TF=1时测脉宽。 (2) CLR/TRIG(P2.6):
12、当TF=0时系统全清零功能;当TF=1时CLRTRIG的上跳沿将启动CNT2,进行脉宽测试计数。 (3) ENDD(P2.4):脉宽计数结束状态信号,ENDD=1计数结束。第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 (4) CHOICE(P3.2):自校/测频选择,CHOICE=1测频;CHOICE=0自校。 (5) START(P2.5):当TF=0时,作为预置门闸,门宽可通过键盘由单片机控制,START=1时预置门开;当TF=1时,START有第二功能,此时,当START=0时测负脉宽,当START=1时测正脉宽。利用此功能可分别获得脉宽和占空比数据。 (6
13、) EEND(P2.3):等精度测频计数结束状态信号,EEND=0时计数结束。 (7) SEL2.0(P2.2,P2.1,P2.0):计数值读出选通控制。 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 图13.4 测频模块逻辑图CHKFFINCHOISFOUTFINSTARTCLRFSDCLK1EENDCLK2CLRCCLRCLKQ31.0CNT1Q131.0Q231.0SEL2.0OO7.0CLRQ31.0CNT2CLKCLRSTARTFINPULENDDCONTRL2CLK2FSDCNLPULCLKOUTGATEFINCONTRLDSEL24427OUTPUT
14、41EEND9OUTPUT42OO7.0OUTPUT43ENDD6101415CHEKFFINPUTCHOICEINPUTVCCINPUTVCCINPUTVCCINPUTVCCINPUTVCCINPUTVCCINPUTVCCINPUTVCCSTARTCLRTRIGFSTDSEL2.0TF18161719208第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 1测频/测周期的实现 (1) 令TF=0,选择等精度测频,然后在CONTRL的CLR端加一正脉冲信号以完成测试电路状态的初始化。 (2) 由预置门控信号将CONTRL的START端置高电平,预置门开始定时,此时由被
15、测信号的上沿打开计数器CNT1进行计数,同时使标准频率信号进入计数器CNT2。 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 (3) 预置门定时结束信号把CONTRL的START端置为低电平(由单片机来完成),在被测信号的下一个脉冲的上沿到来时,CNT1停止计数,同时关断CNT2对fs的计数。 (4) 计数结束后,CONTRL的EEND端将输出低电平来指示测量计数结束,单片机得到此信号后,即可利用ADRC(P2.2)、ADRB(P2.1)、ADRA(P2.0)分别读回CNT1和CNT2的计数值,并根据等精度测量公式进行运算,计算出被测信号的频率或周期值。第第131
16、3章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 2控制部件设计 如图13.5所示,当D触发器的输入端START为高电平时,若FIN端来一个上升沿,则Q端变为高电平,导通FINCLK1和FSDCLK2,同时EEND被置为高电平作为标志;当D触发器的输入端START为低电平时,若FIN端输入一个脉冲上沿,则FINCLK1与FSDCLK2的信号通道被切断。 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 图13.5 测频与测周期控制部分电路DQCCLRCFSDCLK2EENDCLK1CLRSTARTFIN第第1313章章 等精度数字频率计的等精度数字频率
17、计的设计与分析设计与分析 3计数部件设计 图13.4中的计数器CNT1/CNT2是32位二进制计数器,通过DSEL模块的控制,单片机可分4次将其32位数据全部读出。 4脉冲宽度测量和占空比测量模块设计 根据上述脉宽测量原理,设计如图13.6(CONTRL2)所示的电路原理示意图。 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 图13.6 脉冲宽度测量原理图 FINSTARTCLRDQCVCCDQCVCCDQCCONTRL2VCCENDDPULQQ2QQ3PLENDGT第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 测量脉冲宽度的工作步骤
18、如下: (1) 向CONTRL2的CLR端送一个脉冲以便进行电路的工作状态初始化。 (2) 将GATE的CNL端置高电平,表示开始脉冲宽度测量,这时CNT2的输入信号为FSD。 (3) 在被测脉冲的上沿到来时,CONTRL2的PUL端输出高电平,标准频率信号进入计数器CNT2。第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 (4) 在被测脉冲的下沿到来时,CONTRL2的PUL端输出低电平,计数器CNT2被关断。 (5) 由单片机读出计数器CNT2的结果,并通过上述测量原理公式计算出脉冲宽度。CONTRL2子模块的主要特点是:电路的设计保证了只有CONTRL2被初始
19、化后才能工作,否则PUL输出始终为零。 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 只有在先检测到上沿后PUL才为高电平,然后在检测到下沿时,PUL输出为低电平;ENDD输出高电平以便通知单片机测量计数已经结束;如果先检测到下沿,PUL并无变化;在检测到上沿并紧接一个下沿后,CONTRL2不再发生变化直到下一个初始化信号到来。占空比的测量方法是通过测量脉冲宽度记录CNT2的计数值N1,然后将输入信号反相,再测量脉冲宽度,测得CNT2计数值N2则可以计算出: 占空比 211NNN 100% (13.14) 第第1313章章 等精度数字频率计的等精度数字频率计的设计
20、与分析设计与分析 13.2.4 单片机控制与运算程序的设计 主要单片机控制与运算程序流程图如图13.7图13.14所示。第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 图13.7 主程序流程图YNYNYYYNYNY有键按下吗?有键按下吗?有键按下吗?清标志位清标志位清标志位调测周期子程序置标志位是测周期键吗?是测脉宽键吗?调测脉宽子程序调测占空比子程序Y置标志位是测占空比键吗?Y置标志位NN有键按下吗?是测频键吗?N调测频率子程序有键按下吗?调显示子程序清显示缓冲区,送初始显示内容 FCHOICE1P20SP60H清内存开始NN第第1313章章 等精度数字频率计的等
21、精度数字频率计的设计与分析设计与分析 图13.8 显示子程序流程图 NYNYNYY显示子程序R0#7FHR18是MHz 的小数点?N是占空比的小数点?查表字型码添加小数点查表SBUFA传送完1字节?清TI标志位R1R11R10?返回第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 图13.9 频率、周期计数子程序流程图等待FPGA计数,计数完?SETB CHOICE频率、周期计数子程序SETB CLRTRIGSETB START延时1 sCLR STARTN分别读入Nx,NsYP2#00H返回第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析
22、图13.10 键扫子程序流程图 NNY键扫子程序KKEYIIP1#0FFH有键按下吗?去键抖确实有键按下?A求键号延时等待键松开返回Y第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 图13.11 测周期子程序流程图测周期子程序调用测频率子程序周期T1000000/fx(s)LCALL HEXBCD2LED8pLCALL DISP返回第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 图13.12 测频率子程序流程图 测频率子程序调用测频率,周期记数子程序4FH-48H调乘法子程序(fsNx)调除法子程序(fx(fsNx)/Ns)LCALL H
23、EXBCDLED8 #0FH,显示FLCALL DISP返回第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 图13.13 测脉宽子程序流程图测脉宽子程序R204H调用脉宽,占空比计数子程序脉宽=Nx/(19H)LCALL HEXBCD2LED8ALCALL DISP返回第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 图13.14 脉宽、占空比计数子程序流程图 YN脉宽、占空比计数子程序SETB P2.2SETB CHOICESETB TF是测正脉宽吗?Y测负脉宽CLRSTARTSETB STARTSETB CLRTIRGCLR CLRTI
24、RG延时FPGA计数完?NR4=#02H?3FH3CH读入数据标准频率计数(Nx)57H5FH读入数据标准频率计数(Nx)P2#00H返回NY第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 13.3 主要主要VHDL和单片机源程序和单片机源程序 13.3.1 主要VHDL源程序-频率计测试模块DJDPLJ.VHDLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DJDPLJ IS PORT(CHEKF, FINPUT, CHOICE: IN STD_L
25、OGIC; START, CLRTRIG, FSTD, TF: IN STD_LOGIC; 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 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 DJDPLJ; ARCHITECTURE ART OF DJDPLJ IS COMPONENT FIN ISPORT(CHKF, FIN, CHOIS: IN S
26、TD_LOGIC; FOUT: OUT STD_LOGIC); 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 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: OUT STD_LOGIC_VECTOR(31 DOWNTO 0); 第第1313
27、章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 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); 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 END COMPONENT GATE; SIG
28、NAL INCLK: STD_LOGIC; SIGNAL FOUT, 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第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 Q1(31 DOWN
29、TO 24) WHEN SEL=011 ELSE Q2(7 DOWNTO 0) WHEN SEL=100 ELSE Q2(15 DOWNTO 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 INCLKCHEKF, FIN=FINPUT, CHOIS=CHOICE, FOUT=FOUT); CON: CONTRL PORT M
30、AP(FIN=FOUT, START=START, CLR=CLRTRIG, FSD=INCLK, C L K 1 = C L K 1 , EEND=EEND, CLK2=CLK2, CLRC=CLRC); CONT1: CNT PORT MAP(CLK=CLK1, CLR=CLRC, Q=Q1); 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 CONT2: CNT PORT MAP(CLK=CLKOUT, CLR=CLRC, Q=Q2); CON2: CONTRL2 PORT MAP(FIN=FOUT, START=START, CLR=CLRC,PUL=PUL
31、, ENDD=ENDD); GATE1: GATE PORT MAP(CLK2=CLK2, FSD=INCLK, CNL=TF, PUL=PUL, CLKOUT=CLKOUT); END ARCHITECTURE ART; 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 -计数模块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_VE
32、CTOR(31 DOWNTO 0); END ENTITY CNT; ARCHITECTURE ART OF CNT IS第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 SIGNAL CNT: STD_LOGIC_VECTOR(31 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 AR
33、CHITECTURE ART; 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 -测频、周期控制模块CONTRL.VHDLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY CONTRL IS PORT(FIN, START, CLR, FSD: IN STD_LOGIC; CLK1, EEND, CLK2, CLRC: OUT STD_LOGIC); END ENTITY CONTRL; ARCHITECTURE ART OF CONTRL IS SIGNAL QQ1: STD_LOGIC; BEGIN PROCESS
34、(FIN, CLR, START) IS第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 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; END ARCHITECTURE ART; -测脉宽、占空比控制模块CONTRL2.VHDLIBRARY IEEE; 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 U
35、SE 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 A0, B0, C0, F2: STD_LOGIC; SIGNAL S: STD_LOGIC_VECTOR(1 DO
36、WNTO 0); 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 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;第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 END IF; END PROCESS; A0=F2 AND QQ(1); B0
37、=NOT A0; C0=NOT F2; PROCESS(C0, CLR) ISBEGINIF CLR=1 THEN QQ(1)=0; ELSIF C0EVENT AND C0=1 THEN QQ(1)=1; END IF; END PROCESS; 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 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=
38、1 THEN QQ(3)=0; ELSIF B0EVENT AND B0=1 THEN QQ(3)=1; END IF; END PROCESS; END ARCHITECTURE ART; 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 -自校/测试频率选择模块FIN.VHDLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY FIN IS PORT (CHKF, FIN, CHOIS: IN STD_LOGIC; FOUT: OUT STD_LOGIC); END ENTITY FIN; ARCHITECTURE R
39、TL OF FIN IS BEGIN FOUT=(FIN AND CHOIS) OR (CHKF AND NOT CHOIS); END ARCHITECTURE RTL; 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 -计数器二频率切换模块GATE.VHDLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY GATE IS PORT (CLK2, FSD, CNL, PUL: IN STD_LOGIC; CLKOUT: OUT STD_LOGIC); END ENTITY GATE; ARCHITECTURE ART
40、 OF GATE IS BEGIN PROCESS(CLK2, PUL, FSD, CNL) IS第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 BEGIN IF CNL=0 THEN CLKOUT=CLK2; ELSE CLKOUT=PUL AND FSD; END IF; END PROCESS; END ARCHITECTURE ART; 第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 13.3.2 单片机源程序LED8 EQU 7FHLED7 EQU 7EHLED6 EQU 7DHLED5 EQU 7CHLED4 EQU 7BHL
41、ED3 EQU 7AHLED2 EQU 79HLED1 EQU 78HTF BIT P2.7CLRTRIG BIT P2.6第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 START BIT P2.5ENDD BIT P2.4EEND BIT P2.3ADRC BIT P2.2ADRB BIT P2.1ADRA BIT P2.0CHOICE BIT P3.2SB1 BIT P1.0; TEST频率SB2 BIT P1.1; TEST周期SB3 BIT P1.2; TEST脉宽SB4 BIT P1.3; TEST占空比SB5 BIT P1.4; RET第第1313章章
42、 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 AD0 EQU 30HAD1 EQU 31HAD2 EQU 32HAD3 EQU 33HAD4 EQU 34HAD5 EQU 35HAD6 EQU 36HADA EQU 4FHADB EQU 5FHADC EQU 4DHADE EQU 5DHKEYNUM EQU 29HINT_R1 EQU 46H第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 INT_R0 EQU 47HINT_R2 EQU 48H ; 主程序ORG 0000H LJMP MAIN ORG 0030HMAIN : CLEAR: MOV R0
43、, #00H MOV R1, #128 MOV A, #00H第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 L1: MOV R0, A INC R0 DJNZ R1, L1 MOV SP, #60H MOV P2, #00H ; 控制信号初始化为0 SETB CHOICE LCALL NL0 ; 7个数码管熄灭 MOV LED8, #13H ; 开始显示“P.” MOV LED7, #0CFH第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 DIR: LCALL DISP ; 调显示子程序KKE1: LCALL KKEYII ; 调键扫子
44、程序KK0: CJNE A, #00H, KK1KKK0: LCALL TESTF; 调用测频子程序 LCALL KKEYI LCALL DELAY LCALL DELAY JB 28H.4, KK0 SJMP KKK0KK1: CJNE A, #01H, KK2第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 KKKK1: SETB 28H.1 LCALL TESTT; 调测周期子程序 CLR 28H.1 LCALL KKEYI JB 28H.4, KK0 SJMP KKKK1KK2: CJNE A, #02H, KK3第第1313章章 等精度数字频率计的等精度数字
45、频率计的设计与分析设计与分析 KKKK2: SETB 28H.2 LCALL TESPW; 调用测脉宽子程序 CLR 28H.2 LCALL KKEYI JB 28H.4, KK0 SJMP KKKK2KK3: CJNE A, #03H, KK4第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 KKKK3: SETB 28H.2 CLR 28H.1 LCALL TESZKB; 调用测占空比子程序 CLR 28H.2 LCALL KKEYI JB 28H.4, KK0 SJMP KKKK3KK4: SJMP KKE1 ; 测频子程序第第1313章章 等精度数字频率计的等
46、精度数字频率计的设计与分析设计与分析 TESTF: ; 测频 LCALL FTJS ; 控制测试计数程序IF 1=8 MOV R1, #3FH ; 另存Ns和Nx MOV R0, #LED8 MOV R2, #08HMML1: MOV A, R0 MOV R1, A DEC R1 DEC R0 DJNZ R2, MML1第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 ENDIF MOV 4CH, #01H ; 标准频率值fs=25 MHz,高位 MOV 4DH, #7DH MOV 4EH, #78H MOV 4FH, #40H MOV R0, #LED1 ; Nx=
47、(5FH5CH) MOV R1, #ADB MOV R3, #04H第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 TFL0: MOV A, R0 MOV R1, A DEC R1 INC R0 DJNZ R3, TFL0 LCALL MULNM ; (4CH 4D, 4E, 4FH)(5C 5D, 5E, 5FH)=(57H5FH) ; fsNx第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 IF 1=3 ; 乘法未经处理送显缓 MOV R0, #5FH MOV R1, #LED1 MOV R2, #07HLLL3: MOV A, R0
48、 MOV R1, A DEC R0 INC R1 DJNZ R2, LLL3第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 ENDIF ; 除法运算参数传递 MOV R0, #5FH ; 先送乘法结果到4F4AH MOV R1, #4FH MOV R2, #08HTFL1: MOV A, R0 MOV R1, A DEC R0 DEC R1 DJNZ R2, TFL1 MOV R0, #LED5 ; Ns 送5FH57H中 MOV R1, #5FH MOV R3, #04H第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 TFL2: MOV
49、 A, R0 MOV R1, A DEC R1 INC R0 DJNZ R3, TFL2 LCALL DIVD1 ; (4A, 4B, 4C, 4D, 4E, 4FH)/(5D, 5E, 5FH)=(4D, 4E, 4FH) ; (fsNx)/Ns=fx MOV 22H, 4DH ; 高位, 计算结果fx第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 MOV 21H, 4EH MOV 20H, 4FH JB 28H.1, NEXT3 LCALL HEXBCD2 ; 待显示数据转换为BCD码放于7E77H共8个单元 MOV LED8, #0FH;“F” LCALL D
50、ISP ; 显示NEXT3: RET ; 周期测试子程序第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 TESTT: ; 测周期 LCALL TESTF MOV R0, #4FH MOV R1, #5FH MOV R2, #04HTETL1: MOV A, R0 MOV R1, A DEC R0 DEC R1 DJNZ R2, TETL1 MOV 48H, #00H第第1313章章 等精度数字频率计的等精度数字频率计的设计与分析设计与分析 MOV 49H, #00H MOV 4AH, #00H MOV 4BH, #00H MOV 4CH, #00H ; *(1000