EDA课程设计等精度频率计的设计Word下载.docx
《EDA课程设计等精度频率计的设计Word下载.docx》由会员分享,可在线阅读,更多相关《EDA课程设计等精度频率计的设计Word下载.docx(21页珍藏版)》请在冰豆网上搜索。
测量时,先打开预置闸门,当检测到被测信号脉冲沿抵达时,标准信号时钟开始计数。
预置闸门关闭时,标准信号并非当即停止计数,而是等检测到被测信号脉冲沿抵达时才停止,完成被测信号整数周期的测量。
测量的实际闸门时刻与预置闸门时刻可能不完全相同,但最大差值不超过被测信号的一个周期。
第一章设计项目的分析
设计原理
频率计用一个频率稳固度高的频率源作为基准时钟,对照测量其他信号的频率。
通常情形下计算每秒内待测信号的脉冲个数,现在咱们称闸门时刻为1s。
闸门时刻也能够大于或小于1s。
闸门时刻越长,取得的频率值就越准确,但闸门时刻越长那么每测一次频率的距离就越长。
闸门时刻越短,测得频率值刷新就越快,但测得的频率精度就受阻碍。
设计要求
(1)关于频率测试功能,测频范围为Hz~70MHz;
关于测频精度,测频全域相对误差恒为百万分之一。
(2)关于周期测试功能,信号测试范围与精度要求与测频功能相同。
(3)关于脉宽测试功能,测试范围为μs~1s,测试精度为μs。
(4)关于占空比测试功能,测试精度为1%~99%。
设计思路
利用计数器A对时钟脉冲信号进行计数,同时利用另一个计数器B对被测信号计数。
当测量时钟脉冲信号的计数器A积存到必然数值时,将计数器的结果传送到触发器中并通过一个时钟脉冲锁存,并译码送到七段数码管输出。
为了使测量误差尽可能小,能够在被测信号的上升沿使计数器A和计数器B同时计数,为此,可添加一个D触发器,以被测信号作为D触发器的时钟信号,高电平为输入端,输出端Q作为两个计数器的计数许诺信号。
基于传统测频原理的频率计的测量精度将随被测信号的频率的下降而降低,在利用中有较大的局限性,而等精度频率计不但具有较高的测量精度,而且在整个频率区域能维持恒定的测试精度。
第二章项目工作原理及模块工作原理
系统设计方案的选择
依照频率计的设计要求,咱们可将整个电路系统划分为几个模块,频率测量模块,周期测量模块,脉宽测量模块,和占空比测量模块。
标准频率发生电路采纳高频率稳固度和高精度的晶镇作为标准频率发生器。
如下图。
各模块的实现均有几种不同的设计方案。
项目工作原理
图2-1等精度数字频率计工作原理图
图2-1中“预置门操纵信号”CL,能够证明,在1秒秒时刻选择的范围内,CL的时刻宽度对测频精度几乎没有阻碍,在此设其宽度为Tpr。
BZH和TF模块是两个可控的32为高速计数器,BENA和ENA别离是它们的计数许诺信号端,高电平有效。
标准频率信号从BZH的时钟输入端BCLK输入,设其频率为Fs;
经整形后的被测信号从与BZH相似的32为计数器TF的时钟输入端TCLK输入,设其真实频率值为Fxe,被测频率为Fx。
测频原理说明如下:
测频开始前,第一发出一个清零信号CLR,使两个计数器和D触发器置0,同时通过信号ENA,禁止两个计数器计数。
这是一个初始化操作。
然后由单片机发出许诺测频命令,即令预置门控信号CL为高电平,这时D触发器要一直等到被测信号的上升沿通过时Q端才被置1,与此同时,将同时启动计数器BZH和TF,进入“计数许诺周期”。
在此期间,BZH和TF别离对呗测信号和标准信号同时计数。
当Tpr秒后,预置门信号被单片机置为低电平,但现在两个计数器仍没有停止计数,一直等到随后而至的呗测信号的上升沿到来时,才通过D触发器将这两个计数器同时关闭。
被测频率值为Fx,标准频率为Fs,设在一次预置门时刻Tpr中对被测信号计数值为Nx,对标准信号的计数值为Ns,那么下式成立:
Fx/Nx=Fs/Ns
由此可推得:
Fx=(Fs*Nx)/Ns
TOP文件包模块:
图2-2TOP模块
频率测量模块
图2-3自校/测试频率选择模块图
图2-4计数器二频率切换模块
(1)直接测频法:
把被测频率信号经整形电路处置后加到闸门的一个输入端,只有在闸门开通时刻T(以秒计)内,被计数的脉冲送到十进制计数器进行计数。
(2)组合测频法:
是指在高频时采纳的直接测频法,低频时采纳直接测量周期法测信号的周期,然后换算成频率。
(3)倍频法:
是指把频率测量范围分成多个频段,利用倍频技术,依照频段设置倍频系数,将经整形的低频信号进行倍频后再进行测量,对高频段那么直接进行测量。
被频法较难实现。
(4)等精度测频法:
标准频率信号从CNT1的时钟输出端CLK输入,其频率为fs,经整形后的被测信号从CNT2的时钟输入端CLK输入,设其实际频率为fx;
当预置门控信号为高时,经整形后的被测信号的上升沿通过D触发器的Q端同时启动计数器CNT1和CNT2。
CNT1和CNT2别离对被测信号(频率为fs)和标准频率信号(频率为fx)同时计数。
当预置门信号为低时,随后而至的被测信号的上升沿将两个计数器同时关闭。
设在一次预置门时刻Tpr内对被测信号的计数值为Nx,对标准信号的计数值为Ns。
那么下式成立:
fx/Nx=fs/Ns
由此推得:
fx=fs*Nx/Ns
周期测量模块
图2-5测频、周期操纵模块图
(1)直接周期测量法:
用被测信号经放大整形后形成的方波信号直接操纵计数门控电路,使主门开放时刻等于信号周期Tx,时标为Ts的脉冲在主门开放时刻进入计数器。
设在Tx期间计数值为N,能够依照以下公式来算得被测次你好周期:
Tx=N*Ts
经误差分析,可得结论:
用该测量法测量时,被测信号的频率越高,测量越大。
(2)等精度周期测量法:
该方式在测量电路和测量精度上与等精度频率测量完全相同,只是在进行计算时公式不同,用周期1/T代换频率f即可,其计算公式为:
Tx=(Ts*Ns)/Nx
脉宽测量模块
图2-6测脉宽、占空比操纵模块图
在进行脉冲宽度测量时,第一经信号处置电路进行处置,限制只有信号的70MHZ幅度及其以上部份才能输入数字测量部份。
脉冲边沿被处置得超级峻峭,然后送入测量计数器进行测量。
测量电路在检测到脉冲信号的上升沿时打开计数器,在下降沿时关闭计数器,设脉冲宽度为Twx,计算公式为:
Twx=Nx/fs
占空比测量模块
关于占空比K的测量,能够通过测量正反两个脉宽的计数值来取得。
设正脉宽的计数值N1,对负脉宽的计数值为N2,那么周期计数值为N1+N2,于是K为:
K=N1/(N1+N2)*%
第三章系统设计方案
等精度数字频率计项目设计方案
等精度数字频率计涉及到的计算包括加,减,乘,除,耗用的资源比较大,用一样中小规模CPLD/FPGA芯片难以实现。
因此,咱们选择单片机和CPLD/FPGA的结合来实现。
其中单片机完成整个测量电路的测试操纵,数据处置和显示输出;
CPLD/FPGA完成各类测试功能;
键盘信号由AT89C51单片机进行处置,它从CPLD/FPGA读回计数数据并进行运算,向显示电路输出测量结果;
显示器电路采纳七段LED动态显示,由8个芯片74LS164别离驱动数码管。
3-1频率计系统电路原理图
等精度数字频率计的原理
等精度数字频率计涉及到的计算包括加、减、乘、除,耗用的资源比
较大,用一样中小规模CPLD/FPGA芯片难以实现。
电路系统原理框图如图3-1所示,其中单片机完成整个测量电路的测试操纵、数据处置和显示输出;
等精度数字频率计要紧由以下几个部份组成
(1)信号整形电路。
用于对待侧信号进行放大和整形,以便作为PLD器件的属于信号。
(2)测频电路。
测频电路是测频的核心电路模块,能够由FPGS等PLD器件担任。
(3)单片机电路模块。
用于操纵FPGA的测频操作和读取测频数据,并作出相应数据处置。
安排单片机的P0口直接读取测试数据,P2口向FPGA发操纵命令。
(4)100MHZ的标准频率信号源。
本模块采纳高频稳固度和高精度度的晶振作为标准频率发生器,产生100MHZ的标准频率信号直接进入FPGA。
(5)键盘模块。
能够用5个键执行测试操纵,一个是复位键,其余是命令键。
(6)数码显示模块。
能够用7个数码管显示测试结果,最高可表达百万分之一的精度。
考虑到提高单片机I/O口的利用率,降低编程复杂性,提高单片机的计算速度和降低数码显示器对主系统的干扰,能够采纳串行静态显示方式。
系统的大体工作方式如下
(1)P0口是单片机与FPGA的数据传送通信口,P1口用于键盘扫描,实现各测试功能的转换;
P2口为双向操纵口。
P3口为LED的串行显示操纵口。
系统设置5个功能键:
占空比、脉宽、周期、频率和复位。
(2)7个LED数码管组成测量数据显示器,另一个独立的数码管用于状态显示。
(3)BCLK为测频标准频率50MHz信号输入端,由晶体振荡源电路提供。
(4)待测信号经放大整形后输入CPLD/FPGA的TCLK。
CPLD/FPGA测频专用模块的VHDL程序设计
利用VHDL设计的测频模块逻辑结构如图4所示,其中有关的接口信号规定如下:
(1)TF:
TF=0时等精度测频;
TF=1时测脉宽。
(2)CLR/TRIG:
当TF=0时系统全清零功能;
当TF=1时CLRTRIG的上跳沿将启动CNT2,进行脉宽测试计数。
(3)ENDD:
脉宽计数终止状态信号,ENDD=1计数终止。
(4)CHOICE:
自校/测频选择,CHOICE=1测频;
CHOICE=0自校。
(5)START:
当TF=0时,作为预置门闸,门宽可通过键盘由单片机操纵,START=1时预置门开;
当TF=1时,START有第二功能,现在,当START=0时测负脉宽,当START=1时测正脉宽。
利用此功能可别离取得脉宽和占空比数据。
(6)EEND:
等精度测频计数终止状态信号,EEND=0时计数终止。
(7)SEL[2..0],,:
计数值读出选通操纵。
测频/测周期的实现
(1)令TF=0,选择等精度测频,然后在CONTRL的CLR端加一正脉冲信号以完成测试电路状态的初始化。
(2)由预置门控信号将CONTRL的START端置高电平,预置门开始按时,现在由被测信号的上沿打开计数器CNT1进行计数,同时使标准频率信号进入计数器CNT2。
(3)预置门按时终止信号把CONTRL的START端置为低电平(由单片机来完成),在被测信号的下一个脉冲的上沿到来时,CNT1停止计数,同时关断CNT2对fs的计数。
(4)计数终止后,CONTRL的EEND端将输出低电平来指示测量计数终止,单片机取得此信号后,即可利用ADRC、ADRB、ADRA别离读回CNT1和CNT2的计数值,并依照等精度测量公式进行运算,计算出被测信号的频率或周期值。
操纵部件设
如图3-3所示,当D触发器的输入端START为高电平常,假设FIN端来一个上升沿,那么Q端变成高电平,导通FIN→CLK1和FSD→CLK2,同时EEND被置为高电平作为标志;
当D触发器的输入端START为低电平常,假设FIN端输入一个脉冲上沿,那么FIN→CLK1与FSD→CLK2的信号通道被切断。
计数部件设计
3-4计数部件模块图
脉冲宽度测量和占空比测量模块设计如以下图所示:
3-5脉冲宽度测量和占空比测量模块
测量脉冲宽度的工作步骤
(1)向CONTRL2的CLR端送一个脉冲以便进行电路的工作状态初始化。
(2)将GATE的CNL端置高电平,表示开始脉冲宽度测量,这时CNT2的输入信号为FSD。
(3)在被测脉冲的上沿到来时,CONTRL2的PUL端输出高电平,标准频率信号进入计数器CNT2。
(4)在被测脉冲的下沿到来时,CONTRL2的PUL端输出低电平,计数器CNT2被关断。
(5)由单片机读出计数器CNT2的结果,并通过上述测量原理公式计算出脉冲宽度。
CONTRL2子模块的要紧特点是:
电路的设计保证了只有CONTRL2被初始化后才能工作,不然PUL输出始终为零。
只有在先检测到上沿后PUL才为高电平,然后在检测到下沿时,PUL输出为低电平;
ENDD输出高电平以便通知单片机测量计数已经终止;
若是先检测到下沿,PUL并无转变;
在检测到上沿并紧接一个下沿后,CONTRL2再也不发生转变直到下一个初始化信号到来。
占空比的测量方式是通过测量脉冲宽度记录CNT2的计数值N1,然后将输入信号反相,再测量脉冲宽度,测得CNT2计数值N2那么能够计算出占空比:
占空比=N1/(N1+N2)*%
第四章要紧VHDL源程序
-等精度频率计测试模块(VHDL顶层文件)
LIBRARYIEEE;
USE
ENTITYDJDPLJIS
PORT(CHEKF,FINPUT,CHOICE:
INSTD_LOGIC;
START,CLRTRIG,FSTD,TF:
SEL:
INSTD_LOGIC_VECTOR(2DOWNTO0);
OO:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
EEND:
OUTSTD_LOGIC;
--CPBZ
ENDD:
OUTSTD_LOGIC);
ENDENTITYDJDPLJ;
ARCHITECTUREARTOFDJDPLJIS
COMPONENTFINIS--自校/测试频率选择模块例化
PORT(CHKF,FIN,CHOIS:
FOUT:
ENDCOMPONENTFIN;
COMPONENTCONTRLIS--测频、周期操纵模块例化
PORT(FIN,START,CLR,FSD:
CLK1,EEND,CLK2,CLRC:
ENDCOMPONENTCONTRL;
COMPONENTCNTIS--计数模块的例化
PORT(CLK,CLR:
Q:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDCOMPONENTCNT;
COMPONENTCONTRL2IS--测脉宽、占空比操纵模块例化
PORT(FIN,START,CLR:
ENDD,PUL:
ENDCOMPONENTCONTRL2;
COMPONENTGATEIS--计数器二频率切换模块例化
PORT(CLK2,FSD,CNL,PUL:
CLKOUT:
ENDCOMPONENTGATE;
SIGNALINCLK:
STD_LOGIC;
SIGNALFOUT,CLRC:
SIGNALCLK1,CLK2,CLKOUT,PUL:
SIGNALQ1,Q2:
STD_LOGIC_VECTOR(31DOWNTO0);
BEGIN
OO<
=Q1(7DOWNTO0)WHENSEL="
000"
--当SEL输入000时将Q1赋给OO
ELSEQ1(15DOWNTO8)WHENSEL="
001"
ELSE
Q1(23DOWNTO16)WHENSEL="
010"
Q1(31DOWNTO24)WHENSEL="
011"
Q2(7DOWNTO0)WHENSEL="
100"
Q2(15DOWNTO8)WHENSEL="
101"
Q2(23DOWNTO16)WHENSEL="
110"
Q2(31DOWNTO24)WHENSEL="
111"
"
00000000"
;
FENPIN:
PROCESS(FSTD)IS
IFFSTD'
EVENTANDFSTD='
1'
THEN--由FSTD=’1’装载新数据
INCLK<
=NOTINCLK;
ENDIF;
ENDPROCESSFENPIN;
FCH:
FINPORTMAP(CHKF=>
CHEKF,FIN=>
FINPUT,CHOIS=>
CHOICE,FOUT=>
FOUT);
CON:
CONTRLPORTMAP(FIN=>
FOUT,START=>
START,CLR=>
CLRTRIG,FSD=>
INCLK,
CLK1=>
CLK1,EEND=>
EEND,CLK2=>
CLK2,CLRC=>
CLRC);
CONT1:
CNTPORTMAP(CLK=>
CLK1,CLR=>
CLRC,Q=>
Q1);
CONT2:
CLKOUT,CLR=>
Q2);
CON2:
CONTRL2PORTMAP(FIN=>
CLRC,
PUL=>
PUL,ENDD=>
ENDD);
GATE1:
GATEPORTMAP(CLK2=>
CLK2,FSD=>
INCLK,CNL=>
TF,
PUL=>
PUL,CLKOUT=>
CLKOUT);
ENDARCHITECTUREART;
仿真结果:
图4-1TOP
测频、周期操纵模块
ENTITYCONTRLIS
CLK1,EEND,CLK2,CLRC:
ENDENTITYCONTRL;
ARCHITECTUREARTOFCONTRLIS
SIGNALQQ1:
PROCESS(FIN,CLR,START)IS
BEGIN
IFCLR='
THENQQ1<
='
0'
--给QQ1赋值
ELSIFFIN'
EVENTANDFIN='
=START;
ENDPROCESS;
CLRC<
=CLR;
EEND<
=QQ1;
CLK1<
=FINANDQQ1;
--FIN和QQ1的值相与后赋给CLK1
CLK2<
=FSDANDQQ1;
--FSD和QQ1的值相与后赋给CLK2
图4-2测频、周期操纵模块
当D触发器的输入端START为高电平常,假设FIN端来一个上升沿,那么Q端变成高电平,导通FIN→CLK1和FSD→CLK2,同时EEND被置为高电平作为标志;
当D触发器的输入端START为低电平常,假设FIN端输入一个脉冲上沿,那么FIN→CLK1与FSD→CLK2的信号通道被切断
计数模块
ENTITYCNTIS
ENDENTITYCNT;
ARCHITECTUREARTOFCNTIS
SIGNALCNT:
--概念CNT的数据类型
PROCESS(CLK,CLR)IS
THENCNT<
="
00000000000000000000000000000000"
--利用IF语句确信CNT的数据
ELSIFCLK'
EVENTANDCLK='
=CNT+1;
Q<
=CNT;
--将最后确信的CNT数据赋给Q
图4-3计数模块CNT
自校/测试频率选择模块
ENTITYFINIS
PORT(CHKF,FIN,CHOIS:
ENDENTITYFIN;
ARCHITECTURERTLOFFINIS
FOUT<
=(FINANDCHOIS)OR(CHKFANDNOTCHOIS);
--FIN和CHOIS的值相与再和CHKF和CHOIS取反的值相与的值相或最后将--相或的值赋给FOUT。
ENDARCHITECTURERTL;
图4-4自校/测试频率选择模块
测脉宽、占空比操纵模块
ENTITYCONTRL2IS
PORT(FIN,START,CLR:
ENDENTITYCONTRL2;
ARCHITECTUREARTOFCONTRL2IS
SIGNALQQ:
STD_LOGIC_VECTOR(3DOWNTO1);