Reconfigurable Computing. VHDL Crash Course. Chapter 2

Ähnliche Dokumente
Vorlesung IHS2 VHDL. Wintersemester 2008/09. T. Vangelov / H.-D. Wuttke

I EINLEITUNG SYNTAX SPEZIELLE PROBLEME BEISPIEL AUSBLICK

Einführung in die technische Informatik

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

1.1 VHDL-Beschreibung

12 VHDL Einführung (III)

GTI Bonus VHDL - EXTRA

5 VHDL Einführung (I)

ERA-Zentralübung 11. Maximilian Bandle LRR TU München Maximilian Bandle LRR TU München ERA-Zentralübung 11

Versuchsreihe 7. Registerfile. Registerfile + Programmzähler. HaPra Versuchsreihe 7 - Registerfile + Programmzähler. 32 Register à 32 Bit

Entwurf und Simulation einfacher Logikelemente

Praktikum Systementwurf mit VHDL HDL Design Lab

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

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

EHP Einführung Projekt A

Übungsblatt 8 Lösungen:

Einführung in VHDL (2)

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

FPGA-Entwurf mit VHDL. Serie 3

18 Schieberegister. Serieller Serieller Eingang 5 Stufen Ausgang. 1. Takt. 2. Takt

Einstellige binäre Addierschaltung (Addierer)

Hardware Praktikum 2008

Eingebettete Systeme

Aufgabe 1: Kombinatorische Schaltungen

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

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

5.Vorlesung Rechnerorganisation

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

2. Einführung in VHDL

VHDL Verhaltensmodellierung

Computergestützter IC- Entwurf

Übung 3: VHDL Darstellungen (Blockdiagramme)

Computergestützter IC- Entwurf

Verilog/VHDL. Mehdi Khayati Sarkandi Uni Siegen

Laborübung 2. Teil 1: Latches, Flipflops, Counter. Abbildung 1: Schaltkreis eines Gated D-Latch

15 Einführung in den Entwurf von Zustandsautomaten

VHDL Verhaltensmodellierung

Übung 5: VHDL Zähler

Laborübung 3. Latches, Flipflops, Counter

D.5 Versuchsreihe 5: Arithmetisch-Logische Einheit

Entwurfsverfahren digitaler Schaltungen

Name: DT2 Klausur

Kapitel 10, VHDL, Teil 2. Prof. Dr.-Ing. Jürgen Teich Lehrstuhl für Hardware-Software-Co-Design. Grundlagen der Technischen Informatik

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

Verilog Hardware Description Language (HDL)

Endliche Automaten 1 WS 00/01. Steuerautomaten

Entwurf und Verifikation digitaler Systeme mit VHDL

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.

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

Übung Hardwareentwurf

Outline Logik Speicher Synthese Signale/Variablen Packages Generische Designs. Basics. Marc Reichenbach

Entwurf digitaler Systeme mit VHDL-1076

Sequentielle Schaltungen 37 SS 96. Steuerpfad

4 Entwurf eines Prozessorelementes

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

Laborübung 4. Zustandsautomaten (Finite State Machines)

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

Name: DT2 Klausur Bitte achten Sie auf eine saubere Form. Nicht leserliches kann nicht bewertet werden.

VHDL Simulation. in ORCAD

Hardwarepraktikum WS 1997/98. Versuch 5. Sequentielle Systeme II

1 Entwurf und Verhalten einfacher, synchroner Automaten

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

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

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

VHDL-Einführung. Universität Hamburg MIN Department Informatik Eingebettete Systeme: VHDL-Einführung

Aufgaben und Lösungen

Outline Schieberegister Multiplexer Zähler Addierer. Rechenschaltungen. Marc Reichenbach und Michael Schmidt

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

ERA-Zentralübung 12. Maximilian Bandle LRR TU München Maximilian Bandle LRR TU München ERA-Zentralübung 12

Tutorial Vivado/VHDL Teil 3 7-Segment-Anzeige

Hardware Praktikum 2008

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

Ausarbeitung zum ETI Praktikum

Name: DT2 Klausur Bitte achten Sie auf eine saubere Form. Nicht leserliches kann nicht bewertet werden.

Klausur ( ) : Technische Grundlagen der Informatik 1 Digitale Systeme WS 2010/2011

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

5.2 Endliche Automaten

Grundlagen der Technischen Informatik. 13. Übung

Unterprogramme. Komplexes Verhalten kann modular mit Hilfe von Unterprogrammen beschrieben werden Es gibt zwei Arten von Unterprogrammen:

FAKULTÄT FÜR INFORMATIK

Beschreibungsmöglichkeiten in Verilog

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

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

1. Beschreibung der Aufgabe

16 Latches und Flipflops (Bistabile Kippstufen)

Echtzeitbildverarbeitung mit FPGAs. Feith Sensor to Image GmbH, Schongau Matthias Schaffland

D.6 Versuchsreihe 6: Registersatz und Programmzähler

3. Prozesse in VHDL 1

Entwurf digitaler Systeme

VHDL - Objekte und Typen

Simulation von in VHDL beschriebenen Systemen

Transkript:

Reconfigurable Computing VHDL Crash Course Chapter 2 Prof. Dr.-Ing. Jürgen Teich Lehrstuhl für Hardware-Software Software-Co-Design Reconfigurable Computing

VHDL VHDL: Ver high speed integrated circuits Hardware Description Language Hardware-Beschreibung zum Zwecke der Patentanmeldung von Algorithmen Simulation Snthese von IC s Beschreibung erfolgt unter den Gesichtspunkten Verschaltung Verhalten Struktur Hierarchie Hier nur snthesefähiges Subset! Reconfigurable Computing 2

Entit Hülle und Schnittstellendefinition x x ENTITY x logische Kapselung einer Einheit Definition der Schnittstelle: Signale X Signale werden durch Bezeichner, Richtung und Datentp definiert parameter Richtungs-Bsp.: in, out, inout, buffer Datentp-Bsp.: bit, std_logic(_vector), ADT ENTITY ENTITY Signale sind innen wie außen bekannt und können dort genutzt, d.h. verdrahtet werden Sicht von außen Sicht von innen Reconfigurable Computing 3

Entit als Black Box Nach außen black box Kapselung der inneren Struktur und des Verhaltens (Funktionalität) hier: Entit mit zwei Eingängen und einem Ausgang Port ist definiert, Funktionalität aber noch völlig offen Name two_gate Port Port Struktur und Verhalten? Reconfigurable Computing 4

Entit Beispiel Schlüsselwörter sind blau Vorspann Zu verwendende Bibliothek LIBRARY ieee; USE ieee.std_logic_1164.all; Was soll aus der Bibliothek verwendet werden Entit-Definition ENTITY two_gate IS Name der Entit Zwei Eingangs-Signale mit Namen: und Schnittstelle PORT (, : IN std_logic; : OUT std_logic ); Name der Entit END two_gate; Ausgangs-Signal mit Namen: Datentp der Signale (mehrwertige Logik) Reconfigurable Computing 5 Schlüsselwörter entweder groß- oder kleinschreiben, nicht gemischt!

Architecture Verhalten einer Entit Das Innenleben einer Entit wird in einer Architecture beschrieben. Die Architektur bekommt einen eindeutigen Namen, kann einen Deklarationsteil für interne Signale haben, wird einer Entit zugeordnet. Es können verschiedene Architekturen für die selbe Entit erstellt werden. Architecture Struktur und Verhalten ARCHITECTURE <Architekturname> OF <Entit-Name> IS [Deklarationsteil] BEGIN [Architektur Statements] END <Architekturname>; Reconfigurable Computing 6

Architecture Beispiel Beispiel eines NAND-Gatters basierend auf der vorhergehenden Entit-Deklaration: Architecture & Zuweisungsoperator für Signale Name dieser Architektur Name der Schnittstellen- Definition (Entit) ARCHITECTURE two_gate_nand OF two_gate IS BEGIN Name dieser Architektur <= NOT ( AND ); END two_gate_nand; Verhaltensbeschreibung: Ein Statement mit vordefinierten Befehlen: AND, OR, NOT Reconfigurable Computing 7

Configuration Das Bindeglied Durch die Konfiguration wird eine Verhaltens- Beschreibung einer Entit eindeutig zugeordnet. Unterschiedliche Verhaltensbeschreibungen für ein Entit für die Simulation oder zur Snthese. verschiedene Ausprägungen des Verhaltens Simulation unterschiedlich aufwendig und schnell Schnittstellendefinition gilt für eine Klasse von Entits, z.b.: UND, ODER, XOR-Gatter jeweils mit zwei Eingängen nur Erstellen einer neuen Verhaltensbeschreibung Reconfigurable Computing 8

Configuration Beispiel Die Konfiguration bettet eine Architektur in eine Entit ein. two_gate_nand_conf & VHDL Kommentar eingeleitet mit: -- Name der Entit -- Configuration for nand with two Inputs CONFIGURATION two_gate_nand_conf OF two_gate IS FOR two_gate_nand... END FOR; END two_gate_nand_conf; Name der zu verwendenden Architektur Name der Konfiguration Reconfigurable Computing 9

Zwischenstand bisher behandelt: Entit beschreibt die Kapsel einer logischen Einheit und definiert deren Schnittstelle Architecture beschreibt das Innenleben einer Entit als Verhaltens- oder Strukturbeschreibung Configuration verknüpft eine Architecture mit einer Entit was fehlt noch: Komponenten zur Erstellung von Strukturbeschreibungen und zum Einführen von Hierarchie-Ebenen Prozesse Kontrollfluss, Automaten und Bitvektoren Zeitverhalten Simulation mit Hilfe einer Testbench Reconfigurable Computing 10

Verwendung von Komponenten & & Hierarchische Verwendung von Komponenten Komplexeres Gatter Beispiel: XOR Strukturbeschreibung Port: 2 Eingänge und 1 Ausgang xor Wiederverwendung von two_gate, hier mit neuem Namen xor_gate. inv1 inv2 ent1 & ent2 & connect1 connect2 ent3 Geplanter Aufbau des Entit xor_gate: Komponenten ent1, ent2 (Und-Gatter) ent3 (Oder-Gatter) inv1, inv2 (Inverter) Reconfigurable Computing 11

XOR-Entit Entit-Deklaration LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY xor_gate IS END xor_gate; PORT(, : IN std_logic; : OUT std_logic ); Reconfigurable Computing 12

XOR Deklarationen Architektur-Deklarationsteil Einbinden von fertigen Komponenten Gate-Deklaration ARCHITECTURE xor_structure OF xor_gate IS mit zwei Eingängen und einem Ausgang COMPONENT two_gate PORT (, : in std_logic; : out std_logic ); END COMPONENT; BEGIN... SIGNAL connect1, connect2: std_logic; SIGNAL inv1, inv2: std_logic; Zwei Verbindungsleitungen für die invertierten Eingangssignale Zwei Verbindungsleitungen für die 2 Und-Gatter und das Oder-Gatter Reconfigurable Computing 13

XOR Instanzierungen Instanziierung und Verdrahtung der Komponenten Tp der Instanz Verdrahtung: Intern => Extern (aus Sicht der einzubindenden Komponente)... ent1: two_gate PORT MAP ( =>, => inv1, => connect1 ); ent2: two_gate PORT MAP ( => inv2, =>, => connect2 ); ent3: two_gate PORT MAP ( => connect1, => connect2, => );... xor Instanz inv1 inv2 ent1 & ent2 & connect1 connect2 ent3 Reconfigurable Computing 14

XOR-Verschaltung im Detail ent1: two_gate PORT MAP ( =>, => inv1, => connect1 ); inv1 ent1 & connect1 ent2: two_gate PORT MAP ( => inv2, =>, => connect2 ); inv2 ent2 & connect2 ent3 ent3: two_gate PORT MAP ( => connect1, => connect2, => ); connect1 connect2 Reconfigurable Computing 15

Process Parallele Beschreibung Auswertung eines Prozesses: Anweisungen innerhalb eines Prozesses werden sequentiell abgearbeitet! Ein Prozess ist wie eine Endlosschleife zu sehen Ein Prozess muss mindestens eine Warteanweisung (veränderliches Signal, Zeitdauer, Ereignis) enthalten, damit keine Endlosschleife ohne Zeitverbrauch entsteht. Berechn. Signalwerte zum Prozess-Ende vortragen getriggertes Event Prozess sequentiell abarbeiten Variablen sofort Zuweisen & auswerten Prozess Auswertungs- Zklus Veränderung eines sensitiven Signals zum vorigen Durchlauf festgestellt Getriggerte Signale stabil Reconfigurable Computing 16

Process Parallele Beschreibung Sntax eines Prozesses... BEGIN Innerhalb einer Architecture Prozessname (optional) [label:] PROCESS (,,... ) BEGIN Prozessrumpf; END PROCESS [label]; Sensitivitätsliste: getriggerte Signale aktivieren bei Signaländerung den Prozess. Analog zu: warte darauf das sich bei oder irgend etwas ändert (alternativ: prozess-internes wait-statement) Achtung: Signalzuweisungen (<=) unterscheiden von Variablen einer gewöhnlichen Programmiersprache END; Prozessname (optional) VHDL A <= B; C <= A; = JAVA A = B; C = A; Reconfigurable Computing 17

Process Parallele Beschreibung Sntax eines Prozesses Signal a, b : bit;... PROCESS ( a ) Variable v : bit; BEGIN Signal a a ini Signal b b ini Variable v v ini zu Prozessbeginn a <= NOT b; v := NOT a; b <= a OR v; a <= b; WAIT ON a ; END PROCESS; _ b ini b ini Überschreibt Wert! sofort _ a ini or a ini _ a ini _ a ini Sequenzielle Abarbeitung. Aufruf, bis alle getriggerten Signale am Prozessende identisch (stabil) sind mit den Werten zu Beginn der jeweiligen Prozessiteration. zum Prozessende Reconfigurable Computing 18

XOR-Architektur Invertierung der Eingangssignale... END xor_arch; Prozessname INV : PROCESS (, ) BEGIN inv1 <= NOT ; inv2 <= NOT ; END PROCESS INV; xor Sensitivitätsliste Zuweisung des invertierten Eingangssignals inv1 inv2 Reconfigurable Computing 19

XOR-Kofiguration Zuweisen des Verhaltens an die instanziierten Entities CONFIGURATION xor_conf OF xor_gate IS FOR xor_behavior FOR ent1,ent2 : two_gate USE ENTITY work.two_gate(two_gate_and); END FOR; FOR ent3 : two_gate USE ENTITY work.two_gate(two_gate_or); END FOR; END FOR; END xor_conf; Entit-Name Verwende die folgende Entit Entit 1 und 2 sind vom Tp: two_gate Zugewiesene Architektur der Entities: AND-gate Zugewiesene Architektur der Entit: OR-gate Reconfigurable Computing 20

Kontrollfluss Verzweigung IF THEN ELSE CASE ( vom Tp std_logic: 1, 0, Z, X, ) nicht elseif LOGIC : PROCESS (,, x3 ) BEGIN... IF ( = '1' ) THEN <= '0' ; ELSIF ( = '1' ) THEN <= '1' ; ELSE <= 'Z' ; END IF;... CASE x3 IS Default-Fall WHEN '0' => z <= '0' ; WHEN others => z <= '1' ; END CASE; END PROCESS LOGIC; Reconfigurable Computing 21

Automaten Zustandsbasierte Moore- oder Meal-Automaten Zustandsübergangsfkt. : current_state next_state TYPE state_tpe IS ( S0, S1 ) ; SIGNAL current_state, next_state: state_tpe ; Automata : PROCESS ( current_state ) BEGIN CASE current_state IS WHEN S0 => next_state <= S1 ;... WHEN others => next_state <= S0 ;... END CASE; END PROCESS Automata; Setzen der Zustandsübergangsfunktion Hier auch Ausgabe!! Default-Fall Definition eines Zustandsvektors Instanziierung eines Zustandsvektors S0?? S1 Reconfigurable Computing 22

Automaten Fortschaltung der Zustände in separatem Prozess Asnchrones Reset Rücksetzen auf Zustand S0 Snchroner Zustandsübergang bei steigender Flanke vom Clock-Signal CLK... Snch : PROCESS ( CLK, RESET ) BEGIN triggert auf steigende CLK-Flanke IF ( RESET = '1' ) THEN -- define an asnchronous reset CURRENT_STATE <= S0; ELSIF ( CLK'EVENT and CLK = '1' ) THEN CURRENT_STATE <= NEXT_STATE; END IF; END PROCESS Snch; Zustandsübergang S0 CLK S1 CLK Reconfigurable Computing 23

Bitvektoren Einzelne Leitungen können zu Vektoren zusammengefasst werden: std_logic std_logic_vector( ) Beispiel: codierte Position mit 3 bit steigende Wertigkeit 2 1 2 0 1 1 0 MSB LSB ENTITY Position IS PORT( SOLL : in std_logic_vector( 2 downto 0 ); IST : out std_logic_vector( 0 to 2 ) ); END Position; 2 2 Wert: 6 3 Bit breiter, binär codierter Bit-Vektor, Schreibweise (x downto ) entspricht der üblichen Interpretation der Binärstellen mit MSB und LSB (MSB: most significant bit, LSB: least...) 2 0 2 1 2 2 1 1 0 Wert: 3 LSB MSB steigende Wertigkeit Reconfigurable Computing 24

Simulation Testbench Testbench Entit, die keine Daten von außen erhält (keine Portdefinition) Instanziiert die zu testende Entit als Komponente Generiert intern Testdaten (Test-Stimuli) Die generierten Test-Stimuli werden an die Inputs der eingebetteten Entit angelegt Simulation Verhaltensprüfung Beobachten der Ausgaben und internen Vorgänge der eingebetteten Entit. In der Art der Programmierung wird nicht zwischen einer Testbench und einer Entit unterschieden. Anwendung der erlernten Techniken wie auf eine normale Entit. Reconfigurable Computing 25

Testbench-Entit Leere Hülle, um die zu testende Entit als Komponente zu instanziieren. m_tb LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY m_tb IS END m_tb ; keine Port-Definition Name der Testbench (beliebig) Reconfigurable Computing 26

Testbench-Architektur Deklaration der zu testenden Komponente Lokale Signale, um die zu testende Komponente zu verdrahten Die Deklaration von Signalen und Komponenten erfolgt zu Beginn der Architektur Name der Testbench- Architecture Name der Testbench ARCHITECTURE m_tb_behavior OF m_tb IS drei lokale SIGNAL tb_, tb_, tb_ : std_logic; Signalleitungen COMPONENT xor_gate PORT(, : in std_logic; : out std_logic ); END COMPONENT; BEGIN... Deklaration der zu testenden Komponente Tpe-Bezeichner der Komponente Definition der Schnittstellen Reconfigurable Computing 27

Testbench-Architektur Instanziierung und Verdrahtung der Komponente Instanziierung einer Komponente und Bezeichnung... BEGIN test_ent : xor_gate Tp der Komponente Component-Port... m_tb tb_ tb_ PORT MAP ( => tb_, => tb_, => tb_ ); test_ent tb_ lokales Signal Verdrahtung: Component-Port => lokales Signal Reconfigurable Computing 28

Testbench-Architektur Die zu testende Entit ist nun bekannt Testmustererzeugung (Stimuli) in einem Prozess Zeitangaben hier nicht snthetisierbar, die Testbench wird aber auch nie snthetisiert!... Nur tb_ erhält neuen Wert, tb_ behält den alten Wert... Name des Prozesses m_stimuli : PROCESS BEGIN tb_ <= '0'; tb_ <= '0'; WAIT FOR 10 ns ; tb_ <= '1'; WAIT FOR 10 ns ; tb_ <= '0' AFTER 5 ns ; END PROCESS stimulie; Zuweisung von Werten zu den Signalen Für eine Zeitdauer von 10 ns diesen Wert anlegen. Es verstreicht Zeit! Nach einer Zeitdauer von 5 ns diesen Wert setzen. Eintrag in Signal-Schedule-Liste Reconfigurable Computing 29

Timing-Verhalten Timing kann unterschiedlich modelliert werden wait for after Sensitivliste Benutzung eines Generic-Parameters Hier: verzögerte Zuweisung (Ausgangsverzögerung: del_time: time) Parameter für Verzögerungszeit ENTITY two_gate IS mit Defaultwert GENERIC( del_time: time := 2 ns ); PORT(, : in std_logic; : out std_logic ); END two_gate; ARCHITECTURE two_gate_del_nand OF two_gate IS BEGIN <= NOT ( AND ) AFTER del_time; END two_gate_del_nand ; Verzögerte Zuweisung nach 2ns Reconfigurable Computing 30

Simulation vhdldbx vhdldbx als Simulator (Snopss) Auswahl der zu testenden Entit Hierarch Browser Wave-Form-Viewer Alternativ: Modelsim (Mentor Graphics) Stimuli aus Testbench (Test-Input) Ergebnis der Simulation ist der Signalverlauf der zu testenden Signale als Reaktion auf die Stimuli. Reconfigurable Computing 31

Simulation Hierarch Browser Hierarch Browser zur Auswahl der zu simulierenden Signalleitungen Beispiel für die Auswahl von Signalen, hier XOR! Reconfigurable Computing 32

XOR-Simulation Simulation mittels vhdldbx im Wave-Form-Viewer Reconfigurable Computing 33