数字逻辑课程设计报告Word文件下载.docx
- 文档编号:16756517
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:11
- 大小:61.14KB
数字逻辑课程设计报告Word文件下载.docx
《数字逻辑课程设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《数字逻辑课程设计报告Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
其中扫描频率超过人眼视觉暂留频率就可以实现六个管同时显示的视觉效果。
6闹钟模块:
需要新的计数器进行定时闹钟信号的存储,与正常计时状态实现切换,设计一个比较模块使闹钟和计时相等时,开始鸣叫,同时需要一个按键能够控制闹钟的开关。
三·
设计过程
一编写计时模块代码并生成器件:
24进制代码:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycnt24is
port(clk:
instd_logic;
clr:
ql:
bufferstd_logic_vector(3downto0);
qh:
tc:
outstd_logic);
endcnt24;
architecturebehofcnt24is
begin
process(clk,clr)
begin
ifclr='
1'
then
qh<
="
0000"
;
ql<
elsifclk'
eventandclk='
then
=ql+1;
ifql="
1001"
=qh+1;
endif;
ifqh="
0010"
andql="
0011"
then
tc<
='
elsetc<
0'
endprocess;
endbeh;
60进制代码:
entitycnt60is
endcnt60;
architecturebehofcnt60is
process(clk)
0101"
二编写校时模块代码并生成器件:
二路选择器代码:
entitymux2is
port(A,B,S:
Y:
endmux2;
architecturebehofmux2is
process(S)
if(S='
)thenY<
=A;
elseY<
=B;
endif;
endprocess;
endbeh;
三编写整点报时模块代码并生成器件:
整点报时代码:
entityzdbsis
port(
mh,ml,sh,sl:
instd_logic_vector(3downto0);
sig500,sig1k:
outstd_logic);
endzdbs;
architecturebehofzdbsis
process(mh,ml,sh,sl)
begin
sig500<
sig1k<
if(mh="
andml="
andsh="
)
thenif(sl="
orsl="
0100"
orsl="
0110"
1000"
)then
sig500<
elsif(mh="
andsl="
)thensig1k<
四编写分频模块代码并生成器件:
分频器代码:
entityfreq_divideris
port(clk:
hz1,hz4,hz64,hz512,hz2:
endfreq_divider;
architecturebehoffreq_divideris
signalc1:
std_logic_vector(9downto0);
process(clk)
if(rising_edge(clk))then
c1<
=c1+1;
ifc1=(others>
)thenc1<
=(others>
);
hz512<
=c1(0);
hz64<
=c1(3);
hz4<
=c1(7);
hz2<
=c1(8);
hz1<
=c1(9);
五编写动态显示模块并生成器件:
动态显示代码:
libraryieee;
entitydtsmis
clk:
instd_logic;
h,m,s:
instd_logic_vector(7downto0);
seg7out:
outstd_logic_vector(6downto0);
sel:
bufferstd_logic_vector(2downto0)
);
enddtsm;
architecturewhbkrcofdtsmis
signalkey:
std_logic_vector(3downto0);
process(clk)--显示定位
if(clk'
)then
sel<
=sel+1;
if(sel="
101"
)thensel<
000"
process(sel)
caseselis
when"
=>
key<
=h(7downto4);
001"
=h(3downto0);
010"
=m(7downto4);
011"
=m(3downto0);
100"
=s(7downto4);
=s(3downto0);
whenothers=>
null;
endcase;
process(key)
casekeyis
=>
seg7out<
="
0111111"
--'
不亮
0001"
0000110"
1011011"
1001111"
1100110"
1101101"
1111101"
0111"
0000111"
1111111"
1101111"
endwhbkrc;
六编写闹钟模块生成器件:
利用已有器件直接写代码:
entityalarm1is
port(clr,clk,mode,stop:
hclo,mclo,sclo:
instd_logic_vector(7downto0);
outstd_logic_vector(7downto0);
sig:
endalarm1;
architecturebehofalarm1is
signalhalr,malr,salr:
std_logic_vector(7downto0);
signaltc:
std_logic;
componentcnt60
port(clk:
endcomponent;
componentcnt24
hours:
cnt24portmap(clk=>
clk,clr=>
clr,ql=>
halr(3downto0),qh=>
halr(7downto4),tc=>
tc);
minutes:
cnt60portmap(clk=>
malr(3downto0),qh=>
malr(7downto4),tc=>
seconds:
salr(3downto0),qh=>
salr(7downto4),tc=>
process(mode)--modeconvert
if(mode='
)thenh<
=hclo;
m<
=mclo;
s<
=sclo;
elseh<
=halr;
=malr;
s<
=salr;
process(hclo,mclo,halr,malr,sclo(0),stop)
ifstop='
thensig<
elseifhclo=halrandmclo=malrthen
if(sclo(0)='
)then
sig<
elsesig<
编写校时与设置闹钟的按键切换代码:
entitymux21is
port(A,B,C,S:
halr,malr,salr,hclo,mclo,sclo:
endmux21;
architecturebehofmux21is
)thenhclo<
mclo<
sclo<
=C;
elsehalr<
malr<
salr<
将各个元件组合到一起然后编译,锁定管脚,下载验证。
四·
设计结论
通过管教锁定,选择1kHz的频率,使6个数码管能动态显示出时间。
键s1为校时键,键s2为校分键,键s3为清零键。
当分显示为59时,秒进入50之后,每两秒一次低音报时,整点时进行高音报时。
当k1推上时通过调节s4s5设定闹铃,当k1推下时显示正常时间。
经过试验,所有功能均能正常运行。
五·
经验总结
1.在有多文件编程调试时,为避免其他可能出错文件的影响,可以先将要编译的文件置于顶层,最后要下载验证的文件一定要先置于顶层再编译并进行下载。
2.为避免低级错误,重现编译并生成器件而浪费的时间,对画图的各个接口需要仔细检查一遍,防止漏接和接错。
写代码结束后,根据语法错误进行检查,可能有漏标点,打错字的低级错误。
3.从问题出发,找到问题的根源,然后用相应的方法来解决问题。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 逻辑 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)