42
FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Embed Size (px)

Citation preview

Page 1: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

FPGA Praktikum WS2000/2001

3.Woche:FPGA ArchitekturSimulationsskripteAufgaben

Page 2: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Architektur der Spartan-II Familie

Page 3: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Die Spartan-II Familie

Ein Baustein der Spartan-II Familie wird auf der im Praktikum verwendeten Experimentierplatine verwendet.

Die Architektur ist in vielen Punkten sehr typisch für heutige FPGAs.

(fast) identisch: Xilinx Virtex, Virtex-E

ähnlich: Actel ProASIC Altera Atmel 40K Quicklogic Eclipse Xilinx XC4000, Spartan, Virtex-II

Page 4: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Elemente eines FPGAs

Ein FPGA hat vier Hauptkomponenten: Verdrahtung Logik I/O Konfigurationsspeicher

Hinzu kommen manchmal dedizierte Blöcke mit Spezialschaltungen: RAM Multiplizierer Prozessoren PCI Interface

Der Konfigurationsspeicher ist für uns unsichtbar.

Page 5: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Struktur eines Spartan-II

Matrix von sogenannten Slices umrandet von I/O Blöcken (IOBs)

Page 6: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Logik: Lookup Table (LUT)

Das Grundelement eines Logikblockes ist eine Lookuptable (LUT, Wertetabelle).

Ein LUT ist ein Speicher in dem für jede Eingangskombination der Ausgabewert steht.

Für n Eingänge sind 2n Einträge erforderlich.

Eine Zahl vor der Abkürzung LUT bezeichnet in der Regel die Zahl der Eingänge. Z.B. 4-LUT, n-LUT

3

x

f(x)

00000001

LUT

Page 7: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Größe der LUTs

LUTs sollten mindestens drei Eingänge haben, um Addierer bauen zu können:

Auch der häufig benötigte 2-zu-1 Multiplexer benötigt drei Eingänge

LUT

LUT

ab

Carry_in

Carry_out

Sum

Page 8: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Größe der LUTs

Allerdings belegt die Logik nur einen kleinen Teil der Fläche des FPGAs (<1%)

Deshalb ist es Sinnvoll, die LUTs etwas größer zu machen, um die Schaltungstiefe kombinatorischer Schaltungen zu reduzieren.

Aber auch nicht zu groß, da die Fläche der LUTs exponentiell wächst. 5-LUTs verwendet ausschließlich Lucent 4-LUTs dominieren den Markt 3-LUTs bei einigen Herstellern

Page 9: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

LUTs bei Spartan-II

Ein Spartan-II Slice enthält zwei 4-LUTs und einen Multiplexer (Mux)

Mit dem Mux lassen sich die 4-LUTs z.B. zu einem 5-LUT zusammen schließen.

LUT

LUT

MUX

Page 10: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Flip-Flops

Flip-Flops sind sehr wichtige Schaltungselemente Flip-Flops sind langsam, groß und unzuverlässig,

wenn man sie in LUTs realisiert. Ein Spartan-II Slice enthält deshalb zwei D-Flip-

Flops

LUT

LUT

DFF

DFF

MUX

Page 11: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Addierer

Addierer sind sehr häufige Schaltungen. In der gezeigten CLB Architektur benötigt jedes

Bit zwei 4-LUTs Elegante Lösung:

4-LUTs die sich in zwei 3-LUTs aufteilen lassen. Schnellere Lösung: Spezialhardware für die Carry

Chain

Page 12: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Carry Chain

Spartan-II enthält eine solche carry chain hinter den LUTs.

Sie ist mit 50ps pro Bit erheblich schneller als die anderen Funktionen des FPGAs

Der 2-zu-1 Multiplexer ist in die Carry Logik integriert

Page 13: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Speicher

Ein 4-LUT ist ein 16x1 ROM. Bei vielen FPGAs kann er auch als RAM

konfiguriert werden. Spartan-II Slice:

ein Speicher 32x1 Bit zwei Speicher 16x1 Bit ein RAM 16x1 mit gleichzeitigem Lesen und Schrieben

von getrennten Addressen (Dual Port RAM)

Page 14: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Distributed RAM

Page 15: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

So sieht ein Slice im Datenblatt aus

Page 16: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Verdrahtung

Die Verdrahtung macht 90% des FPGAs aus. In den meisten synthetisierten Schaltungen

macht die Verdrahtung deutlich mehr als die Hälfte des delay aus.

FPGAs werden oft daran gemessen, wie gut sich die Logik ausnutzen läßt.

Wichtiger wäre es, zu wissen, wie gut sich die Verdrahtung ausnutzen läßt. Das ist jedoch so gut wie nicht beschreibbar.

Page 17: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben
Page 18: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben
Page 19: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Die Daten des XC2S200-PQ208

Slices: 2352 4-LUTs: 4704 Verteiltes RAM: max 9408 Bytes BlockRAMs: 14 à 4096 Bits = 7kBytes Logik: ca. 100.000 Gatteräquivalente Flip-Flops: 5292 I/O: 145

Page 20: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Simulationsskripte

Page 21: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Simulationsskripte

Die Einzige Dokumentation zur Simulationsskriptsprache die ich finden konnte ist in der Onlinehilfe des Simulators:

Eine Liste der Befehle ist im Scripteditor unter:„Simulation Makros Help“

Im folgenden erläutere ich die wichtigsten Makros

Page 22: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Skript: Initial Settings

Die folgenden Zeilen werden für den Anfang der meisten Simulationsskripte sinnvoll sein:

delete_signalsrestartstepsize 10 ns

Dadurch werden alle Signale aus der Ansicht gelöscht, die Simulation auf den Zeitpunkt 0 gesetzt, alle Signalzuweisungen gelöscht und eine Sinnvolle Schrittweite für die Beschreibung von Wellenformen gesetzt.

Page 23: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Skript: Vector definitions

Dem Simulator muß mitgeteilt werden, daß er Vektoren nicht als einzelne Signale darstellt, sondern zu einem mehrbittigen Wert zusammenfaßt. Dies geht mit dem „v“ Makro:

v result result[15:0]

Page 24: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Skript: Watch List

Signale und Vektoren, die im Waveformviewer angezeigt werden sollen, werden mit „watch“ ausgewählt

watch clk h_out zeichen Kommentarzeilen beginnen mit „|“ | Start der Testvektoren Wertzuweisungen erfolgen mit „assign“ assign reset 1

Page 25: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Skript: Stimulus

Periodische Signale werden mit „clock“ definiert clock clk 0 1 Dabei wechseln die aufgelisteten Zustände in

dem durch „stepsize“ definierten Zeitintervall Beispiel mit zwei um 90° verschobenen

Taktsignalen: clock clk1 0 1 1 0clock clk2 0 0 1 1

Page 26: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Skript: Stimulus (Fortsetzung)

Beliebige, nicht periodische Wellenformen lassen sich mit „wfm“ beschreiben. Dabei wird jeweils einem Zeitpunkt ein Zustandswechsel zugeordnet:

wfm load @0ns=0 @20ns=1 @40ns=0 Die Zeitpunkte können auch relativ angegeben

werden: wfm load @0ns=0 20ns=1 20ns=0 Das ist nützlich für Wiederhohlungen: wfm test @0ns=0 @77ns=1 (10ns=0 10ns=1)*5 Außer ns sind auch ps, us, ms und s möglich.

Page 27: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Skript: Vektorwerte

Vektoren können Werte in verschiedenen Zahlenbasen zugewiesen werden. Binär (\B), Octal (\O), Decimal (\D) and Hexadecimal (\H) Beliebige Basis: \2 \3 \16 Standard ist Binärdarstellung

Beispiele: wfm char_in @0ns=1111 wfm char_in @0ns=1111\B wfm char_in @0ns=F\H wfm char_in @0ns=15\D

Page 28: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Skript: Simulation

Um die Simulation schließlich zu starten verwendet man das „sim“ Kommando

sim 500ns Oder „cycle“ um für eine bestimmte Anzahl von

Taktzyklen zu simulieren. Dabei wird der längste zuvor mit „clock“ definierte Taktzyklus verwendet.

cycle 1 „sim“ und „cycle“ sind auch eine alternative zu „wfm“ assign operand 101cycleassign operand 000cycle

Page 29: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Aufgaben 3. Woche

Page 30: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Aufgabe 3.1

Für einen Prozessor wird eine 16-Bit ALU benötigt. Diese soll in Abhängigkeit vom Eingang „operation“ eine von fünf

Operationen ausführen: Addition Subtraktion And Not (Löschen von Bits) Or (Setzen von Bits) Arithmetischer Rechtsschift (Teilung durch zwei, mit Vorzeichen)

Startet ein neues Projekt und schreibt eine ALU die zu der Deklaration auf der nächsten Folie kompatibel ist.

Für die undefinierten Werte von operation solltet Ihr dem Resultat den Wert „----------------“ zuweisen (Don‘t care). Dann kann die Synthese am besten optimieren.

„use ieee.std_logic_unsigned.all“ ist für die ALU erforderlich.

Page 31: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Aufgabe 3.1

-- A simple arithmetic, logic unit-- operation / result--- 000 / in_a + in_b--- 001 / in_a - in_b--- 010 / in_a &~ in_b--- 011 / in_a | in_b--- 100 / in_a / 2component ALU16 port ( in_a: in STD_LOGIC_VECTOR(15 downto 0); in_b: in STD_LOGIC_VECTOR(15 downto 0); operation: in STD_LOGIC_VECTOR(2 downto 0); result: out STD_LOGIC_VECTOR(15 downto 0)); end component;

Page 32: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Aufgabe 3.2

Der Prozessor braucht außerdem einen Programzähler mit Verzweigungsmöglichkeit.

Der Programmzähler zählt normalerweise in jedem Takt eins weiter.

Wenn der Eingang „stop“ gleich ‘1‘ ist, zählt er nicht weiter Wenn der Eingang „jump“ gleich ‘1‘ ist, wird der Programzähler

auf den Wert des Eingangs „jump_target“ gesetzt. Baut eine PCU Entity die mit der Deklaration auf der folgenden

Folie kompatibel ist. Die Entity soll Teil des selben Projektes sein. Sie kann in der

selben Datei stehen, oder aber in einer separaten Datei. „use ieee.std_logic_unsigned.all“ ist auch hier

erforderlich.

Page 33: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Aufgabe 3.2

-- The program counter unit-- usually the PC output is incremented by one on-- every rising edge of clk.-- if stop='1' the PC is not incremented-- if jump='1' the PC is set to the value of the-- jump_target input.component PCU port ( jump_target: in STD_LOGIC_VECTOR(15 downto 0); jump: in STD_LOGIC;

stop: in STD_LOGIC; clk: in STD_LOGIC;pc: out STD_LOGIC_VECTOR(15 downto 0));

end component;

Page 34: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Aufgabe 3.3

Aufgabe 3.2: Implementierung der PCU Ihr habt eine Schaltung entworfen, synthetisiert und

simuliert. Jetzt soll sie auf die Zieltechnologie abgebildet werden.

Wählt im Project Manager sicherheitshalber den Menüpunkt „Project->Clear Implementation Data“ und bestätigt. Dies löscht die bisherigen Syntheseergebnisse.

Page 35: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Aufgabe 3.3

Wählt PCU als oberstes Hierarchielement für euren Chip (Top Level)

Im Beispiel befinden sich beide Entities in der selben VHDL Datei

Page 36: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Aufgabe 3.3

Wählt den richtigen FPGA

Family: Spartan2 Device: 2S200PQ208 Speed: -5

Klickt auf „Run“

Der Schaltung wird jetzt synthetisiert. Es sollten nur Warnungen, keine Fehler erscheinen

Page 37: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Aufgabe 3.3

Drückt auf den Knopf „Implementation“

Drückt auf „Run“ Fertig.

Page 38: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Aufgabe 3.4

Der Map Report Der zweite Schritt des automatisch ausgeführten

Implementierungs Toolflows ist die Technologieabbildung. (Map)

Sie bildet die von der Synthese generierte Netzliste auf die Bauteile des FPGAs ab. Die Ergebnissen stehen im Map Report.

Zum öffnen des Reports geht klickt Ihr auf den „Reports“ Reiter und öffnet den Ordner „Implementation Report Files“.

Doppelklick auf den „Map Report“ öffnet diesen.

Page 39: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Aufgabe 3.4

Der Map Report ist sehr nützlich um: Die Qualität des Ergebnisses zu beurteilen Mögliche Fehler früh zu erkennen

Schaut euch das Design Summary an: Gibt es Flip-Flops? Wieviele 4-LUTs wurden verwendet? Wieviele IO Blöcke? Stimme diese Ergebnisse mit euren Erwartungen überein? Was ist der „equivalent gate count“? Gibt es Fehler in Abschnitt 1? Sind die Warnungen in Abschnitt 2 vertretbar? Wurde in Abschnitt 5 unerwartet Logik entfernt?

Schreibt die Antworten an [email protected]

Page 40: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Aufgabe 3.5

Timing Analyse Die Xilinx Software analysiert die maximale

Taktfrequenz des Designs. Wie hoch ist diese? (Steht im „Post Layout Timing Report“ und im „Implementation Log File“

Die Software hat außerdem detaillierte informationen über das Timing der Einzelteile der Schaltung generiert. Dadurch läßt sich jetzt eine Timingsimulation durchführen.

Startet den Timingsimulator (Linke Hälfte des „Verification“ Knopfes)

Simuliert ein paar Takte. Die Signale ändern sich jetzt teilweise erst 10ns nach der steigenden Taktflanke.

Page 41: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Aufgabe 3.6

FPGA Editor Um einen Eindruck davon zu gewinnen, was die Foundation

Software mit euren Design angestellt hat, startet den FPGA Editor. (Im Menu Tools->Implementation->FPGA Editor)

Ihr seht ein Layout des Chips, in dem Ihr herumscrollen und Zoomen könnt.

Mit diesen Knöpfen könnt Ihr verschiedene Teile des Layouts ein- und ausblenden:

Benutzte Slices und IOBs könnt Ihr euch per Doppelklick genauer anschauen.

Page 42: FPGA Praktikum WS2000/2001 3.Woche: FPGA Architektur Simulationsskripte Aufgaben

Aufgabe 3.7

In den Tipps und Tricks zu dieser Woche findet Ihr die restlichen Dateien, die für den Prozessor benötigt werden.

Kopiert sie in das Projektverzeichnis. Synthetisiert mit „maincpu“ als Top Level. Wie hoch ist die maximale Taktfrequenz? Wieviele 4-Luts, Flip-Flops und BlockRAMs werden

verwendet? Das RAM des Prozessors enthält bereits ein kleines

Programm. Simuliert 40 Takte. Was ist der höchste Wert, den der Programmzähler annimmt?