江苏大学数字逻辑电路课程设计Word下载.docx
- 文档编号:18589994
- 上传时间:2022-12-28
- 格式:DOCX
- 页数:15
- 大小:115.43KB
江苏大学数字逻辑电路课程设计Word下载.docx
《江苏大学数字逻辑电路课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《江苏大学数字逻辑电路课程设计Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
(3)可使用以EP1C12F324C8为核心的硬件系统上的扬声器进行整点报时。
(4)设置闹钟,并连接扬声器实现闹铃功能。
(5)通过以EP1C12F324C8为核心的硬件系统上的动态扫描数码管显示时间。
二、顶层图
三、系统功能分析
根据总体设计框图,可以将整个系统分为6个模块来实现,分别是计时模块、校时模块、整点报时模块、分频模块、动态显示模块及闹钟模块。
1.时、分、秒的基本组成VHDL
(1)24进制计数器
源程序:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entitycnt24is
port(clk:
instd_logic;
ql,qh:
outstd_logic_vector(3downto0);
tc:
outstd_logic);
endcnt24;
architectureoneofcnt24is
signall,h:
std_logic_vector(3downto0);
signalco:
std_logic;
begin
process(clk)
if(clk'
eventandclk='
1'
)then
if(l<
"
1001"
and(h="
0000"
orh="
0001"
))then
l<
=l+1;
h<
=h;
co<
='
0'
;
endif;
if(l="
))then
h<
=h+1;
l<
="
endif;
if(l<
0100"
andh<
0010"
)then
if(l="
0011"
andh="
h<
qh<
ql<
=l;
tc<
=co;
endprocess;
endone;
模块图:
(2)60进制计数器
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycnt60is
port(
clk,clr:
bufferstd_logic_vector(3downto0);
outstd_logic
);
endcnt60;
architecturebehavorofcnt60is
signalh,l:
process(clk,clr)
if(clr='
)thenh<
l<
co<
elsif(clk'
if(l="
if(h="
0101"
elseh<
else
endbehavor;
2.分配器和二路选择器
(1)分配器
entitydex2is
port(sel:
data:
instd_logic;
o1,o2:
enddex2;
architecturebehofdex2is
begin
process(sel)
if(sel='
)then
o1<
=data;
else
o2<
endbeh;
(2)二路选择器
entitymux2is
port(
A,B:
S:
Y:
);
endmux2;
architectureoneofmux2is
process(A,B,S)
if(S='
Y<
=A;
else
=B;
endif;
endone;
3.计时和校时模块
校时模块设计实现校时、校分及秒清零功能:
1)
按下校时键,小时计数器迅速递增以调至所需小时位。
2)按下校分键,分计数器迅速递增以调至所需分位。
3)
按下清零键,将秒计数器清零。
4.整点报时模块
当计时至59’50’’、59’52’’、59’54’’、59’56’’、59’58’’时,驱动扬声器低音报时,计时至整点时产生高音报时。
输入端mh[3..0]和ml[3..0]用于连接分位,sh[3..0]和sl[3..0]用于连接秒位;
输出端sig500用于产生低音报时,sig1k用于产生高音报时。
entityzdbsis
port(mh,ml,sh,sl:
instd_logic_vector(3downto0);
sig500,sig1k:
outstd_logic
);
endzdbs;
architecturebehaviorofzdbsis
begin
sig500<
whenmh="
andml="
andsh="
and(sl="
orsl="
orsl="
0110"
1000"
)
else'
sig1k<
andsl="
endbehavior;
5.分频模块
在本系统中需要用到多种不同频率的脉冲信号,上至1kHz的高音报时信号,下至1Hz的计秒脉冲。
所有这些脉冲信号均可以通过一个基准频率分频器生成。
基准频率分频器就是一个进制很大的计数器,利用计数器的分频功能,从不同的输出为得到所需要的脉冲信号。
输出HZ1、HZ4、HZ64和HZ512可分别得到1Hz、4Hz、64Hz和512Hz的脉冲信号。
将clk时钟端外接硬件系统基准时钟可直接得到频率为1kHz的时钟信号。
entityfreq_divideris
clk:
hz1,hz4,hz64,hz512:
endfreq_divider;
architecturebehavioroffreq_divideris
signalq:
std_logic_vector(9downto0);
process(clk)
begin
if(rising_edge(clk))then
q<
=q+1;
endif;
endprocess;
hz1<
=q(9);
hz4<
=q(7);
hz64<
=q(3);
hz512<
=q(0);
6.动态显示模块
时间的显示需要用到6个数码管,静态显示不够用,在动态方式下,所有数码管对应同一组七段码,每一个数码管由一个选择控制端点亮或熄灭。
这里用6进制计数器来进行选择控制,每组时间经过七段码译码后输出到6个数码管,当某一组时的七段码到达时,只点亮对应位置上的数码管,显示相应的数字,6次一循环,形成一个扫描序列,只要扫描频率超过人眼视觉暂留频率(24Hz),就可以达到点亮单个数码管,却能享有6个同时显示的视觉效果,人眼辨别不出差别。
这里采用4-7译码器。
控制信号sel用3-8译码器来控制。
(1)动态扫描显示模块
entitydtsmis
port(clk:
h:
instd_logic_vector(7downto0);
m:
s:
seg7out:
outstd_logic_vector(6downto0);
sel:
outstd_logic_vector(2downto0)
enddtsm;
architecturebehaveofdtsmis
signalout1:
signalsel1:
std_logic_vector(2downto0);
p1:
process(clk)
begin
if(rising_edge(clk))then
sel1<
=sel1+1;
sel<
=sel1;
endprocessp1;
p2:
process(sel1,h,m,s)
casesel1is
when"
000"
=>
out1<
=h(7downto4);
001"
=h(3downto0);
010"
1010"
011"
=m(7downto4);
100"
=m(3downto0);
101"
110"
=s(7downto4);
111"
=s(3downto0);
endcase;
endprocessp2;
p3:
process(out1)
caseout1is
seg7out<
0111111"
0000110"
1011011"
1001111"
1100110"
1101101"
1111101"
0111"
0000111"
1111111"
when"
1101111"
whenothers=>
0000000"
endprocessp3;
endbehave;
(2)显示选择模块
entitysel_showis
port(
jh,jm,nh,nm:
sel:
oh,om:
outstd_logic_vector(7downto0)
endsel_show;
architectureoneofsel_showis
process(sel,jh,jm,nh,nm)
if(sel='
oh<
=jh;
om<
=jm;
else
=nh;
om<
=nm;
endprocess;
7.闹钟模块
比较正常计数时间与闹钟定时时间是否相等,若相等,ring_out输出”1”,反之输出”0”.源程序:
entitycompareis
jh:
jm:
nh:
nm:
ring_out:
endcompare;
architectureoneofcompareis
process(jh,jm,nh,nm)
if(jh=nhandjm=nm)then
ring_out<
四、引脚锁定
五、心得体会
经过此次数字钟的设计,我确实从中学到很多的东西。
首先,通过VHDL硬件语言的学习,我充分认识到了功能模块如何用语言实现,让我初步了解到了一个数字电路用硬件语言设计的方式和设计思想。
其次,也让我深深地体会到实践的重要性,起初我学VHDL语言的时候,只是学得书本上的知识,经过这次课程设计,通过对模块的语言实现,对于VHDL语言我有了更深的认识。
而且在程序错误的发现和改正的过程中,我得到了更多的收获,也确实让我进步了不少。
再次,当我遇到一些问题的时候,请教老师,和同学们一起讨论,令我受益颇多!
最后,这个多功能数字电子钟是自我创造与吸取借鉴共同作用的产物,是自我努力的结果。
这让我对数字电路的设计充满了信心。
虽然课程设计已经结束,但这并不代表着我已经真正掌握了VHDL语言,仍需继续学习!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 江苏 大学 数字 逻辑电路 课程设计