基于FPGA的数字时钟

基于FPGA的数字时钟

一.数字时钟设计

1.硬件资源:LCD1602液晶屏一块,FPGA开发板一块(A_C8V4);

2. 开发板资源:3颗独立按键,LCD1602接口;

3. 功能设计:三种功能:a.时钟功能;b.闹钟功能;c.校时功能;

4. 按键功能设计:按键1切换数字钟模式,按键2调整数字钟时钟显示(包括闹钟调时),按键3调整数字时钟分钟显示(包括闹钟调分);

二.数字时钟代码

1.数字时钟顶层模块RTL视图


1) 说明:这个为数字时钟的顶层模块,按键消抖模块debkey,数字钟功能模块digitalclk,LCD1602液晶显示模块lcd_ip;

2) 端口

输入:clk,reset,key;

输出:lcd_e,lcd_rw,lcd_rs,lcd_data,beep;

3) 代码

//数字时钟总模块
module digitalclk_top(clk,reset,key,lcd_rw,lcd_e,lcd_rs,lcd_data,beep);
	input clk;
	input reset;
	input [2:0]key;
	output lcd_rw;
	output lcd_rs;
	output lcd_e;
	output [7:0]lcd_data;
	output beep;
	
	wire [2:0]debkey;
	wire [255:0]disp;
	
	debkey U0
			(.clk(clk),
			.reset(reset),
			.key(key),
			.debkey(debkey));
				
	digitalclk U1
			(.clk(clk),
			.reset(reset),
			.key(debkey),
			.lcd_data_disp(disp),
			.beep(beep));
			
	lcd_ip U3
			(.clk(clk),
			.rst(reset),
			.data_buf(disp),
			.lcd_rw(lcd_rw),
			.lcd_rs(lcd_rs),
			.lcd_e(lcd_e),
			.lcd_data(lcd_data));
			
endmodule

2.按键消抖模块


1) 说明:这个模块为按键消抖模块,三颗按键;

2) 端口

输入:clk,reset,key;

输出:debkey;

3) 代码

请参考按键消抖

3. LCD模块


1) 说明:这个为LCD1602模块,其中data_buf为256位,每一个格为8位,一共有32个,所以32x8=256;

2) 端口

输入:clk,rst,data_buf;

输出:lcd_e,lcd_rs,lcd_rw,lcd_data;

 3)代码

请参考LCD模块

4.时钟钟功能模块



1) 说明:这个模块为数字钟功能模块,包括数字钟模式模块digitalclk_mode,数字钟时钟模块clock,数字钟闹钟模块alarm,数字钟校时模块adj,数字钟数据处理选择模块disp_sel,还有一个不和谐的闹铃铃声模块beep;

2) 端口

输入:clk,reset,key;

输出:beep,lcd_data_disp;

3) 代码

//数字时钟顶层模块
module digitalclk(clk,reset,key,lcd_data_disp,beep);
	input clk;
	input reset;
	input [2:0]key;
	output [255:0]lcd_data_disp;
	output beep;
	
	wire [2:0]mode;
	wire [255:0]clock_disp,alarm_disp,adj_disp;
	wire [255:0]sync_clock,sync_adj;
	wire alarm_en;
	
	digitalclk_mode U4
			(.clk(clk),
			.reset(reset),
			.key(key),
			.mode(mode));
			
	clock U5
			(.clk(clk),
			.reset(reset),
			.mode(mode),
			.sync_clock(sync_clock),
			.lcd_data_disp(clock_disp));
			
	alarm U6
			(.clk(clk),
			.reset(reset),
			.mode(mode),
			.key(key),
			.lcd_data_disp(alarm_disp));
			
	adj U7
			(.clk(clk),
			.reset(reset),
			.mode(mode),
			.key(key),
			.sync_adj(sync_adj),
			.lcd_data_disp(adj_disp));
	
	disp_sel U8
			(.clk(clk),
			.mode(mode),
			.alarm_disp(alarm_disp),
			.clock_disp(clock_disp),
			.adj_
  • 21
    点赞
  • 132
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值