0
我想在7段显示器上显示范围从0.0到99.5,步长0.5的数字。 我有3个七段显示器可用,它们连接在一个多路复用器中,所以我有7个针段和3个选择针脚的选择位。 在附上的Verilog代码中,我显示了特定的数字,问题是我不知道如何使 成为一个循环,它将设置特定数字的选择引脚。 有人可以帮我轻松实现吗? 当前的代码只显示零。 我注意到,选择引脚设置和选择寄存器移位,但数字不变。 它总是显示我希望显示的顺序中的最后一位数字。7段MUX不显示想要的数字.- Verilog
module LED_7seg(
input clk,
output segA, segB, segC, segD, segE, segF, segG, segDP,
output dig0, dig1, dig2
);
// cnt is used as a prescaler - fbrd/prescaler
reg [23:0] cnt;
always @(posedge clk) cnt <= cnt+24'h1;
wire cntovf = &cnt;
// BCD is a counter that counts from 0 to 9
reg [3 : 0] BCD;
wire [15 : 0] BCD16;
// set of number
assign BCD16 = 'h350;
reg [2 : 0] Digit;
always @(posedge clk)
begin
if(Digit == 3'h4) begin
Digit <= 3'h1;
end else begin
Digit <= Digit + 3'h2;
end
case(Digit)
3'h1: BCD = BCD16[3 : 0];
3'h2: BCD = BCD16[7 : 4];
3'h4: BCD = BCD16[11 : 8];
default: BCD = BCD16[3 : 0];
endcase
end
reg [7:0] SevenSeg;
always @(*)
case(BCD)
4'h0: SevenSeg = 8'b11111100;
4'h1: SevenSeg = 8'b01100000;
4'h2: SevenSeg = 8'b11011010;
4'h3: SevenSeg = 8'b11110010;
4'h4: SevenSeg = 8'b01100110;
4'h5: SevenSeg = 8'b10110110;
4'h6: SevenSeg = 8'b10111110;
4'h7: SevenSeg = 8'b11100000;
4'h8: SevenSeg = 8'b11111110;
4'h9: SevenSeg = 8'b11110110;
default: SevenSeg = 8'b00000000;
endcase
assign {dig0, dig1, dig2} = Digit;
assign {segA, segB, segC, segD, segE, segF, segG, segDP} = ~SevenSeg;
endmodule
看看'Digit'的模式:0,2,4,1,3,5,1,3,5,1,3,5,...期望的模式是1,2,4,1,2,4,1,2,4,...如何才能实现?提示:不需要添加,可以在一行代码中完成。 – Greg