Volker Dörsing EHP Einführung Projekt A email: doersing@uni-jena.de praktische Übung www: http://users.minet.uni-jena.de/~ehp-head Vorbereitung, Durchführung, Kolloquium Infos zur Veranstaltung, Versuchsanleitung gelesen? 1
Vorstellung Projekt A1 A4 Implementierung RISC- Prozessor auf FPGA Was ist ein FPGA? FPGA: Field Programmable Gate Array komplexer wiederholt programmierbarer Logikschaltkreis Array von 1.000en gleichen Logikblöcken, Verbindungsnetzwerk Anwendungen: Rapid Prototyping, Coprozessor, Eingebettete Systeme HW arbeitet parallel VHDL: Hardwarebeschreibungssprache CAE: Simulation, Synthese, Implementierung, Erprobung Was ist ein RISC-Prozessor? RISC: Reduced Instruction Set Prozessors Befehle fester Länge in nur einem Takt (Pipeline) Load-Store-Architektur 2
Vorstellung Projekt A1 A4 A1 A2 A3 A4 vom VHDL-Entwurf zum Schaltkreis: D-Latch, CAE Prozess der Umsetzung Steuerung der Funktionseinheit Befehlszähler und Datenpfad Funktionsweise RISC-Prozessor Assembler Unix-Umgebung Erwartungsabfrage: Was wollen Sie wissen? 3
Unix Umgebung UNIX/Linux-Minikurs für Experimentelle Hardware-Projekte 2. Woche Kommandozeile: Befehle und Skripte X-Terminal-Fenster: verschiedene Rechner: ipc694, z.b. ehpc06 verschiedene Benutzer: z.b. ehp07 oder doersing gleiche Zweige im Dateisystem: /home/<benutzer> unterschiedliche Systeme und Programme 4
Prozess der Schaltkreiserzeugung 1. Entwurf: VHDL 2. funktionale Simulation 3. Synthese 4. Implementierung 5. zeitbehaftete Simulation 6. Schaltkreis erproben Verbindung: Dateien 5
1. VHDL Entwurf Was ist gegeben? dlatch.vhd Was ist ein D-Latch? LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; ENTITY dlatch IS GENERIC (tpd_latch : time := 2 ns; tpd_out_en : time := 1 ns); PORT (clk, clk_en, out_en : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector(3 DOWNTO 0)); END dlatch; ARCHITECTURE behave OF dlatch IS SIGNAL intern : std_logic_vector(3 DOWNTO 0) ; BEGIN LDEBehavior : process(data_in, clk, clk_en) begin if (clk_en = '1' and clk = '1') then intern <= data_in after tpd_latch; end if; end process; data_out <= intern AFTER tpd_out_en WHEN out_en = '0' ELSE (OTHERS => 'Z') AFTER tpd_out_en; END behave; 6
Skript: fsim.sh Entwurf, Umgebung dlatch.vhd tb.vhd Signalverläufe: 2. funktionale Simulation Was ist ein Signal? Transparent, Speichern (clk, clk_en) Tristate Transparent, Speichern (offen lassen) entity E is end E; architecture A of E is constant P: time := 150 ns; -- Periode component dlatch -- Komponente end component; signal clk, clk_en, out_en : std_logic ; signal data_in : std_logic_vector(3 downto 0); begin UUT : dlatch PORT MAP ( ); -- Komponente einbinden takt : process -- nebenläufiger Prozess begin clk <= '0'; wait for P * 2/3 ; clk <= '1'; wait for P * 1/3; end process; clk_en <= '0', -- sequentielle Folge '1' AFTER 60 ns; out_en <= '1'; data_in <= x"a", x"6" AFTER 75 ns, x"c" AFTER 330 ns; end A; 7
3. Synthese Umwandlung VHDL in Logik not, and, or, xor, ff Umwandlung von Logik in Bestandteile des FPGA Woraus besteht FPGA? CLB, Slice (LUT, Register), IOB Ergebnis: edif-netzliste FPGA-Komponenten Verbindungen 8
4. Implementierung Netzliste Map: Zuordnung Netzliste -> FPGA-Komponenten Place and Route (par): Anordnung im FPGA (48x32=1.536 Slices) NP vollständig Verbindungen Optimierung: Platz, Laufzeit, Fläche, Vorgaben, Energieverbrauch netgen: VHDL-Simulationsmodell bitgen: Konfigurationsdatei FPGA-Editor: Komponenten, Netze (offen lassen) 9
5. Zeitbehaftete Simulation Schaltkreismodell: fpga.vhd Testumgebung: tb.vhd Verbindungen Laufzeitunterschiede 10
6. Erprobung des Schaltkreises Experimentalsystem Konfiguration: konf <bit> Erprobung: tst Protokollierung 11
vorher Kennenlernen und probieren, spielen Fragen? 12