7 szegmenses kijelzo meghajtasa FPGA-val

hoyuka hoyuka at c2.hu
Sun Jan 29 22:42:55 CET 2006


Haliho!

Most eppen ezen ugykodom. Egyenlore kicsit egyszerubben probalom:
0. ciklus: kijelzes
1. ciklus: kioltas, kovetkezo digit cimzese
Ez a megoldas gondolom tobb "resource"-ot fog hasznalni, mint az eredeti
megoldasom, abban szinte csak kombinacios halo volt.

udv.
hoyuka

Erdos Zoltan said:
> Klasszikus hiba, procis meghajtasnal is be szokott jonni.
> Arrol van szo, hogy mielott digitet leptetsz, a szegmens meghajtast ki
> kell oltani, kulonben "szellemkepes" lesz a kijelzo, azaz a szomszed
> digit is megkapja a jelet egy kis idore.
> A helyes megoldas:
>
> kijelzes
> idozites
> kioltas
> leptetes
> kijelzes... es igy tovabb
>
> Z.
>
> hoyuka wrote:
>
>> Sziasztok,
>>
>> Probalkoztam a dologgal, azt vettem eszre, hogyha megfeleloen leosztom
>> az
>> orajelet, akkor a
>> 3210 sokkal dominansabban (kb. 95%-os fenyero) latszik, mint a
>> 0321  (kb. 5%-os fenyero)
>>
>> Most az osztas ilyen:
>>       reg [10:0] clkCnt;
>> 	wire clk;
>> 	assign clk=clkCnt[10];
>> 	always @(posedge clk0) clkCnt<=clkCnt+1;
>>
>> clk0 frekije 50Mhz.
>>
>> Mi a bubanattol lehet ez? Olyasmire gondolok, hogy amikor a selCnt
>> erteke
>> megvaltozik, akkor az uj erteke joval hamarabb kikerul az adott 7
>> szegmenses cuccosra, mint az uj, szinten selCnt alapjan eloallitott
>> szelektalo jel.
>> Vagy valami kapacitiv moka lehet? Ugy ertem, hogy a szelektalo labak
>> vmiert nagy kapaitasuak, ezert lassu a szelektalas?
>>
>> A design report szerint 13 flip-flop van felhasznalva, ebbol 11 az
>> orajelosztas, 2 a selCnt, tehat ezekken kivul elvileg minden kombinacios
>> halozattal van megvalositva.
>>
>> udv.
>> hoyuka
>>
>> hoyuka said:
>>
>>>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
>>>
>>>-----------------------------------
>>> Szponzorunk: http://tonerbolt.hu/
>>>
>>
>>
>>
>
>
> -----------------------------------
>  Szponzorunk: http://tonerbolt.hu/
>


-- 
http://hoyuka.myip.hu
-------------------------------------
C2 MAIL: A nagy levelez-Õ.  http://mail.c2.hu




More information about the Elektro mailing list