数字钟设计EDA课设Word文档格式.docx
- 文档编号:4530208
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:19
- 大小:26.02KB
数字钟设计EDA课设Word文档格式.docx
《数字钟设计EDA课设Word文档格式.docx》由会员分享,可在线阅读,更多相关《数字钟设计EDA课设Word文档格式.docx(19页珍藏版)》请在冰点文库上搜索。
4.小时文本…………………………………………………………………7
5.报警文本…………………………………………………………………8
6.时间数据扫描分时选择模块文本………………………………………9
7.译码器文本………………………………………………………………11
四、实验结果描述…………………………………………………………………12
五、心得体会………………………………………………………………………12
六、参考文献………………………………………………………………………12
课程设计任务书
课题名称
数字钟设计
完成时间
第14周
指导教师
崔瑞雪
职称
副教授
学生姓名
熊伯宁
班级
B08221
总体设计要求和技术要点
设计要求:
1)具有时、分、秒计数显示功能,以24小时循环计时。
2)具有清零,调节小时、分钟功能。
3)具有整点报时功能,整点报时的同时LED灯花样显示。
技术要点:
1)十进制、六进制、二十四进制计数器的设计方法。
2)多位共阴极扫描显示数码管的驱动及编码。
3)扬声器的驱动。
4)LED灯的花样显示。
5)EDA技术的层次化设计方法
工作内容及时间进度安排
第13:
周1---周3:
立题、论证方案设计
周4---周5:
用VHDL语言编写程序
第14:
周1:
仿真实验
周2:
验收答辩
课程设计成果
1.与设计内容对应的软件程序:
Max+plusⅡ
2.课程设计报告书
3.成果使用说明书
4.设计工作量要求
一.设计要求概述
1.设计要求
3)具有整点报时功能,整点报时的同时LED灯花样显示。
2.设计目的
1)数字钟学习的目的是掌握多位计数器相连的设计方法;
2)掌握十进制、六进制、二十四进制计数器的设计方法;
3)巩固多位共阴极扫描显示数码管的驱动及编码;
4)掌握扬声器的驱动;
5)掌握LED灯的花样显示;
6)掌握CPLD、FPGA技术的层次化设计方法
3.硬件要求
主芯片EPF10K10LC84—4;
8个LED灯;
蜂鸣器;
8位8段扫描共阴极数码显示管;
3个按键开关(清零,调小时,调分钟)。
4.模块说明
1)各种进制的计数及时钟控制模块(10进制、6进制、24进制)
2)扫描分时显示、译码模块;
3)彩灯、扬声器编码模块;
4)各模块都用VHDL语言编写。
二.设计思路概述
设计此数字钟可用不同设计方法,我们主要利用VHDL语言进行,其设计思路如下:
1)根据电路特点,可用层次化结构化设计概念。
将此设计任务分为若干模块,规定每一模块的功能和各模块之间的接口,分别编写和调试其中之一,然后再将各模块合起来调试。
2)调试并仿真成功后,对VHDL语言进行封装,按适配划分后的引脚定位,同相关功能块硬件电路接口连线。
3)实验连线:
(数字钟各模板连接示意图如下图所示)
◆输入接口
①.代表清零、调时、调分信号RESET、SETHOUR、SETMIN的管脚分别连接按键开关。
②.代表计数时钟信号CLK和扫描时钟信号CLKDSP的管脚分别同1HZ时钟源和32HZ(或更高)时钟源相连。
◆输出接口:
①.代表扫描显示的驱动信号管脚SEL2,SEL1,SEL0和A~G参照设计一中的连法。
②.代表扬声器驱动信号的管脚SPEAK同扬声器驱动接口SPEAKER相连。
③.代表花样LED灯显示的信号管脚LAMP0……LAMP2同三个LED灯相连。
数字钟各模块连接示意图
4)下载程序到实验箱,并实际操作,检查实验是否正确,不正确的话,找出错误的地方,并改正。
三.数字钟VHDL文本
1)顶层文本:
顶层文本采用元件例化方式描述。
它与模板连接示意图一致。
libraryieee;
useieee.std_logic_1164.all;
entitychock_topis
port(clk,reset,setmin,sethour,clkdsp:
instd_logic;
speaker:
outstd_logic;
lamp:
outstd_logic_vector(2downto0);
sel:
a,b,c,d,e,f,g,dpout:
outstd_logic);
endchock_top;
architectureaofchock_topis
COMPONENTsecond
port(clk,reset,setmin:
INSTD_LOGIC;
daout:
outstd_logic_vector(6downto0);
enmin:
OUTSTD_LOGIC);
ENDCOMPONENT;
COMPONENTminute
port(clk,clk1,reset,sethour:
enhour:
OUTSTD_LOGIC;
outstd_logic_vector(6downto0));
COMPONENThour
port(clk,reset:
outstd_logic_vector(5downto0));
COMPONENTalert
port(clk:
dain:
instd_logic_vector(6downto0);
speak:
COMPONENTseltime
port(clk1,reset:
sec,min:
hour:
instd_logic_vector(5downto0);
dp:
outstd_logic_vector(3downto0);
OUTSTD_LOGIC_vector(2downto0));
COMPONENTdeled
port(num:
INSTD_LOGIC_vector(3downto0);
led:
signalenmin_re,enhour_re:
std_logic;
signalsecond_daout,minute_daout:
std_logic_vector(6downto0);
signalhour_daout:
std_logic_vector(5downto0);
signalseltime_daout:
std_logic_vector(3downto0);
signalledout:
begin
a<
=ledout(6);
b<
=ledout(5);
c<
=ledout(4);
d<
=ledout(3);
e<
=ledout
(2);
f<
=ledout
(1);
g<
=ledout(0);
u1:
secondportmap(reset=>
reset,
clk=>
clk,
setmin=>
setmin,
enmin=>
enmin_re,
daout=>
second_daout);
u2:
minuteportmap(clk=>
clk1=>
reset=>
sethour=>
sethour,
enhour=>
enhour_re,
minute_daout);
u3:
hourportmap(clk=>
hour_daout);
u4:
alertportmap(clk=>
dain=>
minute_daout,
speak=>
speaker,
lamp=>
lamp);
u5:
seltimeportmap(clk1=>
clkdsp,
sec=>
second_daout,
min=>
hour=>
hour_daout,
seltime_daout,
dp=>
dpout,
sel=>
sel);
u6:
deledportmap(num=>
led=>
ledout);
enda;
2)秒计数器:
useieee.std_logic_unsigned.all;
entitysecondis
port(
clk,reset,setmin:
enmin:
daout:
endentitysecond;
architecturefunofsecondis
signalcount:
signalenmin_1,enmin_2:
daout<
=count;
enmin_2<
=(setminandclk);
enmin<
=(enmin_1orenmin_2);
process(clk,reset,setmin)
if(reset='
0'
)thencount<
="
0000000"
;
elsif(clk'
eventandclk='
1'
)then
if(count(3downto0)="
1001"
if(count<
16#60#)then
if(count="
1011001"
)then
enmin_1<
='
count<
else
=count+7;
endif;
3)分计数器:
entityminuteis
port(clk,clk1,reset,sethour:
enhour:
endentityminute;
architecturefunofminuteis
signalenhour_1,enhour_2:
enhour_2<
=(sethourandclk1);
enhour<
=(enhour_1orenhour_2);
process(clk,reset,sethour)
enhour_1<
elsif(count<
=count+1;
after100ns;
endprocess;
endfun;
4)小时文本:
entityhouris
port(clk,reset:
endentityhour;
architecturefunofhouris
process(clk,reset)
000000"
16#23#)then
5)报警文本:
entityalertis
port(clk:
dain:
speak:
lamp:
outstd_logic_vector(2downto0));
endalert;
architecturefunofalertis
std_logic_vector(1downto0);
signalcount1:
speaker:
process(clk)
speak<
=count1
(1);
if(clk'
if(dain="
)then
if(count1>
10"
count1<
00"
=count1+1;
endprocessspeaker;
lamper:
if(rising_edge(clk))then
lamp<
001"
elsif(count="
01"
010"
100"
elselamp<
000"
endprocesslamper;
6)时间数据扫描分时选择模块文本:
useieee.std_logic_arith.all;
entityseltimeis
port(clk1,reset:
sec,min:
hour:
dp:
sel:
endseltime;
architecturefunofseltimeis
std_logic_vector(2downto0);
sel<
process(clk1,reset)
elsif(clk1'
eventandclk1='
if(count>
101"
casecountis
when"
=>
=sec(3downto0);
dp<
when"
daout(3)<
daout(2downto0)<
=sec(6downto4);
=min(3downto0);
011"
=min(6downto4);
=hour(3downto0);
whenothers=>
daout(3downto2)<
daout(1downto0)<
=hour(5downto4);
endcase;
7)译码器文本:
entitydeledis
port(num:
instd_logic_vector(3downto0);
led:
enddeled;
architecturefunofdeledis
led<
1111110"
whennum="
0000"
else
"
0110000"
0001"
1101101"
0010"
1111001"
0011"
0110011"
0100"
1011011"
0101"
1011111"
0110"
1110000"
0111"
1111111"
1000"
1111011"
1110111"
1010"
0011111"
1011"
1001110"
1100"
0111101"
1101"
1001111"
1110"
1000111"
1111"
;
四.实验结果描述
实验显示的数字钟具有时、分、秒小时功能,以24小时循环计时;
具有清零,调小时、分钟功能。
具有整点报时功能,且在整点报时的同时LED灯花样显示。
满足了实验设计的各个要求
五.心得体会
在这几周的时间
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 设计 EDA