电子科技大学 电子技术实验 FPGA 频率计 实验报告

2019-09-01 22:27

《现代电子技术综合实验》论文报告

29013050XX XXX

中文摘要

摘 要:随着电子信息产业的不断发展,信号频率的测量在科技研究和实际应用中的作用日益重要。传统的频率计通常是用很多的逻辑电路和时序电路来实现的,这种电路一般运行缓慢,而且测量频率的范围比较小。考虑到上述问题,本文设计一个基于FPGA技术的数字频率计。首先,我们把方波信号送入计数器里进行计数,获得频率值;最后把测得的频率数值送入显示电路里进行显示。本文从频率计的具体设计触发,详细阐述了基于FPGA的数字频率计的设计方案,设计了各模块的代码,并对硬件电路进行了仿真。 关键词:FPGA,VHDL,频率计,测量

一、 引言

随着电子信息产业的发展,信号作为其最基础的元素,其频率的测量在科技研究和实际应用中的作用日益重要,而且需要测频的范围也越来越宽。传统的频率计通常采用组合电路和时序电路等大量的硬件电路构成,产品不但体积较大,运行速度慢,而且测量范围低,精度低。因此,随着对频率测量的要求的提高,传统的测频的方法在实际应用中已不能满足要求。因此我们需要寻找一种新的测频的方法。随着FPGA技术的发展和成熟,用FPGA来做为一个电路系统的控制电路逐渐显示出其无与伦比的优越性。因此本采用FPGA来做为电路的控制系统,设计一个能测量10Hz到100MHz的数字频率计。用FPGA来做控制电路的数字频率计测量频率精度高,测量频率的范围得到很大的提高。

二、 项目任务与设计思路

1、实验项目

数字频率计的设计

2、实验指标

被测输入信号:方波

测试频率范围为:10Hz~100MHz

量程分为三档:第一档:闸门时间为1S时,最大读数为999.999KHz 第二档:闸门时间为0.1S时,最大读数为9999.99KHz 第三档:闸门时间为0.01S时,最大读数为99999.9KHz

显示工作方式:a、用六位BCD七段数码管显示读数。 b、采用记忆显示方法

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

3、实验思路

根据实验指标,将电路设计分成6个模块:分频器,闸门选择,门控电路,计数器,锁存器,显示控制。

三、 基于VHDL方法的设计方案

1、设计方框图

2、具体说明

石英振荡器:48MHz的晶振信号。

分频器:将48MHz的信号分频成1Hz,10Hz,100Hz的基准频率;同时产生1kHz的信号作为扫描显示控制子系统的时钟。

闸门选择开关:设置三个开关sel1,sel10,sel100。

闸门选择:设置一个选择频率输出和三个小数点输出dp1,dp2,dp3。根据闸门选择开关的信号,当se11有效而其他两个无效时,选择频率输出1Hz信号,dp1,dp2,dp3分别输出0,1,1;当sel10有效而其他两个无效时,选择频率输出10Hz信号,dp1,dp2,dp3分别输出1,0,1;当sel100有效而其他两个无效时,选择频率输出100Hz信号,dp1,dp2,dp3分别输出1,1,0。

门控电路:根据选择频率信号产生闸门信号(计数器使能信号),清零信号,锁存使能信号,各信号的时序关系如图所示:

计数器:考虑采用6个10进制计数器同步级联的方法。

锁存器:门控电路产生的锁存使能信号的上升沿触发。

扫描显示控制子系统:考虑该系统由三部分组成:预显示部分,消隐部分,显示部分。

预显示部分:设计一个选择信号switch负责选择对应的LED灯(根据1kHz),并根据传来的数据,产生对应的数码管使能信号序列led(6:0)。 消隐部分:设计一个信号hide(5:0),该信号的每一位分别代表一个LED灯,若该信号某一位为1,则对应的LED灯消隐。hide信号的赋值根据dp1,dp2,dp3的值以及高位的数据是否为零决定。

显示部分,设置一个使能输出信号G,并令它为低电平,根据hide信号和led信号以及dp1,dp2,dp3信号决定最终的输出。

四、 系统电路设计

五、 系统单元模块设计

1、分频器

entity freq_divider is port(clkin: in std_logic; clkout1: out std_logic; clkout10: out std_logic; clkout100: out std_logic; clkout1k: out std_logic); end freq_divider;

architecture Behavioral of freq_divider is

signal clkcnt1: integer range 0 to 48000000:=0; signal clkcnt10: integer range 0 to 4800000:=0; signal clkcnt100: integer range 0 to 480000:=0; signal clkcnt1k: integer range 0 to 48000:=0; signal clk1,clk10,clk100,clk1k: std_logic:='1';

begin

fc1: process(clkin) begin

if rising_edge(clkin) then if clkcnt1=24000000 then clkcnt1<=1; clk1<= not clk1; else clkcnt1<=clkcnt1+1; end if; end if; end process;

fc10: process(clkin) begin

if rising_edge(clkin) then

if clkcnt10=2400000 then clkcnt10<=1; clk10<= not clk10; else clkcnt10<=clkcnt10+1; end if; end if; end process;

fc100: process(clkin) begin

if rising_edge(clkin) then if clkcnt100=240000 then clkcnt100<=1; clk100<= not clk100; else clkcnt100<=clkcnt100+1; end if; end if; end process;

fc1k: process(clkin) begin

if rising_edge(clkin) then if clkcnt1k=24000 then clkcnt1k<=1; clk1k<= not clk1k; else clkcnt1k<=clkcnt1k+1; end if; end if; end process;

-- assignment

clkout1<=clk1; clkout10<=clk10; clkout100<=clk100; clkout1k<=clk1k;

end Behavioral;

2、闸门选择


电子科技大学 电子技术实验 FPGA 频率计 实验报告.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:校本教材结题报告董世全

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: