电子科技大学-电子技术实验-FPGA-频率计-实验报告.doc
- 文档编号:96161
- 上传时间:2022-10-02
- 格式:DOC
- 页数:25
- 大小:933KB
电子科技大学-电子技术实验-FPGA-频率计-实验报告.doc
《电子科技大学-电子技术实验-FPGA-频率计-实验报告.doc》由会员分享,可在线阅读,更多相关《电子科技大学-电子技术实验-FPGA-频率计-实验报告.doc(25页珍藏版)》请在冰豆网上搜索。
《现代电子技术综合实验》论文报告
XXXXX
中文摘要
摘要:
随着电子信息产业的不断发展,信号频率的测量在科技研究和实际应用中的作用日益重要。
传统的频率计通常是用很多的逻辑电路和时序电路来实现的,这种电路一般运行缓慢,而且测量频率的范围比较小。
考虑到上述问题,本文设计一个基于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、分频器
entityfreq_divideris
port(clkin:
instd_logic;
clkout1:
outstd_logic;
clkout10:
outstd_logic;
clkout100:
outstd_logic;
clkout1k:
outstd_logic);
endfreq_divider;
architectureBehavioraloffreq_divideris
signalclkcnt1:
integerrange0to:
=0;
signalclkcnt10:
integerrange0to:
=0;
signalclkcnt100:
integerrange0to:
=0;
signalclkcnt1k:
integerrange0to48000:
=0;
signalclk1,clk10,clk100,clk1k:
std_logic:
='1';
begin
fc1:
process(clkin)
begin
ifrising_edge(clkin)then
ifclkcnt1=then
clkcnt1<=1;
clk1<=notclk1;
else
clkcnt1<=clkcnt1+1;
endif;
endif;
endprocess;
fc10:
process(clkin)
begin
ifrising_edge(clkin)then
ifclkcnt10=then
clkcnt10<=1;
clk10<=notclk10;
else
clkcnt10<=clkcnt10+1;
endif;
endif;
endprocess;
fc100:
process(clkin)
begin
ifrising_edge(clkin)then
ifclkcnt100=then
clkcnt100<=1;
clk100<=notclk100;
else
clkcnt100<=clkcnt100+1;
endif;
endif;
endprocess;
fc1k:
process(clkin)
begin
ifrising_edge(clkin)then
ifclkcnt1k=24000then
clkcnt1k<=1;
clk1k<=notclk1k;
else
clkcnt1k<=clkcnt1k+1;
endif;
endif;
endprocess;
--assignment
clkout1<=clk1;
clkout10<=clk10;
clkout100<=clk100;
clkout1k<=clk1k;
endBehavioral;
2、闸门选择
entitygate_selis
port(se1:
instd_logic;
se10:
instd_logic;
se100:
instd_logic;
f1:
instd_logic;
f10:
instd_logic;
f100:
instd_logic;
fref:
outstd_logic;
dp1:
outstd_logic;
dp2:
outstd_logic;
dp3:
outstd_logic);
endgate_sel;
architectureBehavioralofgate_selis
signalsel:
std_logic_vector(2downto0):
="000";
begin
sel<=se1&se10&se100;
process(sel,f1,f10,f100)
begin
caseselis
when"100"=>
fref<=f1;
dp1<='0';
dp2<='1';
dp3<='1';
when"010"=>
fref<=f10;
dp1<='1';
dp2<='0';
dp3<='1';
when"001"=>
fref<=f100;
dp1<='1';
dp2<='1';
dp3<='0';
whenothers=>
fref<='0';
dp1<='1';
dp2<='1';
dp3<='1';
endcase;
endprocess;
endBehavioral;
3、门控电路
entitygate_conis
port(Bsignal:
instd_logic;
gate,reset,latch:
outstd_logic);
endgate_con;
architectureBehavioralofgate_conis
signalgate_tmp:
std_logic:
='0';
signallatch_tmp:
std_logic:
='0';
begin
process(Bsignal)
begin
ifrising_edge(Bsignal)then
gate_tmp<=notgate_tmp;
endif;
iffalling_edge(Bsignal)then
latch_tmp<=notgate_tmp;
endif;
endprocess;
gate<=gate_tmp;
latch<=latch_tmp;
reset<=(notBsignal)and(notgate_tmp)and(latch_tmp);
endBehavioral;
4、计数器
entityconunteris
port(count_en:
instd_logic;
Csignal:
instd_logic;
clear:
instd_logic;
carry_out:
outstd_logic;
result:
outstd_logic_vector(3downto0));
endconunter;
architectureBehavioralofconunteris
signalcount:
std_logic_vector(3downto0):
="0000";
signalco_tmp:
std_logic:
=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子科技大学 电子技术 实验 FPGA 频率计 报告