HaPra 2008 - Versuchsreihe 5 - ALU Hardware Praktikum 2008 Prof. Dr. H.-J. Wunderlich Dipl.-Inf. M. Imhof Dipl.-Inf. S. Holst
Agenda Die HaPra-CPU Eine kleine Übersicht VHDL Projekt-Organisation Entwurf der ALU Test der ALU HaPra 2008 - Versuchsreihe 5 - ALU 2
Das System Zum Schluss auf dem FPGA: Daten VGA HaPra-CPU Daten Adresse Chipsatz Speicher Taster Interrupt Debug Chipsatz wird gestellt und bietet verschiedene Schnittstellen - Der interne Aufbau wird in den nächsten Vorbesprechungen vorgestellt HaPra 2008 - Versuchsreihe 5 - ALU 3
Die HaPra-CPU Taktfrequenz 25 MHz Anzahl Gatter 2500 LUTs des FPGA (von 6000) ca. 122.000 Gatter (von 300.000) Register und FFs 32 Register (1024 FFs) + ca. 800 FFs MIPS 25CPI 1 MIPS Risc-Architektur 32 Bit Daten und 32 Bit Adressen, feste Opcode-Breite Interrupts Vergleich: 286er? 386er? HaPra 2008 - Versuchsreihe 5 - ALU 4
Vergleich der Prozessorleistung CPU MIPS / Taktfrequenz Jahr Intel 8080 0,640 MIPS bei 2 MHz 1974 Motorola 68000 1 MIPS bei 8 MHz 1979 Motorola 68020 4 MIPS bei 20 MHz 1984 ARM2 4 MIPS bei 8 MHz 1986 Atmel AVR 10 MIPS bei 10 Mhz 2007 Motorola 68030 11 MIPS bei 33 MHz 1987 ARM3 12 MIPS bei 25 MHz 1989 Motorola 68040 44 MIPS bei 40 MHz 1990 Intel 486DX 54 MIPS bei 66 MHz 1992 HaPra CPU 1 MIPS bei 25 MHz 2008 FaPra CPU 22-23 MIPS bei 25MHz 2008 HaPra 2008 - Versuchsreihe 5 - ALU 5
Hardware-Struktur und Vorgehen V10: Interrupts V7 V8 und V9 V11: Synthese V12: Testprogramm V5 und V6 HaPra 2008 - Versuchsreihe 5 - Alu Entwurf 6
Befehlssatz der HaPra-CPU HaPra 2008 - Versuchsreihe 5 - Alu Entwurf 7
Agenda Die HaPra-CPU Eine kleine Übersicht VHDL Projekt-Organisation Entwurf der ALU Test der ALU HaPra 2008 - Versuchsreihe 5 - ALU 8
Hierarchie Komplexe Systeme werden hierarchisch aus Komponenten aufgebaut Eine Komponente - Implementiert eine in sich abgeschlossene Funktion - Hat eine definierte Schnittstelle nach außen - Kann aus weiteren Sub-Komponenten bestehen Kapselung (Black-Box Prinzip) - Implementation ist unabhängig von Schnittstelle - Ermöglicht lokale Design-Änderungen - Ermöglicht bei Bedarf verschiedene Implementationen HaPra 2008 - Versuchsreihe 5 - ALU 9
Hierarchie in VHDL Entity - Definiert die Schnittstelle Architecture - Definiert die Implementation einer Entity - Mehrere Architekturen sind möglich Configuration - Definiert zu jeder Instanz einer Entity die Architektur, die verwendet werden soll Im HaPra gibt es pro Entity nur eine Architecture - Daher kann auf den Configuration-Block meist verzichtet werden HaPra 2008 - Versuchsreihe 5 - ALU 10
Typische Vorgehensweisen Bottom-Up (HaPra) - Starten mit kleinsten Komponenten - Größere Komponenten erst dann bauen, wenn alle Sub- Komponenten implementiert sind Top-Down - Starten mit den größten Komponenten - Sub-Komponenten sind Schwarze Boxen (Nur Schnittstelle bekannt) - Dann Schrittweise die jeweiligen Sub-Komponenten implementieren HaPra 2008 - Versuchsreihe 5 - ALU 11
Wichtig: Ordnung im /home Die Anzahl der Quelldateien wächst nun stetig Legen Sie sich ein einziges Verzeichnis an in dem - Nur Ihr aktuelles Working-Set liegt - Sprich die (und nur die) Dateien, die man zum Bau der CPU braucht Sicherungskopien, alternative Versionen in andere Verzeichnisse verschieben HaPra 2008 - Versuchsreihe 5 - ALU 12
Agenda Die HaPra-CPU Eine kleine Übersicht VHDL Projekt-Organisation Entwurf der ALU Test der ALU HaPra 2008 - Versuchsreihe 5 - ALU 13
Spezifikation der ALU Tabelle mit RT-Operationen Spezifikation S(2:0) RT-Operation Gatternetzliste entwerfen Validierung Verifikation Synthese Platzieren & Verdrahten Fertigung HaPra 2008 - Versuchsreihe 5 - Alu Entwurf 14
ALU Schnittstelle Spezifikation Gatternetzliste entwerfen Validierung Verifikation entity alu is port ( s : in std_logic_vector( 2 downto 0); a : in std_logic_vector(31 downto 0); b : in std_logic_vector(31 downto 0); q : out std_logic_vector(31 downto 0); z_out : out std_logic); end alu; Synthese Platzieren & Verdrahten Fertigung HaPra 2008 - Versuchsreihe 5 - ALU 15
Umsetzung der ALU- Spezifikation in VHDL Beschreibung in strukturellem VHDL Eine Abstraktionsebene höher - Grundelemente jetzt: Arithmetische Operationen, Multiplexer, Busse usw. Simulation mit den komplexen Grundelementen Synthesewerkzeug bildet direkt auf Zieltechnologie ab - Keine Gatternetzliste mehr im klassischen Sinne Spezifikation Gatternetzliste entwerfen Validierung Verifikation Synthese Platzieren & Verdrahten Fertigung HaPra 2008 - Versuchsreihe 5 - ALU 16
Arithmetische Operationen 32-Bit Bus entity ADDER is port ( A, B : in std_logic_vector(31 downto 0); Q : out std_logic_vector(31 downto 0); ); end ADDER; architecture STRUCTURE of ADDER is begin Q <= A + B; end architecture STRUCTURE; Addierer HaPra 2008 - Versuchsreihe 5 - ALU 17
Multiplexer entity ADDSUB is Endlosschleife port ( Führt den Rumpf aus, wenn sich A, B : in std_logic_vector(31 downto 0); eines der Signale in der Q : out std_logic_vector(31 downto 0); Sensitivitätsliste ändert S : in std_logic; ); end ADDSUB; architecture STRUCTURE of ADDSUB is begin process (S, A, B) begin case S is when 0 => Q <= A + B; when 1 => Q <= A B; when others => Q <= ZZZZZZZZZ ZZZZZ ; end end end architecture STRUCTURE; Eine case-anweisung ist ein Multiplexer! A B A B HaPra 2008 - Versuchsreihe 5 - ALU 18 + - S Q
Fallen bei Prozessen Mindestens 2 Fehler sind hier versteckt: entity ZEROCHECK is port ( A : in std_logic_vector(31 downto 0); Q : out std_logic; ); end ZEROCHECK; architecture STRUCTURE of ZEROCHECK is begin process (A) begin if A(31 downto 0) = "00000000 00000000" then Q <= '1'; end if; end end architecture STRUCTURE; Q wird nicht initialisiert Bei A!= 0 wird Q nicht zugewiesen. D.h. der alte Wert von Q bleibt erhalten. Also wird ein Element synthetisiert, das den alten Wert von Q speichert. Schaltung ist nicht mehr kombinatorisch! Q bleibt auf 1 wenn A einmal 0 war. HaPra 2008 - Versuchsreihe 5 - ALU 19
Umsetzung der ALU- Spezifikation in VHDL architecture behavioral of alu is begin process (s, a, b) begin z_out <= '0'; if b(31 downto 0) = "00000000000000000000000000000000" then z_out <= '1'; end if; case s is when "000" => -- ADD q <= a + b; when "001" => -- SUB q <= a b;... HaPra 2008 - Versuchsreihe 5 - ALU 20
VHDL-Grundgerüst erzeugen 1. Alternative: gschem - gschem starten, Schematic nur mit IO-Pads erzeugen - width-attribut fuer Bus-Pads - gnetlist -g vhdl -o alu.vhd alu.sch 2. Alternative: Editor - VHDL Code direkt schreiben HaPra 2008 - Versuchsreihe 5 - ALU 21
Weitere Informationen zu VHDL Zum Download auf der HaPra Homepage: VHDL Kurzbeschreibung A. Maeder, Uni Hamburg Weitere Infos - VHDL Archiv: http://tech-www.informatik.uni-hamburg.de/vhdl/ - VHDL Online: http://www.vhdl-online.de/ HaPra 2008 - Versuchsreihe 5 - ALU 22
Agenda Die HaPra-CPU Eine kleine Übersicht VHDL Projekt-Organisation Entwurf der ALU Test der ALU HaPra 2008 - Versuchsreihe 5 - ALU 23
Test der ALU Syntax - In ModelSim laden - Einfacher Teil Semantik - Sicherstellen, dass die Schaltung immer das richtige tut - Besonders wichtig bei Hardware: Man kann später keine Updates einspielen - Besonders schwierig Spezifikation Gatternetzliste entwerfen Validierung Verifikation Synthese Platzieren & Verdrahten Fertigung HaPra 2008 - Versuchsreihe 5 - ALU 24
Test und Validierung Einfach mal probieren geht nicht - Maskenherstellung fuer Prototypen kostet schonmal 1 Million Dollar In den Firmen gibt es eine eigene Abteilung für Test und Validierung So auch im HaPra - Bilden Sie ein Test-Team Aufgaben - Wie kann man alle Aspekte der Spezifikation prüfen? - Entwicklung von automatisierten Tests fuer Komponenten - Den Designern auf die Finger klopfen HaPra 2008 - Versuchsreihe 5 - ALU 25
Viel Spass im HaPra 2008! HaPra 2008 - Versuchsreihe 5 - ALU 26 26