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

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

Entwurf und Verifikation digitaler Systeme mit VHDL

Einführung in VHDL (2)

Ü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.

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

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

Übungsblatt 8 Lösungen:

Einstellige binäre Addierschaltung (Addierer)

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

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

VHDL Verhaltensmodellierung

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

VHDL Verhaltensmodellierung

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

Inhaltsverzeichnis Vorlesung VHDL, HW/SW-Codesign"

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

3. Prozesse in VHDL 1

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

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

16 Latches und Flipflops (Bistabile Kippstufen)

Automatisierung mit Hilfe einer rekonfigurierbaren FPGA-Hardwareplattform

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

Systembeschreibung und Entwurf

Simulation von in VHDL beschriebenen Systemen

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

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

VHDL-Syntax F. Schubert 09/08. Prof. Dr. F. Schubert. Hochschule für Angewandte Wissenschaften Hamburg VHDL-SYNTAX. 09/2008 Sbr

Formal methods for fun and profit VHDL. Ilja Kipermann. Sommersemester Leitung Jun. Prof. Beckert. Universität Koblenz-Landau

Design Compiler. VHDL Kurzbeschreibung und in dem SYNOPSYS

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

Prototyping eines universellen ISM-Band Transmitters auf Basis des NI FlexRIO MDK

Emulation und Rapid Prototyping. Hw-Sw-Co-Design

Emulation und Rapid Prototyping

1 Grundlagen von VHDL

VHDL. D. Neuhäuser, G. Grune (W. Koch) Einleitung. Entity. Architecture. Sequenziell Strukturell. Packages

VHDL Post-Route Simulation mit XILINX-FPGA s

Entwurf digitaler Schaltungen mit Hochsprachen (VHDL)

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

1 Hardwareentwurf. 1.1 Grundlagen

Einführung in die technische Informatik

VHDL Syntax V1.0. F. Wolf

CPLDs. Vom Platinenlayout zum ersten Projekt. Jakob Holderbaum. Erstellt am 9. August Berufskolleg Olsberg Paul-Oeventrop Str.

Vortrag zum Hauptseminar Hardware/Software Co-Design

Wozu Verifikation? Der Entwurf eines 1 million gate ASIC benötigt ca Mann Tage Quality Assurance benötigt 50% der Zeit/des Geldes

Übersicht. Prof. Dr. B. Lang, FH Osnabrück Konstruktion digitaler Komponenten, 6 Synthese - 1 -

Boundary Scan Days 2009

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

1. Einleitung. 2. Aufgabenstellung. R. Bartholomä, Prof. F. Kesel, Prof. T. Greiner Fachhochschule Pforzheim, Tiefenbronnerstraße 65, Pforzheim

Hardware Synthese mit VHDL

Entwurf digitaler Systeme

VHDL- und mixed-mode Netzlistensimulation

Funktionale Sicherheit Testing unter

Einführung in VHDL und Anleitung zur CPLD Simulation und Synthese

Der Design- und Verifizierungsprozess von elektronischen Schaltungen. Y Diagramm

HaPra Versuchsreihe 4 - Aufbau eines Volladdierers. Aufbau eines Volladdierers mit diskreten Bausteinen

Aufgaben und Lösungen

Simulation von Gatternetzlisten VHDL und Mixed-mode

Hardwarepraktikum WS05/06

Speicherung digitaler Signale

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Die Programmiersprache C Eine Einführung

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

Verifikation. ECS Group, TU Wien

Team. Prof. Dirk Timmermann. Siemens AG (ICN Greifswald)

Wintersemester 2001/2002. Hardwarepraktikum. Versuch 4: Sequentielle Systeme 1. - Toralf Zemlin - Swen Steinmann - Sebastian Neubert

Hardware/Software Co-Design

VHDL vs Verilog. Hochschule Bremen. RST-L Ausarbeitung. Anke Kamp Frank Schmidt Florian Thiem

Praktium Systementwurf mit VHDL HDL Design Lab. Lehrstuhl für Entwurfsautomatisierung Technische Universität München

PROJEKT WÜRFEL. von Vincent Bootz, Christoph Beigel, Matthias Ackermann. Projekt Würfel WS2002/03

PROJEKT WÜRFEL. von Vincent Bootz, Christoph Beigel, Matthias Ackermann. Projekt Würfel WS2002/03

C.3 Funktionen und Prozeduren

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

Halbleiterdaten. Eigenschaften von Si und GaAs bei T = 300K, sofern nicht anders angegeben. Eigenschaft Symbol Einheit Silizium GaAs

Teil C Anwendung von VHDL

Teil 1: Digitale Logik

VHDL Design Guidelines Interstaatliche Hochschule für Technik Buchs

Crashkurs VHDL FH München, FB 06

CPLD Auswahl und Design

Aufgabe 1: Mikroelektronische Grundlagen & CMOS-Inverter (25 Punkte)

Programmieren für Wirtschaftswissenschaftler SS 2015

Programmierbare Logik

Einführung in ModelSim

1. Beschreibung der Aufgabe

Entwurf eines Generators zur Erzeugung von Hard- und Software-Beschreibungen für Bildverarbeitungspipelines

Klausur zur Vorlesung

Deklarationen in C. Prof. Dr. Margarita Esponda

Tutorium für Fortgeschrittene

Anleitung Laborpraktikum VLSI-Technik: Versuch 3 / Verhalten des realen IC

8.3 Taster am µcontroller

Repetitorium Informatik (Java)

Grundlagen der Technischen Informatik / Digitaltechnik (GTI/DT)

Versuch 4 Realisierung einer Ampelsteuerung auf einem FPGA-Board

Mikroelektronik-Ausbildung am Institut für Mikroelektronische Systeme der Leibniz Universität Hannover

Grundlagen der Informatik 2. Grundlagen der Digitaltechnik. 5. Digitale Speicherbausteine

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

Praktikum Grundlagen von Hardwaresystemen Sommersemester Versuch 2: Multiplexer, Carry-Ripple- und Carry-Lookahead-Addierer

Einführung in Xilinx Webpack ISE 10.1

Transkript:

VHDL Einführung 1 Marc Reichenbach und Michael Schmidt Informatik 3 / Rechnerarchitektur Universität Erlangen Nürnberg 05/12 1 / 44

Gliederung Überblick zu VHDL Vergleich VHDL/Verilog Designflow Aufbau einer VHDL-Beschreibung Architektur-Beschreibungen Signale vs. Variablen 2 / 44

Überblick zu VHDL grafische Schaltplaneingabe auf Logikelementebene kritisch starker Anstieg der Entwurfskomplexität "Time to market" deswegen Hardwarebeschreibung durch Hochsprachen Vorteil: einheitliche Beschreibung für Simulation und Synthese etablierte Modellierungssprachen: Verilog (amerik. Markt) VHDL (europ. Markt) mittlerweile steigender Anteil von SystemC, SystemVerilog (für Systemmodellierung und Systemverifikation) 3 / 44

Überblick zu VHDL VHDL unter IEEE-Norm 1076 in 1987, 1993, 2000, 2002 und 2008 standardisiert synthesefähiger Anteil unter 1076.6 standardisiert!! VHDL ist eine Modellierungssprache, keine Programmiersprache Kleinschreibung üblich (aber Unterschiede in der Literatur!) 4 / 44

Überblick zu VHDL Kommentare werden in VHDL mit erstellt (seit 2008 Blockkommentar möglich) vollständige VHDL-Anweisungen mit ; abgeschlossen Signalzuweisungen erfolgen mit <= Operator Variablenzuweisungen erfolgen mit := Operator einzelne Signalwerte mit einzelnen Anführungeszeichen ( 0 ) Vektoren mit doppelten Anführungszeichen ( 0001 ) 5 / 44

Vergleich VHDL/Verilog [1] gleichwertige Modellierung von Hardware-Komponenten allerdings leicht versetzte Abdeckung über den Verhaltensebenen 6 / 44

Vergleich VHDL/Verilog [1] VHDL: Vielzahl von Datentypen (sprach- und benutzerdefiniert) Verilog: nur sehr einfache sprachdefinierte Datentypen Verilog: kein Konzept für Packages (für wiederverwendete Datentypen, Funktionen) oder Bibliotheken interpretierende Sprache Verilog ist für Beginner einfacher zu erlernen 7 / 44

Vergleich VHDL/Verilog [1] VHDL erscheint zunächst komplizierter (stark typisiert, mehrere Modellierungswege) jedoch mächtig für fortgeschrittene Benutzer VHDL: mehr Konstrukte für High-Level Modellierungen Verilog: Möglichkeit auch Basiszellen (ASIC, FPGA) zu modellieren (in VHDL über VITAL Standard) Verilog: Explizite Unterscheidung zwischen Registern und Verbindungen VHDL ist an ADA angelehnt, Verilog stärker an C 8 / 44

Designflow Wie kommt man vom HDL Code zur tatsächlichen Hardware (FPGA, ASIC)? Designflow beschreibt Abbildungsschritte oft Unterschiede in Abhängigkeit von der verwendeten Tool-Chain 9 / 44

Vereinfachter Allgemeiner Designflow VHDL-Code Schaltplan Testbench Constraints Synthese Funktionale Simulation Translation Map Place & Route Floorplanning, Layout Timing Analyse, DRC Checks Konfigurationsdatei Implementierung Tapeout Zeitbehaftete Simulation FPGA ASIC 10 / 44

Synthese auch Logik-Synthese genannt Übersetzung des HDL Codes in architektur-spezifische Netzliste Netzliste auf Register-Transfer Ebene (RTL) Kombinatorische Logik D CLK Q Kombinatorische Logik D CLK Q Kombinatorische Logik clk 11 / 44

Implementierung Abbildung der Netzliste auf Zieltechnologie Bibliothekselemente einer ASIC-Bibliothek Bibliothekselemente eines FPGA-Devices Abschätzung von Zeitinformationen für zeitbehaftete Simulation SDF (Standard Delay Format) 12 / 44

Prinzipieller Aufbau einer VHDL-Beschreibung B i b l i o t h e k e n e i n b i n d e n l i b r a r y <Name>; z. B. B i b l i o t h e k s n a m e o d e r WORK Verz. use <Name>.[<Name>.... ] ( < B e z e i c h n e r > a l l ) ; S c h n i t t s t e l l e d e r Komponente d e f i n i e r e n e n t i t y <Entityname> i s [ g e n e r i c (< D e k l a r a t i o n von Parametern > ) ; ] port(< D e k l a r a t i o n d e r Ein und Ausgaenge >); [< E n t i t y d e k l a r a t i o n e n >;] end <Entityname >; F u n k t i o n a l e s V e r h a l t e n d e r Komponente b e s c h r e i b e n a r c h i t e c t u r e <A r c h i t e k t u r n a m e > of <Entityname> i s [< A r c h i t e k t u r d e k l a r a t i o n e n >;] begin {<VHDL Anweisungen >;} end <A r c h i t e k t u r n a m e >; 13 / 44

Prinzipieller Aufbau einer VHDL-Beschreibung o p t i o n a l d i e K o n f i g u r a t i o n f e s t l e g e n w i c h t i g b e i mehreren A r c h i t e k t u r b e s c h r e i b u n g e n zu e i n e r E n t i t y c o n f i g u r a t i o n <K o n f i g u r a t i o n s n a m e > of <Entityname> i s f o r <A r c h i t e k t u r n a m e > { f o r <Komponente> <Bindungsanweisungen >; end f o r ; } end f o r ; end [ c o n f i g u r a t i o n ] [< K o n f i g u r a t i o n s n a m e >]; 14 / 44

Beispiel einer VHDL-Beschreibung e i n f a c h e s B e i s p i e l : AND G a t t e r mit 2 Eingaengen l i b r a r y i e e e ; use i e e e. std_logic_1164. a l l ; f u e r Datentyp STD_LOGIC, s p a e t e r mehr... S c h n i t t s t e l l e e i n e s AND2 G a t t e r s e n t i t y AND2 i s port ( a : i n s t d _ l o g i c ; b : i n s t d _ l o g i c ; o : out s t d _ l o g i c ) ; end AND2 ; F u n k t i o n a l e s V e r h a l t e n des G a t t e r s a r c h i t e c t u r e b e h a v i o r of AND2 i s begin o <= a and b ; end b e h a v i o r ; 15 / 44

use für Einbinden von Bibliothekselementen oder eigene Paketen es kann jeder Name eines Paketes oder einer Bibliothek sichtbar gemacht werden Wichtig: Bibliotheken vor JEDER entity einbinden! mit Hilfe von all, werden alle Sub-Elemente sichtbar Vorsicht mit all: auf Abhängigkeiten achten!!! 16 / 44

use a l l e Elemente des P a k e t e s std_logic_1164 aus d e r B i b l i o t h e k i e e e, z. B. Datentyp s t d _ l o g i c l i b r a r y i e e e ; use i e e e. std_logic_1164. a l l ; a l l e Elemente des P a k e t e s own_package use work. own_package. a l l ; 17 / 44

entity Schnittstelle eines VHDL-Funktionsblockes nach außen (vergleichbar mit PINs eines IC-Gehäuses) S c h n i t t s t e l l e d e r Komponente d e f i n i e r e n e n t i t y <Entityname> i s [ g e n e r i c (< D e k l a r a t i o n von Parametern > ) ; ] port(< D e k l a r a t i o n d e r Ein und Ausgaenge >); [< E n t i t y d e k l a r a t i o n e n >;] end <Entityname >; generic: zur Festlegung generischer Parameter für die Komponente (z.b. einen Parameter für die Busbreite) 18 / 44

entity Deklaration der Anschlüsse erfolgt über port-anweisung Datentyp und Richtung der Ports (in, out, inout, buffer, linkage) muss festgelegt werden Anschlüsse werden mit Signalen verbunden, für Kommunikation nach außen (z.b. anderen Komponenten) Kommunikation innerhalb der Komponente WICHTIG: Variablen sind keine Signale! (später mehr) 19 / 44

architecture beschreibt das Verhalten eines VHDL-Moduls zu einer Entity verschiedene Möglichkeiten der Beschreibung (Unterschiede in Literatur) Strukturbeschreibung Istanziierung und Verbindung von Komponenten Verhaltensbeschreibung Prozessbeschreibung Funktionalitätsbeschreibung mit Prozessen Datenflussbeschreibung parallele Signalzuweisungen von booleschen Gleichungen 20 / 44

Strukturbeschreibung Verwendung von bereits vorhandenen VHDL-Modulen oder Bibliothekselementen zuerst Deklaration der Komponenten-Schnittstelle danach Instanziierung der Komponente im architecture-body component <Entityname> [ g e n e r i c (<Parameter D e k l a r a t i o n e n >); ] port ( I /O D e k l a r a t i o n e n ) ; end component ; 21 / 44

Strukturbeschreibung <I n s t a n z b e z e i c h n e r >: <Entityname> [ g e n e r i c map (<Parameter Zuweisungen >) ] port map (< Portzuweisungen >); jede Instanz erhält eine Bezeichnung zur Referenzierung port map: Verknüpfung der Instanz mit der Schnittstelle der Hauptkomponente und/oder internen Signalen generic map (optional): Übergabe von Parametern an die Instanz (später mehr dazu, z.b. bei der Verwendung interner FPGA-Komponenten) 22 / 44

Strukturbeschreibung AND G a t t e r mit 3 Eingaengen mit H i l f e von 2 x AND2 l i b r a r y i e e e ; use i e e e. std_logic_1164. a l l ; S c h n i t t s t e l l e des AND3 G a t t e r s e n t i t y and3 i s port ( a : i n s t d _ l o g i c ; b : i n s t d _ l o g i c ; c : i n s t d _ l o g i c ; o : out s t d _ l o g i c ) ; end and3 ; a r c h i t e c t u r e b e h a v i o r of and3 i s component AND2 i s port ( a : i n s t d _logic ; b : i n s t d _ l o g i c ; o : out s t d _ l o g i c ) ; end component ; 23 / 44

Strukturbeschreibung s i g n a l out_zw : std_logic ; begin 1. I n s t a n z u1 des AND2 G a t t e r s und Port Mapping u1 : AND2 port map( a, b, out_zw ) ; 2. I n s t a n z u1 des AND2 G a t t e r s und Port Mapping u2 : AND2 port map( c, out_zw, o ) ; end b e h a v i o r ; 24 / 44

Strukturbeschreibung resultiernde Schaltung der AND3-Komponente 25 / 44

Datenflussbeschreibung Spezialfall der Verhaltensbeschreibung, in der Literatur oft nicht explizit definiert/unterschieden Modellierung des Datenflusses über kombinatorische logische Funktionen ohne Prozesse alle Signalzuweisungen einer Datenflussbeschreibung verhalten sich nebenläufig 26 / 44

Datenflussbeschreibung e n t i t y RSFF i s port ( s, r : i n s t d _logic ; q, nq : out s t d _ l o g i c ) ; end RSFF ; a r c h i t e c t u r e d a t a f l o w of RSFF i s Z w i s c h e n s i g n a l e e i n f u e g e n ( Ausgaenge q, nq n i c h t l e s b a r ) s i g n a l nq_zw : s t d_logic ; s i g n a l q_zw : s t d _ l o g i c ; begin q_zw <= r nor nq_zw ; nq_zw <= s nor q_zw ; q <= q_zw ; nq <= nq_zw ; end d a t a f l o w ; 27 / 44

Datenflussbeschreibung Synthese-Ergebnis der Datenflussbeschreibung Problem dieser Schaltung? 28 / 44

Prozessbeschreibung Beschreibung des Verhaltens mit Hilfe von Prozessen Prozesse ermöglichen die Modellierung sequentieller Anweisungen (Verzweigungen, Schleifen, usw.) Allgemeine Prozess-Beschreibung: [< Prozessname >:] p r o c e s s [ ( S e n s i t i v i t a e t s l i s t e ) ] <D e k l a r a t i o n e n > begin {< S e q u e n t i e l l e Anweisungen >} end p r o c e s s [< Prozessname >]; 29 / 44

Prozessbeschreibung Prozess muss Sensitivitätsliste enthalten oder wait-anweisungen Sensitivitätsliste Signale durch Kommata getrennt Signale der Liste starten Prozessbearbeitung durch Simulator aktivieren die durch Prozess abgebildete HW und zwar wenn eines der Signal sich ändert ( Event ) ohne Sensitivitätsliste (wait-anweisungen) nicht synthesefähig (z.b. für Simulation) wait f o r 20 ns ; synthesefähig wait u n t i l c l k = 1 and c l k e v e n t ; 30 / 44

Prozessbeschreibung für synthesefähige Prozesse werden Prozesse mit Sensitivitätsliste empfohlen (REICHARDT) ABER: wait-anweisungen vorallem sinnvoll für einfache Testbenches (keine Synthesefähigkeit benötigt) Verwendung eines Prozessnamens ist optional Deklarationsteil kann eigene Datentypen, Konstanten oder Variablen enthalten funktionales Verhalten wird zwischen begin und end process; definiert 31 / 44

Prozessbeschreibung mehrere Prozesse innerhalb einer architecture verhalten sich nebenläufig im Simulator werden sequentiellen Anweisungen nacheinander abgearbeitet (wie in einer Programmiersprache) Abarbeitung im Simulator in unendlich kleiner Zeit ein Synthesewerkzeug versucht diese seq. Anweisungen auf Hardwarefunktionselemente abzubilden 32 / 44

Prozessbeschreibung in Prozessen sind unbedingte Signalzuweisungen erlaubt, selektive und bedingte Zuweisungen hingegen nicht (dort z.b. mit if then else arbeiten!) wichtig: Aktualisierung der Signalzuweisungen immer erst am Prozessende!!! Problem: während Prozessausführung nicht auf aktuelle Werte zugreifbar dafür gibt es Variablen 33 / 44

Architektur-Beschreibungsformen in der Praxis Mischung der verschiedenen Beschreibungsformen Strukturbeschreibung für Modul- und Hierarchiebildung Funktionalität über Verhaltens- und Datenflussbeschreibung die Strukturbeschreibung ermöglicht u.a. auch das Einbinden sogenannter Hard-Macros im FPGA (Multiplizierer, BRAM,...) 34 / 44

Signale, Variablen und Konstanten Unterscheidung für VHDL-Beginner oft schwierig Signale kann man prinzipiell als Verbindungen ansehen für externe und interne Anbindung von Komponenten, Funktionsblöcken Ports einer Entity werden auch wie Signale behandelt Signale müssen eindeutigen Namen und Typen innerhalb eines VHDL-Moduls haben 35 / 44

Signale, Variablen und Konstanten Definition von Signalen erfolgt im Architektur-Deklarationsteil... a r c h i t e c t u r e... e i n f a c h e s S i g n a l s i g n a l a : b i t ; 0 o d e r 1 s i g n a l b : s t d _ l o gic ; Neunwertige L o g i k ( empfohlen! ) S i g n a l v e k t o r e n s i g n a l c : std_logic_vector (7 downto 0 ) ; s i g n a l d : std_logic_vector (0 to 1 5 ) ; I n i t i a l i s i e r u n g ( n i c h t empfohlen! ) nur S i m u l a t i o n, NICHT SYNTHETISIERBAR! s i g n a l e : s t d _ l o gic := 0 ; begin... 36 / 44

Signale, Variablen und Konstanten Signalzuweisung über <= Operator Unbedingte Signalzuweisung:... s i g n a l a : s t d _ l o gic ; s i g n a l b : std_logic_vector (15 downto 0 ) ;... begin B e i s p i e l e u n b e d i n g t e S i g n a l z u w e i s u n g e n a <= b ( 6 ) ; a <= 1 ; b <= " 0110000001010100 " ; 37 / 44

Signale, Variablen und Konstanten Bedingte Signalzuweisung: [< B e z e i c h n e r >:] <Signalname> <= <Logischer_Ausdruck_1> when <Bedingung_1> e l s e [ <Logischer_Ausdruck_ 2> when <Bedingung_2> e l s e ]... <logischer_ Ausdruck_ n >; B e i s p i e l : o u t p u t <= a when c o n t r o l = 0 e l s e b when c o n t r o l = 1 e l s e 0 ; führt zu Prioritäts-Encoder (Verschachtelung von Gattern) vergleichbar mit if then else - Konstrukt 38 / 44

Signale, Variablen und Konstanten Selektive Signalzuweisung: [ B e z e i c h n e r : ] with <S i g n a l k o m b i n a t i o n > s e l e c t <Signalname> <= <Logischer_Ausdruck_1> when <Signalwert_ 1 >, [< Logischer_Ausdruck_ 2> when <Signalwert_ 2 >],... [< Logischer_Ausdruck_n> when o t h e r s ] ; B e i s p i e l : M u l t i p l e x e r, S i g n a l e x und y, e i n S t e u e r s i g n a l z und d e r Ausgang o u t p u t vom Typ s t d _ l o g i c gegeben MUX2: with z s e l e c t o u tput <= x when 0, y when 1, 0 when o t h e r s ; Auswahl aus einer Reihe gleichberechtigter Möglichkeiten (Multiplexerstruktur) 39 / 44

Signale, Variablen und Konstanten Konstanten und Variablen bestehen aus Name, Type und optional einem Initialwert Konstanten z.b. für generische Parameter in Packages Variablen werden normalerweise im Prozess-Deklarationsteil definiert Ausnahme: shared variable (von mehreren Prozessen benutzbar) Variablen-Zuweisung mit := Operator constant r e g i s t e r w i d t h : i n t e g e r := 3 2 ; constant PI : r e a l := 3, 1 4 1 5 9 2 6 5 ; v a r i a b l e n,m: i n t e g e r := 3 2 ; 40 / 44

Datentypen std_logic und std_ulogic für HW-Entwurf sind Elemente 0 und 1 des Datentyps BIT nur unzureichend keine Möglichkeit Signale auf hochohmig zu legen (z.b. wichtig für Busse, wie beispielsweise I 2 C) für ASIC-Entwurf ist auch eine Unterscheidung in schwache und starke Signale notwendig aus diesem Grund gibt es den Datentyp std_logic (9-wertige Logik) ursprünglich in VHDL nicht vorgesehen, deshalb die Bibliothek ieee.std_logic_1164 einbinden 41 / 44

Datentypen std_logic und std_ulogic Werte: U : nicht initialisiert (im Simulator) X : undefiniert (Simulator erkennt Buskonflikt) 0 : starke logische 0 1 : starke logische 1 Z : hochohmig (Tri-State Ausgang) W : schwach unbekannt (Buskonflikt zw. L und H ) L : schwache logische 0 H : schwache logische 1 - : Don t Care (Zustand bedeutungslos, für Minimierung verwendbar) 42 / 44

Datentypen std_logic und std_ulogic bei std_logic können mehrere Treiber für ein Signal existieren (z.b. wichtig für bidirektionale Busse mit mehreren Sendern) Auflösungsfunktion entscheidet, welches Signal sich durchsetzt (ist in IEEE 1164 als Tabelle gespeichert) Datentyp std_ulogic (u für unresolved): Signale dürfen nur in einem Prozess, bzw. einer nebenläufigen Anweisungen eine Wertzuweisung erfahren std_ulogic ist weniger flexibel, dadurch aber Erkennung versehentlicher Mehrfachzuweisungen (Fehlermeldung im Simulator) 43 / 44

Literatur Bücher VHDL-Synthese, Jürgen Reichardt, Bernd Schwarz, 5. Auflage, Oldenbourg Wissenschaftsverlag GmbH, 2009, ISBN 978-3-486-58987-0 The Designer s Guide to VHDL, P.J. Ashenden, 3. Auflage, Morgan Kaufmann Publisher, 2008, ISBN 978-0-12-088785-9 Paper [1] VHDL & Verilog Compared & Contrasted - Plus Modeled Example Written in VHDL, Verilog and C, Douglas J. Smith, 33rd Design Automation Conference, Las Vegas, 1996 44 / 44