Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

FPGA Praktikum WS2000/2001 6.Woche: VHDL Tips Ein Schläger für das Spiel.

Ähnliche Präsentationen


Präsentation zum Thema: "FPGA Praktikum WS2000/2001 6.Woche: VHDL Tips Ein Schläger für das Spiel."—  Präsentation transkript:

1 FPGA Praktikum WS2000/2001 6.Woche: VHDL Tips Ein Schläger für das Spiel

2 Zählergrenzen zWieviele Zustände hat der folgende Zähler? zif rising_edge(clk) then if count < 2 then count <= count + 1; else count <= “00“; end if; end if;

3 Zählergrenzen zDer Zähler hat die Zustände 0, 1 und 2, da er beim Zustand 1 (<2) noch um eins weiter zählt. zEinige eurer Abgagen zählen deshalb einen Schritt zu weit. zif rising_edge(clk) then if count < 2 then count <= count + 1; else count <= “00“; end if; end if;

4 Asynchroner Reset zSo sieht die beste Formulierung für einen Aynchronen Reset eines Registers aus: zif reset=‘1‘ then out <= “010010“; else if rising_edge(clk) then out <= in; end if; zDer gewählte Reset Wert wird auch beim Reset-On-Configuration des FPGAs eingestellt.

5 Wieder versteckte Latches zSei count eine 5-Bit Zahl. Anstelle dieses SR-Latches yif count = 8 then-- 5-Bit Vergleich sync <= ‘1‘; -- set latch end if; if count = 16 then -- 5-Bit Vergleich sync <= ‘0‘;-- reset latch end if;  läßt sich diese Logik bauen. yif (count >= 8) and (count <16)then sync <= ‘1‘; else sync <= ‘0‘; end if; zäquivalent dazu ist: ysync <= (not count(4)) and count(3);

6 Aufgaben 6. Woche

7 Aufgabe 6.1 zDiese Woche geht es richtig los, mit dem Bau des Computerspiels. zEs wird ein von der Tastatur gesteuerter Schläger eingeführt. zDa der VHDL Code im Laufe der Wochen immer weiter wachsen wird, sollte er erstmal so umstrukturiert werden, daß er leichter zu handhaben ist. zDie Aufteilung ist im Moment natürlich noch etwas albern, wird aber später hilfreich sein. zMan kann auf diese Weise z.B. Teile der Schaltung getrennt simulieren, was erheblich schneller geht. yMan muß dann natürlich mit dem Simulationskript die Signale die von anderen Komponenten kommen vortäuschen. zAchtet darauf, die richtigen Komponenten zu synthetisieren und zu implementieren!

8 Aufgabe 6.1 - Fortsetzung zTeilt den VHDL Text zunächst in zwei Komponenten auf: z1. VGA Timing Generator z2. Grafikdarstellung Timing v_sync h_syncx y Grafik rgb clk

9 Aufgabe 6.1 - Fortsetzung zDer Timing-Block beinhaltet die Zähler für die x und y Koordinate und generiert die Sync Signale. zDer Grafik Block gibt abhängig von y die Farbstreifen aus. zTestet, ob nach der Aufteilung das Bild noch genauso aussieht wie vorher.

10 Aufgabe 6.2 zErzeugt eine neue Komponente „state“. zDiese gibt bei jedem v_sync impuls eine neue Koordinate racket_x für den Schläger aus. racket_x ist in dieser Aufgabe konstant 100. zErweitert die Grafikkomponente so, daß sie am unteren Bildrand ein 64x8 Pixel Rechteck als Schläger ausgibt zracketx gibt die Position der linken Kante des Schlägers an. Timing v_sync h_sync x y Grafik rgb clk State racketx

11 Aufgabe 6.3 zErzeugt eine neue Komponente „control“. zControl steuert mit zwei signalen „left“ und „right“ an State die Bewegung des Schlägers Timing v_sync h_sync x y Grafik rgb clk State left control right

12 Aufgabe 6.3 - Fortsetzung zState erhöht die x-Position des Schlägers nur dann, wenn das Signal „right“ aktiv ist. zState reduziert die x-Position des Schlägers nur dann, wenn das Signal „left“ aktiv ist. zFalls beide Signale gesetzt sind, ist das Verhalten undefiniert. zDer Schläger muß am linken und rechten Rand anhalten. y(0 < racket_x < 192) yDafür ist die Komponente State verantwortlich zBaut eine control Komponente, die den Schläger hin und her fahren läßt. yz.B. 128 Bilder rechts, 128 Bilder links yDazu kann man einfach einen 8-Bit Zähler laufen lassen, und anhand des obersten Bits entscheiden, ob recht oder links aktiv ist.

13 Aufgabe 6.4 zJetzt wird es ernst: zSchließt die Tastatursignale an control an und denkt daran, das UCF-File zu ergänzen Timing v_sync h_sync x y Grafik rgb clk State kb_clk control kb_data

14 Aufgabe 6.4 - Fortsetzung zFügt euren Tastatur Code aus Woche vier in den control Block ein und modifiziert ihn wie folgt: zWenn die Taste „R ARROW“ oder „Keypad 6“ gedrückt wird, wird das „right“ Signal aktiviert. (Tastenkode 0x74) zWenn die Taste „L ARROW“ oder „Keypad 4“ gedrückt wird, wird das „left“ Signal aktiviert. (Tastenkode 0x6B) zDadurch läßt sich der Schläger von links nach rechts steuern, er bleibt allerdings nicht stehen, wenn man die Taste loslässt.

15 Aufgabe 6.5 - (optional) zUm den Schläger beim Loslassen der Taste anzuhalten, muß der Brakecode ausgewertet werden. zDazu muß das Tastatur schieberegister auf die doppelte länge erweitert werden (22 Bit). zDie Signale „left“ und „right“ werden nur aktiv wenn in der unteren Hälfte des Registers der Code 0x6B oder 0x74 steht, und in der oberen Hälfte nicht der break code 0xF0 steht. zStart und Stop Bits müssen natürlich nach wie vor berücksichtigt werden. zWie wäre es, beim Drücken der „Esc“ Taste (0x76), die anderen Komponenten zu resetten?


Herunterladen ppt "FPGA Praktikum WS2000/2001 6.Woche: VHDL Tips Ein Schläger für das Spiel."

Ähnliche Präsentationen


Google-Anzeigen