verilog用数组写一个1到99的数码管显示
时间: 2024-05-29 09:11:33 浏览: 52
module digit_display(input logic [3:0] digit_sel,
output logic [6:0] seg);
logic [6:0] num [99:0];
// 数字0到9对应的数码管显示
assign num[0] = 7'b100_0000; // 0
assign num[1] = 7'b111_1001; // 1
assign num[2] = 7'b010_0100; // 2
assign num[3] = 7'b011_0000; // 3
assign num[4] = 7'b001_1001; // 4
assign num[5] = 7'b001_0010; // 5
assign num[6] = 7'b000_0010; // 6
assign num[7] = 7'b111_1000; // 7
assign num[8] = 7'b000_0000; // 8
assign num[9] = 7'b001_1000; // 9
// 数字10到99的数码管显示
for (int i = 10; i < 100; i = i + 1) begin
int tens = i / 10;
int ones = i % 10;
num[i] = num[tens] | num[ones] << 7;
end
// 数码管选择器
case (digit_sel)
4'b0000: seg = num[0];
4'b0001: seg = num[1];
4'b0010: seg = num[2];
4'b0011: seg = num[3];
4'b0100: seg = num[4];
4'b0101: seg = num[5];
4'b0110: seg = num[6];
4'b0111: seg = num[7];
4'b1000: seg = num[8];
4'b1001: seg = num[9];
default: seg = 7'b111_1111; // 显示空
endcase
endmodule
阅读全文