首页 > 编程知识 正文

fpga课程设计电子钟(数字电子钟的设计与实现)

时间:2023-05-03 23:21:06 阅读:68151 作者:2710

公众号:FPGA技术小开发

1 .实验内容

)1)整体功能

数字钟应以秒为最小单位计时,同时能用数字直观显示当前时、分、秒。

(2)系统结构

数字钟的系统结构框图如图7-1-1所示。 图中秒信号发生电路产生1Hz的标准计时信号,计时电路记录当前的时刻、分、秒。 数字显示以数字方式显示当前时刻。 报时电路用于所有时刻的报时,时分调整电路用于修改当前时刻或分钟,并且将系统重置密钥用于清除整个系统。

)3)电气指标

最小计时单位为1秒。

秒和分钟的计时范围为00~59,时间的计时范围为0~23或1~12。

可以手动校准时,分钟。

(1)定义输入输出信号和中间变量

通过moduledigital_clock(inputclk、//时钟信号、2kHz脉冲input clr、//清除信号,生成高电平有效input set_m、input set_h、//分钟、) //M=2000的计数器reg [2:0] count_6=0; //M=6的计数器reg [7:0] second=0; reg [7:0] minute=0; reg [7:0] hour=0; //保存时、分、秒的数值reg [3:0] secondL; reg [3:0] secondH; reg [3:0] minuteL; reg [3:0] minuteH; reg [3:0] hourL; reg [3:0] hourH; //实现分离时、分、秒数值的10位和1位(2)强制清除和自动清除

always@(posedgeclkorposedgeclr ) beginif ) clr==1) /按下清除键时将所有数据设置为零begincounter=0; second=0; minute=0; hour=0; endelseif(counter==2000 ) )2kHz时钟脉冲上升沿2000个,即经过1s后计数器自动复位为零的begincounter=0; (3)分钟调整

if(set_m==1) beginsecond=second 1; //秒正常计数if(minute==59 ) beginminute=0; if(hour==23 ) beginhour=0; //23:59进制表示00:00endelsebeginhour=hour1;//向上舍入59分钟,1小时endendelsebeginminute=minute 1; //分钟的数值每秒增加1endend(4)小时进行调整

if(set_h==1) beginsecond=second 1; //秒正常计数if(hour==23 ) beginhour=0; //24点进位为0点的endelsebeginhour=hour 1; //时间的数值每秒增加1endend(5),成为通常的时机

if(second==59 ) /秒针进位beginsecond=0; if(minute==59 ) /分针进位beginminute=0; if(hour==23 ) /时针进位beginhour=0; endelse //hour23,时间1beginhour=hour 1; endendelse //minute59,分1beginminute=minute 1; endendelse //调时,如果未按下调分键,数字钟正常计数beginsecond=second 1; end )6)分离时、分、秒数值的10位和1位

begin //位的整数除以10得到10位,取剩下的10得到1位的secondH=second/10; secondL=second; minuteH=minute/10; minuteL=minute; hourH=hour/10; hourL=hour; endendelsebegincounter=counter 1; //如果时钟信号小于1s,则计数器继续对结束(7)动态显示地址计数器进行计数

always@(posedgeclk ) /将在每个时钟周期选择的代码地址存储在count_6中,if(count_6==3'b101 ) count_6=3'b000; elsecount_6=count_6 1; (8)输出动态显示

always@(count_6) /在每个时钟周期用位选择信号选择当前编号的数码管,该位的当前值case(count_6)3) b0003360BeginWei=6) b011111 数据=hourh; end3' b 001: begin Wei=6' b 101111; 数据=hourl; end3' b 010: begin Wei=6' b 110111; 数据=minuteh; end3' b 011: begin Wei=6' b 111011; 数据=minutel; end3' b 100: begin Wei=6' b 111101; data=secondH; end3' b 101: begin Wei=6' b 111110; 数据=secondl; end default : begin Wei=6' b 01111; data=4'b0000; endendcaseendmodule测试激励文件:

模块数字_ clock _ test (; reg clk; reg clr; reg set_m; reg set_h; wire [5:0] wei; wire [3:0] data; digital_clockU1(.clk (、 clr )、 set_m )、 set_h )、 Wei )和. Datti )。 initialbeginclk=0; clr=1; set_m=0; set_h=0; #100clr=0; #6000000set_m=1; #6000000set_m=0; set_h=1; endalways #10 clk=~clk; endmodule的模拟结果如下。 (因为在公开号码中,所以想自己检索FPGA技术的小开)。

1、正常时机

)1)秒针仪提前1min至60s

)2)分针提前1小时至60min

)3) 23:59:59向上舍入为0:0:0

2、对分

minute和second以相同的频率变化。

3、调时

hour和second以相同的频率变化。

因此,实验结果符合预期。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。