FPGA Praktikum WS2000/2001 1.Woche: Organisation Synthetisierbares VHDL 1. Organisation des Praktikums Das Praktikum Zuordnung: 4 SWS PT3 (P5, P6) Treffen: Mittwochs, 14:00 c.t. Raum 308 Georg-Voigt-Straße 16 Schein: Semesterprojekt Gliederung z 1. Organisation z 2. Die Xilinx Foundation Software z 3. Synthetisierbares VHDL z 4. Aufgaben für die erste Woche Adressen z Kolja Sulimma y kolja@prowokulta.org y Raum 309 y 798-23359 z Till Jahnke y jahnke@hsb.uni-frankfurt.de y 798-24275 z Homepage y http://www.em.informatik.uni-frankfurt.de/~prak/ Ablauf Zeon PDF Driver Trial z Acht wöchentliche Aufgaben y Dabei wird Schritt für Schritt ein Computerspiel mit VGA-Grafik, Tastatursteuerung und Sound gebaut. z Danach acht Wochen Arbeit an einem Semesterprojekt z Kurzvortrag über das Projekt 1
Inhalt Arbeitsbedingungen z 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. y Eigenschaften von FPGAs y Wie entwickelt man effiziente Schaltungen für FPGAs? y Wie kriege ich meine perfekt simulierte Schaltung tatsächlich zum laufen? y Wie steuere ich echte Hardware an? x Monitor? x Tastatur? x Lautsprecher? x Fernbedienung? x Glasfaserlink? Arbeitsbedingungen z Till wird zu festen Zeiten im Diplomandenraum anwesend sein. y Vorläufig mittwochs nach dem Treffen. z Sonst: Fragen per email an Till z Die Aufgaben werden Mittwochs gestellt. z Sie müssen spätestens am folgenden Dienstag abgegeben werden. y per email an prak@em.informatik.uni-frankfurt.de 2. Die Xilinx Foundation Software z Zwei reservierte Praktikumsrechner stehen im Diplomandenraum der Entwurfsmethodik y Mars und Twix z Acht weitere Rechner in den Fischerräumen y Kirke, Kreon,... z Ihr könnt die Software mit nach Hause nehmen y Anforderungen: Pentium 166 mit 64 MB RAM z Es gibt nur sechs Experimentierplatinen Teamarbeit z Da es zu wenige Experimentierplatinen gibt müßt ihr ab der 4. Woche in Teams arbeiten z Einigt euch bitte frühzeitig, wie ihr das organisieren wollt Xilinx Foundation z Die Xilinx Foundation Software erfüllt für uns die folgenden Aufgaben: y VHDL Editor y Synthese y Simulation y Technologieabbildung y Timinganalyse y Erstellung des Konfigurationsbitstreams 2
Xilinx Foundation z Auf der Praktikumshomepage findet ihr eine Anleitung für die Installation der Software. z Zu diesem Zweck bekommt ihr alle eine Installations CD. Eine Update CD folgt später. z Als Aufgabe für die erste Woche sollt Ihr euch mit dieser Software vertraut machen, und sicher stellen, daß die Software einwandfrei funktioniert. Synthetisierbares VHDL z Manche VHDL Konstrukte können die heutigen Synthesewerkzeuge nicht in Hardware Umwandeln. Sie dienen nur der Entwicklung von Verhaltensmodellen. z Da wir VHDL verwenden wollen, um konkrete Schaltungen zu generieren, müssen wir uns mit bestimmten Beschränkungen abfinden. z Einige dieser Einschränkungen sind allgemein gültig, andere sind spezifisch für das von uns verwendete Tool. (Synopsys FPGA Express) VHDL Praxis z Ich gehe davon aus, daß Ihr im Grundpraktikum Technische Informatik bereits VHDL benutzt habt. z Die folgenden Folien erklären die wichtigsten Punkte, die beim Entwickeln von VHDL für Synopsys FPGA Express beachtet werden müssen. 3. Synthetisierbares VHDL Quellen z Ihr solltet euch den in der Linkliste aufgeführten VHDL Synthesis Guide anschauen z 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 z Nützlich ist auch der Language Assistant im VHDL Editor IEEE.std_logic z Die IEEE Bibliothek wird immer verwendet y _1164.all; z Alle Signale sind vom Typ std_logic y SIGNAL xyz: std_logic := '1'; z Variablen werden nur in Ausnahmefällen verwendet. Bei Signalen ist es leichter einen Zusammenhang zwischen VHDL und Syntheseergebnis herzustellen. 3
Parallele Zuweisungen D-Flip-Flops z Signalzuweisungen verhalten sich anders als Variablen in einem Programm. z Was macht der folgende Prozess? process(clk) if (rising_edge(clk)) then b <= a; z a und b werden vertauscht, da Signalzuweisungen infinitesimal verzögert ausgeführt werden. Sensitivitätsliste z Die Sensitivitätsliste wird ignoriert. z Der folgende Prozess liefert zwar eine Fehlermeldung oder Warnung, funktioniert aber einwandfrei y process if (rising_edge(clk)) then DFF Enable z Synopsis versteht keine if Anweisungen, die sowohl von einer Flanke als auch von einem Signalpegel abhängen. z Das folgende Konstrukt ist unzulässig: y if (rising_edge(clk) and enable= 1 )then z Ein Flip-Flop mit Enable sieht stattdessen so aus y if (rising_edge(clk)) then if (enable= 1 ) then z Vergeßt Latches, JK-Flips, etc. z Zustandsspeicher werden mit D-Flip-Flops gebaut und das geht so: y process(clk) if (rising_edge(clk)) then Sensitivitätsliste z Insbesonder kann man die Sensitivitätsliste nicht benutzen, um Funktionalität zu beschreiben. z Der folgende Prozess generiert kein Flip-Flop y process(clk) z Er verhält sich jedoch in einem VHDL Simulator eventuell wie ein Flip-Flop. If not rising_edge(clk) z 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. z 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: y if rising_edge(clk) then a<=b; else if falling_edge(clk) then a<= c; z Statt dessen kann man das else einfach weglassen: y if rising_edge(clk) then a<=b; if falling_edge(clk) then a<=c; 4
Keine asynchronen Rückkopplungen Zustandsreset z Asynchrone Rückkopplungen werden zwar korrekt synthetisiert, machen aber nur Ärger. y Race conditions y Ungenaue Timinganalyse y... z Deshalb sollten ausschließlich synchrone Schaltungen verwendet werden. y In jeder Rückkopplung muß mindestens ein Flip-Flop sein y Möglichst nur ein globaler Takt 4. Aufgaben Aufgabe 1.2: Anmeldung z Schickt eine Mail an prak@em.informatik.uni-frankfurt.de y Vor- und Nachname y Geburtsdatum y Matrikelnummer y Emailadresse y Praktikumsaccount z Die bisher beschriebenen Flip-Flops haben nach einem Reset einen undefinierten Zustand. (In der Regel 0) z Bei Pipelining oder Retiming Flip-Flops spielt das keine Rolle z Bei endlichen Automaten ist es jedoch wichtig, daß sie nach dem Reset im Startzustand sind. Am einfachsten verwendet man dazu ein explizites Reset Signal: z if (reset= 1 ) then a <= 1 ; else if (rising_edge(clk)) then Aufgabe 1.1: Accounts z Logt euch auf einem Praktikumsrechner mit eurem neuen Account ein z Paßwort: frosch z Ändert das Paßwort und merkt es euch Aufgabe 1.3: Software z Arbeitet die Multimedia QuickStart Presentation durch y Start->Programme->Xilinx Foundation Series 3.1i-> y Die Informationen über den Schaltplaneditor könnt Ihr ignorieren y Verwendet XC4010XL-PQ84 Chips anstelle der im Beispiel verwendeten Spartan XCS05 z Wer seinen eigenen Rechner benutzen will sollte das Tutorial auf diesem durchgehen 5
fertig Noch etwas? Fragen? 6