rof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 1/32 Entwurf digitaler Schaltungen Laborübung 2: VHDL und FPGAs Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014
rof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 2/32 Hardware-Programmierung Heutiger Stand der Technik für den Entwurf digitaler Schaltungen ist die Beschreibung der Zielfunktion in einer Hardware-Beschreibungssprache. Simulation auf dem Rechner. Prototyp-Fertigung mit programmierbaren Logikschaltkreisen (FPGA eld programmable gate array). FPGAs bestehen aus programmierbaren Logikblöcken, programmierbaren EA-Schaltungen, einem programmierbaren Verbindungsnetzwerk und optional weiteren kongurierbaren Schaltungsblöcken, z.b. Blockspeichern, Multiplizierern, Taktversorgung und Prozessorkernen. Programmierung ähnlich wie bei Mikrorechnern über eine serielle Programmierschnittstelle (JTAG, ISP,...). Programmierdauer wenige Minuten.
Prototyp-Plattform für die Laborübungen IO PLB PLB IO IO PLB PLB PLB IO programmierbarer Logikblock programmierbares Verbindungsnetzwerk programmierbare Eingabe-Ausgabe-Schaltung Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 3/32
Das verwendete Prototypboard hat einen programmierbaren Schaltkreis für Schaltungen, die mit normalen Schaltkreisen bis zu 10 6 Gatter umfassen können, 50MHz Quarztakt, 8 Leuchtdioden, 4 7-Segment-Anzeigen, 8 Schalter, 4 Taster, 1MB SRAM, Anschlüsse für PS2, UART und VGA. Ausreichend für alles, was im Studium vermittelbar ist. rof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 4/32
1. Einfache Gatterschaltung Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 5/32 Einfache Gatterschaltung
1. Einfache Gatterschaltung Einprogrammieren von Logikfunktionen Schalter programmierbarer Schaltkreis Leuchtdioden SW0 SW1 F12 G12 & K12 LD0 SW2 SW3 H14 H13 & P14 LD1 SW4 SW5 J14 J13 1 L12 LD2 SW6 SW7 K14 K13 =1 N14 LD3 Im ersten Beispiel sollen vier Gatter so einprogrammiert werden, dass die Eingänge von Schaltern steuer- und die Ausgänge mit LEDs beobachtbar sind. Die Kästchen mit F12 etc. sind die Bezeichner der Schaltkreisanschlüsse, an denen die Schalter und LEDs auf der Baugruppe angeschlossen sind. Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 6/32
1. Einfache Gatterschaltung Eine VHDL-Beschreibung besteht aus Schnittstellenbeschreibung: entity Gatterschaltung is port(sw: in std_logic_vector(7 downto 0); led: out std_logic_vector(3 downto 0)); end entity; und einer Beschreibung der Realisierung architecture test of Gatterschaltung is begin led(0) <= sw(0) and sw(1); led(1) <= sw(2) nand sw(3); led(2) <= sw(4) or sw(5); led(3) <= sw(6) xor sw(7); end architecture; SW0 SW1 SW2 SW3 SW4 SW5 SW6 SW7 F12 G12 H14 H13 J14 J13 K14 K13 Die Schnittstelle deniert für die Anschlüsse Bezeichner, Flussrichtungen (Ein-/Ausgang) und Datentyp. In der Realisierung stehen im Beispiel Zuweisungen logischer Verknüpfungen von Eingabesignalen an Ausgabesignale. Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 7/32 & & 1 =1 K12 P14 L12 N14 LD0 LD1 LD2 LD3
1. Einfache Gatterschaltung Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 8/32 Entwurfsvorbereitung Zip-Datei EDS-Ue2.zip runterladen und entpacken. Mit dem Web-Browser diesen Foliensatz önen. Xilinx ISE önen (Icon rechts). Fenster What's New... und Tip of the Day schlieÿen. (Project Navigator) File Open Project <entpacktes Archiv> Logikrechner Logikrechner.xise auswählen. (Hierarchie-Fenster).../Logikrechner.vhd auswählen, mit Doppelklick önen. Schaltungsbeschreibung kontrollieren.
1. Einfache Gatterschaltung Im Fenster unten links sind für das ausgewählte Entwurfsobjekt Logikrechner die verfügbaren Bearbeitungswerkzeuge angezeigt. Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 9/32 Editier- und Werkzeugansicht
1. Einfache Gatterschaltung Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 10/32 Das Constraint-File Doppelklick auf Edit Constraints (Text) önen. Die Constraint-Datei enthält alle zusätzlichen Informationen zur Vorgabe der Zielfunktion, die nicht in der VHDL-Datei stehen: die Pin-Namen der Schaltungsanschlüssen (s.o.), Taktfrequenz,...
1. Einfache Gatterschaltung (Hierarchie-Fenster).../Logikrechner.vhd auswählen; (Processes) mit Doppelklick auf Generate Programming File (Synthese, Platzierung,..). Congure Target Device... aufklappen (Processes) Doppelklick auf Manage Conguration Project (impact) (impact) Doppelklick auf Boundary Scan (Boundary Scan) Rechtsklick auf (Right click...) Initialize Chain. Auto Assign... Yes. Für xc3s1000 logikrechner.bit im Verzeichnis Logikrechner auswählen; Open. Für xcf04s Bypass auswählen, danach nur OK. Rechtsklick auf den Chip xc3s1000 Program. Ausprobieren: Schaltereinstellungen vornehmen und LED-Anzeige kontrollieren. Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 11/32 Übersetzen, Programmieren und Ausprobieren
1. Einfache Gatterschaltung Das Syntheseergebnis: Synthesize View RTL Schematic: sw(7:0) I I I I I I I I ibuf sw 0 IBUF ibuf sw 1 IBUF ibuf sw 2 IBUF ibuf sw 3 IBUF ibuf sw 4 IBUF ibuf sw 5 IBUF ibuf sw 6 IBUF ibuf O O O O O O O O sw 7 IBUF I1 I0 I1 I0 I1 I0 I1 I0 lut2 led 0 annd00001 lut2 led 1 not00001 lut2 led 2 or00001 lut2 O O O O Mxor led<3> Result1 I I I I obuf led 0 obuf obuf led 1 obuf obuf led 2 obuf obuf O O O O led 3 obuf led(3:0) lut programmierte Tabellenfunktion (look-up table) ibuf Eingangstreiber (input buffer) obuf Ausgangstreiber (output buffer) Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 12/32
Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 13/32 1. Einfache Gatterschaltung Das Ergebnis der Platzierung und Verdrahtung: Implementation Map Manually Place & Route (FPGA Editor). LUT mit EXOR-Funktion Pin sw(6) mit ibuf Leitung zu led(3) progr. Verbindungsnetzwerk spezielle Signalleitungen progr. Verbindungs- netzwerk Pin sw(7) mit ibuf allgemeine Signalleitungen
2. Simulation Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 14/32 Simulation
2. Simulation Zusätzlich wird ein Testrahmen zur Erzeugung der Eingabesignale benötigt. Das ist eine Entwurfseinheit mit dem Testobjekt als Teilschaltung und im einfachsten Fall einem Prozess zur Erzeugung der Eingabe. Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 15/32 Simulation Die Simulation benötigt ein Testobjekt. Das sei hier die nachfolgende Zählfunktion:
2. Simulation Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 16/32
2. Simulation Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 17/32 Simulationsarten Simulation des Verhaltens ohne Verzögerungen: Simulation der synthetisierten und verdrahteten Schaltung (mit Verzögerungen)
2. Simulation Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 18/32 Arbeitsschritte Anlegen eines neuen Projekts: (ISE) File New Project. Name Increment4Bit. Einstellungen bleiben wie im Bild gezeigt:
2. Simulation Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 19/32 Simulation vorbereiten Mit Project New Source ein VHDL-Modul Increment- 4Bit.vhd und eine VHDL-Testbench IncTB hinzufügen und die Beschreibungen von den Folien zuvor eintippen. Von Implementation auf Simulation umstellen. Nach der Eingabe für beide Dateien Check Syntax und Fehlerbeseitigung.
2. Simulation Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 20/32 Simulation ohne Verzögerung Simulate Behavioural Model Darstellungsbereich mit dem Zoom richtig einstellen. Vor dem nächsten Simulationsstart aus ise heraus Simulator schlieÿen.
2. Simulation Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 21/32 Post-Place & Route Simulation Auf Implement umstellen und Implement Design ausführen.. Auf Simulation zurückstellen, Simulationsart auf Post Route umstellen. Syntax Check. Simulation Post-Place & Route Model.
3. Taktteiler Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 22/32 Taktteiler
3. Taktteiler Taktteiler Teilen des 50MHz-Eingabetakts durch 2 32 Ausgabe der höchstwertigen Zählerstellen auf Leuchtdioden GCLK0 T9 +1 Z 32 24 25 26 27 28 29 30 31 K12 P14 L12 N14 P13 N12 P12 P11 LD0 LD1 LD2 LD3 LD4 LD5 LD6 LD7 50/2 24 3 Hz; 50/2 25 1,5 Hz;... Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 23/32
3. Taktteiler Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 24/32 Takteingang programmierter Schaltkreis Leuchtdioden GCLK0 T9 +1 Z 32 24 25 26 27 28 29 30 31 K12 P14 L12 N14 P13 N12 P12 P11 LD0 LD1 LD2 LD3 LD4 LD5 LD6 LD7 GCLK0 z 0 z 1 z 2 z 3 1 0 1 0 1 0 1 0 1 0
3. Taktteiler Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 25/32 entity Taktteiler is port(gclk0: in std_logic; LD0, LD1,..., LD7: out std_logic); end entity; architecture test of Taktteiler is signal z: std_logic_vector(31 downto 0); begin process(gclk0) begin if rising_edge(gclk0) then z <= z + 1; end if; end process; LD0 <= z(24); LD1 <= z(25);... LD7 <= z(31); end architecture; GCLK0 T9 +1 Z 32 24 25 26 27 28 29 30 31 K12 P14 L12 N14 P13 N12 P12 P11 LD0 LD1 LD2 LD3 LD4 LD5 LD6 LD7
3. Taktteiler Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 26/32 Erzeugung der Kongurationsdatei (Projektnavigator) File Open Project Ebene zurück Taktteiler Taktteiler.xise (Hierarchy-Fenster).../Taktteiler.vhd auswählen; mit Doppelklick önen (Schaltungsbeschreibung) (Hierarchy-Fenster).../Taktteiler.ucf auswählen; (Processes) mit Doppelklick auf Edit Constraints önen (Beschreibung der Anschlusszuordnungen) (Hierarchy-Fenster).../Logikrechner.vhd auswählen; (Processes) mit Doppelklick auf Generate Programming File (Synthese, Platzierung, Verdrahtung, Kongurationsdaten erzeugen)
3. Taktteiler Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 27/32 Programmieren und Ausprobieren Rechtsklick auf den Chip xc3s1000; Assign New Conguration File taktteiler.bit im Verzeichnis Taktteiler auswählen; Open Rechtsklick auf den Chip xc3s1000 Program Ausprobieren Schaltung ändern, z.b. höherfrequente Takte (niederwertigere) Zählerbits ausgeben oder Anschlusszuordnung in der ucf-datei ändern
4. Ampelsteuerung Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 28/32 Ampelsteuerung
4. Ampelsteuerung Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 29/32 Ampelsteuerung Taktgenerator Zähler 24 Ausgabetabelle K12 Leuchtdioden LD0 GCLK0 T9 +1 Z 32 z(28...25) Autos Fussg. 0000 gelb rot 0001 gelb rot 0010 0011 0100... grün grün grün... rot rot rot... N14 P13 N12 P12 P11 LD3 LD4 LD5 LD6 LD7 process(gclk0) begin if rising_edge(gclk0) then z <= z + '1'; -- Zähler LD0 <= z(24); -- Taktausgabe
4. Ampelsteuerung 24 K12 LD0 GCLK0 T9 +1 Z 32 z(28...25) Autos Fussg. 0000 gelb rot 0001 gelb rot 0010 0011 0100... grün grün grün... rot rot rot... N14 P13 N12 P12 P11 LD3 LD4 LD5 LD6 LD7 case z(28 downto 25) is when "0000" "0001" => LD(7 downto 3) <= b"010_01"; --A:gelb, F:rot when "0010" "0011" => LD(7 downto 3) <= b"100_01"; --A:grün, F:rot -- ab hier selbst weiterentwickeln when others => LD(7 downto 3) <= b"001_01"; --A:rot, F:rot end case; end if; end process; rof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 30/32
4. Ampelsteuerung Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 31/32 Erzeugung der Kongurationsdatei (Project Navigator) File Open Project Ebene zurück Ampel Ampel.xise (Hierarchy-Fenster).../Ampel.vhd auswählen; mit Doppelklick önen (Schaltungsbeschreibung) (Hierarchy-Fenster).../Ampel.ucf auswählen; (Processes) mit Doppelklick auf Edit Constraints önen (Beschreibung der Anschlusszuordnungen) (Hierarchy-Fenster).../Ampel.vhd auswählen; (Processes) mit Doppelklick auf Generate Programming File (Synthese, Platzierung, Verdrahtung, Kongurationsdaten erzeugen)
4. Ampelsteuerung Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 30. April 2014 32/32 Programmieren und Ausprobieren Rechtsklick auf den Chip xc3s1000; Assign New Conguration File ampel.bit im Verzeichnis Ampel auswählen; Open Rechtsklick auf den Chip xc3s1000 Program Ausprobieren Schaltung ändern, z.b. höherfrequente Takte (niederwertigere) Zählerbits ausgeben oder Anschlusszuordnung in der ucf-datei ändern Ausgang A:grün A:gelb A:rot F:grün F:rot Anschluss N6 R7 T7 C15 M6