基于FPGA的数字频率计设计报告.docx

上传人:b****2 文档编号:2462986 上传时间:2022-10-29 格式:DOCX 页数:28 大小:80.17KB
下载 相关 举报
基于FPGA的数字频率计设计报告.docx_第1页
第1页 / 共28页
基于FPGA的数字频率计设计报告.docx_第2页
第2页 / 共28页
基于FPGA的数字频率计设计报告.docx_第3页
第3页 / 共28页
基于FPGA的数字频率计设计报告.docx_第4页
第4页 / 共28页
基于FPGA的数字频率计设计报告.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

基于FPGA的数字频率计设计报告.docx

《基于FPGA的数字频率计设计报告.docx》由会员分享,可在线阅读,更多相关《基于FPGA的数字频率计设计报告.docx(28页珍藏版)》请在冰豆网上搜索。

基于FPGA的数字频率计设计报告.docx

基于FPGA的数字频率计设计报告

电子技术综合试验实验报告

班级:

测控一班

学号:

姓名:

李大帅

指导老师:

李颖

基于FPGA的数字频率计设计报告

一、系统整体设计

设计要求:

1、被测输入信号:

方波

2、测试频率范围为:

10Hz~100MHz

3、量程分为三档:

第一档:

闸门时间为1S时,最大读数为999.999KHz

第二档:

闸门时间为0.1S时,最大读数为9999.99KHz

第三档:

闸门时间为0.01S时,最大读数为99999.9KHz。

4、显示工作方式:

a、用六位BCD七段数码管显示读数。

b、采用记忆显示方法

c、实现对高位无意义零的消隐。

系统设计原理:

所谓“频率”,就是周期性信号在单位时间(1秒)内变化的次数。

若在一定的时间间隔T内计数,计得某周期性信号的重复变化次数为N,则该信号的频率可表达为:

f=N/T.

基于这一原理我们可以使用单位时间内对被测信号进行计数的方法求得对该信号的频率测量,具体实现过程简述如下:

首先,将被测信号①(方波)加到闸门的输入端。

由一个高稳定的石英振荡器和一系列数字分频器组成了时基信号发生器,它输出时间基准(或频率基准)信号③去控制门控电路形成门控信号④,门控信号的作用时间T是非常准确的(由石英振荡器决定)。

门控信号控制闸门的开与闭,只有在闸门开通的时间内,方波脉冲②才能通过闸门成为被计数的脉冲⑤由计数器计数。

闸门开通的时间称为闸门时间,其长度等于门控信号作用时间T。

比如,时间基准信号的重复周期为1S,加到闸门的门控信号作用时间T亦准确地等于1S,即闸门的开通时间——“闸门时间”为1S。

在这一段时间内,若计数器计得N=个数,根据公式f=N/T,那么被测频率就是Hz。

如果计数式频率计的显示器单位为“KHz”,则显示100.000KHz,即小数点定位在第三位。

不难设想,若将闸门时间设为T=0.1S,则计数值为10000,这时,显示器的小数点只要根据闸门时间T的改变也随之自动往右移动一位(自动定位),那么,显示的结果为100.00Khz。

在计数式数字频率计中,通过选择不同的闸门时间,可以改变频率计的测量范围和测量精度。

系统单元模块划分:

1)分频器,将产生用于计数控制的时钟分别为1HZ,10HZ,100HZ脉冲和1KHZ的用于七段显示数码管扫描显示的扫描信号。

2)闸门选择器,用于选择不同的闸门时间以及产生后续的小数点的显示位置。

3)门控电路,产生用于计数的使能控制信号,清零信号以及锁存器锁存信号。

4)计数器,用于对输入的待测信号进行脉冲计数,计数输出。

5)锁存器,用于对计数器输出数据的锁存,便于后续译码显示电路的对数据进行记忆显示,同时避免计数器清零信号对数据产生影响。

6)译码显示,用于产生使七段显示数码管的扫描数字显示,小数点显示的输出信号,同时对高位的无意义零进行消隐。

二、单元电路设计

1、分频器:

该电路将产生四个不同频率的信号输出,因为电路板上给出了一个48MHZ的晶振,所以我们只需要对48MHZ的信号进行适当分频即可得到我们所需的四个不同频率的信号输出,我们设计一个输入为48MHZ,有四个输出端分别为1HZ,10HZ和100HZ,1KHZ的分频器,原程序如下:

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

entityfenpinqiis

Port(clk:

inSTD_LOGIC;

clkout1:

outSTD_LOGIC;

clkout10:

outSTD_LOGIC;

clkout100:

outSTD_LOGIC;

clkout1K:

outSTD_LOGIC);

endfenpinqi;

architectureBehavioraloffenpinqiis

signalcnt1:

integerrange1to;

signalcnt10:

integerrange1to;

signalcnt100:

integerrange1to;

signalcnt1K:

integerrange1to24000;

signalc1:

std_logic;

signalc2:

std_logic;

signalc3:

std_logic;

signalc4:

std_logic;

begin

process(clk)is

begin

ifclk'eventandclk='1'then

ifcnt1

cnt1<=cnt1+1;

elsifcnt1=then--cnt1计满后对其进行赋一,并且令c1进行翻转,然后将c1的值赋给clkout1

c1<=notc1;--由于48MHZ的的信号,前一半的时候c1为0,则后一半是为1,就完成了对信号进行分频,产生了1HZ的信号

cnt1<=1;

endif;

endif;

endprocess;

process(clk)is

begin

ifclk'eventandclk='1'then--方法同上

ifcnt10

cnt10<=cnt10+1;

elsifcnt10=then

c2<=notc2;

cnt10<=1;

endif;

endif;

endprocess;

process(clk)is

begin

ifclk'eventandclk='1'then--方法同上

ifcnt100

cnt100<=cnt100+1;

elsifcnt100=then

c3<=notc3;

cnt100<=1;

endif;

endif;

endprocess;

process(clk)is

begin

ifclk'eventandclk='1'then--方法同上

ifcnt1K

cnt1K<=cnt1K+1;

elsifcnt1=24000then

c4<=notc4;

cnt1K<=1;

endif;

endif;

endprocess;

clkout1<=c1;

clkout10<=c2;

clkout100<=c3;

clkout1K<=c4;

endBehavioral;

源文件编写成功后编译并生成图形文件符号如图:

仿真文件编写如下:

LIBRARYieee;

USEieee.std_logic_1164.ALL;

USEieee.std_logic_unsigned.all;

USEieee.numeric_std.ALL;

ENTITYtbb_vhdIS

ENDtbb_vhd;

ARCHITECTUREbehaviorOFtbb_vhdIS

COMPONENTfenpinqi

PORT(clk:

INstd_logic;

clkout1:

OUTstd_logic;

clkout10:

OUTstd_logic;

clkout100:

OUTstd_logic;

clkout1K:

OUTstd_logic);

ENDCOMPONENT;

SIGNALclk:

std_logic:

='0';

SIGNALclkout1:

std_logic;

SIGNALclkout10:

std_logic;

SIGNALclkout100:

std_logic;

SIGNALclkout1K:

std_logic;

BEGIN

uut:

fenpinqiPORTMAP(clk=>clk,

clkout1=>clkout1,

clkout10=>clkout10,

clkout100=>clkout100,

clkout1K=>clkout1K);

tb:

PROCESS

BEGIN

clk<='0';

waitfor10ps;

clk<='1';

waitfor10ps;

ENDPROCESS;

END;

对该模块进行仿真结果如下:

有上图可知分频器工作正常,产生的个信号也没有毛刺,结果十分理想。

2、闸门选择器:

在这个模块中我们有四个输出端和六个输入端,其中四个输出端中有一个是频率输出端,是通过三个闸门选择开关输入和三个输入频率决定的,另外三个输出端则是用来后面的小数点控制的,而六个输入端中的三个是上面分频器的三个输出1HZ,10HZ和100HZ,另外三个是电路板上的拨动开关,用来选择闸门,控制输出。

其原程序和分析如下:

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

entitySELEis

Port(SE1:

inSTD_LOGIC;

SE10:

inSTD_LOGIC;

SE100:

inSTD_LOGIC;

F1HZ:

INSTD_LOGIC;

F10HZ:

INSTD_LOGIC;

F100HZ:

INSTD_LOGIC;

FREF:

outSTD_LOGIC;

DP1:

outSTD_LOGIC;

DP2:

outSTD_LOGIC;

DP3:

outSTD_LOGIC);

endSELE;

architectureBehavioralofSELEis

begin

PROCESS(SE1,SE10,SE100)IS

BEGIN

IFSE1='1'ANDSE10='0'ANDSE100='0'THEN

FREF<=F1HZ;--当闸门控制在第一档的时候,令输出端输出1HZ输入端的输入,小数点控制dp1有效,dp2,dp3无效

DP1<='0';

DP2<='1';

DP3<='1';

ENDIF;

IFSE1='0'ANDSE10='1'ANDSE100='0'THEN

FREF<=F10HZ;--第二档,输出为10HZ,dp2有效

DP1<='1';

DP2<='0';

DP3<='1';

ENDIF;

IFSE1='0'ANDSE10='0'ANDSE100='1'THEN

FREF<=F100HZ;--第三档,输出为100HZ,dp3有效

DP1<='1';

DP2<='1';

DP3<='0';

ENDIF;

ENDPROCESS;

endBehav

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1