2 farklı 7 segment göstergesinde 3 fpga bassında 4-bit sayıcı göstermeye çalışıyorum. Basys 3 fpga, farklı anotlu 4 farklı 7 segment ekrana sahip, ancak ekran ışığını aydınlatmak için ortak katotlarla geliyor. Ekranlarda iki farklı değer gösteremiyorum.4-bit 0 - 15 arası sayaç görüntülemek için 2 farklı 7 segment ekranı kullanma
Sonunda, 4 farklı 7 ekran parçasını kullanarak 0000 ila 9999 sayacı oluşturmam gerekiyor, bu yüzden onaltılık sayımı kullanmak benim için çalışmaz.
LütfenYardım edin.
Kodu:
module counter(
input press,
input clock,
output reg [6:0] seg,
output reg [3:0] an
);
reg [3:0]count = 4'b0000;
wire pulse;
// Don't need to worry about the exact code in this function call
singlepulse sp(clock,press,pulse);
always @(posedge pulse) begin
count <= count + 1;
end
integer k;
reg [3:0]ones=0;
reg [3:0]tenths=0;
//convert binary to BCD
always @(count)
begin
ones = 4'd0;
tenths = 4'd0;
for (k=4; k>=0; k=k-1) begin
if(tenths>=5) tenths=tenths+3;
if(ones>=5) ones=ones+3;
tenths=tenths<<1;
tenths[0]=ones[3];
ones=ones<<1;
ones[0]=count[k];
end
end
always @(posedge clock) begin
// Here is the problem, if I let an=4'b1110 only the first display will light up
// If I let an=4'b1100 both display light shows the same number instead of the correct number
// How should I make it such that both displays shows different number at the same time?
case (ones)
0 : seg=7'b100_0000;
1 : seg=7'b111_1001;
2 : seg=7'b010_0100;
3 : seg=7'b011_0000;
4 : seg=7'b001_1001;
5 : seg=7'b001_0010;
6 : seg=7'b000_0010;
7 : seg=7'b111_1000;
8 : seg=7'b000_0000;
9 : seg=7'b001_0000;
endcase
case (tenths)
0 : seg=7'b100_0000;
1 : seg=7'b111_1001;
2 : seg=7'b010_0100;
3 : seg=7'b011_0000;
4 : seg=7'b001_1001;
5 : seg=7'b001_0010;
6 : seg=7'b000_0010;
7 : seg=7'b111_1000;
8 : seg=7'b000_0000;
9 : seg=7'b001_0000;
endcase
end
endmodule // counter
Teşekkür
Bir an önce hata, farklı durum ifadeleri aracılığıyla tek bir blokta iki farklı "seg" değerine ihtiyacınız olmasıdır. Mevcut kod, 'seg' * * değerlerinin üzerine yazacaktır. İki çıkış değişkeni kullanın ya da "konum" için "seg [0]" tuşunu kullanın ve onlar için "seg [1]" tuşunu kullanın. Bu, hata sebebi olabilir veya olmayabilir, ancak kesinlikle mantıklı bir hatadır. – sharvil111
Hatanın farkındayım, ancak üsler 3 yalnızca katotlar için 7 girişe ve anot için 4 farklı 7 segment göstergesini kontrol etmek için 4 girişe sahiptir. Sadece bir ay boyunca verilogu öğrendim ve problemi çözmek için başka daha iyi yollar bilmiyorum. – David