名称:可校准数字时钟设计Verilog代码Quartus仿真
软件:Quartus
语言:Verilog
代码功能:
可校准数字时钟设计
1、功能要求
1.设计一个数字时钟·通过6个数码管分别显示小时、分钟和秒。
2.通过三个按键设置当前时间,一个按键用于暂停和重启,一个按键用于选择六个数码管中的一个:一个按键用于修改数码管的值。按键要做消抖处理。
3.通过串口设置当前时间(选做)。
2、总体设计思路
说明系统的总体设计框架、主要组成模块及模块间时序关系
3、设计步骤
详细给出每个模块的功能、设计方法和源代码,给出整体测试验证结果(仿真、SgnaTap或实测结果),并对结果进行分析说明
4、设计中遇到的主要问题及解决方法
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 设计思路
本设计使用自顶向下的设计思想,采样分模块设计,分为顶层模块、分频模块。按键消抖模块、计时控制模块、数码管显示模块。其中顶层模块将分频模块、按键消抖模块、计时控制模块、数码管显示模块通过模块例化的方式进行连接。分频模块实现50MHz分频到1Hz的功能,按键消抖模块实现按键的消抖处理,计时控制模块通过3个按键控制校时和正常计时,数码管显示模块将时分秒显示到数码管。
2. 工程文件
3. 程序文件
4. 程序编译
5. RTL图
6. Testbench
7. 仿真图
整体仿真图
按键消抖模块
分频模块
计时控制模块
数码管显示模块
部分代码展示:
//数码管显示模块 module?display( input?clk, ????input?[3:0]?hour_10,//时十位 ????input?[3:0]?hour_1,//时个位 ????input?[3:0]?minute_10,//分十位 ????input?[3:0]?minute_1,//分个位 ????input?[3:0]?second_10,//秒十位 ????input?[3:0]?second_1,//秒个位 output??reg?[7:0]?HEX0,//数码管-低亮 output??reg?[7:0]?HEX1,//数码管-低亮 output??reg?[7:0]?HEX2,//数码管-低亮 output??reg?[7:0]?HEX3,//数码管-低亮 output??reg?[7:0]?HEX4,//数码管-低亮 output??reg?[7:0]?HEX5?//数码管-低亮 ); ////////////////////////////////////////////////////段选输出/////////////////////////////////////////// always?@(posedge?clk) begin case?(second_1)??//数字显示码 8'd0:?HEX0<=?8'b1100_0000; 8'd1:?HEX0<=?8'b1111_1001; 8'd2:?HEX0<=?8'b1010_0100; 8'd3:?HEX0<=?8'b1011_0000; 8'd4:?HEX0<=?8'b1001_1001; 8'd5:?HEX0<=?8'b1001_0010; 8'd6:?HEX0<=?8'b1000_0010; 8'd7:?HEX0<=?8'b1111_1000; 8'd8:?HEX0<=?8'b1000_0000; 8'd9:?HEX0<=?8'b1001_0000; default:; endcase end always?@(posedge?clk) begin case?(second_10)??//数字显示码 8'd0:?HEX1<=?8'b1100_0000; 8'd1:?HEX1<=?8'b1111_1001; 8'd2:?HEX1<=?8'b1010_0100; 8'd3:?HEX1<=?8'b1011_0000; 8'd4:?HEX1<=?8'b1001_1001; 8'd5:?HEX1<=?8'b1001_0010; 8'd6:?HEX1<=?8'b1000_0010; 8'd7:?HEX1<=?8'b1111_1000; 8'd8:?HEX1<=?8'b1000_0000; 8'd9:?HEX1<=?8'b1001_0000; default:; endcase end always?@(posedge?clk) begin
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1266