您好,登录后才能下订单哦!
这篇文章给大家介绍数码管显示电路的Verilog HDL实现是怎样的呢,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
假设位选信号为低有效,当位选有效时,段选为0时对应的二极管段被点亮。则用FPGA控制4位8段数码管分别显示数字1、2、3、4的程序如下:
位选1 为低时(其它位选都为高),第一位数码管被选中,此时的共用段选用于第一位数码管的显示;位选2 为低时(其它位选都为高),第二位数码管被选中,此时的共用段选用于第二位数码管的显示,三、四位数码管的显示依次类推。在一个刷新周期T 内,每位数码管都有1/4T 周期的时间被刷新。为了保证所有4 位数码管的显示不闪烁,一般刷新频率要大于5Hz。在一个周期中,虽然每位数码管会有3/4T 的时间不被点亮,但位选刷新的速度较快,同时由于数码管自身的余辉特性,每位数码管在变暗之前就又会被重新刷新,因此人眼无法感觉到数码管变暗。如果刷新的频率小于一定值(如45Hz),则人眼就会感觉到数码管的闪烁。一般刷新频率在60Hz 到1KHz 之间时,多位数码管显示得比较理想。
module LED_Display(
clk,seg,dq,an
);
input clk;
output [6:0]seg;//phase select:consist of ABCDEFG
output dq;//little point
output [3:0]an;//bit select
reg [15:0]count_for_clk=0;//65536
reg [6:0]seg_reg;
reg [3:0]an_reg;
assign seg=seg_reg;
assign an=an_reg;
assign dq=1;
parameter zero=7'b100_0000,//G=1
one=7'b111_1001,
two = 7'b010_0100,
three= 7'b011_0000,
four = 7'b001_1001,
five = 7'b001_0010,
six = 7'b000_0010,
seven= 7'b111_1000,
eight= 7'b000_0000,
nine = 7'b001_0000;
always @ (posedge clk)//fractional frequency counter
begin
count_for_clk<=count_for_clk+1;
end
always@(posedge clk)
begin
case(count_for_clk[15:14])
0:an_reg<=4'b0111;
1:an_reg<=4'b1011;
2:an_reg<=4'b1101;
3:an_reg<=4'b1110;
endcase
end
always@(posedge clk)
begin
case(count_for_clk[15:14])
0: seg_reg<=one;
1: seg_reg<=two;
2: seg_reg<=three;
3: seg_reg<=four;
endcase
end
endmodule
关于数码管显示电路的Verilog HDL实现是怎样的呢就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。