电子科技大学-电子技术实验-FPGA-频率计-实验报告Word下载.doc
- 文档编号:458370
- 上传时间:2023-04-28
- 格式:DOC
- 页数:25
- 大小:933KB
电子科技大学-电子技术实验-FPGA-频率计-实验报告Word下载.doc
《电子科技大学-电子技术实验-FPGA-频率计-实验报告Word下载.doc》由会员分享,可在线阅读,更多相关《电子科技大学-电子技术实验-FPGA-频率计-实验报告Word下载.doc(25页珍藏版)》请在冰点文库上搜索。
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:
clkout100:
clkout1k:
outstd_logic);
endfreq_divider;
architectureBehavioraloffreq_divideris
signalclkcnt1:
integerrange0to:
=0;
signalclkcnt10:
signalclkcnt100:
signalclkcnt1k:
integerrange0to48000:
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:
begin
ifrising_edge(clkin)then
ifclkcnt10=then
clkcnt10<
clk10<
=notclk10;
else
clkcnt10<
=clkcnt10+1;
endif;
endif;
endprocess;
fc100:
begin
ifrising_edge(clkin)then
ifclkcnt100=then
clkcnt100<
clk100<
=notclk100;
else
clkcnt100<
=clkcnt100+1;
endif;
endif;
endprocess;
fc1k:
ifclkcnt1k=24000then
clkcnt1k<
clk1k<
=notclk1k;
clkcnt1k<
=clkcnt1k+1;
--assignment
clkout1<
=clk1;
clkout10<
=clk10;
clkout100<
=clk100;
clkout1k<
=clk1k;
endBehavioral;
2、闸门选择
entitygate_selis
port(se1:
se10:
se100:
f1:
f10:
f100:
fref:
dp1:
dp2:
dp3:
endgate_sel;
architectureBehavioralofgate_selis
signalsel:
std_logic_vector(2downto0):
="
000"
sel<
=se1&
se10&
se100;
process(sel,f1,f10,f100)
begin
caseselis
when"
100"
=>
fref<
=f1;
dp1<
0'
dp2<
dp3<
010"
fref<
=f10;
001"
=f100;
whenothers=>
endcase;
endprocess;
3、门控电路
entitygate_conis
port(Bsignal:
gate,reset,latch:
endgate_con;
architectureBehavioralofgate_conis
signalgate_tmp:
signallatch_tmp:
process(Bsignal)
begin
ifrising_edge(Bsignal)then
gate_tmp<
=notgate_tmp;
endif;
iffalling_edge(Bsignal)then
latch_tmp<
gate<
=gate_tmp;
latch<
=latch_tmp;
reset<
=(notBsignal)and(notgate_tmp)and(latch_tmp);
4、计数器
entityconunteris
port(count_en:
Csignal:
clear:
carry_out:
outstd_logic;
result:
outstd_logic_vector(3downto0));
endconunter;
architectureBehavioralofconunteris
signalcount:
std_logic_vector(3downto0):
0000"
signalco_tmp:
process(count_en,Csignal,clear)
ifclear='
then
count<
else
ifrising_edge(Csignal)then
ifcount_en='
ifcount="
1001"
count<
else
count<
=count+1;
endif;
endif;
process(count,clear)
co_tmp<
ifcount="
andcount_en='
co_tmp<
else
carry_out<
=co_tmp;
result<
=count;
5、锁存器
entitylatchis
port(latchin:
overin:
numin1:
instd_logic_vector(3downto0);
numin2:
numin3:
numin4:
numin5:
numin6:
overout:
numout1:
outstd_logic_vector(3downto0);
numout2:
numout3:
numout4:
numout5:
numout6:
endlatch;
architectureBehavioraloflatchis
process(latchin,overin,numin1,numin2,numin3,numin4,numin5,numin6)
ifrising_edge(latchin)then
numout1<
=numin1;
numout2<
=numin2;
numout3<
=numin3;
numout4<
=numin4;
numout5<
=numin5;
numout6<
=numin6;
overout<
=overin;
6、显示控制
entitypresent_conis
port(f1khz:
q_over:
freq_value0:
freq_value1:
freq_value2:
freq_value3:
freq_value4:
freq_value5:
G:
ledout:
outstd_logic_vector(6downto0);
sel:
outstd_logic_vector(2downto0);
dp:
endpresent_con;
architectureBehavioralofpresent_conis
signalswitch:
signalvalue_tmp:
signalled:
std_logic_vector(6downto0):
"
signaldp_tmp:
signalhide:
std_logic_vector(5downto0):
--clk--
process(f1khz)
ifrising_edge(f1khz)then
ifswitch="
101"
switch<
=switch+1;
--showpreparation--
process(switch,freq_value0,freq_value1,freq_value2,freq_value3,freq_value4,freq_value5)
caseswitchis
value_tmp<
=freq_value0;
=freq_value1;
=freq_value2;
011"
=freq_value3;
=freq_value4;
=freq_value5;
="
1111"
process(value_tmp)
casevalue_tmpis
led<
0001"
0010"
0011"
0100"
0101"
0110"
0111"
1000"
dp_tmp<
=dp1&
dp2&
dp3;
--hidevector--
process(dp_tmp,freq_value5,freq_value4,freq_value3,freq_value2)
casedp_tmpis
iffreq_value5="
iffreq_value4="
hide<
else
hide<
iffreq_value3="
hide<
else
hide<
endif;
110"
iffreq_value2="
hide<
else
endif;
hide<
hide<
endcase;
--show--
process(switch,dp_tmp,led,hide,q_over)
ifq_over='
caseswitchis
when"
ledout<
dp<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子科技大学 电子技术 实验 FPGA 频率计 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)