Verilog HDL 之 8-3 BCD七段显示译码器
一、原理
7段数码管是利用不同发光段组合的方式来显示不同的数码,为了试数码管能将数码所代表的数显示出来,必须将数码经译码器译出,然后经驱动器点亮对用的段。结构图如下图1.1。 比如要显示数值5,须将a, f, g, c, d各段点亮。
表1.2 3-8译码器真值表
二、实现
在设计文件中输入Verilog代码
1 `timescale 1 ns / 1 ps
2
3 module bcd7seg ( Y ,A );
4
5 input [3:0] A ;
6 wire [3:0] A ;
7
8 output [6:0] Y ;
9 wire [6:0] Y ;
10 assign Y =~Y_r;
11 reg [6:0] Y_r;
12
13 always @(A )
14 begin
15 Y_r = 7'b1111111;
16 case (A )
17 4'b0000: Y_r = 7'b0111111; // 0
18 4'b0001: Y_r = 7'b0000110; // 1
19 4'b0010: Y_r = 7'b1011011; // 2
20 4'b0011: Y_r = 7'b1001111; // 3
21 4'b0100: Y_r = 7'b1100110; // 4
22 4'b0101: Y_r = 7'b1101101; // 5
23 4'b0110: Y_r = 7'b1111101; // 6
24 4'b0111: Y_r = 7'b0000111; // 7
25 4'b1000: Y_r = 7'b1111111; // 8
26 4'b1001: Y_r = 7'b1101111; // 9
27 4'b1010: Y_r = 7'b1110111; // A
28 4'b1011: Y_r = 7'b1111100; // b
29 4'b1100: Y_r = 7'b0111001; // c
30 4'b1101: Y_r = 7'b1011110; // d
31 4'b1110: Y_r = 7'b1111001; // E
32 4'b1111: Y_r = 7'b1110001; // F
33 default: Y_r = 7'b0000000;
34 endcase
35 end
36
37 endmodule