概述
module test(seg,dig,clk,rst,key);
input clk;
input rst;
input key;
output [7:0] seg; //数码管段码输出
output [7:0] dig; //数码管位码输出
reg clk_1s;
reg [7:0]seg;//定义段码寄存器
reg [3:0]dig;//定义位码寄存器
reg [24:0]cnt_1s;
reg [36:0]cnt;
reg [1:0]state;
reg [3:0]qianwei_reg,baiwei_reg,shiwei_reg,gewei_reg;
reg [7:0]qianwei_code;
reg [7:0]baiwei_code;
reg [7:0]shiwei_code;
reg [7:0]gewei_code;
always@(posedge clk)//分频出周期为1s的信号
begin
cnt<=cnt+1'b1;
if(cnt==25'd25000000)begin cnt<=1'b0; clk_1s=~clk_1s; end
//使用的是50MHZ;计数0.5秒需要次数为:0.5/50MHZ=25000000;
end
always@(posedge clk_1s)
begin
cnt_1s<=cnt_1s+1'b1;
if(cnt_1s==25'd9999)cnt_1s<=1'b0;
end
always@(cnt_1s)//计数器 1s
begin
qianwei_reg=cnt_1s/1000;
baiwei_reg=cnt_1s%1000/100;
shiwei_reg=cnt_1s%100/10;
gewei_reg=cnt_1s%10;
end
always@(gewei_reg)
case(gewei_reg)
4'h0:gewei_code<=8'hc0;
4'h1:gewei_code<=8'hf9;
4'h2:gewei_code<=8'ha4;
4'h3:gewei_code<=8'hb0;
4'h4:gewei_code<=8'h99;
4'h5:gewei_code<=8'h92;
4'h6:gewei_code<=8'h82;
4'h7:gewei_code<=8'hf8;
4'h8:gewei_code<=8'h80;
4'h9:gewei_code<=8'h90;
endcase
always@(shiwei_reg)
case(shiwei_reg)
4'h0:shiwei_code<=8'hc0;
4'h1:shiwei_code<=8'hf9;
4'h2:shiwei_code<=8'ha4;
4'h3:shiwei_code<=8'hb0;
4'h4:shiwei_code<=8'h99;
4'h5:shiwei_code<=8'h92;
4'h6:shiwei_code<=8'h82;
4'h7:shiwei_code<=8'hf8;
4'h8:shiwei_code<=8'h80;
4'h9:shiwei_code<=8'h90;
endcase
always@(baiwei_reg)
case(baiwei_reg)
4'h0:baiwei_code<=8'hc0;
4'h1:baiwei_code<=8'hf9;
4'h2:baiwei_code<=8'ha4;
4'h3:baiwei_code<=8'hb0;
4'h4:baiwei_code<=8'h99;
4'h5:baiwei_code<=8'h92;
4'h6:baiwei_code<=8'h82;
4'h7:baiwei_code<=8'hf8;
4'h8:baiwei_code<=8'h80;
4'h9:baiwei_code<=8'h90;
endcase
always@(qianwei_reg)
case(qianwei_reg)
4'h0:qianwei_code<=8'hc0;
4'h1:qianwei_code<=8'hf9;
4'h2:qianwei_code<=8'ha4;
4'h3:qianwei_code<=8'hb0;
4'h4:qianwei_code<=8'h99;
4'h5:qianwei_code<=8'h92;
4'h6:qianwei_code<=8'h82;
4'h7:qianwei_code<=8'hf8;
4'h8:qianwei_code<=8'h80;
4'h9:qianwei_code<=8'h90;
endcase
always@(posedge cnt[15])
begin
case(state[1:0])
2'h0:begin seg=gewei_code;dig<=4'b1110;state<=state+1'b1;end
2'h1:begin seg=shiwei_code;dig<=8'b1101;state<=state+1'b1;end
2'h2:begin seg=baiwei_code;dig<=8'b1011;state<=state+1'b1;end
2'h3:begin seg=qianwei_code;dig<=8'b0111;state<=state+1'b1;end
endcase
end
endmodule
最后
以上就是贪玩天空为你收集整理的FPGA:0~9999数码管计数的全部内容,希望文章能够帮你解决FPGA:0~9999数码管计数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复