eda整点报时时钟设计文档格式.docx
- 文档编号:19291962
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:19
- 大小:325.73KB
eda整点报时时钟设计文档格式.docx
《eda整点报时时钟设计文档格式.docx》由会员分享,可在线阅读,更多相关《eda整点报时时钟设计文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
4daout_ma分daout_mb为输出的信号分别为分的高位与低位
7enhour负责向下一个模块进位
8clk为时钟信号
3.小时程序模块
有2输入2输出
②reset为异步清零当没有信号时清零时模块的计数
③clk为时钟信号
5daout_hadaout_hb为输出的信号分别为时的高位与低位
4.动态扫描模块
1有八个输入端,两个输出端
2reset为异步清零当没有信号时清零时模块的计数
3daout为高位
5.七段译码管模块
1有1输入8输出
2S为用来接收秒分时模块输出的信号
3A~H为转化后的信号用来接数码管
6.整点报时模块
1有5输入2输出
2Clkspk为时钟信号
3Miao_hMiao_lfen_hfen_h为从秒模块时模块接收的信号
4Speak接蜂鸣器,
5Lamp接LED作为报时时的闪烁灯
五、模块程序
1.秒模块设计(60计时制)
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityshijianis
port(reset,clk,setmin:
instd_logic;
daout_a:
outstd_logic_vector(7downto4);
————输出高位daout_a
daout_b:
outstd_logic_vector(3downto0);
————输出低位daou_b
enmin:
outstd_logic);
————enmin是向分位进位信号
endshijian;
architecturebehavofshijianis
signalcount:
std_logic_vector(3downto0);
signalcounter:
signalcarry_out1:
std_logic;
————59秒时的进位信号
signalcarry_out2:
begin
p1:
process(reset,clk)
ifreset='
0'
then——59秒时的进位信号
count<
="
0000"
;
counter<
——若reset为0时,则高、低位异步清零
elsif(clk'
eventandclk='
1'
)then
——否则clk为上升沿时
if(counter<
5)then
if(count=9)then
counter<
=counter+1;
else
=count+1;
endif;
carry_out1<
='
——若高位counter<
5,低位count=9,则低位清零,高位进一,否则低位进一,59秒时的进位信号carry_out1为0。
if(count=9)then
count<
——若高位counter为5时,低位count=9,则高、低位清零,59秒时的进位信号carry_out1进位为1。
——低位count加1,59秒时的进位信号carry_out1为0
endprocess;
daout_a(7downto4)<
=counter;
——高位赋予daout_a
daout_b(3downto0)<
=count;
——低位赋予daout_b
enmin<
=carry_out1orsetmin;
——程序59秒的进位信号或手动给enmin进位
endbehav;
2.分钟模块设计(60制计时)
entityfenis
port(reset,clk,sethour:
daout_ma:
——输出高位信号daout_ma
daout_mb:
——输出低位信号daout_mb
enhour:
——enhour向时位进位信号
endfen;
architecturebehavoffenis
std_logic
——59分的进位信号carry_out1
then
5,低位count=9,则低位清零,高位进1,否则低位进1,59分时的进位信号carry_out1为0
——若高位counter为5时,低位count=9,则高、低位清零,59分时的进位信号carry_out1进位为1。
——低位count加1,59分时的进位信号carry_out1为0。
p2:
if(clk'
)then——若clk为下降沿时
if(counter=0)then
if(count=0)then
carry_out2<
——若高位counter为零,低位为零,则59分时的进位信号carry_out2为0
——否则进位为1
daout_ma(7downto4)<
——高位赋予daout_ma
daout_mb(3downto0)<
——低位赋予daout_mb
enhour<
=(carry_out1andcarry_out2)orsethour;
——程序两个59分的进位信号或手动给enmin进位
3.小时模块设计(24小时制)
entityxiaoshiis
port(reset,clk:
daout_ha:
——输出高位daout_ha
daout_hb:
outstd_logic_vector(3downto0));
——输出地位daout_hb
endxiaoshi;
architecturebehavofxiaoshiis
2)then
——否则clk上升沿来到时
2,低位count=9,则低位清零,高位进1,否则低位进1。
if(count=3)then
——若高位counter=2,低位count=3,则高、低位清零,否则低位进一。
daout_ha(7downto4)<
——高位赋予daout_ha
daout_hb(3downto0)<
——地位赋予daout_hb
4.动态扫描模块设计
entityseltimeis
port(
ckdsp:
reset:
shijian_s:
instd_logic_vector(7downto4);
——秒模块高位模块输入
shijian_g:
instd_logic_vector(3downto0);
——秒模块低位模块输入
fen_s:
fen_g:
xiaoshi_s:
xiaoshi_g:
daout:
sel:
outstd_logic_vector(2downto0));
endseltime;
architecturebehavofseltimeis
signalsec:
std_logic_vector(2downto0);
process(reset,ckdsp)
if(reset='
sec<
000"
elsif(ckdsp'
eventandckdsp='
if(sec="
101"
=sec+1;
process(sec,shijian_g,shijian_s,fen_g,fen_s,xiaoshi_g,xiaoshi_s)
casesecis
when"
=>
daout<
=shijian_g(3downto0);
001"
=shijian_s(7downto4);
010"
=fen_g(3downto0);
011"
=fen_s(7downto4);
100"
=xiaoshi_g(3downto0);
=xiaoshi_s(7downto4);
whenothers=>
XXXX"
endcase;
sel<
=sec;
5.整点报时模式
entityalertis
clkspk:
——时钟信号
speak:
outstd_logic;
——输出speak
lamp:
outstd_logic_vector(8downto0));
——输出lamp
endalert;
architecturebehavofalertis
signaldivclkspk2:
process(clkspk)
if(clkspk'
eventandclkspk='
——当clkspk为上升沿时
divclkspk2<
=notdivclkspk2;
——divclkspk2的非赋予divclkspk2
process(shijian_s,shijian_g,fen_s,fen_g)
if(fen_g="
1001"
andfen_s="
0101"
andshijian_s="
——若时间是59分50秒时
caseshijian_gis
——隔一秒响一次
0001"
lamp<
000000001"
speak<
=divclkspk2;
0010"
000000010"
0011"
000000100"
0100"
000001000"
000010000"
0110"
000100000"
0111"
001000000"
1000"
010000000"
100000000"
=clkspk;
——当59秒信号给lamp,时钟信号给speak,准备整点报时
000000000"
——当秒为其他值时无效
6.7段译码显示模块设计
entitydeledis
s:
a,b,c,d,e,f,g,h:
enddeled;
architecturebehavofdeledis
signaldata:
signaldout:
std_logic_vector(7downto0);
data<
=s;
——s赋值给data
process(data)
casedatais
dout<
00111111"
——当data是‘0000’时将‘00111111’赋给dout
00000110"
01011011"
01001111"
01100110"
01101101"
01111101"
00000111"
01111111"
01101111"
1010"
01110111"
1011"
01111100"
1100"
00111001"
1101"
01011110"
1110"
01111001"
1111"
01110001"
00000000"
——当data为其他值时,将‘00000000’赋给dout
h<
=dout(7);
g<
=dout(6);
f<
=dout(5);
e<
=dout(4);
d<
=dout(3);
c<
=dout
(2);
b<
=dout
(1);
a<
=dout(0);
六、仿真波形
1.秒模块仿真波形
当信号reset输入时,各输出端口信号正常。
并且当reset为0时,清零正常。
2.分模块仿真波形
3.时模块波形
5.整点报时波形
当信号clkdspk输入时,各输出端口信号正常。
6.七段译码管显示波形
当S输入0-9是译码器分别输出不同的值与程序相同
7.数字钟
,7段译码管显示的波形,可看出秒分时都正常
校分校时为’1’时分时有进位所以正常当reset为高电平是分秒时为0则异步清零也正常
七、设计小结
本次实训最主要的收获是:
使我们对
EDA
设计有一定的感性和理性认识;
培养和锻炼我们的实际动手能力。
使我们的理论知识与实践充分地结合,
作到不仅具有专业知识,而且还具有较强的实践动手能力,能分析问题和解决问
题的高素质人才,为以后的顺利就业作好准备。
本次实习的对我们很重要,是我们应用电子专业的学生实践中的重要环节。
在以
前我们学的都是一些理论知识。
这一次的实训正如老师所讲,没有多少东西要我
们去想,更多的是要我们去做,好多东西看起来十分简单,看着电路图都懂,但
没有亲自去操作,就不会懂得理论与实践是有很大区别的。
看一个东西简单,但
在实际操作中就是有许多要注意的地方,有些东西也与你的想象不一样,我们这
次的实验就是要我们跨过这道实际和理论之间的鸿沟。
不过,我坚信自己的是有
一定能力的。
以前我们光只注意一些理论知识,并没有专门的练习我们的实际动
手能力。
这次的实习使我意识到我的操作能力的不足,
在理论上也有很多的缺陷。
所以,在以后的学习生活中,我需要更努力地读书和实践。
八、参考文献
1.《EDA技术项目化教程》——————主编胥勋涛
2.《EDA技术与应用(第2版)》————主编江国强
3.《EDA技术与VHDL》————主编潘松
附录:
截图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- eda 整点 报时 时钟 设计