EDA
课程设计报告
一·设计任务
使用硬件描述语言,在CPLD/FPGA上实现一个多功能数字钟。
二·设计要求
除按键、LED、扬声器、时钟信号外,整个数字钟的功能要求在一块芯片上实现。
a) 具有时,分,秒,计数显示功能,以24小时循环计时; b) 具有时间清零功能;
c) 具有小时、分钟和秒钟调整功能(个位和十位分开调或合起来调)。
d) 具有闹钟功能,能预设闹钟时间,精确到秒。
整个数字钟只设一个时钟输入端口,所需不同频率信
号在内部分频实现。(LED扫描频率设为50Hz以上)。
三·设计方案
设计采用模块方式,分别为分频模块:产生1Hz的脉冲作为秒的输入,和产生1kHz的脉冲作为数码管显示的动态扫描。计时模块:秒模块,分模块,时模块。闹钟模块,显示模块,控制模块。
四·模块端口设置
1.分频模块
输入:clkin :
本实验输入为50MHz晶振
输出:clk : 为显示模块及始终调节提供1KHz脉冲
clkt: 为计数器模块提供1Hz脉冲
2.计时模块
m 是模式按键,当m=0 时,进入计时模式,在计时模式下可以进行时间调整。num3,
num4 产生加速调整时间,当其值为1 时,可以快速调整时间,该调整时间的频率由clk 提
供。counta,count1 是手动调节时间。Turn 接按键,可以改变当前调节的是小时还是分钟,
长按turn 键还可以使秒钟信号清零。sec1,min1,hour1 输出的是计时的秒,分,时。
3.闹钟模块
原理:num1,num2 产生加速调整时间,当其值为1 时,可以快速调整时间,该调整时间的
频率由clk 提供。countb,count2 是手动调节闹钟时间。amin,ahour 是输出的闹钟的分钟和 小时 4.控制模块
m 是模式按键,当m=0 时,指当前输出的是计时功能;当m=1 时,指当前调整的是
闹钟时间;当m=2 时,指当前调整的是计时时间;当m=3 时,此时turn 按键可用于跑表的
暂停与开始。change 接按键,手动调整时,每按一次,计数器加1;如果长按,则连续快
速加1,用于快速调时和定时;turn 接按键,在手动校时功能时,选择是调整小时,还是分
钟;若长时间按住该键,还可使秒信号清零,用于精确调时。count1,count2,counta,countb 分
别是用来调节计时时间和闹钟时间。LD_min,LD_hour,指示当前调节的是分钟还是小时。 5 显示模块
输入:clk -- 1kHz时钟,提供高频扫描
in0、in1…in5 --分别为时、分、秒的个位与十位信号
输出:a、b…g -- 数码管输入
d0、d1…d5 -- 数码管选通
五.程序。
分频模块
module fenpin(clk,clkt,clkin); input clkin; output clk,clkt; reg clk,clkt; reg [31:0]out,t1;
initial t1
always@(posedge clkin) begin
out
if(out==20000)
begin
out
clk
end end
always@(posedge clk)
begin
t1
if(t1==1000)
begin
clkt
t1
end
else
clkt
计时模块 module jishi(clk,clk_1Hz, turn,mode,count1,counta,sec1,min1,hour1,num3,num4); input clk,clkt,turn,num3,num4; input mode; input count1,counta; output [7:0] sec1,min1; output [7:0] hour1; wire clkt,ct1,cta,turn,num3,num4; reg [7:0] sec1=0,min1=0; reg [7:0] hour1=0; reg [1:0] m; wire count1,counta; reg minclk,hclk; always @(posedge mode) //mode 信号控制系统在三种功能间转换 begin if(m==4) m
if((sec1==8\'h59)|turn&(!m))///////若长时间按住该键,还可使秒信号清零,用于精确调时。 begin sec1
if(!(turn&(!m))) minclk
always @(posedge ct1) begin if(min1==8\'h59) begin min1
begin min1[3:0]
always @(posedge cta) if(hour1==8\'h23) hour1
闹钟模块
module alarm(clk,amin,ahour,num1,num2,count2,countb,LD_alert); input clk,num1,num2,count2,countb; output [7:0] amin;
output [7:0] ahour; output LD_alert; wire LD_alert; reg [7:0] amin=0; reg [7:0] ahour=0; aign ct2=(num1&clk)|(!num1&count2); //ct2 用于定时状态下调整分钟信号
aign LD_alert=(ahour|amin)?1:0;//指示是否进行了闹铃定时 always @(posedge ct2) if(amin==8\'h59) amin
module ctrol(change,turn,count1,count2,counta,countb,pause,LD_min,LD_hour,mode); input change,mode,turn; output count1,count2,counta,countb,pause,LD_min,LD_hour; reg [1:0] m; reg fm=0,count1=0,count2=0,counta=0,countb=0,pause=0,LD_min=0,LD_hour=0; wire mode,turn,change; always @(posedge mode) //mode 信号控制系统在三种功能间转换 begin if(m==4) m
always @ (m or fm or change) begin case(m) 2: begin ////////2:调节时间功能; if(fm) begin count1
Else
begin counta
0: begin {count1,count2,counta,countb,LD_min,LD_hour}
module show(min1,sec1,amin,hour1,ahour,MSH,MSL,SH,SL,MH,ML,min,sec,hour,mode); input [7:0] min1,sec1,amin; input [7:0] hour1,ahour; input[3:0] MSH,MSL,SH,SL,MH,ML; input mode; output [7:0] min,sec; output [7:0] hour; reg [7:0] min,sec; reg [7:0] hour; reg [1:0] m; always @(posedge mode) //mode 信号控制系统在三种功能间转换
begin if(m==4) m
hour
min
六
实验分析
13 七
实验总结
八、参考资料
1、《EDA技术实用教程》
2、实验箱使用说明;