7 szegmenses kijelzo meghajtasa FPGA-val

hoyuka hoyuka at c2.hu
Sun Jan 29 20:30:42 CET 2006


Sziasztok!

Jo egyszerunek kinezo feladat, megis szopok vele vagy fel napja. A
Spartan3 starter kit-en talalhato 4db. 7 szegmenses kijelzorol van szo.
Biztosan megint valami nagyon alapveto dolgot neztem el.
Itt a forras, utanna leirom, hogy hogyan mukodik (hibasan):

module Seven(clk0, select, seven, dot);
	input wire clk0;
	output wire [3:0] select;   // ez valasztja ki a 7 szegmenses kijelzot
	output wire [6:0] seven;    // ez van rakotve a szegmensekre
	output wire dot;            // ez a pont szegmensre

      // itt orajelet osztok le, hogy konyebb legyen merni
	reg [3:0] clkCnt;
	wire clk;
	assign clk=clkCnt[3];
	always @(posedge clk0) clkCnt<=clkCnt+1;

      // ez a szamlalo cimzi meg az adott 7 szegmensest
      reg [1:0] selCnt;

      // ez a dekoder selCnt alapjan kivalasztja a 4 kijelzo egyiket
	decoder dd(selCnt, select);

      // ez meg a selCnt erteket (0,1,2,3) konvertalja 7 szegmenses ertekke
      BCD2Seven b2s({2'b00,selCnt},seven);

      assign dot=1;   // a tizedespont sosem vilagit (aktiv 0-as meghajtas)

      // selCnt-et minden orajelben novelem, ez cimzi meg az adott 7
      // szegmensest
	always @(posedge clk) selCnt<=selCnt+1;

	initial begin
		selCnt=0;   // nullazom, bar felesleges szerintem
	end

endmodule

// dekoder, az adott 7 szegmenses kijelzo szelektalasara szolgal
module decoder(in,out);
	input  wire[1:0] in;
	output reg [3:0] out;

	always @(in) begin
		case (in)
			0: out='b1110;
			1: out='b1101;
			2: out='b1011;
			3: out='b0111;
		endcase
	end
endmodule

// kombinacios halo: 4bit binaris -> 7 szegmenses hexa szam
module BCD2Seven(BCD, seven);

    input wire [3:0] BCD;
    output reg [6:0] seven;

    always @(BCD) begin
        case (BCD)
                       //gfedcba
            0:  seven=~'b0111111;
            1:  seven=~'b0000110;
            2:  seven=~'b1011011;
            3:  seven=~'b1001111;
            4:  seven=~'b1100110;
            5:  seven=~'b1101101;
            6:  seven=~'b1111101;
            7:  seven=~'b0100111;
                       //gfedcba
            8:  seven=~'b1111111;
            9:  seven=~'b1101111;
            10: seven=~'b1110111;	// a
            11: seven=~'b1111100;	// b
            12: seven=~'b0111001;	// c
            13: seven=~'b1011110;	// d
            14: seven=~'b1111001;	// e
            15: seven=~'b1110001;	// f
        endcase
    end
endmodule

Ok, ennyi a kod. Ennek szerintem azt kellene csinalnia, hogy a 7szegmenses
kijelzokon megjeleniti ezt:
3210

Es szerintem azt csinalja, hogy nagyon gyorsan valtogatva ezt a ket
erteket jeleniti meg:
3210
0321
Na ez mi a bubanattol lehet??????

udv.
hoyuka

-- 
http://hoyuka.myip.hu
-------------------------------------
C2 MAIL: Levelezés felsõfokon. http://mail.c2.hu




More information about the Elektro mailing list