HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers Hardware Praktikum 2008 Prof. Dr. H.-J. Wunderlich Dipl.-Inf. M. Imhof Dipl.-Inf. S. Holst
Übersicht Entwurfsablauf Diskreter Aufbau Rechnergestützter Entwurf HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 2
Entwurfsablauf Anforderungen festlegen Aufbau einer Hardware-Struktur Validierung der Hardware - Funktion, Zeitverhalten, Groesse - Implementierung solange ändern, bis Anforderungen erfüllt Abbildung auf Elemente der Bibliothek Entwurf der Geometrie Spezifikation Gatternetzliste entwerfen Validierung Verifikation Synthese Platzieren & Verdrahten Fertigung HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 3
Übersicht Entwurfsablauf Diskreter Aufbau Rechnergestützter Entwurf HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 4
Entwurfsablauf Volladdierer Aufbau mit Grundgattern Validierung durch Tutor Spezifikation Gatternetzliste entwerfen Validierung Verifikation Synthese Platzieren & Verdrahten Fertigung HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 5
Spezifikation A B C in S C out 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 6
Entwurf der Gatternetzliste & & C out & A B C in =1 =1 S HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 7
Entwurfsablauf Volladdierer Aufbau mit Grundgattern Validierung durch Tutor Spezifikation Gatternetzliste entwerfen Validierung Verifikation Abbildung auf Elemente der Bibliothek Synthese Platzieren & Verdrahten Fertigung HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 8
Bibliothekselemente für den diskreten Aufbau TTL-Bausteine Spannungsversorgung IO-Platine Draht und Anschlußleitungen HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 9
TTL-Bausteine TTL: Transistor-Transistor-Logik - Robuster gegenüber elektrostatischer Entladungen als die CMOS-Versionen Beinhalten mehrere unabhängige Grundgatter Typ SN7400N SN7402N SN7404N SN7408N SN7432N SN7486N Funktion 4 NAND-Gatter 4 NOR-Gatter 6 Inverter 4 AND-Gatter 4 OR-Gatter 4 XOR-Gatter HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 10
Benötigte Elemente HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 11
Ein- / Ausgabeplatine Spannungsversorgung: 5V Erzeugt logische Pegel (DIP-Schalter) Zeigt logische Pegel an (LEDs) HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 12
Synthese (1) + A B 7486 A 7400 B C out C in C in S - HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 13
Synthese (2) - - + + A B C in S C out HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 14
Entwurfsablauf Volladdierer Aufbau mit Grundgattern Validierung durch Tutor Abbildung auf Elemente der Bibliothek Spezifikation Gatternetzliste entwerfen Validierung Verifikation Synthese Entwurf der Geometrie Platzieren & Verdrahten Fertigung HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 15
HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 16 Experimentierplatine GL-36 V 1 V 2 V 3
Plazieren und Verdrahten Elemente platzieren für minimale Drahtlängen Ausnutzung der internen Verschaltung der Experimentierplatine Ein übersichtlicher Aufbau erleichtert die Fehlersuche HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 17
Entwurfsablauf Volladdierer Aufbau mit Grundgattern Validierung durch Tutor Abbildung auf Elemente der Bibliothek Entwurf der Geometrie Aufbau und Test auf der Experimentierplatine Spezifikation Gatternetzliste entwerfen Validierung Verifikation Synthese Platzieren & Verdrahten Fertigung HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 18
Fertigung HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 19
Entwurfsablauf Volladdierer Aufbau mit Grundgattern Validierung durch Tutor Abbildung auf Elemente der Bibliothek Entwurf der Geometrie Aufbau und Test auf der Experimentierplatine Spezifikation Gatternetzliste entwerfen Validierung Verifikation Synthese Platzieren & Verdrahten Fertigung HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 20
Übersicht Entwurfsablauf Diskreter Aufbau Rechnergestützter Entwurf HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 21
Entwurfsablauf Volladdierer Eingabe der Gatternetzliste Spezifikation Gatternetzliste entwerfen Validierung Verifikation Synthese Platzieren & Verdrahten Fertigung HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 22
Eingabe der Gatternetzliste Graphische Eingabe mit gschem - Ein Werkzeug aus der freien geda-suite - Automatische Umsetzung in VHDL mit gnetlist Direkte Eingabe der Struktur in VHDL Alternative: Verilog - In den USA verbreitet - Im HaPra nicht verwendet HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 23
Das Programm gschem Starten über Shell: gschem & Erlaubt graphische Eingabe von Netzlisten - Hinzufügen von Komponenten - Verdrahtung der Komponenten untereinander Anschlüsse nach aussen sind ebenfalls Komponenten Ausführliche Dokumentation im HaPra-Skript HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 24
VHDL-Code-Generierung Datei in gschem abspeichern VHDL-Code erzeugen mit gnetlist: gnetlist -g vhdl -o ha.vhd ha.sch VHDL-Code überprüfen! HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 25
VHDL Very High Speed Integrated Circuit Hardware Description Language Hardwarebeschreibungssprache: Beschreibung von - Verhalten (Behavioral) - Struktur (Structural) Modellierung digitaler Systeme - Synthesefähiger Code: Beschreibung von Hardware - Nicht synthesefähiger (funktionaler) Code: Schaltungssimulation, Testbenches Hier nun: Synthesefähige Beschreibung einer Hardware-Struktur HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 26
Beispiel: Volladdierer library IEEE; use IEEE.std_logic_1164.all; entity FULLADDER is port ( A, B, C_IN : in std_logic; S, C_OUT : out std_logic ); end FULLADDER; Kopf: Verwendete Bibliotheken Entity: Spezifikation der Schnittstelle architecture STRUCTURE of FULLADDER is signal AB : std_logic; begin AB <= A xor B; S <= AB xor C_IN; C_OUT <= (C_IN and AB) or (A and B); end architecture STRUCTURE; Architecture: Interner Aufbau (Implementierung) HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 27
Entwurfsablauf Volladdierer Eingabe der Gatternetzliste - gschem oder VHDL direkt Validierung des VHDL-Codes Spezifikation Gatternetzliste entwerfen Validierung Verifikation Synthese Platzieren & Verdrahten Fertigung HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 28
Validierung mit ModelSim ModelSim ist ein VHDL-Simulator von Mentor Graphics Kompiliert und Simuliert VHDL Starten mit: vsim & HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 29
Kompilierung von VHDL WORK-Library anlegen: - File New Library Quellen Kompilieren - Compile Compile HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 30
VHDL Simulation Richtige architecture auswählen Aufzuzeichnende Signale auswählen (wave) Eingangssignale belegen (force) Simulation eines Zeitabschnittes (run) HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 31
Entwurfsablauf Volladdierer Eingabe der Gatternetzliste - gschem oder VHDL direkt Validierung des VHDL-Codes - Simulation mit ModelSim Spezifikation Gatternetzliste entwerfen Validierung Verifikation Synthese Synthese und Erzeugung von FPGA-Programmierdaten Platzieren & Verdrahten Fertigung HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 32
Synthese und Analyse mit XST XST: Xilinx Synthesis Technology Eingaben: - Hardware-Design - Optimierungs-Optionen, Anforderungen Erzeugt eine NGC-Datei, welche die erzeugte Netzliste enthält HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 33
Hardware-Design Liegt als eine Menge von VHDL-Dateien in einem Verzeichnis Eine Projektdatei <name>.prj listet alle Quellcode- Dateien auf: vhdl work file1.vhd vhdl work file2.vhd Diese Datei wird von XST benötigt HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 34
Synthese-Optionen Festlegen in einem Synthese-Skript <name>.scr run -ifn <name>.prj -ifmt vhdl -top <name> -ofn <name>.ngc -ofmt NGC -p xcv300 -opt_mode Speed -opt_level 1 Projektdatei und Hardware-Sprache Top-Level Entity Ausgabedatei und -format FPGA-Modell und Optimierungsoptionen Aufruf: xst ifn <name>.scr HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 35
Plazieren und Verdrahten beim FPGA-Entwurf Ein FPGA besteht aus Configurable Logic Blocks (CLBs) und Verdrahtung Platzieren: Auswahl der CLB C CLB... CLB C CLB physikalischen CLBs für die C S C C S C verschiedenen Teilfunktionen CLB C CLB... CLB C CLB Verdrahten:............... Programmierung der Verbindungen zwischen den CLB C CLB... CLB C CLB CLBs C S C C S C Details dazu: Siehe Ro/Ti CLB C CLB... CLB C CLB HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 36
Das HaPra-FPGA: XCV300 Virtex-Serie CLB-Raster: 32 x 48 Gesamtanzahl der CLB: 1536 Ein- und Ausgabepins: 316 Speicherzellen: 64 kbit Spezielle Strukturen zur Taktverteilung HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 37
CLBs bei Virtex-FPGAs 4 LUTs mit 4 Eingängen und 1 Ausgang - Für beliebige 4-stellige Funktionen - Mehrstellige Funktionen mit Einschränkungen 4 Speicher-Elemente - Konfigurierbar als D-Flip-Flops oder als Latches Organisiert in 2 Slices HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 38
Eine Slice im Detail Dedizierte Carry-Logik zwischen LUTs und Speicherelementen Beinhaltet - Schnelle AND- und XOR-Gatter - Carry-Verbindungen zwischen den CLBs Zur effizienten Implementierung von - Mehrstelligen Funktionen - Addierern - Multiplizierern HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 39
Platzieren und Verdrahten mit ngc2bit Eingaben: - Synthetisiertes Hardware-Design als NGC-Datei - Zuweisung der Design-Ports zu den FPGA-Pins - Anforderungen and Timing (Takt-Rate, Takt-Pins) Erzeugt eine Bit-Datei zur Programmierung des FPGA HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 40
Zuweisungen und Anforderungen Werden in einer UCF-Datei spezifiziert - Unified Constraints File Zuordnung der Ports des Designs zu den Pins des Chipgehäuses - NET BOARD_RES LOC = P234; - NET BOARD_BUTTON<0> LOC = P237; Art des Resets beim Einschalten - INST res_power_up INIT = S; Anschluss und Periode des Taktes - NET BOARD_CLK LOC = P89; - NET BOARD_CLK PERIOD = 40; HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 41
Aufruf von ngc2bit Im aktuellen Verzeichnis: - <name>.ngc Hardware-Design - <name>.ucf Zusatzangaben Aufruf: ngc2bit <name> - Erzeugt <name>.bit Analyse des Zeitverhaltens (optional): - trce <name> HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 42
Entwurfsablauf Volladdierer Eingabe der Gatternetzliste - gschem oder VHDL direkt Validierung des VHDL-Codes - Simulation mit ModelSim Synthese und Erzeugung von FPGA-Programmierdaten - Mit XST und ngc2bit Spezifikation Gatternetzliste entwerfen Validierung Verifikation Synthese Platzieren & Verdrahten FPGA-Personalisierung Fertigung HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 43
Aufbau des HaPra-Boards Xess XSV300 Prototyping-Board HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 44
Umgang mit dem HaPra-FPGA Board Keine Kabel abziehen! FPGA-Boards sind teuer pfleglich behandeln! Boards nur mit Strom versorgen, wenn notwendig! HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 45
FPGA-Personalisierung mit xsload Die Konfigurations-Datei <name>.bit - Enthält komplette Konfiguration für alle FPGA-Komponenten: - Funktion jedes LUTs - Verdrahtungsmatrix - Anschluss der realisierten Schaltung an externe FPGA-Pins Das Board erlaubt die Programmierung des FPGA über die parallele Schnittstelle Aufruf: xsload <name>.bit - Danach realisiert das FPGA die gewünschte Funktion HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 46
Entwurfsablauf Volladdierer Eingabe der Gatternetzliste - gschem oder VHDL direkt Validierung des VHDL-Codes - Simulation mit ModelSim Synthese und Erzeugung von FPGA-Programmierdaten - Mit XST und ngc2bit FPGA-Personalisierung - xsload Spezifikation Gatternetzliste entwerfen Validierung Verifikation Synthese Platzieren & Verdrahten Fertigung HaPra 2008 - Versuchsreihe 4 - Aufbau eines Volladdierers 47
Viel Spaß weiterhin im HaPra 2008!