31
FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

Embed Size (px)

Citation preview

Page 1: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

FPGA Praktikum WS2000/2001

1.Woche:OrganisationSynthetisierbares VHDL

Page 2: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

Gliederung

1. Organisation 2. Die Xilinx Foundation Software 3. Synthetisierbares VHDL 4. Aufgaben für die erste Woche

Page 3: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

1. Organisation des Praktikums

Page 5: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

Das Praktikum

Zuordnung: 4 SWS PT3 (P5, P6)

Treffen:Mittwochs, 14:00 c.t.Raum 308Georg-Voigt-Straße 16

Schein: Semesterprojekt

Page 6: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

Ablauf

Acht wöchentliche Aufgaben Dabei wird Schritt für Schritt ein Computerspiel mit

VGA-Grafik, Tastatursteuerung und Sound gebaut.

Danach acht Wochen Arbeit an einem Semesterprojekt

Kurzvortrag über das Projekt

Page 7: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

Inhalt

Wir fangen erst mit ein paar Trockenübungen und Vorträgen an und werden dann im Laufe der Zeit immer mehr mit der Hardware spielen. Eigenschaften von FPGAs Wie entwickelt man effiziente Schaltungen für FPGAs? Wie kriege ich meine perfekt simulierte Schaltung tatsächlich

zum laufen? Wie steuere ich echte Hardware an?

Monitor? Tastatur? Lautsprecher? Fernbedienung? Glasfaserlink?

Page 8: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

Arbeitsbedingungen

Zwei reservierte Praktikumsrechner stehen im Diplomandenraum der Entwurfsmethodik Mars und Twix

Acht weitere Rechner in den Fischerräumen Kirke, Kreon, ...

Ihr könnt die Software mit nach Hause nehmen Anforderungen: Pentium 166 mit 64 MB RAM

Es gibt nur sechs Experimentierplatinen

Page 9: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

Arbeitsbedingungen

Till wird zu festen Zeiten im Diplomandenraum anwesend sein. Vorläufig mittwochs nach dem Treffen.

Sonst: Fragen per email an Till Die Aufgaben werden Mittwochs gestellt. Sie müssen spätestens am folgenden Dienstag

abgegeben werden. per email an [email protected]

Page 10: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

Teamarbeit

Da es zu wenige Experimentierplatinen gibt müßt ihr ab der 4. Woche in Teams arbeiten

Einigt euch bitte frühzeitig, wie ihr das organisieren wollt

Page 11: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

2. Die Xilinx Foundation Software

Page 12: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

Xilinx Foundation

Die Xilinx Foundation Software erfüllt für uns die folgenden Aufgaben: VHDL Editor Synthese Simulation Technologieabbildung Timinganalyse Erstellung des Konfigurationsbitstreams

Page 13: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

Xilinx Foundation

Auf der Praktikumshomepage findet ihr eine Anleitung für die Installation der Software.

Zu diesem Zweck bekommt ihr alle eine Installations CD. Eine Update CD folgt später.

Als Aufgabe für die erste Woche sollt Ihr euch mit dieser Software vertraut machen, und sicher stellen, daß die Software einwandfrei funktioniert.

Page 14: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

3. Synthetisierbares VHDL

library IEEE;use IEEE.std_logic

entity HEX2LED is port ( HEX: in ST LED: out S );end HEX2LED;

Page 15: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

Synthetisierbares VHDL

Manche VHDL Konstrukte können die heutigen Synthesewerkzeuge nicht in Hardware Umwandeln. Sie dienen nur der Entwicklung von Verhaltensmodellen.

Da wir VHDL verwenden wollen, um konkrete Schaltungen zu generieren, müssen wir uns mit bestimmten Beschränkungen abfinden.

Einige dieser Einschränkungen sind allgemein gültig, andere sind spezifisch für das von uns verwendete Tool. (Synopsys FPGA Express)

library IEEE;use IEEE.std_logic

entity HEX2LED is port ( HEX: in ST LED: out S );end HEX2LED;

Page 16: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

Quellen

Ihr solltet euch den in der Linkliste aufgeführten „VHDL Synthesis Guide“ anschauen

Er enthält detaillierte Informationen darüber, wie VHDL für Foundation aussehen muß, damit bei der Synthese auch das herauskommt, was man geplant hatte

Nützlich ist auch der Language Assistant im VHDL Editor

library IEEE;use IEEE.std_logic

entity HEX2LED is port ( HEX: in ST LED: out S );end HEX2LED;

Page 17: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

VHDL Praxis

Ich gehe davon aus, daß Ihr im „Grundpraktikum Technische Informatik“ bereits VHDL benutzt habt.

Die folgenden Folien erklären die wichtigsten Punkte, die beim Entwickeln von VHDL für Synopsys FPGA Express beachtet werden müssen.

library IEEE;use IEEE.std_logic

entity HEX2LED is port ( HEX: in ST LED: out S );end HEX2LED;

Page 18: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

IEEE.std_logic

Die IEEE Bibliothek wird immer verwendet library IEEE;use IEEE.std_logic_1164.all;

Alle Signale sind vom Typ std_logic SIGNAL xyz: std_logic := '1';

Variablen werden nur in Ausnahmefällen verwendet. Bei Signalen ist es leichter einen Zusammenhang zwischen VHDL und Syntheseergebnis herzustellen.

library IEEE;use IEEE.std_logic

entity HEX2LED is port ( HEX: in ST LED: out S );end HEX2LED;

Page 19: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

Parallele Zuweisungen

Signalzuweisungen verhalten sich anders als Variablen in einem Programm.

Was macht der folgende Prozess?process(clk) if (rising_edge(clk)) then a <= b; b <= a; end if;end process;

a und b werden vertauscht, da Signalzuweisungen infinitesimal verzögert ausgeführt werden.

library IEEE;use IEEE.std_logic

entity HEX2LED is port ( HEX: in ST LED: out S );end HEX2LED;

Page 20: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

D-Flip-Flops

Vergeßt Latches, JK-Flips, etc. Zustandsspeicher werden mit D-Flip-Flops gebaut

und das geht so: process(clk) if (rising_edge(clk)) then a <= b; end if;end process;

library IEEE;use IEEE.std_logic

entity HEX2LED is port ( HEX: in ST LED: out S );end HEX2LED;

Page 21: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

Sensitivitätsliste

Die Sensitivitätsliste wird ignoriert. Der folgende Prozess liefert zwar eine

Fehlermeldung oder Warnung, funktioniert aber einwandfrei process if (rising_edge(clk)) then a <= b; end if;end process;

library IEEE;use IEEE.std_logic

entity HEX2LED is port ( HEX: in ST LED: out S );end HEX2LED;

Page 22: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

Sensitivitätsliste

Insbesonder kann man die Sensitivitätsliste nicht benutzen, um Funktionalität zu beschreiben.

Der folgende Prozess generiert kein Flip-Flop process(clk) a <= b;end process;

Er verhält sich jedoch in einem VHDL Simulator eventuell wie ein Flip-Flop.

library IEEE;use IEEE.std_logic

entity HEX2LED is port ( HEX: in ST LED: out S );end HEX2LED;

Page 23: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

DFF Enable

Synopsis versteht keine if Anweisungen, die sowohl von einer Flanke als auch von einem Signalpegel abhängen.

Das folgende Konstrukt ist unzulässig: if (rising_edge(clk) and enable=‘1‘)then a <= b;end if;

Ein Flip-Flop mit Enable sieht stattdessen so aus if (rising_edge(clk)) then if (enable=‘1‘) then a <= b; end if;end if;

library IEEE;use IEEE.std_logic

entity HEX2LED is port ( HEX: in ST LED: out S );end HEX2LED;

Page 24: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

If not rising_edge(clk) Schreibt man if rising_edge(CLK) ... dann ist ein zugehöriges else

ungültig, da die Synthese keine Schaltung erzeugen kann, die ein Signal immer zuweist, außer bei der steigenden Flanke.

Die Synthese akzeptiert das else auch dann nicht, wenn danach statements kommen, die die Synthese ermöglichen würden, wie z.B. im folgenden Beispiel: if rising_edge(CLK) then

a<=b;else if falling_edge(CLK) then a<= c;end if;

Statt dessen kann man das else einfach weglassen: if rising_edge(CLK) then

a<=b;end if;if falling_edge(CLK) then a<=c;end if;

library IEEE;use IEEE.std_logic

entity HEX2LED is port ( HEX: in ST LED: out S );end HEX2LED;

Page 25: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

Keine asynchronen Rückkopplungen

library IEEE;use IEEE.std_logic

entity HEX2LED is port ( HEX: in ST LED: out S );end HEX2LED;

Asynchrone Rückkopplungen werden zwar korrekt synthetisiert, machen aber nur Ärger. Race conditions Ungenaue Timinganalyse ....

Deshalb sollten ausschließlich synchrone Schaltungen verwendet werden. In jeder Rückkopplung muß mindestens ein Flip-Flop

sein Möglichst nur ein globaler Takt

Page 26: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

Zustandsreset

Die bisher beschriebenen Flip-Flops haben nach einem Reset einen undefinierten Zustand. (In der Regel 0)

Bei Pipelining oder Retiming Flip-Flops spielt das keine Rolle

Bei endlichen Automaten ist es jedoch wichtig, daß sie nach dem Reset im Startzustand sind. Am einfachsten verwendet man dazu ein explizites Reset Signal:

if (reset=‘1‘) then a <= ‘1‘;else if (rising_edge(clk)) then a <= b;end if;

library IEEE;use IEEE.std_logic

entity HEX2LED is port ( HEX: in ST LED: out S );end HEX2LED;

Page 27: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

4. Aufgaben

Page 28: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

Aufgabe 1.1: Accounts

Logt euch auf einem Praktikumsrechner mit eurem neuen Account ein

Paßwort: frosch Ändert das Paßwort und merkt es euch

Page 30: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

Aufgabe 1.3: Software

Arbeitet die „Multimedia QuickStart Presentation“ durch Start->Programme->Xilinx Foundation Series 3.1i-> Die Informationen über den Schaltplaneditor könnt Ihr

ignorieren Verwendet XC4010XL-PQ84 Chips anstelle der im

Beispiel verwendeten Spartan XCS05

Wer seinen eigenen Rechner benutzen will sollte das Tutorial auf diesem durchgehen

Page 31: FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL

fertig

Noch etwas?Fragen?