现代电子技术综合实验数字频率计设计实验报告Word格式.docx
《现代电子技术综合实验数字频率计设计实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《现代电子技术综合实验数字频率计设计实验报告Word格式.docx(27页珍藏版)》请在冰豆网上搜索。
Fdiv3
clkin
cikoutl
fl
clkout10
43
ckouMOO
Q
clkoutlk
□
例如:
实现对一个信号的5分频
10个
elkin
clkout
FlRRRFLFLFLFLFLFLnJL
ifelkin'
eventandclkin='
1'
then
ifent=5then
ent<
=1;
clkout<
=notclkout;
else
=ent+1;
endif;
源程序见附录二•计数器
6为数字,
计数器的功能是对外部输入的被测信号,进行计数。
因为系统要求,显示为所以需要6位的计数器。
因此采用6个10进制计数器级联的方法
counter
-rst
carry_out
0
-elk
countout(3:
0)
-carry_in
单级计数器
couiiter6
级联后的计数器级联,分为同步级联和异步级联两种方式同步级联原理图:
异步级联原理图:
本设计选择的是同步级联
源程序见附录
三•锁存器
锁存器用来实现对6位计数结果,和溢出信号的锁存功能
latch
四•门控电路
门控电路的作用是对计数电路和锁存电路,进行时序控制
Control
£
■e
■a
□BsignalGat巳
Resetlatch
例如:
Signal
(rate
Latch
Reset
五.扫描显示控制电路
扫描显示控制电路的功能是对锁存的结果,进行动态扫描显示。
选用频率1KHz的信号
实现对六位已经锁存的计数结果的扫描输出
multi
f1kbiN©
—diover
led(6O}|
sel(2:
O)j
Ifrec|_vaHueO(30)
freq|_vaIuo1(3:
|freqvaIiue2(3:
|fr®
vaIu(3O)
|froqi^vaIli(3O)
frecj^va|liu6-5(3O)
•seidp
寻日10
se10Q
dpi
dp2
扫描显示控制电路分为以下几部分构成:
1•计数部分:
通过计数器的计数,来产生动态显示数码管的位选信号
2•小数点控制部分:
控制小数点的显示
3•数据选择部分:
根据计数部分产生的位选信号,来选择一组数据输出显示
4•七段译码部分:
将数据选择器输出的数据,进行译码,形成数码管的段选信号
5•消隐部分
实现高位无意义0的消隐各个部分间的链接关系如图:
setselO.
dp,sei00.
dpiII|Clklkhz
"
小数点
:
控制
>
dP
IClklkhz
[]q计数器
►Sel(2:
消隐
hide
三、设计实现
顶层设计
通过原件的声明,和原件的例化,来将各个底层实体,在顶层调用例如:
architecturedigitalfrequency_archofdigitalfrequencyis
componentfenpin
Port(clk:
inSTD_LOGIC;
clkout1:
outSTD_LOGIC;
clkoutlk:
outSTD_LOGIC);
endcomponent;
begin
u1:
fenpinportmap(clk24m,clk1,clk1k);
enddigitalfrequency_arch;
管脚分配
NET"
overflow"
LOC=K14;
clk24m"
LOC=T8;
g"
LOC=D7;
ledout<
0>
LOC=A11;
1>
LOC=B12;
2>
LOC=A12;
3>
LOC=C12;
4>
LOC=C13;
5>
LOC=A13;
6>
LOC=B14;
digitalsignal"
LOC=D14;
sel<
LOC=F8;
LOC=D8;
LOC=E7;
point"
LOC=C11;
下载过程
•LX
r>
i«
jji**?
!
.«
?
*«
t=・•■“t*>
<
•«
翼•”
W
•o&
:
®
x0CMTC«
O■....eQX■>
AP““J…以SB
^KSCDO]>
W?
06m
•.1.JQ・•・底^«
»
赛:
:
ttwr.#HZ
l-KHfl
a:
q
S・《sre・、fw*?
■1・・
Q«
W«
k<
«
a19
i-CJxc>
cro・YrGG
••b«
hM»
(tiwler10
otfGbkqbIOvf)
iaa/^o/aoc^
ccuvpemv•KugiiKisra
C7OUBH.CXIO-0C1MV19K91
Cccr<
PoneI
Hcv»
et
Jt-»
dwXc»
v»
ei
T
*•・1
PRc*?
^E9P_ervt>
-c»
pete*ciob
etAK-oeciti・?
•&
eeo•
P>
M4ia«
if«
r4«
M4>
^«
rlO■•
•*•M«
l”・l*«
v>
0VtlMf”E”
(JC・•・、•»
..Cmm«
KtAAiC«
moalaiA
4“SWZ“-XTT
u>
“r»
woio*<
i<
.
4“依Aw"
.Pv・y
kMt>
ti•«
*rjtl
i-LouncijiivQx^rre*vtailorcoeaivcout-tcc10.vno*.
■
F
•••r«
o^■叩打fx-2"
«
j
w*(•.w,vtg3•ter•
MJ
*o"
■・p:
•—W-i
•-T*?
—•MAJ3*
■O0d■*・E・no・d
O<
)dVM
CinoI»
x3»
f»
unatar
•'
■■■II«
•»
・・•・••Apwy―・r仆u
If"
••*•*11・42,2)
or■»
・L»
S"
3U•■•"
SoM—0»
X<
J・W・J"
aj・、、—
ISV-♦"
tuy«
i
*^tE
M(■Crfl"
・QQ:
4<
J■•■■•X“
••・i$如
•>
p・o<
Mvw*»
5p[r)▼
Kaac»
KO*
dogo
X
/<
"
7M*4a「g・2・02
OeXGyA•仏匕U匕=二・•X3VM»
.(9W>
Jw秋"
gme®
nrxxrf(r25xm®
共F刃Hi,
wuFr»
,i»
*•••'
<
x•g—gm、o・,g“・••入i»
rx«
t
・Wft•・Z・
9
—*w*T
••厂|"
H5fxC
erOO«
•■MQQT
•VECJr)d¥
l|“GflOTCmnl>
・••!
3»
f>
unacanmta••□
(oO3WAOQCB-a^^-J^...・z
歹・0・•$3tOo|~p«
L.j]
、・F••*/•wn»
•丫"
♦・.«
Cf4・・・♦■■<
・j•»
*>
\r*«
9^%
■d・H«
^••«
III*u»
cy«
M«
•••••»
•■»
•、■>
••・•••*«
”r
♦VkR>
・Y6"
♦・・rft^o*«
••>
ac«
k»
pstarwiaw^«
•♦\・'
id・3o•*・xyq»
•»
・u*ia»
m«
X
・•*•••■•、■•■・••'
—•(•K••••■r•—■p・••・••《•••,
•■“••••**<
♦•n>
a•&
•&
“♦♦疋p・ao・rr・n>
c»
n・)*r>
•«
ci»
•<
e么
wpapo»
•・q
••»
••*••「•••'
•、・▼-<
••»
•••*••«
・J・、・・XJW・«
•・■<
•Ml■:
•、W«
*»
•<
*<
r<
Men»
a»
j(if・o、xpe・・,>
•*»
h
•**•»
・d>
••・》w\9n•»
•••-<
•••»
Qt?
'
•<
•••■»
i»
w
M»
1«
•*!
*!
••«
•aAlkiei.M・■"
AllMAX
丄・2»
\rvcd・q>
*w<
l0o・・sr*cac»
a<
»
iavvl♦■*>
“"
”・'
9f-r*♦»
■/»
・・♦*3|>
v
OX'
*UfX'
••■••f•.fl3・・・|»
•*F|•••・•*•*•9・■・••*
•s*l^l>
uv*»
ra«
xi9c・・p•*»
o>
%■irv«
•>
•-*»
•
6«
I”11・、C?
•••c••4r*vw>
••••«
・r勺U
W»
CODK»
M.X4
Ef・WA*-W,♦”"
iEftU«
X<
M|iCfd
V»
49"
卜8』«
・・♦br»
^|W、・•・・QTCt*
in*nsW2piu<
r*m»
A
rt<
tU•'
“»
m»
♦、kwp
、r—r*«
•・・工・*r»
^*r••'
、
pit*、q\••()•<
.»
i,・q、・4inja>
ff>
n•yrtfiui%eu・•》>
H4»
U04<
4W>
4FMM<
•■•*••<
•・
ps»
ru*4»
i*・••*»
・・《»
♦<
、«
vt^3上。
•B"
)2・j«
m>
|TtfAj-4»
>
jit<
x”
•lt**t****•*••j・■・••*,■・・・u■•»
.••(«
■«
•!
%»
v«
r****>
•••!
•••gyxf••»
••*
■■4"
Ml>
rKWc»
•・<
714-■*<
•・♦>
▼,・•,«
|k1*wicik
•r•••**•»
・—.*•..y■y—M尸.VBI■・t«
F*T***ri
w%w4»
^p{r)▼压““•♦ycMD-
nMa]«
□・・Aa°
2
U«
T^3nF«
*3»
TWT«
sq»
a
dl«
WCt«
4M*PU*■IBbUVn4fr»
^»
4.4»
S£
P_
7X4«
tY・・・九9,・」<
0a・Q・}»
.*••.*0&
・・z.s・3%ntMbyr・“《X"
■•!
BB«
nw
(Z)0iOO
—♦X"
・一…jxqbj:
xx*sm->
*xx*
何*沏ID'
iXMK%:
►-,二,e魁9■
Mei
JSSll«
W5«
riU2S0<
J・C«
*U
••«
2FXC«
b*«
冋/4f»
l»
Fs・2—
曰
1Ed
•eMXeacoirter1Oft>
l
-t*Xm
—e■。
一
OuJ亠■■■
0.5
I*tl«
X«
L>
•mux・dVMM2••“•H<
t*4'
l4i«
U»
r«
a*.u<
•€Zll>
l«
th>
•Alt*a«
ted,■"
pfe*ft
•••・
r«
wfIrval1r«
t<
••
Cru■“
JW5
r«
ll«
l1X1BOR1T71
1*n«
-1SH-
■?
、<
*
•r\irmmt»
r1IlVrft
**|■•^»
ndnrr>
你1
•X4i<
Y・"
r<
ajeat0a—a・}>
0》・—y3*1,Ab—(2£
皿■•“
D』I"
心二gQXcB』AAXX声0LaJsm=h**7处■
曹何4VC4CX-••A099・xOO«
•MUOI・4to:
•“
•fScan
X53<
J«
e^»
4F
C*«
a<
*•*«
**••«
ak*«
**»
®
0f«
Q*«
aC.
石tnr*i»
/s・w
*••'
•»
——
u^Xaua<
an^2M»
.a^lc
十・y-
^V«
irv
—Jt»
92XO
一・■«
vm・・
—ddxgm
••irv«
iv«
C^*v•«
(<
*••
.1*B»
^AdaryS«
n
二
C・ru•
%xns・yr«
xi«
iiii
X5«
tt
xvQ*J
/〜9■—切
(^>
[9IK
LW»
-JB-u■,«
■.,
il^W■h・■vai
□t|!
riAB-1AB.OxCJjUIIhfalb■弋f*-EiU
.t』sb^ui|■■rii»
cmAst亍8-rin
出g勒
四、测试结果及结论
测试结果
输入信号为1MHz
数码管显示为999.999KHZ
输入信号为10Hz
数码管显示为0.010KHZ
输入信号为5000Hz
数码管显示为5.000KHz
输入信号为5555Hz
数码管显示为5.555KHz
输入为98429Hz
数码管显示为98.429KHz
实验结论
当输入信号为1MHz时,显示稍有误差,其余量程范围内的信号均能精确显示,该数字频率计性能良好,实验成功!
附录——源程序
1.分频电路
entityfenpinis
clkout1k:
endfenpin;
architectureBehavioraloffenpinissignalfcount1:
integerrange1to500:
=1;
signalfcount1k:
integerrange1to24000:
signalclk1k:
STD_LOGIC:
='
0'
;
signalclk1:
process(clk)
ifclk'
eventandclk='
then
iffcount1k=24000thenfcount1k<
clk1k<
=notclk1k;
elsefcount1k<
=fcount1k+1;
endprocess;
clkout1k<
=clk1k;
process(clk1k)
ifclk1k'
eventandclk1k='
iffcount1=500thenfcount1<
clk1<
=notclk1;
elsefcount1<
=fcount1+1;
clkout1<
=clk1;
endBehavioral;
2.门控电路
entitygatecontrolis
Port(gatein:
gateout:
latch:
reset:
endgatecontrol;
architectureBehavioralofgatecontrolis
signalA:
signalB:
signalC:
beginprocess(gatein)
ifgatein'
eventandgatein='
A<
=notA;
B<
process(gatein,A,B)
ifgatein='
andA='
andB='
C<
elseC<
gateout<
=A;
latch<
=B;
reset<
=C;
3.计数器单级计数器entitycounteris
carry_in:
carry_out:
count_out:
outSTD_LOGIC_VECTOR(3downto0));
endcounter;
architectureBehavioralofcounterissignalcount:
STD_LOGIC_VECTOR(3downto0):
="
0000"
beginprocess(clk,carry_in)
beginifreset='
thencount<
elsif