eda整点报时时钟设计文档格式.docx

上传人:b****6 文档编号:19291962 上传时间:2023-01-05 格式:DOCX 页数:19 大小:325.73KB
下载 相关 举报
eda整点报时时钟设计文档格式.docx_第1页
第1页 / 共19页
eda整点报时时钟设计文档格式.docx_第2页
第2页 / 共19页
eda整点报时时钟设计文档格式.docx_第3页
第3页 / 共19页
eda整点报时时钟设计文档格式.docx_第4页
第4页 / 共19页
eda整点报时时钟设计文档格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

eda整点报时时钟设计文档格式.docx

《eda整点报时时钟设计文档格式.docx》由会员分享,可在线阅读,更多相关《eda整点报时时钟设计文档格式.docx(19页珍藏版)》请在冰豆网上搜索。

eda整点报时时钟设计文档格式.docx

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》————主编潘松

附录:

截图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1