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