EDA课程设计

发布 2022-09-30 19:36:28 阅读 1729

课程设计报告。

课程设计名称:多功能数字时钟的设计。

课程设计题目:万年历系统的设计。

专业:xxx班级:xxxxxxx

学生姓名:xxx学号:xxxxxxxx

指导老师:xxx

时间: 2012 年 6 月 21 日至 2024年 7 月 6 日。

eda课程设计实验报告。

一、设计任务要求。

基本要求:1、使用原理图输入完成下述设计功能。

1)设计一个数码管实时显示时、分、秒的数字时钟(24小时显示模式);

2)为了演示方便,应具有分钟、小时快进功能;

3)时、分、秒设置功能即校时功能。

4)其他时钟使用功能,如闹钟、整点报时等功能。

2、 使用硬件描述语言verilog hdl完成上述功能。

二、设计方案。

1、系统功能。

系统有数字钟的显示与设置,数字跑表的暂停及清零,闹铃的设置与实现,日期的设置与显示。

2、系统设计方案说明。

此实验是 fpga系统的设计,主要有分频模块 、主控制模块、时间和日期的显示及设置模块、输出显示模块、按键去抖模块以及一些输入和输出管脚、电源和地构成。

下面着重介绍各模块的功能及说明。

1)、分频模块。

分频器,使1000hz时钟信号分频成低频信号,达到适合的频率,以供此实验应用。最后输入频率为1hz。

2、 主控制模块。

该模块实现对各个功能的整体控制选择,包括对时间显示与调整、日期显示与调整、闹钟显示与调整、秒表操作等的控制,同时输出所要显示的相应数据,完成万年历的整体操控选择设置等功能。

3、 时间和日期的显示及设置模块。

4、 输出显示模块。

5、按键去抖模块

该模块实现对按键输入的选择控制,防止按键抖动出现多次输入。确保**到实验箱后试验正常进行。

三、各模块程序如下:

1、分频模块程序:

input clk_1hz ; 1hz时钟,供数字钟使用。

input clk_1khz ;

always@(posedge clk_1khz)

beginclk_500hz=~clk_500hz; /2分频。

/由1 khz分频得500 hz时钟信号,整点报时使用。

temp1=func_key;

temp2=key1;

te***=key2;

if(divide==3'b101) /5 分频。

/由1 khz分频得到100 hz信号,用作跑表的时钟。

begindivide=0;clk_100hz=~clk_100hz;

endelse divide=divide+1;

en2、功能控制及设置模块。

module clock(clk_1hz, clk_1khz, func_key, key1, key2,mode, hour, minute, second, alarm);

input clk_1hz ; 1hz时钟,供数字钟使用。

input clk_1khz ;

/1 khz时钟, 分成500 hz供闹钟和整点报时使用, 分频100hz供跑表使用。

input func_key ;

/功能键, 1表示数字钟, 2表示跑表, 3表示调时, 4表示设置闹钟,5表示日期设置。

input key1 ; 功能1时显示闹钟时间, 功能2时暂停, 功能时调小时, 功能5时调月份。

input key2 ; 功能1时显示日期, 功能2时清零, 功能时调分, 功能5时调日。

output [3:0] mode; /功能号指示。

output [7:0] hour ; 功能和4时显示小时, 功能2时显示分钟, 功能5时显示月份。

output [7:0] minute; /功能和4时显示分钟, 功能2时显示秒, 功能5时显示日期。

output [7:0] second; /功能1时显示秒, 功能2时显示1/100秒, 其余时固定显示0

1、 时间日期的显示和设置模块:

reg[5:0] h1; /功能1(数字钟)的时、分、秒。

reg[6:0] m1,s1;

wire clk_1;

/数字钟时为1hz时钟, 时间设置时为按调整键产生的脉冲。

/即当不处于功能3时为1hz时钟信号,处于功能3时为adjust-key1 or adjust_key2脉冲信号。

/这样,当将电子表调整到数字钟功能外的其他功能时将不会影响数字钟的运行。

assign clk_1=(clk_1hz&&mode!=3)||mode==3&&(adjust_key1||adjust_key2));

always@(posedge clk_1)

beginif(mode!=3) /数字钟1

begin //23:59:59'时变为00:00:00 注意此处是bcd码。

if(h1[5]&h1[1]&h1[0]&m1[6]&m1[4]&m1[3]&m1[0]&s1[6]&s1[4]&s1[3]&s1[0])

h1,m1,s1}=0;

elseif(h1[3]&h1[0]&m1[6]&m1[4]&m1[3]&m1[0]&s1[6]&s1[4]&s1[3]&s1[0])

begin //9:59:59'时小时加7,分、秒变为0为了数码管显示。

h1=h1+7;m1=0;s1=0;

endelse

if(m1[6]&m1[4]&m1[3]&m1[0]&s1[6]&s1[4]&s1[3]&s1[0])

begin //59:59' 时分、秒为0,小时加1

h1=h1+1;m1=0;s1=0;

endelse if(m1[3]&m1[0]&s1[6]&s1[4]&s1[3]&s1[0])

begin //9:59'时秒为0,分加7

m1=m1+7; s1=0;

endelse if(s1[6]&s1[4]&s1[3]&s1[0])

begin //59秒时秒为0,分加1

m1=m1+1;s1=0;

endelse if(s1[3]&s1[0]) s1=s1+7;//9秒时秒加7

else s1=s1+1; /秒加1

endif(adjust_key1)//调时。

beginif(h1[5]&h1[1]&h1[0]) h1=0; /10_0011=23

else if(h1[3]&h1[0]) h1=h1+7; /9

else h1=h1+1;

endif(adjust_key2)//调分。

beginif(m1[6]&m1[4]&m1[3]&m1[0]) m1=0;//调分。

else if(m1[3]&m1[0]) m1=m1+7;

else m1=m1+1;

endend

/功能2:跑表,key1作为暂停键,key2作为清零键。

reg[6:0] h2,m2; /7 bit

/功能2(数字跑表)时的时、分、秒。

reg[7:0] s2;

wire clk_2;

assign clk_2=clk_100hz&&mode==2&&!key1;

/跑表的100 hz时钟,key1此时为暂停键。

always@(posedge clk_2)

beginif(key2||(h2[6]&h2[4]&h2[3]&h2[0]&m2[6]&m2[4]&m2[3]&m2[0]&s2[7]&s2[4]&s2[3]&s2[0]))

h2,m2,s2}=0;

/跑表时key2清零,59:59'99"时清零。

elseif(h2[3]&h2[0]&m2[6]&m2[4]&m2[3]&m2[0]&s2[7]&s2[4]&s2[3]&s2[0])

begin9:59'99"时。

h2=h2+7;m2=0;s2=0; /分转换成bcd

endelse

if(m2[6]&m2[4]&m2[3]&m2[0]&s2[7]&s2[4]&s2[3]&s2[0])

begin //59'99"时。

h2=h2+1;m2=0;s2=0; /够1分,其它清零。

endelse if(m2[3]&m2[0]&s2[7]&s2[4]&s2[3]&s2[0])

begin9'99"时。

m2=m2+7; s2=0;

endelse if(s2[7]&s2[4]&s2[3]&s2[0])

begin //99"时。

m2=m2+1;s2=0;

endelse if(s2[3]&s2[0])/9"时

s2=s2+7;

else s2=s2+1;

end//功能4:闹钟设置,key1和key2分别用来调时和调分。

reg[5:0] h4; /功能4(闹钟设置)时的时和分。

reg[6:0] m4;

wire clk_key1,clk_key2;

assign clk_key1=adjust_key1 &&mode==4;

/功能4时key1作为调时键。

assign clk_key2=adjust_key2 &&mode==4;

/功能4时key2作为调分键。

always@(posedge clk_key1) /最大24小时。

beginif(h4[5]&h4[1]&h4[0]) h4=0; /23

else if(h4[3]&h4[0]) h4=h4+7; /9

else h4=h4+1;

endalways@(posedge clk_key2) /最大60分。

beginif(m4[6]&m4[4]&m4[3]&m4[0]) m4=0;//60

else if(m4[3]&m4[0]) m4=m4+7; /9

else m4=m4+1;

end//功能5:调日期,key1和key2分别调月和调日。

EDA课程设计

题目一 数字钟设计 学号1 15 一 实验目的。学习并掌握数字钟的原理 设计方法。二 实验内容。计数始终由模60秒计数器 模60分计数器 模24小时计数器 报时模块 分 时设定模块及输出显示模块构成。可以采用同步计数器或异步计数器设计方法。三 实验要求。计时范围为0小时0分0秒至23小时59分59秒...

eda课程设计

哈尔滨工业大学 威海 信电学院电子信息工程。一 软硬件介绍。1软件部分介绍。1.1 quartus ii 是altera公司的综合性pld fpga开发软件,支持原理图 vhdl veriloghdl以及ahdl altera hardware description language 等多种设计输...

eda课程设计

目录。1 引言 2 1.1 课程设计的目的与任务 2 1.2 课程设计的内容 2 1.3课程设计仪器设备 2 1.4 课程设计的题目 2 1.5 方案的选择 2 2设计方案 3 2.1 设计原理 3 2.2各功能模块的原理及其源程序 3 2.2.1控制模块 3 2.2.2分频模块 4 2.2.3计时...