数字电路课程设计数字钟大学论文.docx

上传人:b****1 文档编号:592983 上传时间:2022-10-11 格式:DOCX 页数:21 大小:360.88KB
下载 相关 举报
数字电路课程设计数字钟大学论文.docx_第1页
第1页 / 共21页
数字电路课程设计数字钟大学论文.docx_第2页
第2页 / 共21页
数字电路课程设计数字钟大学论文.docx_第3页
第3页 / 共21页
数字电路课程设计数字钟大学论文.docx_第4页
第4页 / 共21页
数字电路课程设计数字钟大学论文.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

数字电路课程设计数字钟大学论文.docx

《数字电路课程设计数字钟大学论文.docx》由会员分享,可在线阅读,更多相关《数字电路课程设计数字钟大学论文.docx(21页珍藏版)》请在冰豆网上搜索。

数字电路课程设计数字钟大学论文.docx

数字电路课程设计数字钟大学论文

大连理工大学本科实验报告

 

题目:

数字钟

 

课程名称:

数字电路课程设计

学院(系):

电子信息与电气工程学部

专业:

电气工程及其自动化

班级:

学生姓名:

学号:

完成日期:

成绩:

 

2017年1月7日

题目:

数字钟

1设计要求

1、设计一个数字钟,能够显示当前时间,分别用6个数码管显示小时、分钟、秒钟的时间,秒针的计数频率为1Hz,可由系统脉冲分频得到。

2、在整点进行提示,可通过LED闪烁实现,闪烁频率及花型可自己设计。

3、能够调整小时和分钟的时间,调整的形式为通过按键进行累加。

4、具有闹钟功能,闹钟时间可以任意设定(设定的形式同样为通过按键累加),并且在设定的时间能够进行提示,提示同样可以由LED闪烁实现。

2设计分析及系统方案设计

2.1系统状态转换

因为数字钟成正常显示时间、闹钟、校时、秒表四个状态,所以可以选用两个开关来对其状态进行控制,当开关分别为00,01,10,11四种状态时,对应显示时间、修改时间、闹钟、秒表四种状态。

2.2时钟信号的建立

该多功能数字钟系统需要两个时钟信号,分别为1Hz的信号为数字钟提供秒信号以及200Hz的检查信号。

本设计选用50MHz信号,分别将其通过模25000000计数器和模125000计数器从而得到1Hz及200Hz信号。

2.3功能分析及其设计

2.3.1时间显示功能

当两个开关都处于低电平状态时,正常显示。

2.3.2修改时间

当sw1处于低电平状态,sw0处于高电平状态,进入当前时间修改功能。

通过按键key0分别选择修改时、分或秒,通过按键key1对选择修改的时间进行+1操作。

2.3.3闹钟

当sw1出于高电平状态,sw0出于低电平状态,进入闹铃功能。

通过按键key0分别选择改变时、分或秒,通过按键key2对选择改变的时间进行+1操作,当数字钟到当前时间,LEDG0发光。

2.3.4秒表

当sw1及sw0都处于高电平状态,进入秒表功能。

通过按键key0进行秒表计时的开始及暂停,通过按键key3对秒表进行清零。

3系统以及模块硬件电路设计

3.1硬件原理图

图3.1系统示意图

图3.2按键电路

图3.3状态选择按键

图3.4闹钟使用的led

3.2管脚定义

程序代码

引脚

功能作用

clk

PIN_N2

提供50MHz的时钟信号

s1

PIN_N25

选择功能状态

s2

PIN_G26

选择功能状态

k1

PIN_G26

切换改变时间功能的时、分、秒;切换闹钟功能设置闹钟时间的时、分、秒;秒表功能的开始与暂停

k2

PIN_N23

改变时间功能的+1

k3

PIN_P23

闹钟功能设置闹钟时间的+1

k4

PIN_W26

秒表功能的清零

LED

PIN_AE22

闹钟时间到来时指示

dclkh1[0]

PIN_N9

连接HEX7,

显示时高位

dclkh1[1]

PIN_P9

dclkh1[2]

PIN_L7

dclkh1[3]

PIN_L6

dclkh1[4]

PIN_L9

dclkh1[5]

PIN_L2

dclkh1[6]

PIN_L3

dclkh2[0]

PIN_M4

连接HEX6,

显示时低位

dclkh2[1]

PIN_M5

dclkh2[2]

PIN_M3

dclkh2[3]

PIN_M2

dclkh2[4]

PIN_P3

dclkh2[5]

PIN_P4

dclkh2[6]

PIN_R2

dclkm1[0]

PIN_R3

连接HEX5,

显示分高位

dclkm1[1]

PIN_R4

dclkm1[2]

PIN_R5

dclkm1[3]

PIN_T9

dclkm1[4]

PIN_P7

dclkm1[5]

PIN_P6

dclkm1[6]

PIN_T2

dclkm2[0]

PIN_T3

连接HEX4,

显示分低位

dclkm2[1]

PIN_R6

dclkm2[2]

PIN_R7

dclkm2[3]

PIN_T4

dclkm2[4]

PIN_U2

dclkm2[5]

PIN_U1

dclkm2[6]

PIN_U9

dclks1[0]

PIN_W24

连接HEX3,

显示秒高位

dclks1[1]

PIN_U22

dclks1[2]

PIN_Y25

dclks1[3]

PIN_Y26

dclks1[4]

PIN_AA26

dclks1[5]

PIN_AA25

dclks1[6]

PIN_Y23

dclks2[0]

PIN_Y24

连接HEX2,

显示秒低位

dclks2[1]

PIN_AB25

dclks2[2]

PIN_AB26

dclks2[3]

PIN_AC26

dclks2[4]

PIN_AC25

dclks2[5]

PIN_V22

dclks2[6]

PIN_AB23

4系统的Verilog设计

//顶层模块

moduleclock(clk,dclks1,dclks2,dclkm1,dclkm2,dclkh1,dclkh2,s,h,state,s1,s2,k1,k2,k3,k4,LED);

inputclk;//声明输入端口,连接50M晶振

inputs1,s2;//声明输入端口,控制功能转换

inputk1,k2,k3,k4;//声明输入端口,连接按键,对功能内部进行设置

outputLED;//声明输出端口,连接LED,闹钟指示

outputs,h;//声明输出端口,为各功能提供秒信号

outputstate;//声明输出端口,表示当前状态

output[6:

0]dclks1,dclks2,dclkm1,dclkm2,dclkh1,dclkh2;

//声明输出端口,连接数码管,

reg[31:

0]c,e;

regs,h;

regb;

reg[1:

0]state;

wire[7:

0]cs0,cm0,ch0,cs1,cm1,ch1,cs2,cm2,ch2,cs3,cm3,ch3;//分别连接四个状态的时分秒

reg[7:

0]clks,clkm,clkh,clks1,clkm1,clkh1;

wire[6:

0]dclks1,dclks2,dclkm1,dclkm2,dclkh1,dclkh2;

reg[1:

0]k,a,d;

regLED;

regclkf;

always@(negedgek1)//检测k1

begin

if(state==2'b01)

begin

if(k==2'd2)

k<=2'd0;

else

k<=k+1'd1;

end

elseif(state==2'b10)

begin

if(a==2'd2)

a<=2'd0;

else

a<=a+1'd1;

end

elseif(state==2'b11)

begin

b<=~b;

end

end

always@(negedgek4)//检测k4

begin

if(state==2'b11)

begin

if(d==1'b1)

d<=1'b0;

else

d<=d+1'b1;

end

end

always@(posedgeclkf)//定义状态

begin

case({s1,s2})

2'b00:

state=2'd0;

2'b01:

state=2'd1;

2'b10:

state=2'd2;

2'b11:

state=2'd3;

default:

state=2'd0;

endcase

end

always@(posedgeclk)//提供1Hz信号

begin

if(c==32'd24999999)

begin

s<=~s;

h<=~h;

c<=1'd0;

end

else

c<=c+1'd1;

end

always@(posedgeclk)//提供200Hz信号

begin

if(e==32'd125999)

clkf<=~clkf;

else

e<=e+1'b1;

end

always@(posedgeclkf)//检验时间是否到设定的闹钟

begin

if(cs2==cs0&&cm2==cm0&&ch2==ch0)

LED<=1'b1;

else

LED<=1'b0;

end

always@(posedgeclkf)

begin

if(state==1'b0)

begin

clks<=cs0;

clkm<=cm0;

clkh<=ch0;

end

elseif(state==2'd1)

begin

clks1<=cs1;

clkm1<=cm1;

clkh1<=ch1;

clks<=cs0;

clkm<=cm0;

clkh<=ch0;

end

elseif(state==2'd2)

begin

clks<=cs2;

clkm<=cm2;

clkh<=ch2;

end

elseif(state==2'd3)

begin

clks<=cs3;

clkm<=cm3;

clkh<=ch3;

end

end

de2timeu0(.cs0(cs0),.cm0(cm0),.ch0(ch0),.s(s),.state(state),.clkf(clkf),.clks1(clks1),.clkm1(clkm1),.clkh1(clkh1));

de2timechangeu1(.cs1(cs1),.cm1(cm1),.ch1(ch1),.state(state),.k2(k2),.k(k));

de2alarmu2(.cs2(cs2),.cm2(cm2),.ch2(ch2),.a(a),.k3(k3),.state(state));

de2timeru3(.cs3(cs3),.cm3(cm3),.ch3(ch3),.b(b),.h(h),.clkf(clkf),.d(d));

bdtransformu4(.clks(clks),.clkm(clkm),.clkh(clkh),.dclks1(dclks1),.dclks2(dclks2),.dclkm1(dclkm1),.dclkm2(dclkm2),.dclkh1(dclkh1),.dclkh2(dclkh2),.clkf(clkf));

endmodule

//正常时间显示模块

modulede2time(clks1,clkm1,clkh1,s,state,cs0,cm0,ch0,clkf);

inputs;

inputclkf;

inputclks1,clkm1,clkh1;

outputcs0,cm0,ch0;

inputstate;

wires;

wireclkf;

wire[7:

0]clks1,clkm1,clkh1;

wire[1:

0]state;

reg[7:

0]cs0;

reg[7:

0]cm0;

reg[7:

0]ch0;

always@(posedges)

begin

if(state==2'd0||state==2'd2||state==2'd3)

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

当前位置:首页 > 职业教育 > 其它

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

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