基于FPGA定时闹钟实验报告 联系客服

发布时间 : 星期三 文章基于FPGA定时闹钟实验报告更新完毕开始阅读49eaa4ffaef8941ea76e05f7

西 南 科 技 大 学

电工学,电子技术学生实验报告

课程名称 FPGA技术课程设计

实验课题 定 时 闹 钟

班 级 电子0902

指导老师 龙 惠 民 评 分 实验小组

2012年4月25日

实验课题: 定时闹钟

实验时间:2012年4月16日—4月30日 实验小组成员:

一. 设计要求

设计一个具有系统时间设置和带闹钟功能的24小时计时器中的应用。电子钟要求如下:

(1)计时功能:4位LED数字时钟对当前时间的小时和分钟进行显示,显示的最长时间为23小时59分。

(2)设置并显示新的闹钟时间:用户先按“set”键,再用数字键“0”~“9”输入时间,然后按“alarm”键确认。在正常计时显示状态下,用户直接按下“alarm”键,则已设置的闹钟时间显示在显示屏上。

(3)设置新的计时器时间:用户先按“set”键,再用数字键“0”-“9”输入新的时间,然后按“time”键确认。在输入过程中;输入的数字在显示屏上从右到左依次显示。例如,用户要设置新的时间 12:00,则按顺序输入“l”,“2”,“0”,“0”键,与之对应,显示屏上依次显示的信息为:“1”,“12”;“120”,“1200”。如果用户在输入任意几个数字后较长时间内,例如5秒,没有按任何键,则计时器恢复到正常的计时显示状态。

(4)闹钟功能:如果当前时间与设置的闹钟时间相同,则扬声器发出蜂鸣声;

二.设计流程

1.顶层设计

顶层设计结构

2.各模块原理

根据顶层设计结构,初步将定时闹钟分为分频器,计时模块,显示模块,闹钟模块。

(1).计时模块包括秒计时子模块(sec),分计时子模块(min),时计时模块(hour),以及主控子模块(control)。其工作原理:为妙计时子模块送1HZ脉冲,但秒计数达60时,秒计数器清零,秒进位信号为‘1’,并作为分计数器的时钟信号。每产生一个秒进位信号,分计数器加‘1’。同样,分计数达60时,计数器清零,并产生一个分进位信号,作为时的时钟信号,每产生一个分进位信号,时计数器加1,当计数器达24时,计数器清零。如图2

图2

程序代码:

module sec(clk,rst,sec_h,sec_l,co); //秒计数模块; input clk,rst; //时钟信号clk,复位信号rst。 output reg[3:0]sec_h; //计数器的十位 output reg[3:0]sec_l; //计数器的个位 output reg co; //进位信号co always @(posedge clk or posedge rst) begin if(rst)begin sec_h=0;sec_l=0;end else if(clk) begin if(sec_l==4'd9) begin sec_l<=0; if(sec_h==4'd5) sec_h<=0; else sec_h<=sec_h+4'd1;end else sec_l<=sec_l+4'd1;end end

always @(sec_h or sec_l) begin if(sec_h==4'd0 && sec_l==4'd0) co<=1'b1; else co<=1'b0; end

endmodule

功能仿真结果

时序仿真结果

module min(rst,sec_co,min_h,min_l,co);//分计时模块 input rst,sec_co; //时钟信号sec_co,复位信号rst output reg[3:0]min_h; //计数器十位 output reg[3:0]min_l; //计数器个位 output reg co; //进位信号co always @ (posedge rst or posedge sec_co) if(rst) begin min_h=0;min_l=0;end else if(sec_co)