zerineofdream

FPGA控制的数码显示电路

实现的功能:8个数码管轮流显示8个数字,若频率合适,可以实现8个数码管同时被点亮的视觉效果

1.CL5461AS

CL5461AS 数码管管脚图如下图所示,它将四个数码显示管的a~g 及小数点dp 管脚并联在一起,作为数码管数据输入端;分别引出各个数码管的阴极A1~A4。

只要在A1~A4 管脚上轮流加低电平其频率大于40Hz,可实现四个数码管同时被点亮的视觉效果。在点亮不同数码管的同时输入不同的数据,即可在数码管上同时显示四位不同的数字。

2.驱动八位数码管显示电路框图

3.模块及模块功能

3.1时钟脉冲计数器模块

cnt8模块输入信号为时钟脉冲clk,每遇到一个clk上升沿,内部累加器加1,并把累加器的所得结果以二进制数的形式输出。

 1 module cnt8(clk,cout);
2
3 input clk;
4 output reg [2:0] cout;
5
6 always @(posedge clk)
7 begin
8 if(cout==7)
9 cout<=0;
10 else
11 cout<=cout+1;
12 end
13
14 endmodule

3.2 3-8译码器模块

 

3-8模块的输入端A用于接收时钟脉冲计数器cnt8模块的输出信号,经过译码后,输出信号Q分别接8个数码管的阴极,是对应的数码管阴极为低电平,

对应的数码管被点亮。

 1 module decoder3_8(A,vss);
2
3 input [2:0] A;
4 output reg [7:0] vss;
5
6 always @(A)
7 begin
8 case(A)
9 3\'b000:vss=8\'b11111110;
10 3\'b001:vss=8\'b11111101;
11 3\'b010:vss=8\'b11111011;
12 3\'b011:vss=8\'b11110111;
13 3\'b100:vss=8\'b11101111;
14 3\'b101:vss=8\'b11011111;
15 3\'b110:vss=8\'b10111111;
16 3\'b111:vss=8\'b01111111;
17 endcase
18 end
19
20 endmodule
21

3.3 八选一数据选择模块

 

地址码SEL来自时钟脉冲计数器cnt8,由地址码SEL[2:0]决定输出哪个输入数据,输出信号是Q[3..0].

 1 module SEL81(sel,a,b,c,d,e,f,g,h,Q);
2
3 input [2:0] sel;
4 input [3:0] a,b,c,d,e,f,g,h;
5 output reg [3:0] Q;
6
7 always @(sel)
8 begin
9 case(sel)
10 3\'b000:Q=a;
11 3\'b001:Q=b;
12 3\'b010:Q=c;
13 3\'b011:Q=d;
14 3\'b100:Q=e;
15 3\'b101:Q=f;
16 3\'b110:Q=g;
17 3\'b111:Q=h;
18 endcase
19 end
20 endmodule

3.4 七段译码器模块

DISP 模块是七段译码器,将输入的4 位二进制数转换为数码显示管所对应的数字。DISP 模块输入信号D[3..0]接到八选一数据选择模块的输出信号Q[3..0];

七段译码器输出信号Q[6..0]接数码管的a~g 管脚。

 1 module DISP(D,Q);
2
3 input [3:0] D;
4 output reg [6:0] Q;
5
6 always @(D)
7 begin
8 case(D)
9 4\'b0000:Q=0111111;
10 4\'b0001:Q=0000110;
11 4\'b0010:Q=1011011;
12 4\'b0011:Q=1001111;
13 4\'b0100:Q=1100110;
14 4\'b0101:Q=1101101;
15 4\'b0110:Q=1111101;
16 4\'b0111:Q=0100111;
17 4\'b1000:Q=1111111;
18 default:Q=1101111;
19 endcase
20 end
21 endmodule
22

3.5 整体电路

 1 module DisplayLED(clk,a,b,c,d,e,f,g,h,vss,Q);
2
3 input clk;
4 input [3:0] a,b,c,d,e,f,g,h;
5 output [7:0] vss;
6 output [6:0] Q;
7
8 wire [2:0] cnsel;
9 wire [3:0] qd;
10
11
12
13 cnt8 cnt (.clk(clk),.cout(cnsel));
14 decoder3_8 decoder(.A(cnsel),.vss(vss));
15 SEL81 sel(.sel(cnsel),.a(a),.b(b),.c(c),.d(d),.e(e),.f(f),
16 .g(g),.h(h),.Q(qd));
17 DISP disp(.D(qd),.Q(Q));
18
19 endmodule


 

分类:

技术点:

相关文章:

  • 2021-11-30
  • 2022-12-23
  • 2022-01-12
  • 2021-12-09
  • 2021-06-12
  • 2021-11-18
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-11-12
  • 2022-12-23
  • 2021-04-21
  • 2021-09-22
  • 2021-04-27
  • 2021-12-10
  • 2021-07-29
相关资源
相似解决方案