EDA数字钟设计实训报告Word格式文档下载.docx

上传人:b****3 文档编号:14347145 上传时间:2022-10-22 格式:DOCX 页数:12 大小:62.02KB
下载 相关 举报
EDA数字钟设计实训报告Word格式文档下载.docx_第1页
第1页 / 共12页
EDA数字钟设计实训报告Word格式文档下载.docx_第2页
第2页 / 共12页
EDA数字钟设计实训报告Word格式文档下载.docx_第3页
第3页 / 共12页
EDA数字钟设计实训报告Word格式文档下载.docx_第4页
第4页 / 共12页
EDA数字钟设计实训报告Word格式文档下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

EDA数字钟设计实训报告Word格式文档下载.docx

《EDA数字钟设计实训报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《EDA数字钟设计实训报告Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。

EDA数字钟设计实训报告Word格式文档下载.docx

实训中由于七段码管是扫描的方式显示,所以虽然时钟需要的是1Hz时钟信号,但是扫描确需要一个比较高频率的信号,因此为了得到准确的1Hz信号,必须对输入的系统时钟进行分频。

对于整点报时功能,用户可以根据系统的硬件结构和自身的具体要求来设计。

本实训设计的是当进行整点的倒计时5秒时,让LED来闪烁进行整点报时的提示。

三、实训内容

本实验的任务就是设计一个多功能数字钟,要求显示格式为小时-分钟-秒钟,整点报时,报时时间为10秒,即从整点前10秒钟开始进行报时提示,喇叭开始发声,直到过整点时,在整点前5秒LED开始闪烁,过整点后,停止闪烁。

调整时间的的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时,S2调整分钟,每按下一次,分钟增加一分钟。

四、实训步骤

①认真听取老师介绍开发板硬件结构,仔细阅读EDA实训指导书,了解数字钟设计程序的大致过程。

②根据之前写过的“精确24秒倒计时”程序,将其中的各个模块程序进行修改。

③修改分频模块,将50MHZ分频为1HZ,即周期为1s。

④修改显示模块,使秒钟和分钟从00至59循环显示,秒钟每次从59跳到00,则分钟增加一分钟,使时钟从00至23循环显示,分钟每次从59跳到00,则时钟增加一小时,

⑤在结构体处添加信号声明,使时钟、分钟和秒钟之间的“——”显示出来,即00-00-00。

⑥添加按键模块,使S1,S2,分别控制时钟的加减,使S3,S4分别控制分钟的加减。

⑦添加整点报时程序,当秒钟显示到50时,蜂鸣器开始发声,直至秒钟显示为00时停止。

⑧完成整个程序后,设置引脚和端口,使其一一对应,然后编译仿真,硬件测试。

五、实训VHDL程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

entityshixunis

port

(clk:

instd_logic;

s1,s2,s3,s4:

instd_logic;

display:

outstd_logic_vector(7downto0);

seg_sel:

bell:

bufferstd_logic

);

end;

architecturertlofshixunis

signalsegbit:

std_logic_vector(7downto0);

signaldisP_decode:

signalsec1,sec10,disp_temp:

integerrange0to10;

signalg1,g2:

integerrange10to10;

signalmin1,min10:

integerrange0to9;

signalhour1,hour10:

signalclk1hz:

std_logic;

signalcnt:

std_logic_vector(19downto0);

signaltone:

std_logic_vector(10downto0);

signaltone_count:

signaltone_index:

std_logic_vector(2downto0);

signaltime:

integerrange0to7;

signalclk2Mhz:

std_logic;

begin

display<

=disP_decode;

seg_sel<

=segbit;

process(clk)

variablecnt1:

integerrange0to49999999;

begin

ifclk'

eventandclk='

1'

then

ifcnt1=49999999thencnt1:

=0;

else

ifcnt1<

24999999then

clk1hz<

='

;

elseclk1hz<

0'

endif;

cnt1:

=cnt1+1;

endif;

endprocess;

process(clk1hz)

if(clk1hz'

eventandclk1hz='

)then

if(sec1=9andsec10=5andmin1=9andmin10=5andhour1=3andhour10=2)then

sec1<

sec10<

min1<

min10<

hour1<

hour10<

elsifs1='

hour1<

=hour1+1;

if(hour1=9)then

hour1<

hour10<

=hour10+1;

if(hour10=2andhour1=3)then

endif;

elsifs2='

=hour1-1;

if(hour10=0andhour1=0)then

=3;

=2;

else

if(hour1=0)then

=9;

hour10<

=hour10-1;

elsifs3='

then

min1<

=min1+1;

if(min1=9)then

min1<

min10<

=min10+1;

if(min10=5)then

elsifs4='

=min1-1;

if(min1=0)then

=min10-1;

if(min10=0)then

=5;

if(sec1=9)then

if(sec10=5)then

sec10<

if(min1=9)then

if(min10=5)then

if(hour1=9)then

=sec10+1;

=sec1+1;

endprocess;

process(cnt(15downto13))

ifclk='

andclk'

eventthen

cnt<

=cnt+1;

casecnt(15downto13)is

when"

000"

=>

segbit<

="

11111110"

001"

11111101"

010"

11111011"

011"

11110111"

100"

11101111"

101"

11011111"

110"

10111111"

111"

01111111"

whenothers=>

null;

endcase;

process(segbit)

casesegbitis

when"

disp_temp<

=sec1;

=sec10;

=g1;

=min1;

=min10;

=g2;

=hour1;

=hour10;

process(disp_temp)

casedisp_tempis

when0=>

disp_decode<

11000000"

when1=>

11111001"

when2=>

10100100"

when3=>

10110000"

when4=>

10011001"

when5=>

10010010"

when6=>

10000010"

when7=>

11111000"

when8=>

10000000"

when9=>

10010000"

when10=>

whenothers=>

11111111"

en

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

当前位置:首页 > 经管营销

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

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