Field Programmable Gate Array (FPGA) Complex Programmable Logic Devices (CPLD)

Ähnliche Dokumente
Field Programmable Gate Array (FPGA)

Einführung in die technische Informatik

SoC Design. Prof. Dr. Christophe Bobda Institut für Informatik Lehrstuhl für Technische Informatik

17 Zähler. Hochschule für Angewandte Wissenschaften Hamburg FACHBEREICH ELEKTROTECHNIK UND INFORMATIK DIGITALTECHNIK 17-1

Entwurf und Simulation einfacher Logikelemente

Praktikum Systementwurf mit VHDL HDL Design Lab

EHP Einführung Projekt A

Entwurf und Verifikation digitaler Systeme mit VHDL

Basics. Marc Reichenbach und Michael Schmidt 05/11. Informatik 3 / Rechnerarchitektur Universität Erlangen Nürnberg

2. Einführung in VHDL

Hardware Praktikum 2008

Outline Überblick VHDL/Verilog Designflow VHDL-Module Architektur-Beschreibungen Signale/Variablen. VHDL Einführung 1

Laborübung 4. Zustandsautomaten (Finite State Machines)

VHDL - Objekte und Typen

Hardware Praktikum 2008

VHDL Einleitung. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2010

Einführung in VHDL (2)

D.5 Versuchsreihe 5: Arithmetisch-Logische Einheit

Einführung in VHDL. Dipl.-Ing. Franz Wolf

Array-Zuweisungen. Array-Zuweisungen können über die Position, den Namen oder gemischt erfolgen.

VHDL Simulation. in ORCAD

VHDL-Synthese digitaler Systeme Lösungen zu den Übungsaufgaben

Outline Simulation Design-Richtlinien. VHDL Einführung 2. Marc Reichenbach. Informatik 3 / Rechnerarchitektur Universität Erlangen Nürnberg 05/14

Automatisierung mit Hilfe einer rekonfigurierbaren FPGA-Hardwareplattform

Übungen zu Architektur Eingebetteter Systeme. Teil 1: Grundlagen. Blatt 5 1.1: VHDL 28./

Einführung in VHDL. 1 ARCHITECTURE Tauschen OF B e i s p i e l IS. 2 SIGNAL a, b : STD_LOGIC; 4 BEGIN. 5 PROCESS( a, b ) 6 BEGIN.

Integrierte Schaltungen

Martin V. Künzli Marcel Meli. Vom Gatter zu VHDL. Eine Einführung in die Digitaltechnik. : iasms!wil5i-8sb*l!f. 3. Auflage. zh aw

3. Prozesse in VHDL 1

N. Schmiedel, J. Brass, M. Schubert VHDL Formelsammlung FH Regensburg, VHDL Formelsammlung

Einstellige binäre Addierschaltung (Addierer)

14 Addierer und Subtrahierer

Systembeschreibung und Entwurf

Teil 1: Digitale Logik

Inhaltsverzeichnis Vorlesung VHDL, HW/SW-Codesign"

1. Realisierungsformen (Grundlagen Digitaltechnik II)

Speicherung digitaler Signale

VHDL Synthese. Dr.-Ing. Matthias Sand. Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2009/2010

Aufgaben und Lösungen

Outline Automaten FSM Synthesis FSM in VHDL FSM auf FPGA. State Machines. Marc Reichenbach und Michael Schmidt

Teil 1: Digitale Logik

Digitales Hardwaredesign mit VHDL und FPGAs

Übungsblatt 8 Lösungen:

Laufzeitoptimierte VHDL Bibliothek zur Verifikation und Simulation kryptographischer Prozessoren

4.Vorlesung Rechnerorganisation

Technische Grundlagen der Informatik Kapitel 3. Prof. Dr. Sorin A. Huss Fachbereich Informatik TU Darmstadt

Praktikum Rechnerarchitektur. Seite 1 Prof. Dr.-Ing. Ulrich Schmidt 2011 Praktikum Rechnerarchitektur

Entwurf digitaler Schaltungen Groÿe Übung 3 Simulation mit ghdl

16 Latches und Flipflops (Bistabile Kippstufen)

Übersicht. Prof. Dr. B. Lang, HS Osnabrück Konstruktion digitaler Komponenten, 3. Hierarchischer und generischer VHDL-Entwurf - 1 -

19 Kombinatorische Standardschaltungen

VHDL Verhaltensmodellierung

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

2. Aufgabenblatt

Grundlagen der Informatik 2. Operatoren

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer. Rechenschaltungen 1. Marc Reichenbach

Digitaltechnik. Prof. Dr. Sven-Hendrik Voß Wintersemester 2015 Technische Informatik (Bachelor), Semester 3 Termin 1,

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

Teil 1: Digitale Logik

Ausarbeitung zum ETI Praktikum

2. Praktische Übung zur Vorlesung Grundlagen der Technischen Informatik. Entwurf eines digitalen Weckers

Semestralklausur Einführung in Computer Microsystems

VHDL Verhaltensmodellierung

CPLD Einführung. Version: Datum: Autor: Werner Dichler

Programmierbare Logik CPLDs. Studienprojekt B Tammo van Lessen

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Algorithmen und ihre Programmierung

Zeon PDF Driver Trial

Eine Einführung in die Schaltungsentwicklung

Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch

Digitales Hardwaredesign mit

Das große All-in-All CPLD/FPGA Tutorial

Gliederung dieser Einführung in VHDL

Folge 9: Parametrierbare Funktionen und Einstieg in die AWL Programmierung

Unterlagen. CPP-Uebungen-08/

Praktikum DST FPGA 5.Termin Projekterstellung & Simulation

Architecture Body Funktionale Beschreibung einer "Design Entity" - * beschreibt die Funktion auf Verhaltens-, Struktur- oder Datenfluss-Ebene

JAVA-Datentypen und deren Wertebereich

Darstellung eines 1-Bit seriellen Addierwerks mit VHDL. Tom Nagengast, Mathias Herbst IAV 07/09 Rudolf-Diesel-Fachschule für Techniker

9. Bitlevel-Verarbeitung in C

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

Eine blinkende LED mit Xilinx ISE 13: das Hello World! der Hardware.

Lehrbuch Digitaltechnik

Einführung in Automation Studio

Was ist VHDL? V: very high speed integrated circuit HDL hardware description language. mächtige HW-Beschreibungssprache. Wozu hat man VHDL entwickelt?

Programmieren I. Kapitel 5. Kontrollfluss

Einführung in die C++ Programmierung für Ingenieure

Anhang zum Lehrbuch Digitaltechnik, Gehrke, Winzker, Urbanski, Woitowitz, Springer-Verlag, 2016.

3.2 Verknüpfung von Variablen Sheffer- und Pierce-Funktion Übungen... 54

Rechnerstrukturen, Teil 1. Vorlesung 4 SWS WS 14/15

D.4 Versuchsreihe 4: Integrierte Logikbausteine

Simulation von in VHDL beschriebenen Systemen

Schleifenanweisungen

5.2 Endliche Automaten

Schritt 1 : Das Projekt erstellen und programmieren des Zählers

IHS2 Praktikum. Zusatzfolien. Integrated HW/SW Systems Group. IHS2 Praktikum Zusatzfolien 2012 Self-Organization 20 April

Datentypen. Agenda für heute, 4. März, Pascal ist eine streng typisierte Programmiersprache

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Transkript:

Field Programmable Gate Array (FPGA) Complex Programmable Logic Devices (CPLD) 1

FPGA Design Flow 2

1. Einleitung 2. Grundlegende Strukturelemente 3. Syntax 4. Synthesefähiger VHDL-Code 5. Zusammenfassung und Beispiele 6. Simulation von VHDL-Code 7. ModelSim 8. Praktisches Beispiel mit ModelSim 3

Was ist VHDL? Very high speed integrated circuit Hardware Description Language (VHDL) ist eine Hardwarebeschreibungssprache, vergleichbar mit einer Programmiersprache, mit der es einfach möglich ist, komplizierte digitale Systeme zu beschreiben. VHDL ist durch den IEEE 1076 Standard von 1993 genormt. Beschreibt das gewünschte Verhalten einer Schaltung auf einer höheren Abstraktionsebene. (keine einzelne elektronische Bauteile) ermöglicht das schnelle Entwickeln großer und komplexer Projekte hohe Effizienz (zeitlich wie ökonomisch) Ein System kann simuliert, verifiziert und schließlich eine Konfiguration erstellt werden. Durch eine Konvertierung in einen geeigneten Bitstream kann das Programm auf FPGAs oder CPLDs geladen werden. 4

Kopfzeile Bibliotheken Entity Architecture Process 5

Bibliotheken Aufbewahrungsort für kompilierte und wieder zu verwendende Pakete und Designeinheiten Enthalten Datentypen, Komponenten, Objekte <Bibliotheksname>.<Paketname>.<Element von Paket> zu verwendende Bibliothek z.b.: library ieee zu verwendende Pakete der Bibliothek z.b.: use ieee.std_logic_1164.all z.b.: use ieee.numeric_std.all; 6

Entity Beschreibt die Schnittstellen eines VHDL-Funktionsblockes nach außen Anzahl, Bezeichnung und Typ der Anschlüsse (IN, OUT, INOUT, BUFFER) Signaldeklaration durch port-anweisung Kommunikation zwischen einzelnen Entitys aber auch zwischen einer Entity Architectures Konstantendeklaration durch generic-anweisung kann von höherer Hierarchieebene überschrieben werden ähnlich der C #define Anweisung können Konstanten definiert werden Entspricht dem IC-Gehäuse 7

Architecture Beschreibt das Innenleben die Funktionalität Mindestens eine Architecture pro Entity Lokale Signal-, Konstanten und Typdeklarationen nur für den vorliegenden Architekturrumpf gültig Nebenläufige Anweisungen innerhalb einer Architecture! Einzelne Architectures einer Entity sind ebenfalls nebenläufig! Entspricht dem Chip im Gehäuse der Funktion 8

Process Eine Architecture kann ein oder mehrere Process beinhalten Alle Process einer Architecture werden nebenläufig abgearbeitet! Kombinatorische und sequentielle (taktgesteuerte) Logik Sequentielle Abarbeitung innerhalb eines Process! Signale der sensitivity list starten die Bearbeitung des Process Signalzuweisung immer am Process-Ende!! (letzter geschriebener Wert) Erlaubt Verzweigungen und Schleifen (z.b.: if,case,for,while) Benutzung von Variable Gültigkeit nur innerhalb eines Process Werte werden sofort zugewiesen! Variable Signal Nutzung außerhalb 9

Signal oder Variable?! Beispiel 1: Flankenerkennung Beispiel 2: Addition 10

z.b.: FPGA 11

Nebenläufige Abarbeitung Sequentielle Abarbeitung Laufzeit der Signale! (echte Hardware) Unterschiedlich schnelle Prozesse Synchronisation von unterschiedlichen process einer architecture Synchronisation von unterschiedlichen entitys o (Anzahl der Taktzyklen) z.b.: FPGA 12

Datentypen: bit: kann nur logische Werte '1' und '0' annehmen bit_vector (n downto 0) bzw. bit_vector (0 to n) : Vektor aus n +1 Binärwerten std_logic : Erweiterung des Typs bit um sieben zusätzliche Signalwerte: 'U' : nicht initialisiert (z.b. zum Zeitpunkt des Einschaltens) 'X' : unbekannt 'Z' : hochohmig (z.b. bei ungetriebenem Ausgang eines Tri-State Buffers) 'L' : schwache logische Null 'H' : schwache logische Eins 'W' : schwach zwischen Null und Eins ' ' : don't care (für Logiksynthese) signed(n downto 0) bzw. unsigned(n downto 0) Vektor aus n+1 Stellen des Typs std_logic integer : vorzeichenbehaftete ganze Zahl (32-Bit, LE-Ressourcen!) integer range 0 to 15: vorzeichenlos, Zahlen von 0 bis 15 (4 Bit) 13

Typumwandlung Interpretation von Vektoren: Zweierkomplement unsigned: 1011 = 11 signed: 1011 = -5 14

Zuweisungen Integer Variable : A :=3; Signal : A <=3; unsigned/signed (4Bit Vektor, signal) AV(3) <= '1'; AV <= "0101"; AV <= "01" & "01"; AV <= ('0','1','0','1'); AV <= ('1', others => '0'); hexadezimal (vorangestelltes x, x A2 ) oktal (vorangestelltes o) Allgemeines Kommentare beginnen mit: -- Groß-/Kleinschreibung wird ignoriert Namen und Bezeichner müssen mit einem Buchstaben beginnen Nachfolgend sind Zahlen und Unterstriche erlaubt VHDL-Anweisungen werden mit einem Semikolon abgeschlossen 15

Boolsche Operatoren not Negation S <= not A; and UND-Verknüpfung S <= A and B; nand NAND-Verknüpfung S <= A nand B; or ODER-Verknüpfung S <= A or B; nor NOR-Verknüpfung S <= A nor B; xor Exklusiv-ODER-Verknüpfung S <= A xor B; xnor Aquivalenz S <= A xnor B; Arithmetische Operatoren + Addition Y <= A + B - Subtraktion Y <= A - B abs Absolutwertbildung Y <= abs(a) * Multiplikation Y <= A * B / Division Y <= A / B (Logikelemente!) Vergleichs Operatoren: <, <=, >, >=, =, /= 16

Bestimmte Konstrukte können simuliert werden, lassen sich aber nicht für eine reale Hardware übersetzten Was aus dem breiten Spektrum an funktionalem VHDL-Code tatsächlich synthesefähiger VHDL-Code ist, bestimmt primär das zur VHDL- Synthese gewählte Übersetzungsprogramm (Compiler / Synthesetool), z.b. Quartus II Funktionaler, nicht synthesefähiger Code wird vor allem im Bereich der Simulation zur Erstellung sogenannter Testbenches eingesetzt. Synthesefähigen VHDL-Code herzustellen ist im Regelfall aufwendiger und der Entwickler muss dabei auf große Teile der Sprachmöglichkeiten von VHDL bewusst verzichten und die Zielhardware und deren genauen Eigenschaften näher kennen. 17

18

19

Unterschied zu klassischen Programmiersprachen Programmiersprachen legen sequentiellen Ablauf einzelner Anweisungen fest Aufbau physikalischer Schaltungen wird modellhaft durch HDLs beschrieben Zwei Wesentliche Arten Speicherung und Übertragung Signale: Verknüpfung und Informationsübermittlung zwischen einzelnen nebenläufigen (=parallel ablaufenden) Funktionsblöcken Nehmen ihren neuen Zustand erst am Ende eines sequentiellen Prozesses an Variablen: Existieren nur innerhalb von sequentiellen Anweisungsfolgen von Prozessen Zuweisungen wirken unmittelbar (ähnlich wie bei Programmiersprachen) Mehr Komponenten in VHDL mehr Logikelemente zusätzlich generierte Hardware arbeitet voll parallel während Module in Programmen immer Rechenzeit beanspruchen! beeinträchtigt die zeitliche Abarbeitung bereits existenter Module nicht 20

switch_igbts_2 Asynchroner Reset Synchrone (zum FPGA-Clock) Abarbeitung des Codes Generic Eigener Datentyp locate_sector_2 1 Taktzyklus für Abarbeitung Ausgangswerte direkt auf Signal der Entity Ergebnisse die wiederum zur Ausgangswertberechnung benötigt werden sind Variablen calculate_times_2 Sofortige Verfügbarkeit der Ergebnisse durch Variablen Signalausgabe: Variable Signal 21

Für das Erstellen und Testen in Programmiersprachen wie z. B. C sind Debugger mit Single-Step-Funktionalität üblich. bedingt durch die parallele Ausführung nicht möglich in VHDL Signalverläufe werden daher simuliert z.b. mit der Quartus II Entwicklungsumgebung von Altera (Nachteil: langer Kompilierungsvorgang ) oder z.b. mit ModelSim kostenlose "Altera Web Edition" mit kostenlose Version von ModelSim (eingeschränktem Funktionsumfang) 22

In einem Simulationsmodell wird der eigentlich zu testende und synthesefähige VHDL-Code bzw. VHDL-Modul eingebettet und die Hardware darum in einem sogenannten 'Testbench' möglichst getreu nachgebildet. Das Simulationsmodell wird dabei meistens in nicht synthetisierbaren VHDL verfasst, was das Modellieren des Zeitverhaltens oder bestimmter physikalischer Parameter der externen Schaltungsteile erlaubt. Die Erstellung von guten Testbenches beträgt ca. 50% der gesamten Entwicklungszeit für IP-Cores ausmacht. Sie ist aber wesentlich effizienter als frühzeitig mit meist nicht auf Anhieb funktionierenden Schaltungsteilen auf reale Hardware zu gehen die dann nur schwer und umständlich in allen ihren Parametern verifiziert werden können. 23

Es wird zwischen zwei Simulationsarten unterschieden Verhaltenssimulation (behavioral simulation) Simulation des fertig platzierten IP- Core (post-fit simulation) Überprüfen der funktionellen Zusammenhänge z.b.: logische Verknüpfungen einzelner Signale geringer Rechenaufwand Simulation zeitlich längerer Abschnitte z.b mit Modelsim IP-Core wird zunächst synthetisiert, geroutet und platziert Netzliste und die zugehörigen Laufzeitinformationen (timing) der Zielhardware ermittelt (z.b. mit Quartus II) Laufzeitparameter Simulationsprogramm Vorteil: Zeitablaufprobleme in der Zielhardware werden bereits in der Simulation erkannt Aber: hoher Rechenaufwand, sehr langen Simulationszeiten 24

Simulationsumgebung für VHDLs integrierter Debug- und Anlayseumgebung Taktsynchron oder Timing-genaue Verhaltenssimulation Funktionstest von VHDL Code Simulation von VHDL unabhängig von Gatterlaufzeiten Test von einzelne Entitys separat als auch mehrere Entitys gemeinsam in einer Simulationsumgebung Portsignale und Signale innerhalb der zu testenden VHDL-Module können visuell mit einem Zeitverlauf (Waveform) dargestellt werden. Die visuelle Darstellung von Variablen ist Prinzip bedingt nicht möglich. Simulationszeit << Kompilierungszeit in Quartus Einfache Fehlersuche und erkennen von Zusammenhängen durch die dem Oszilloskop ähnliche Waveform-Darstellung 25

Für den Test von Entity(s) wird in ModelSim zusätzlich zu der zu testenden Entity(s) ein Simulationsquellcode benötigt. Muss vom Anwender erstellt und an die zu testende(n) Entity(s) angepasst werden. Muss nicht synthesefähig sein Beschreibt das Zielsystem/die Zielhardware Testbench -.vhdl Beinhaltet alle zum Test notwendigen Informationen Portsignale müssen deklariert und vorgegeben werden Vorgabe von Taktfrequenz und Reset-Signal Zustandswechsel von diversen Eingangssignalen 26

Umwandlung in ein binäres, simulatorinternes Format durch den in ModelSim integrierten VHDL-Compiler Überprüft zudem die Syntax des Codes und bindet die benötigten Bibliotheken ein Festlegen der Signale welche betrachtet werden sollen Starten der Simulation Waveform Verifizieren, Fehlersuche, etc. 27

28

Vorgehensweise in ModelSim 1. Erstellen eines neuen Projektes 2.1 Laden der zu testenden Entitys 2.2 Laden der zugehörigen Testbench 3.1 Kompilieren der VHDL-Codes 3.2 eventuelle Fehlerbehebung 4.1 Simulation starten 4.2 Signale auswählen 5. Verifizieren, Fehlersuche, etc. 29

Tiefpass 1.Ordnung Integrator + Rückkopplung T 1 x + x = k p y input x k T 1 T a + 1 = k p y + T 1 T a x k 1 diff sum temp_out m 30