当前位置:   article > 正文

基于FPGA的多功能数字钟设计Verilog代码ISE开发板_基于fpga的数字钟设计verilog

基于fpga的数字钟设计verilog

名称:基于FPGA的多功能数字钟设计Verilog代码ISE开发板(文末获取)

软件:Quartus

语言:Verilog

代码功能:

1.能显示时分秒,最大可显示23:59:59,时间可调,可以复位

2.可以定时闹钟,闹钟有铃声

3.数字钟能实现整点报时功能

本代码已在开发板验证,开发板如下,其他开发板可以修改管脚适配:

开发板.jpg

部分代码展示:

module display(
input clk,
input [3:0] state_mode,当前模式,4'd0:计时,4'd1设置时间 ,4'd2显示闹钟时间,4'd3设置闹钟时间
input [7:0] alarm_hour_time,//闹钟时
   input [7:0] alarm_minute_time,//闹钟分
   input [7:0] alarm_second_time,//闹钟秒
input [7:0] hour_time,//时
input [7:0] minute_time,//分
input [7:0] second_time,//秒
output reg [7:0] bit_select,//数码管位选
   output reg [7:0] seg_select//数码管段选
);
reg [3:0]display = 4'b0000; 
reg [31:0]select_num =32'd0;
reg [2:0]geshu = 3'd0;
reg [7:0] display_hour_time;//显示时
reg [7:0] display_minute_time;//显示分
reg [7:0] display_second_time;//显示秒
always@(posedge clk)
case(state_mode)
4'd0,4'd1:
begin//4'd0:计时,4'd1设置时间
display_hour_time<=hour_time;//显示时
display_minute_time<=minute_time;//显示分
display_second_time<=second_time;//显示秒
end
4'd2,4'd3:
begin//4'd2显示闹钟时间,4'd3设置闹钟时间
display_hour_time<=alarm_hour_time;//显示时
display_minute_time<=alarm_minute_time;//显示分
display_second_time<=alarm_second_time;//显示秒
end
default:;
endcase
位选
always @(posedge clk )  //扫描频率
begin
if(select_num == 32'd99_999)  
begin
select_num <= 32'd0; 
end 
else begin
select_num <=select_num +1'd1; //扫描频率计时数字
end
end
always @(posedge clk )  
begin
if(select_num == 32'd99_999)
begin
if(geshu == 3'd7)
begin
geshu <= 3'd0;
end
else begin
geshu <= geshu + 1'd1;    //扫描那个管子的指示位
end
end
end
always @(posedge clk )  //位选切换
begin
case (geshu)
3'd0:
begin
bit_select<=~8'b01111111;
display<= display_second_time %8'd10;//秒个位
end
3'd1:
begin 
bit_select<=~8'b10111111;
display <= display_second_time /8'd10;//秒十位
end
3'd2:
begin //显示-
bit_select<=~8'b11011111;
display <= 4'd10;
end 
3'd3:
begin 
bit_select<=~8'b11101111;
display <= display_minute_time %8'd10;//分个位
end    
3'd4:
begin
bit_select<=~8'b11110111;
display <= display_minute_time /8'd10;//分十位
end
3'd5:
begin //显示-
bit_select<=~8'b11111011;
display <= 4'd10;
end
3'd6:
begin
bit_select<=~8'b11111101;
display <= display_hour_time %8'd10;//时个位
end
3'd7:
begin
bit_select<=~8'b11111110;
display <= display_hour_time /8'd10;//时十位
end
default:;
endcase
end 
段选输出///
always @(posedge clk)
begin
case (display)  //数字显示码
4'd0: seg_select<= ~8'b1100_0000;
4'd1: seg_select<= ~8'b1111_1001;
4'd2: seg_select<= ~8'b1010_0100;
4'd3: seg_select<= ~8'b1011_0000;
4'd4: seg_select<= ~8'b1001_1001;
4'd5: seg_select<= ~8'b1001_0010;
4'd6: seg_select<= ~8'b1000_0010;
4'd7: seg_select<= ~8'b1111_1000;
4'd8: seg_select<= ~8'b1000_0000;
4'd9: seg_select<= ~8'b1001_0000;
4'd10: seg_select<=~8'b1011_1111;
default:;
endcase
end
endmodule
源代码

 扫描文章末尾的公众号二维码

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/796645
推荐阅读
相关标签
  

闽ICP备14008679号