七段显示管
我们要学习7段数码管首先要学习它的工作原理。
共阴极显示管即将其输出全部接地,引脚信号为高时,将会点亮LED;共阳极显示管即输入一个恒定高电平,引脚信号为低时点亮LED(BASYS2开发板上就是使用的这种方法)。
要求在4个7段显示管上显示一个四位的十六进制数,必须满足每位数码管显示的数字可以不同且同时显示。
第一步:十六进制七段译码器
首先,我们从最简单的十六进制7段译码器做起。
module hex7seg_top(sw,a_to_g,an,dp);
input wire[3:0]sw;
output wire[6:0]a_to_g;
output wire[3:0]an; //相当于位选
output wire dp; //小数点
assign an = 4'b0000; //all lights on
assign dp = 1; //dp off
hex7seg u1(.x(sw), //实例化,套用下面的代码
.a_to_g(a_to_g)
);
endmodule
若an = 4’b0001; 则四位数码管只有前三位亮起。(引脚信号为低电平则会点亮LED)
module hex7seg(x,a_to_g);
input wire [3:0]x; //输入的四位十六进制数
output reg [6:0]a_to_g; //数码管七位段选(除小数点)
always@(*)
case(x)
0:a_to_g = 7'b0000001;
1:a_to_g = 7'b1001111;
2:a_to_g = 7'b0010010;
3:a_to_g = 7'b0000110;
4:a_to_g = 7