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