vhd 数字中设计Word文档下载推荐.docx
- 文档编号:16712523
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:15
- 大小:249.03KB
vhd 数字中设计Word文档下载推荐.docx
《vhd 数字中设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《vhd 数字中设计Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
进入“秒”校时状态后,显示“秒”的数码管闪烁,每按动“k”键一次,“秒”+1,若不按动“k”键则秒数不变,一直按下“k”键则秒数一4Hz的频率递增计数。
整点报时:
蜂鸣器在“59”分钟的第51、53、55、57秒发出频率为512Hz的低音,在“59”秒发出频率为1024Hz的高音,结束时为整点。
显示:
采用8个LED数码管分别显示时、分、秒并且他们之间用“—”隔开。
闹钟:
闹钟定时时间到,蜂鸣器发出周期为1s的滴、滴声,持续时间为10秒;
闹钟定时显示。
闹钟定时设置:
在闹钟显示状态下,按下“set键”,进入“小时”校时状态,再次按下“set键”,进入“分”校时状态,继续按下“set键”,进入“秒”校时状态,第四次按下“set键”又回复到闹钟显示状态。
闹钟的时、分、秒设置过程和计时设置相同。
计时显示和闹钟显示之间的转换:
按动“mode”键,数字钟将在计时显示和闹钟定时显示之间转换。
4)多功能数字钟系统结构逻辑框图如下:
mode
5)控制器的MDS图如下:
set=0
四、各功能模块的源程序代码:
--CONTOR模块
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entitycontoris
port(clk,k,set,reset,mode:
instd_logic;
chs,cht,cms,cmt,css,cst,flashh,flashm,flashs,sel_show:
outstd_logic);
endcontor;
architecturecontor_archofcontoris
typestatesis(s0,s1,s2,s3,s4,s5,s6,s7);
signalcurrent_state,next_state:
states;
begin
process(reset,clk,next_state)
if(reset='
1'
)then
current_state<
=s0;
elsif(clk'
eventandclk='
=next_state;
endif;
endprocess;
process(current_state,k,set)
casecurrent_stateis
whens0=>
flashh<
='
0'
;
flashm<
flashs<
cht<
cmt<
cst<
chs<
cms<
css<
sel_show<
if(mode='
)thennext_state<
=s4;
elsif(k='
andset='
)then
next_state<
=s1;
else
next_state<
whens1=>
if(set='
=s2;
whens2=>
)then
=s3;
whens3=>
cst<
chs<
if(set='
)then
whens4=>
if(mode='
elsif(k='
=s5;
whens5=>
)then
=s6;
whens6=>
=s7;
whens7=>
If(set='
next_state<
endcase;
endcontor_arch;
--*********************TIMER模块********************
--*************cnt60模块*****
entitycnt60is
port(clkin:
instd_logic;
mh,ml:
bufferstd_logic_vector(3downto0);
co:
bufferstd_logic);
endminute;
architecturecnt60xofminutecnt60is
process(clkin)
if(rising_edge(clkin))then
if(mh="
0101"
andml="
1001"
mh<
="
0000"
co<
ml<
elsif(ml="
=mh+1;
elseml<
=ml+1;
endcnt60x;
--********MUX2-1模块********
entitymux2_1is
port(d0,d1,en:
sel:
y:
endmux2_1;
architecturemux2_1_archofmux2_1is
begin
process(d0,d1,sel)
begin
if(sel='
y<
=d0;
elsif(sel='
anden='
=d1;
endif;
endprocess;
endmux2_1_arch;
――*****************Time_com模块*********
entitytime_comis
port(hh,mh,sh,hl,ml,k:
instd_logic_vector(3downto0);
chs,cms,css,f4:
bsg,bmg,bhg,bsd,bmd,bhd:
comout:
endtime_com;
architecturetime_comxoftime_comis
com:
process(hh,mh,sh,hl,ml)
if(bhg=hhandbhd=hlandbmg=mhandbmd=mlandbsg=sh)then
comout<
set:
process(f4)
if(f4'
eventandf4='
if(chs='
andk='
if(bhg="
0010"
andbhd="
0011"
bhd<
bhg<
elsif(bhd="
=bhg+1;
orbhd="
0001"
orbhd="
or
bhd="
0100"
0110"
0111"
1000"
)then
=bhd+1;
if(cms='
if(bmg="
andbmd="
bmd<
bmg<
elsif(bmd="
=bmg+1;
orbmd="
orbmd="
bmd="
=bmd+1;
if(css='
andk='
if(bsg="
andbsd="
bsd<
bsg<
elsif(bsd="
=bsg+1;
orbsd="
orbsd="
bsd="
=bsd+1;
endtime_comx;
--*****************Show_contor模块****************************
entityshow_contoris
port(hh,mh,sh,bhh,bmh,bsh,hl,ml,sl,bhl,bml,bsl:
flashh,flashm,flashs,clk1,sel_show:
sld0,shd1,mld3,mhd4,hld6,hhd7,line:
outstd_logic_vector(3downto0));
endshow_contor;
architectureshow_contor_archofshow_contoris
line<
1010"
process(clk1)
ifsel_show='
then
sld0<
=sl;
shd1<
=sh;
mld3<
=ml;
mhd4<
=mh;
hld6<
=hl;
hhd7<
=hh;
elsifsel_show='
=bsl;
=bsh;
=bml;
=bmh;
=bhl;
=bhh;
if(clk1='
andflashs='
1111"
andflashm='
andflashh='
endshow_contor_arch;
--****************Dynamic_show模块代码(略)*********************
--*************Bell模块********************************************
entitybelis
port(mh,sh,ml,sl:
comout,f512hz,f1024hz,clk:
bell:
endbel;
architecturebel_archofbelis
process(clk,mh,ml,sh,sl,f1024hz,f512hz)
if(comout='
bell<
=clk;
elsif(mh="
)then
if(sh="
if(sl="
bell<
=f1024hz;
elsif(sl="
orsl="
=f512hz;
else
elsif(ml<
"
ormh<
orsh<
endbel_arch;
五、连接总图(如右):
六、波形仿真:
七、引脚锁定、编译、连线并下载到实验箱进行验证
121416111150151152153154155156787980183182
sel0sel1sel2belly0y1y2y3y4y5y6modesetkreset1reset2
八、心得体会
为期一周的课程设计在紧张与忙碌中飞逝而过,我所选择的多功能电子钟在老师孜孜不倦的指导下和同学的热心帮助下终于成功了。
不但实现了题目所要求的全部功能,还实现了更人性化的功能(按一下按键执行一次加1操作)。
这一功能的实现是在x老师的启发和指导以及在xxx同学的帮助与提问下才得以实现的。
刚开始按照老师的思路虽然实现了按一下按键执行一次加1的功能,当时我以为自己成功了,可她发现秒钟到59后没有产生进位信号,分位没有加1。
在她发现错误后,我仔细研究了产生这种错误的原因,原来我把控制校时的使能信号输入端放在了计数器里边,它屏蔽了进位信号。
最后,我把控制校时的使能信号放在了mux2_1终于解决了不进位的错误。
通过这件事使我认识到与同学的讨论是十分有必要和重要的。
在与同学的讨论中不但使我发现了自己的错误和不足,还使自己开阔了眼界,增长了见识,增进了同学之间的友谊。
课程设计全方位的培养和考察我们解决问题以及处理将理论应用到实际当中的能力。
在设计编程的过程中,我们既经过了独立思考,也经过了团体协作。
我们必须在短期内锻炼迅速掌握一门语言的能力,并学会利用其他的资料与书籍。
可见课程设计的意义是十分重大和深远的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vhd 数字中设计 数字 设计