2桁のBCDカウンタを0から99までカウントしようとしています。私が直面している問題は、ボード上の7セグメントの両方のディスペンスが同時。 scenairioは00,11,22 ... 99のようなものです。FPGAの2桁BCDカウンタ
はここで、メインロジックコードです:
module PartD(
output reg[0:6] lcd, //for one particular 7 segment LCD.
input clock,
output reg[0:7] sel // for selecting which LCD to be used
);
integer count=0;
//integer i=0, j=0;
reg[3:0] i, j; //4 bit reg for counting
[email protected](posedge clock)
begin
if(count==100000000) //(100MHz) count till 100M cycles...(1 sec delay)
begin
count = 0;
sel=00000001; //selecting the most significant digit
case (i)
0: lcd = 7'b0000001;
1: lcd = 7'b1001111;
2: lcd = 7'b0010010;
3: lcd = 7'b0000110;
4: lcd = 7'b1001100;
5: lcd = 7'b0100100;
6: lcd = 7'b0100000;
7: lcd = 7'b0001111;
8: lcd = 7'b0000000;
9: lcd = 7'b0000100;
endcase
sel=00000010; //selecting the least significant digit
case (j)
0: lcd = 7'b0000001;
1: lcd = 7'b1001111;
2: lcd = 7'b0010010;
3: lcd = 7'b0000110;
4: lcd = 7'b1001100;
5: lcd = 7'b0100100;
6: lcd = 7'b0100000;
7: lcd = 7'b0001111;
8: lcd = 7'b0000000;
9: lcd = 7'b0000100;
endcase
j = j+1;
if(j>9)
begin
j=0;
i = i+1; //increment i only when j overflows.
if(i>9)
i = 0;
end
end
else count = count + 1;
end
endmodule
両方のディスプレイが一度に変化しているので、いくつかの論理的な誤りがあるようです。どうなり得るか。私はハードウェアの面で考えていない間違いをしていますか?
なぜi、jを整数として持ち、同時に登録しますか? – Laleh
それは間違いだった...それを修正した。 – archity
LCD部品番号は提供できますか?おそらく、毎秒50回の各LCDの更新が必要です。 – alexander