EDA课程设计等精度频率计的设计.docx
- 文档编号:9056071
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:25
- 大小:456.48KB
EDA课程设计等精度频率计的设计.docx
《EDA课程设计等精度频率计的设计.docx》由会员分享,可在线阅读,更多相关《EDA课程设计等精度频率计的设计.docx(25页珍藏版)》请在冰点文库上搜索。
EDA课程设计等精度频率计的设计
SOPC/EDA综合课程设计报告
设计题目:
等精度频率计的设计
设计者:
学号:
班级:
电气工程及其自动化092班
指导老师:
完成时间:
设计报告
综合测试
总评
格式
(10)
内容
(40)
图表
(10)
答辩
(20)
平时
(20)
1绪论
测量频率是电子测量技术中最常见的测量之一。
不少物理量的测量,如时间、速度等都涉及到或本身可转化为频率的测量。
目前,市场上有各种多功能、高精度、高频率的数字频率计,但价格不菲。
而在实际工程中,并不是对所有信号的频率测量都要求达到非常高的精度。
目前,有三种常用的数字频率的测量方法:
直接测量法(以下称M法)、周期测量法(以下称T法)和综合测量法(以下称M/T法)。
M法是在给定的闸门时间内测量被测信号的脉冲个数,进行换算得出被测信号的频率。
T法是通过测量被测信号一个周期时间计时信号的脉冲个数,然后换算出被测信号的频率。
这两种测量法的精度都与被测信号有关,因而它们属于非等精度测量法。
而M/T法它通过测量被测信号数个周期的时间,然后换算得出被测信号的频率,克服了测量精度对被测信号的依赖性。
M/T法的核心思想是通过闸门信号与被测信号同步,将闸门时间τ控制为被测信号周期长度的整数倍。
测量时,先打开预置闸门,当检测到被测信号脉冲沿到达时,标准信号时钟开始计数。
预置闸门关闭时,标准信号并不立即停止计数,而是等检测到被测信号脉冲沿到达时才停止,完成被测信号整数周期的测量。
测量的实际闸门时间与预置闸门时间可能不完全相同,但最大差值不超过被测信号的一个周期。
第一章设计项目的分析
1.1设计原理
频率计用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。
通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1s。
闸门时间也可以大于或小于1s。
闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次频率的间隔就越长。
闸门时间越短,测得频率值刷新就越快,但测得的频率精度就受影响。
1.2设计要求
(1)对于频率测试功能,测频范围为0.1Hz~70MHz;对于测频精度,测频全域相对误差恒为百万分之一。
(2)对于周期测试功能,信号测试范围与精度要求与测频功能相同。
(3)对于脉宽测试功能,测试范围为0.1μs~1s,测试精度为0.01μs。
(4)对于占空比测试功能,测试精度为1%~99%。
1.3 设计思路
利用计数器A对时钟脉冲信号进行计数,同时使用另一个计数器B对被测信号计数。
当测量时钟脉冲信号的计数器A累积到一定数值时,将计数器的结果传送到触发器中并通过一个时钟脉冲锁存,并译码送到七段数码管输出。
为了使测量误差尽可能小,可以在被测信号的上升沿使计数器A和计数器B同时计数,为此,可添加一个D触发器,以被测信号作为D触发器的时钟信号,高电平为输入端,输出端Q作为两个计数器的计数允许信号。
基于传统测频原理的频率计的测量精度将随被测信号的频率的下降而降低,在使用中有较大的局限性,而等精度频率计不但具有较高的测量精度,而且在整个频率区域能保持恒定的测试精度。
第二章项目工作原理及模块工作原理
2.1系统设计方案的选择
根据频率计的设计要求,我们可将整个电路系统划分为几个模块,频率测量模块,周期测量模块,脉宽测量模块,和占空比测量模块。
标准频率发生电路采用高频率稳定度和高精度的晶镇作为标准频率发生器。
如图所示。
各模块的实现均有几种不同的设计方案。
2.2项目工作原理
图2-1等精度数字频率计工作原理图
图2-1中“预置门控制信号”CL,可以证明,在1秒0.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-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.4周期测量模块
图2-5测频、周期控制模块图
(1)直接周期测量法:
用被测信号经放大整形后形成的方波信号直接控制计数门控电路,使主门开放时间等于信号周期Tx,时标为Ts的脉冲在主门开放时间进入计数器。
设在Tx期间计数值为N,可以根据以下公式来算得被测次你好周期:
Tx=N*Ts
经误差分析,可得结论:
用该测量法测量时,被测信号的频率越高,测量越大。
(2)等精度周期测量法:
该方法在测量电路和测量精度上与等精度频率测量完全相同,只是在进行计算时公式不同,用周期1/T代换频率f即可,其计算公式为:
Tx=(Ts*Ns)/Nx
2.5脉宽测量模块
图2-6测脉宽、占空比控制模块图
在进行脉冲宽度测量时,首先经信号处理电路进行处理,限制只有信号的70MHZ幅度及其以上部分才能输入数字测量部分。
脉冲边沿被处理得非常陡峭,然后送入测量计数器进行测量。
测量电路在检测到脉冲信号的上升沿时打开计数器,在下降沿时关闭计数器,设脉冲宽度为Twx,计算公式为:
Twx=Nx/fs
2.6占空比测量模块
对于占空比K的测量,可以通过测量正反两个脉宽的计数值来获得。
设正脉宽的计数值N1,对负脉宽的计数值为N2,则周期计数值为N1+N2,于是K为:
K=N1/(N1+N2)*%
第三章系统设计方案
3.1等精度数字频率计项目设计方案
等精度数字频率计涉及到的计算包括加,减,乘,除,耗用的资源比较大,用一般中小规模CPLD/FPGA芯片难以实现。
因此,我们选择单片机和CPLD/FPGA的结合来实现。
其中单片机完成整个测量电路的测试控制,数据处理和显示输出;CPLD/FPGA完成各种测试功能;键盘信号由AT89C51单片机进行处理,它从CPLD/FPGA读回计数数据并进行运算,向显示电路输出测量结果;显示器电路采用七段LED动态显示,由8个芯片74LS164分别驱动数码管。
3-1频率计系统电路原理图
3.1.1等精度数字频率计的原理
等精度数字频率计涉及到的计算包括加、减、乘、除,耗用的资源比
较大,用一般中小规模CPLD/FPGA芯片难以实现。
因此,我们选择单片机和CPLD/FPGA的结合来实现。
电路系统原理框图如图3-1所示,其中单片机完成整个测量电路的测试控制、数据处理和显示输出;CPLD/FPGA完成各种测试功能;键盘信号由AT89C51单片机进行处理,它从CPLD/FPGA读回计数数据并进行运算,向显示电路输出测量结果;显示器电路采用七段LED动态显示,由8个芯片74LS164分别驱动数码管。
3.1.2等精度数字频率计主要由以下几个部分组成
(1)信号整形电路。
用于对待侧信号进行放大和整形,以便作为PLD器件的属于信号。
(2)测频电路。
测频电路是测频的核心电路模块,可以由FPGS等PLD器件担任。
(3)单片机电路模块。
用于控制FPGA的测频操作和读取测频数据,并作出相应数据处理。
安排单片机的P0口直接读取测试数据,P2口向FPGA发控制命令。
(4)100MHZ的标准频率信号源。
本模块采用高频稳定度和高精度度的晶振作为标准频率发生器,产生100MHZ的标准频率信号直接进入FPGA。
(5)键盘模块。
可以用5个键执行测试控制,一个是复位键,其余是命令键。
(6)数码显示模块。
可以用7个数码管显示测试结果,最高可表达百万分之一的精度。
考虑到提高单片机I/O口的利用率,降低编程复杂性,提高单片机的计算速度以及降低数码显示器对主系统的干扰,可以采用串行静态显示方式。
3.1.3系统的基本工作方式如下
(1)P0口是单片机与FPGA的数据传送通信口,P1口用于键盘扫描,实现各测试功能的转换;P2口为双向控制口。
P3口为LED的串行显示控制口。
系统设置5个功能键:
占空比、脉宽、周期、频率和复位。
(2)7个LED数码管组成测量数据显示器,另一个独立的数码管用于状态显示。
(3)BCLK为测频标准频率50MHz信号输入端,由晶体振荡源电路提供。
(4)待测信号经放大整形后输入CPLD/FPGA的TCLK。
3.1.4CPLD/FPGA测频专用模块的VHDL程序设计
利用VHDL设计的测频模块逻辑结构如图4所示,其中有关的接口信号规定如下:
(1)TF(P2.7):
TF=0时等精度测频;TF=1时测脉宽。
(2)CLR/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):
等精度测频计数结束状态信号,EEND=0时计数结束。
(7)SEL[2..0](P2.2,P2.1,P2.0):
计数值读出选通控制。
3.2测频/测周期的实现
(1)令TF=0,选择等精度测频,然后在CONTRL的CLR端加一正脉冲信号以完成测试电路状态的初始化。
(2)由预置门控信号将CONTRL的START端置高电平,预置门开始定时,此时由被测信号的上沿打开计数器CNT1进行计数,同时使标准频率信号进入计数器CNT2。
(3)预置门定时结束信号把CONTRL的START端置为低电平(由单片机来完成),在被测信号的下一个脉冲的上沿到来时,CNT1停止计数,同时关断CNT2对fs的计数。
(4)计数结束后,CONTRL的EEND端将输出低电平来指示测量计数结束,单片机得到此信号后,即可利用ADRC(P2.2)、ADRB(P2.1)、ADRA(P2.0)分别读回CNT1和CNT2的计数值,并根据等精度测量公式进行运算,计算出被测信号的频率或周期值。
3.3控制部件设
如图3-3所示,当D触发器的输入端START为高电平时,若FIN端来一个上升沿,则Q端变为高电平,导通FIN→CLK1和FSD→CLK2,同时EEND被置为高电平作为标志;当D触发器的输入端START为低电平时,若FIN端输入一个脉冲上沿,则FIN→CLK1与FSD→CLK2的信号通道被切断。
3.4计数部件设计
3-4计数部件模块图
3.5脉冲宽度测量和占空比测量模块设计如下图所示:
3-5脉冲宽度测量和占空比测量模块
3.5.1测量脉冲宽度的工作步骤
(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源程序
4.1-等精度频率计测试模块(VHDL顶层文件DJDPLJ.VHD)
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYDJDPLJIS
PORT(CHEKF,FINPUT,CHOICE:
INSTD_LOGIC;
START,CLRTRIG,FSTD,TF:
INSTD_LOGIC;
SEL:
INSTD_LOGIC_VECTOR(2DOWNTO0);
OO:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
EEND:
OUTSTD_LOGIC;--CPBZ
ENDD:
OUTSTD_LOGIC);
ENDENTITYDJDPLJ;
ARCHITECTUREARTOFDJDPLJIS
COMPONENTFINIS--自校/测试频率选择模块例化
PORT(CHKF,FIN,CHOIS:
INSTD_LOGIC;
FOUT:
OUTSTD_LOGIC);
ENDCOMPONENTFIN;
COMPONENTCONTRLIS--测频、周期控制模块例化
PORT(FIN,START,CLR,FSD:
INSTD_LOGIC;
CLK1,EEND,CLK2,CLRC:
OUTSTD_LOGIC);
ENDCOMPONENTCONTRL;
COMPONENTCNTIS--计数模块的例化
PORT(CLK,CLR:
INSTD_LOGIC;
Q:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDCOMPONENTCNT;
COMPONENTCONTRL2IS--测脉宽、占空比控制模块例化
PORT(FIN,START,CLR:
INSTD_LOGIC;
ENDD,PUL:
OUTSTD_LOGIC);
ENDCOMPONENTCONTRL2;
COMPONENTGATEIS--计数器二频率切换模块例化
PORT(CLK2,FSD,CNL,PUL:
INSTD_LOGIC;
CLKOUT:
OUTSTD_LOGIC);
ENDCOMPONENTGATE;
SIGNALINCLK:
STD_LOGIC;
SIGNALFOUT,CLRC:
STD_LOGIC;
SIGNALCLK1,CLK2,CLKOUT,PUL:
STD_LOGIC;
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"ELSE
Q1(31DOWNTO24)WHENSEL="011"ELSE
Q2(7DOWNTO0)WHENSEL="100"ELSE
Q2(15DOWNTO8)WHENSEL="101"ELSE
Q2(23DOWNTO16)WHENSEL="110"ELSE
Q2(31DOWNTO24)WHENSEL="111"ELSE
"00000000";
FENPIN:
PROCESS(FSTD)IS
BEGIN
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:
CNTPORTMAP(CLK=>CLKOUT,CLR=>CLRC,Q=>Q2);
CON2:
CONTRL2PORTMAP(FIN=>FOUT,START=>START,CLR=>CLRC,
PUL=>PUL,ENDD=>ENDD);
GATE1:
GATEPORTMAP(CLK2=>CLK2,FSD=>INCLK,CNL=>TF,
PUL=>PUL,CLKOUT=>CLKOUT);
ENDARCHITECTUREART;
仿真结果:
图4-1TOP
4.2-测频、周期控制模块CONTRL.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYCONTRLIS
PORT(FIN,START,CLR,FSD:
INSTD_LOGIC;
CLK1,EEND,CLK2,CLRC:
OUTSTD_LOGIC);
ENDENTITYCONTRL;
ARCHITECTUREARTOFCONTRLIS
SIGNALQQ1:
STD_LOGIC;
BEGIN
PROCESS(FIN,CLR,START)IS
BEGIN
IFCLR='1'THENQQ1<='0';--给QQ1赋值
ELSIFFIN'EVENTANDFIN='1'THENQQ1<=START;
ENDIF;
ENDPROCESS;
CLRC<=CLR;EEND<=QQ1;
CLK1<=FINANDQQ1;--FIN和QQ1的值相与后赋给CLK1
CLK2<=FSDANDQQ1;--FSD和QQ1的值相与后赋给CLK2
ENDARCHITECTUREART;
仿真结果:
图4-2测频、周期控制模块CONTRL.VHD
当D触发器的输入端START为高电平时,若FIN端来一个上升沿,则Q端变为高电平,导通FIN→CLK1和FSD→CLK2,同时EEND被置为高电平作为标志;当D触发器的输入端START为低电平时,若FIN端输入一个脉冲上沿,则FIN→CLK1与FSD→CLK2的信号通道被切断
4.3--计数模块CNT.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNTIS
PORT(CLK,CLR:
INSTD_LOGIC;
Q:
OUTSTD_LOGIC_VECTOR(31DOWNTO0));
ENDENTITYCNT;
ARCHITECTUREARTOFCNTIS
SIGNALCNT:
STD_LOGIC_VECTOR(31DOWNTO0);--定义CNT的数据类型
BEGIN
PROCESS(CLK,CLR)IS
BEGIN
IFCLR='1'THENCNT<="00000000000000000000000000000000";
--利用IF语句确定CNT的数据
ELSIFCLK'EVENTANDCLK='1'THENCNT<=CNT+1;
ENDIF;
ENDPROCESS;
Q<=CNT;--将最后确定的CNT数据赋给Q
ENDARCHITECTUREART;
仿真结果:
图4-3计数模块CNT
4.4-自校/测试频率选择模块FIN.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYFINIS
PORT(CHKF,FIN,CHOIS:
INSTD_LOGIC;
FOUT:
OUTSTD_LOGIC);
ENDENTITYFIN;
ARCHITECTURERTLOFFINIS
BEGIN
FOUT<=(FINANDCHOIS)OR(CHKFANDNOTCHOIS);
--FIN和CHOIS的值相与再和CHKF和C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程设计 精度 频率计 设计