vhdl vs. verilog - · pdf fileeinleitung grundlagen programbeispiele azitf vhdl vs. verilog...
Post on 06-Feb-2018
228 Views
Preview:
TRANSCRIPT
Einleitung Grundlagen Programbeispiele Fazit
VHDL vs. Verilog
Anke KampFrank SchmidtFlorian Thiem
Fachbereich Elektrotechnik und Informatik Hochschule BremenRST-L Prof. Risse
8. Januar 2008
1 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Übersicht1 Einleitung
AnfängeProgrammablaufKomplexität
2 GrundlagenDatentypenFunktionenModularisierungZeitverhaltenOperatorenKonstrukte auf Gatterebene
3 ProgrambeispieleVHDL EncoderVerilog Decoder
4 Fazit
2 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Hardwarebeschreibungssprachen
HDL - Hardware Description Language
Integrierte Schaltungen durch eine formale Syntax
Zeitliche Abläufe und Parallelitäten sind beschreibbar
Simulierung durch EDA - Werkzeuge(Electronic Design Automation)
VHDL in Europa und Verilog in den USA
3 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Hardwarebeschreibungssprachen
HDL - Hardware Description Language
Integrierte Schaltungen durch eine formale Syntax
Zeitliche Abläufe und Parallelitäten sind beschreibbar
Simulierung durch EDA - Werkzeuge(Electronic Design Automation)
VHDL in Europa und Verilog in den USA
3 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Hardwarebeschreibungssprachen
HDL - Hardware Description Language
Integrierte Schaltungen durch eine formale Syntax
Zeitliche Abläufe und Parallelitäten sind beschreibbar
Simulierung durch EDA - Werkzeuge(Electronic Design Automation)
VHDL in Europa und Verilog in den USA
3 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Entwicklungsebenen
1 Systemebene/Algorithmische Ebene
Grobes algorithmisches ModelModulierung in C/C++, MATLAB, VHDL, Verilog
2 Register-Transfer-Ebene
Beschreibung kommunizierender Register und Logiceinheiten, mitDatenstrukturen und Daten�üsse
3 Gatterebene
Beschreibung durch Logic-Gatter und Flip�ops
4 Schaltkreisebene
Beschreibung durch Bauteile, z.B. TransistorenSimulation nicht praktiziert
4 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Anfänge von VHDL
VHDL -> VHSIC Hardware Description Language
VHSIC -> Very High Speed Integrated Circuit
5 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Anfänge von VHDL
Initiiert durch das amerikanische Verteidigungsministerium(Department of Defense - DoD)
Anlehnung an ADA
Standardisierte, einheitliche Sprache zur Beschreibung oderDokumentation von Hardware
Es wurde von Beginn an als o�ener Standard entwickelt
VHDL-Version 7.2 wurde 1987 als IEEE 1076-1987 standardisiert
1993 Überarbeitung als IEEE 1076-1993 standardisiert
6 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Anfänge von VHDL
Initiiert durch das amerikanische Verteidigungsministerium(Department of Defense - DoD)
Anlehnung an ADA
Standardisierte, einheitliche Sprache zur Beschreibung oderDokumentation von Hardware
Es wurde von Beginn an als o�ener Standard entwickelt
VHDL-Version 7.2 wurde 1987 als IEEE 1076-1987 standardisiert
1993 Überarbeitung als IEEE 1076-1993 standardisiert
6 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Anfänge von VHDL
Initiiert durch das amerikanische Verteidigungsministerium(Department of Defense - DoD)
Anlehnung an ADA
Standardisierte, einheitliche Sprache zur Beschreibung oderDokumentation von Hardware
Es wurde von Beginn an als o�ener Standard entwickelt
VHDL-Version 7.2 wurde 1987 als IEEE 1076-1987 standardisiert
1993 Überarbeitung als IEEE 1076-1993 standardisiert
6 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Anfänge von VHDL
Verschiedene Ansätze um besondere Probleme zu lösen
Simulation des Zeitverhaltens auf Gatterebene durch den VITALStandardMathematisches Package zur Simulation von Gleitpunktzahlen undkomplexe ZahlenVHDL-AMS zur analogen SchaltungssimulationUnd viele mehr
7 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Aussichten von VHDL
Umfangreichen Überarbeitung mit der Bezeichnung VHDL-200X zuerwarten
Ziel dabei:synthesefähige Umsetzung von Gleitpunktzahlen
8 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Anfänge von Verilog
Verilog -> Verifying Logic
9 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Anfänge von Verilog
Als proprietäre Sprache durch die Firma Gateway DesignAutomation Inc.
Anlehnung an C
1987 schneller und e�zienter Verilog-XL Simulator rausgekommen
Für die Schaltungsbeschreibung auf GatterebeneBeschreibung auf der Register-Transfer-Ebene möglich
1989 Gateway von Firma Cadence Design Systems aufgekauft
1995 als IEEE 1364-1995 standardisiert
Letzte Version IEEE 1364-2001 eine überarbeitete Version von '95
10 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Anfänge von Verilog
Als proprietäre Sprache durch die Firma Gateway DesignAutomation Inc.
Anlehnung an C
1987 schneller und e�zienter Verilog-XL Simulator rausgekommen
Für die Schaltungsbeschreibung auf GatterebeneBeschreibung auf der Register-Transfer-Ebene möglich
1989 Gateway von Firma Cadence Design Systems aufgekauft
1995 als IEEE 1364-1995 standardisiert
Letzte Version IEEE 1364-2001 eine überarbeitete Version von '95
10 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Anfänge von Verilog
Als proprietäre Sprache durch die Firma Gateway DesignAutomation Inc.
Anlehnung an C
1987 schneller und e�zienter Verilog-XL Simulator rausgekommen
Für die Schaltungsbeschreibung auf GatterebeneBeschreibung auf der Register-Transfer-Ebene möglich
1989 Gateway von Firma Cadence Design Systems aufgekauft
1995 als IEEE 1364-1995 standardisiert
Letzte Version IEEE 1364-2001 eine überarbeitete Version von '95
10 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Anfänge von Verilog
Besonderheiten
1988 release des ersten Logigsynthesewerkzeug durch FirmaSynopsys dadurch wurde die Beschreibung aufRegister-Transfer-Ebene in eine Gatterrealisierung überführbarVerilog-XL Simulator häu�g als Sign-O�-Simulator verwendetVerilog-AMS zur analogen SchaltungssimulationUnd viele mehr
11 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Aussichten von Verilog
2002 release von SystemVerilog 3.0 (HDVL)Hardware Beschreibungs-und Veri�kationssprache
Ziel dabei:Ermöglicht nun erstmalig die Veri�zierung der Hardware
12 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Entwicklungsablauf
Quelle: Ott, Wilderotter, �A Designer's Guide To VHDL Synthesis�, Kluwer AcademicPublishers, Dordrecht, 1994
13 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Simulationsumgebung
Quelle: Kessel, Bartholomä, �Entwurf von digitalen Schaltungen und Systemen mitHDLs und FPGAs�, Oldenbourg Verlag München Wien, 2006
14 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Tür-Ö�ner
Listing 1: VHDL1 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−2 Code aus ' V e r i l o g For D i g i t a l Design '3 von Vahid und Lysecky ,4 John Wi ley & Sons , I n c . , 20075 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−67 l i b r a r y i e e e ;8 use i e e e . s td_log ic_1164 . a l l ;910 E n t i t y DoorOpener i s11 Por t (C , H, P : i n s t d_ l og i c ;12 F : out s t d_ l og i c ) ;13 end DoorOpener ;1415 A r c h i t e c t u r e beh o f DoorOpener i s16 beg i n17 Pro c e s s (C , H, P)18 beg i n19 F <= not (C) and (H o r P ) ;20 end P r o c e s s ;21 end beh ;
Listing 2: Verilog1 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−2 Code aus ' V e r i l o g For D i g i t a l Design '3 von Vahid und Lysecky ,4 John Wi ley & Sons , I n c . , 20075 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−67 module DoorOpener (C , H, P , F ) ;8 i n p u t C, H, P ;9 ou tpu t F ;10 r e g F ;1112 a lway s @(C , H, P)13 beg i n14 F <= (~C) & (H | P ) ;15 end16 endmodule
15 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Übersicht1 Einleitung
AnfängeProgrammablaufKomplexität
2 GrundlagenDatentypenFunktionenModularisierungZeitverhaltenOperatorenKonstrukte auf Gatterebene
3 ProgrambeispieleVHDL EncoderVerilog Decoder
4 Fazit
16 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
VHDL Entity
1 ent i t y ent i tyName i s2 [ gener ic ( L i s t e−der−g en e r i c s−und−deren−Typen ) ; ]3 [ port ( L i s t e−der−Ans ch l u s s po r t s−und−deren−Typen ; ]4 [ l o c a l d e c l a r a t i o n s ; ]5
6 [ begin7 p a s s i v e s t a t emen t s ]8 end [ ent i t y ] [ ent i tyName ] ;
17 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
VHDL Architecture
1 arch i tec tu re a r ch i t e c tu r eName of ent i tyName i s2 [ l o c a l d e c l a r a t i o n s ]3
4 begin5 s t a t emen t s ;6 end [ arch i tec tu re ] [ a r ch i t e c tu r eName ] ;
18 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Verilog Module
1 module moduleName ( p o r t L i s t ) ;2 po r t d e c l a r a t i o n ;3 [ o t h e r d e c l a r a t i o n ; ] // z .B . l o k a l e Va r i a b l e n4
5 s t a t emen t s ;6 endmodule
19 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Datentypen Beide
Gängige Datentypen gleich, z.B.
booleanbitskalare�iesskommacharactersinteger im Bereich (−(231 − 1) bis (231 − 1))
20 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Datentypen Verilog
Schlüsselwort Beschreibung
wire Einfache Verbindung zwischen Schaltungs-elemeten, Leitung, Variable
reg Verbindung mit Speicherverhalten, Ziel fürZuweisungen, Variable
Tabelle: Datentypen in Verilog
21 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Datentypen Verilog
Typ Syntax Beispiel
Leitung oder Va-riable mit einerBreite von einemBit
name reg enable;
Bus oder Varia-ble mit einer Breitevon n Bit
[n-1:0] name wire [3:0] nibble;
k Busse mit jeweilsn Bit [n-1:0] name [0:k-1] wire [2:0] activity [0:1];
Speicher mitk Speicherzellender Breite n Bit
[n-1:0] name [0:k-1]reg [7:0] memory [0:31];Zugri�: memory[4][2]
22 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
VHDL Datentypen
std_ulogic
1: Wert 1; stark0: Wert 0; starkW: unbekannt; schwachL: Wert 0; schwachH: Wert 1; schwach(-): don't careStd_logic
Z: tristate/hochohmig; schwachX: unbekannt; stark; Ergebnis fehlerhaft entstandenU: unde�niert; uninitialisiert oder unbekanntes Signal
< datentyp > _vector ; z.B. Bit_vector(3 downto 0)
Records (aus bestehenden Typen zusammengesetzter Datentyp)
Eigene Typde�nitionen per type name is (liste, der, werte)
Typeinschränkung per subtype
23 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Funktionen VHDL
function
procedure
24 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
VHDL function
1 funct ion funcName ( p a r ame t e r L i s t e ) return type i s2 −− Dek l a r a t i o n ;3
4 begin5 −− S e q u e n z i e l l e Anweisungen6 return va r ;7 end funcName ;
25 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
function VHDL
Aufruf mit keinem bis mehreren Argumenten
Argumentenklasse: Signale oder Konstanten
Argumente werden nur gelesen, daher Modus 'in' nicht unbedingtanzugeben
Schlüsselwort return unter Angabe des Rückgabewertes zumverlassen
nur ein Rückgabewert
Kann überall verwendet werden, wenn return Typ erlaubt ist
Alle sequenziellen Anweisungen ausser wait erlaubt
26 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
VHDL procedure
1 procedure procName ( p a r am e t e r l i s t e ) i s2 −− Dek l a r a t i o n ;3
4 begin5 −− s e q u e n z i e l l e Anweisungen6 end procName ;
27 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
procedure VHDL
Aufruf mit mehreren Argumenten
Argumentenklasse: Signale, Konstanten oder Variablen
in, out, inout bei Argumenten möglich
Werden bis zu einem return oder bis zum Ende (entsprechendeinem Prozess mit �sensitivity-list�) abgearbeitet
Kein bis viele Rückgabewerte
Kann überall verwendet werden, wenn return Typ erlaubt ist
28 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
procedure VHDL
Ein wait darf enthalten sein, wenn nicht von einem Prozess mitSensitivity-Liste aufgerufen
Alle sequenziellen Anweisungen können Genutz werden
Bei paralleler Verwendung wird sie immer ausgeführt, wennArgument 'in' oder 'inout' sich ändert
29 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Funktionen Verilog
function
task
30 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Verilog task
1 task taskName ;2 d e c l a r a t i o n ;3
4 s ta tement ;5 endtask
31 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
task in Verilog
Darf Zeitverzögerungen aufweisen
input und output erlaubt
Eigenständiger Aufruf z.B. mit �tsk(out, in1);�
32 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Verilog function
1 funct ion [ range ] funct ionName ;2 d e c l a r a t i o n ;3
4 s ta tement ;5 endfunction
33 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
function in Verilog
Darf keine Zeitverzögerung aufweisen, also Simulationszeit �Null�
Mindestens ein input aber kein output, Returnwert ersetzt denFunktionsnamen
Aufruf ist Teil einer Anweisung, z.B. �i=func(a, b);� dabei ist funcder Name
34 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Grundlagen
Frank übernimmt nun und berichtet von der wunderschönenWelt der Operatoren
Fliegender Wechsel, please wait...
35 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Modularisierung
Bei der Modellierung eines Systems wird dieses in verschiedeneModule zerlegt, und diese Module dann getrennt voneinanderentwickelt.
Modulweise kann das Modell von der Verhaltensebene hin zurGatter- und Transistorebene entwickelt werden, da die Module nurüber ihre Schnittstellen kommunizieren.
Es gibt dabei vier Abstraktionsebenen:
Verhaltensebene: enthält Schleifen (for, while), Abfragen (if, case)
Register-Transfer-Ebene: enthält Zuweisungen, Operatoren
Gatterebene: enthält logische Gatter (und UDP bei Verilog)
Transistorebene: enthält Transistoren und Leitungen (nur Verilog)
36 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Modularisierung
Bei der Modellierung eines Systems wird dieses in verschiedeneModule zerlegt, und diese Module dann getrennt voneinanderentwickelt.
Modulweise kann das Modell von der Verhaltensebene hin zurGatter- und Transistorebene entwickelt werden, da die Module nurüber ihre Schnittstellen kommunizieren.
Es gibt dabei vier Abstraktionsebenen:
Verhaltensebene: enthält Schleifen (for, while), Abfragen (if, case)
Register-Transfer-Ebene: enthält Zuweisungen, Operatoren
Gatterebene: enthält logische Gatter (und UDP bei Verilog)
Transistorebene: enthält Transistoren und Leitungen (nur Verilog)
36 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Modularisierung
Bei der Modellierung eines Systems wird dieses in verschiedeneModule zerlegt, und diese Module dann getrennt voneinanderentwickelt.
Modulweise kann das Modell von der Verhaltensebene hin zurGatter- und Transistorebene entwickelt werden, da die Module nurüber ihre Schnittstellen kommunizieren.
Es gibt dabei vier Abstraktionsebenen:
Verhaltensebene: enthält Schleifen (for, while), Abfragen (if, case)
Register-Transfer-Ebene: enthält Zuweisungen, Operatoren
Gatterebene: enthält logische Gatter (und UDP bei Verilog)
Transistorebene: enthält Transistoren und Leitungen (nur Verilog)
36 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Modularisierung
Bei der Modellierung eines Systems wird dieses in verschiedeneModule zerlegt, und diese Module dann getrennt voneinanderentwickelt.
Modulweise kann das Modell von der Verhaltensebene hin zurGatter- und Transistorebene entwickelt werden, da die Module nurüber ihre Schnittstellen kommunizieren.
Es gibt dabei vier Abstraktionsebenen:
Verhaltensebene: enthält Schleifen (for, while), Abfragen (if, case)
Register-Transfer-Ebene: enthält Zuweisungen, Operatoren
Gatterebene: enthält logische Gatter (und UDP bei Verilog)
Transistorebene: enthält Transistoren und Leitungen (nur Verilog)
36 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Modularisierung
Bei der Modellierung eines Systems wird dieses in verschiedeneModule zerlegt, und diese Module dann getrennt voneinanderentwickelt.
Modulweise kann das Modell von der Verhaltensebene hin zurGatter- und Transistorebene entwickelt werden, da die Module nurüber ihre Schnittstellen kommunizieren.
Es gibt dabei vier Abstraktionsebenen:
Verhaltensebene: enthält Schleifen (for, while), Abfragen (if, case)
Register-Transfer-Ebene: enthält Zuweisungen, Operatoren
Gatterebene: enthält logische Gatter (und UDP bei Verilog)
Transistorebene: enthält Transistoren und Leitungen (nur Verilog)
36 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Modularisierung
Bei der Modellierung eines Systems wird dieses in verschiedeneModule zerlegt, und diese Module dann getrennt voneinanderentwickelt.
Modulweise kann das Modell von der Verhaltensebene hin zurGatter- und Transistorebene entwickelt werden, da die Module nurüber ihre Schnittstellen kommunizieren.
Es gibt dabei vier Abstraktionsebenen:
Verhaltensebene: enthält Schleifen (for, while), Abfragen (if, case)
Register-Transfer-Ebene: enthält Zuweisungen, Operatoren
Gatterebene: enthält logische Gatter (und UDP bei Verilog)
Transistorebene: enthält Transistoren und Leitungen (nur Verilog)
36 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Modul bei Verilog
Bei Verilog sind Module auch als Modul bezeichnet:
module full_adder(a, b, c_in, sum, c_out);
input a, b, c_in;output sum, c_out;
reg tmp1, tmp2, tmp3;
half_adder ha1(a, b, tmp1, tmp2); // calling modulehalf_adder ha2(tmp1, c_in, sum, tmp3); // half_adder
or(c_out, tmp2, tmp3);
endmodule
37 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Komponente bei VHDL
Bei VHDL können andere Entities aufgerufen werden, wenn sie inder Architektur als Komponenten mit Portliste deklariert werden:
−− Deklaration der Komponente:component NAND2port (A, B: in STD_LOGIC; Z: out STD_LOGIC);end component;
−− Instantiierung der Komponente:N1: NAND2 port map (S1, S2, S3);
Dadurch wird Signal S1 mit Port A assoziiert, S2 mit Port B undS3 mit Port Z.
38 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Pakete bei VHDL
Bei VHDL können Deklarationen, die man benötigt, auch zuPaketen (package) zusammmengefasst werden, die man mit �use�in den Code einbinden kann:
use WORK.SYNTH_PACK.all; −− Alle Deklarationen aus dem−− Paket SYNTH_PACK einbindenpackage PROGRAM_PACK isconstant PROP_DELAY: TIME; −− zurückgehaltene Konstantefunction "and" (L, R: MVL) return MVL;end package PROGRAM_PACK;
Ein Paketkörper ist nur nötig, wenn im Paket selbst Konstantenzurückgehalten werden oder Unterprogramme deklariert wurden, dienun Inhalte brauchen.
39 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Pakete bei VHDL
Bei VHDL können Deklarationen, die man benötigt, auch zuPaketen (package) zusammmengefasst werden, die man mit �use�in den Code einbinden kann:
use WORK.SYNTH_PACK.all; −− Alle Deklarationen aus dem−− Paket SYNTH_PACK einbindenpackage PROGRAM_PACK isconstant PROP_DELAY: TIME; −− zurückgehaltene Konstantefunction "and" (L, R: MVL) return MVL;end package PROGRAM_PACK;
Ein Paketkörper ist nur nötig, wenn im Paket selbst Konstantenzurückgehalten werden oder Unterprogramme deklariert wurden, dienun Inhalte brauchen.
39 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Verilog-Zeitverhalten: Compilerdirektive
In Verilog wird im Code in Zeiteinheiten gerechnet, die mit derCompilerdirektive 'timescale festgelegt werden:
' timescale 1 ns / 100 ps
Jede Zeiteinheit dauert dann 1 ns, und Zeitbereiche kleiner als 100ps werden gerundet.
40 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Verilog-Zeitverhalten: VerhaltensebeneEs kann mehrere always- und initial-Blöcke geben.
always@(posedge Clk)beginend
alwayswait (Set == 1)beginwait (Set == 0)end
initialbeginend
41 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Verilog-Zeitverhalten: VerhaltensebeneEs kann mehrere always- und initial-Blöcke geben.
always@(posedge Clk)beginend
alwayswait (Set == 1)beginwait (Set == 0)end
initialbeginend
41 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Verilog-Zeitverhalten: VerhaltensebeneEs kann mehrere always- und initial-Blöcke geben.
always@(posedge Clk)beginend
alwayswait (Set == 1)beginwait (Set == 0)end
initialbeginend
41 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Verzögerungen
Code wird normalerweise sofort ausgeführt, kann aber aufverschiedene Arten verzögert werden:
#5 rst = 1'b0;rst = #5 1'b0;
Im ersten Fall wird die Ausführung um 5 Zeiteinheiten verzögert, imzweiten die Datenübernahme.
Q = @(posedge Clk) D;
Erst bei steigender Takt�anke von Clk werden die Datenübernommen.
42 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Verzögerungen
Code wird normalerweise sofort ausgeführt, kann aber aufverschiedene Arten verzögert werden:
#5 rst = 1'b0;rst = #5 1'b0;
Im ersten Fall wird die Ausführung um 5 Zeiteinheiten verzögert, imzweiten die Datenübernahme.
Q = @(posedge Clk) D;
Erst bei steigender Takt�anke von Clk werden die Datenübernommen.
42 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Zuweisungen und Gabelung
Blockierende Zuweisungen mit = werden als Ganzes ausgeführt, beinichtblockierenden mit <= werden die Daten zwischengespeichert.Die nächste Anweisung kann begonnen werden, auch bevor dieÜbernahme abgeschlossen ist:
#10 rst <= 1'b0;rst <= #5 1'b0;
Bei Gabelung beginnen die Anweisungen zwischen fork und joinebenfalls nebenläu�g:
forkjoin
43 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Zuweisungen und Gabelung
Blockierende Zuweisungen mit = werden als Ganzes ausgeführt, beinichtblockierenden mit <= werden die Daten zwischengespeichert.Die nächste Anweisung kann begonnen werden, auch bevor dieÜbernahme abgeschlossen ist:
#10 rst <= 1'b0;rst <= #5 1'b0;
Bei Gabelung beginnen die Anweisungen zwischen fork und joinebenfalls nebenläu�g:
forkjoin
43 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Kontinuierliche Zuordnung
Mit assign (und force) kann man Werte kontinuierlich zuordnen:
assign Z=Aassign A=B
Bis zum deassign (oder release) sind diese Werte dannkontinuierlich zugeordnet und können per einfacher Zuweisung mit= oder <= nicht geändert werden.
Im Beispiel hat eine Änderung von B zur Folge, dass A den neuenWert von B annimmt, und direkt darauf auch Z den neuen Wertvon A.
44 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Kontinuierliche Zuordnung
Mit assign (und force) kann man Werte kontinuierlich zuordnen:
assign Z=Aassign A=B
Bis zum deassign (oder release) sind diese Werte dannkontinuierlich zugeordnet und können per einfacher Zuweisung mit= oder <= nicht geändert werden.
Im Beispiel hat eine Änderung von B zur Folge, dass A den neuenWert von B annimmt, und direkt darauf auch Z den neuen Wertvon A.
44 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Gatterverzögerungen
Auch Gattern kann man Verzögerungen zuordnen:
and #4 (out1, a, b)xor #(3,5) (out2, a, b)
Bei Angabe einer Verzögerung gilt diese für alle Schaltungen desGatters, bei Angabe von zweien gilt die erste für steigende und diezweite für fallende Flanken.
45 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
VHDL-Zeitverhalten
Bei VHDL entsprechen den always-Statements die Prozesse. JederProzess hat seine Sensitivitätsliste von Signalen, bei derenÄnderung er startet:
process edge_di�(q, d, clk , rst )beginend
Eine Verzögerung wird hier durch eine explizite Zeitangabe erklärt:Z <= A or B after 10 ns
Mit 'event hat man eine Möglichkeit, auf steigende oder fallendeFlanken zu reagieren:if D'event
46 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
VHDL-Zeitverhalten
Bei VHDL entsprechen den always-Statements die Prozesse. JederProzess hat seine Sensitivitätsliste von Signalen, bei derenÄnderung er startet:
process edge_di�(q, d, clk , rst )beginend
Eine Verzögerung wird hier durch eine explizite Zeitangabe erklärt:Z <= A or B after 10 ns
Mit 'event hat man eine Möglichkeit, auf steigende oder fallendeFlanken zu reagieren:if D'event
46 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
VHDL-Zeitverhalten
Bei VHDL entsprechen den always-Statements die Prozesse. JederProzess hat seine Sensitivitätsliste von Signalen, bei derenÄnderung er startet:
process edge_di�(q, d, clk , rst )beginend
Eine Verzögerung wird hier durch eine explizite Zeitangabe erklärt:Z <= A or B after 10 ns
Mit 'event hat man eine Möglichkeit, auf steigende oder fallendeFlanken zu reagieren:if D'event
46 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
VHDL: wait
Ausserdem gibt es mit wait eine Möglichkeit, auf verschiedeneArten von Vorkommnissen zu warten:
wait on A, B, C;wait until A = B;wait for 10 ns;wait on CLOCK for 20 ns;wait until SUM > 100 for 50 ns;wait on CLOCK until SUM > 100;
47 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Operatoren
Arithmetische Operatoren
Logische Operatoren
Vergleichsoperatoren
Schiebeoperatoren
Zusammenfügungsoperatoren
Konditionaler Operator (nur Verilog)
48 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Arithmetische Operatoren
Grundrechenarten (+, -, *, /)
Die Grundrechenarten können auch auf Bitvektoren angewendetwerden, die dann als Binärzahlen interpretiert werden.
Absolutwert (ABS) und Exponentiation (**) bei VHDL
Modulo (% bei Verilog, MOD, REM bei VHDL)
REM (VHDL-Rest) übernimmt das Vorzeichen des Dividenden,ebenso wie % (Verilog-Modulo):
5 REM 3 = 2, 5 REM -3 = 2, -5 REM 3 = -2, -5 REM -3 = -2
MOD (VHDL-Modulo) übernimmt das Vorzeichen des Divisors:
5 MOD 3 = 2, 5 MOD -3 = -1, -5 MOD 3 = 1, -5 MOD -3 = -2
49 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Arithmetische Operatoren
Grundrechenarten (+, -, *, /)
Die Grundrechenarten können auch auf Bitvektoren angewendetwerden, die dann als Binärzahlen interpretiert werden.
Absolutwert (ABS) und Exponentiation (**) bei VHDL
Modulo (% bei Verilog, MOD, REM bei VHDL)
REM (VHDL-Rest) übernimmt das Vorzeichen des Dividenden,ebenso wie % (Verilog-Modulo):
5 REM 3 = 2, 5 REM -3 = 2, -5 REM 3 = -2, -5 REM -3 = -2
MOD (VHDL-Modulo) übernimmt das Vorzeichen des Divisors:
5 MOD 3 = 2, 5 MOD -3 = -1, -5 MOD 3 = 1, -5 MOD -3 = -2
49 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Arithmetische Operatoren
Grundrechenarten (+, -, *, /)
Die Grundrechenarten können auch auf Bitvektoren angewendetwerden, die dann als Binärzahlen interpretiert werden.
Absolutwert (ABS) und Exponentiation (**) bei VHDL
Modulo (% bei Verilog, MOD, REM bei VHDL)
REM (VHDL-Rest) übernimmt das Vorzeichen des Dividenden,ebenso wie % (Verilog-Modulo):
5 REM 3 = 2, 5 REM -3 = 2, -5 REM 3 = -2, -5 REM -3 = -2
MOD (VHDL-Modulo) übernimmt das Vorzeichen des Divisors:
5 MOD 3 = 2, 5 MOD -3 = -1, -5 MOD 3 = 1, -5 MOD -3 = -2
49 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Arithmetische Operatoren
Grundrechenarten (+, -, *, /)
Die Grundrechenarten können auch auf Bitvektoren angewendetwerden, die dann als Binärzahlen interpretiert werden.
Absolutwert (ABS) und Exponentiation (**) bei VHDL
Modulo (% bei Verilog, MOD, REM bei VHDL)
REM (VHDL-Rest) übernimmt das Vorzeichen des Dividenden,ebenso wie % (Verilog-Modulo):
5 REM 3 = 2, 5 REM -3 = 2, -5 REM 3 = -2, -5 REM -3 = -2
MOD (VHDL-Modulo) übernimmt das Vorzeichen des Divisors:
5 MOD 3 = 2, 5 MOD -3 = -1, -5 MOD 3 = 1, -5 MOD -3 = -2
49 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Arithmetische Operatoren
Grundrechenarten (+, -, *, /)
Die Grundrechenarten können auch auf Bitvektoren angewendetwerden, die dann als Binärzahlen interpretiert werden.
Absolutwert (ABS) und Exponentiation (**) bei VHDL
Modulo (% bei Verilog, MOD, REM bei VHDL)
REM (VHDL-Rest) übernimmt das Vorzeichen des Dividenden,ebenso wie % (Verilog-Modulo):
5 REM 3 = 2, 5 REM -3 = 2, -5 REM 3 = -2, -5 REM -3 = -2
MOD (VHDL-Modulo) übernimmt das Vorzeichen des Divisors:
5 MOD 3 = 2, 5 MOD -3 = -1, -5 MOD 3 = 1, -5 MOD -3 = -2
49 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Logische OperatorenVHDL kennt nur eine Gruppe logischer Operatoren, die jeweilssowohl auf Bits und Bitvektoren angewendet werden können, undein Resultat in diesen Datentypen zurückgeben:NOT, AND, OR, NAND, NOR, XOR und XNOR.
Bei Verilog dagegen gibt es drei Arten:
Logische Operatoren
Die Eingabewerte werden als Bits interpretiert, das Resultat ist einBit.
Bitweise Operatoren
Eingabewerte sind hier Bitvektoren gleicher Länge, ebenso dasResultat.
Reduktionsoperatoren
Eingabewert ist hier ein Bitvektor, dessen Bits mit dem Operatorverknüpft werden, das Resultat ist ein Bit.
50 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Logische OperatorenVHDL kennt nur eine Gruppe logischer Operatoren, die jeweilssowohl auf Bits und Bitvektoren angewendet werden können, undein Resultat in diesen Datentypen zurückgeben:NOT, AND, OR, NAND, NOR, XOR und XNOR.
Bei Verilog dagegen gibt es drei Arten:
Logische Operatoren
Die Eingabewerte werden als Bits interpretiert, das Resultat ist einBit.
Bitweise Operatoren
Eingabewerte sind hier Bitvektoren gleicher Länge, ebenso dasResultat.
Reduktionsoperatoren
Eingabewert ist hier ein Bitvektor, dessen Bits mit dem Operatorverknüpft werden, das Resultat ist ein Bit.
50 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Logische OperatorenVHDL kennt nur eine Gruppe logischer Operatoren, die jeweilssowohl auf Bits und Bitvektoren angewendet werden können, undein Resultat in diesen Datentypen zurückgeben:NOT, AND, OR, NAND, NOR, XOR und XNOR.
Bei Verilog dagegen gibt es drei Arten:
Logische Operatoren
Die Eingabewerte werden als Bits interpretiert, das Resultat ist einBit.
Bitweise Operatoren
Eingabewerte sind hier Bitvektoren gleicher Länge, ebenso dasResultat.
Reduktionsoperatoren
Eingabewert ist hier ein Bitvektor, dessen Bits mit dem Operatorverknüpft werden, das Resultat ist ein Bit.
50 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Logische OperatorenVHDL kennt nur eine Gruppe logischer Operatoren, die jeweilssowohl auf Bits und Bitvektoren angewendet werden können, undein Resultat in diesen Datentypen zurückgeben:NOT, AND, OR, NAND, NOR, XOR und XNOR.
Bei Verilog dagegen gibt es drei Arten:
Logische Operatoren
Die Eingabewerte werden als Bits interpretiert, das Resultat ist einBit.
Bitweise Operatoren
Eingabewerte sind hier Bitvektoren gleicher Länge, ebenso dasResultat.
Reduktionsoperatoren
Eingabewert ist hier ein Bitvektor, dessen Bits mit dem Operatorverknüpft werden, das Resultat ist ein Bit.
50 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Vergleichsoperatoren
Bei VHDL gibt es nur eine Sorte Vergleichsoperatoren:
>, >=, <=, <, = und ! =
Bei Bitvektoren werden die Operanden von links nach rechtsverglichen. Das Resultat ist ein Wahrheitswert.
Bei Verilog gibt es dagegen zwei Sorten:
Vergleichsoperatoren >, >=, <= und <
Gleichheitsoperatoren ==, ! =, === und ! ==
Die Operanden werden auch von links nach rechts verglichen. DasResultat ist ein Bit: 0, 1 oder x (unbekannt).
Bei === und ! == ist als Resultat nur 0 oder 1 möglich, wobeidie Gleichheit aller Bits überprüft wird, auch x und z.
51 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Vergleichsoperatoren
Bei VHDL gibt es nur eine Sorte Vergleichsoperatoren:
>, >=, <=, <, = und ! =
Bei Bitvektoren werden die Operanden von links nach rechtsverglichen. Das Resultat ist ein Wahrheitswert.
Bei Verilog gibt es dagegen zwei Sorten:
Vergleichsoperatoren >, >=, <= und <
Gleichheitsoperatoren ==, ! =, === und ! ==
Die Operanden werden auch von links nach rechts verglichen. DasResultat ist ein Bit: 0, 1 oder x (unbekannt).
Bei === und ! == ist als Resultat nur 0 oder 1 möglich, wobeidie Gleichheit aller Bits überprüft wird, auch x und z.
51 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Vergleichsoperatoren
Bei VHDL gibt es nur eine Sorte Vergleichsoperatoren:
>, >=, <=, <, = und ! =
Bei Bitvektoren werden die Operanden von links nach rechtsverglichen. Das Resultat ist ein Wahrheitswert.
Bei Verilog gibt es dagegen zwei Sorten:
Vergleichsoperatoren >, >=, <= und <
Gleichheitsoperatoren ==, ! =, === und ! ==
Die Operanden werden auch von links nach rechts verglichen. DasResultat ist ein Bit: 0, 1 oder x (unbekannt).
Bei === und ! == ist als Resultat nur 0 oder 1 möglich, wobeidie Gleichheit aller Bits überprüft wird, auch x und z.
51 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Vergleichsoperatoren
Bei VHDL gibt es nur eine Sorte Vergleichsoperatoren:
>, >=, <=, <, = und ! =
Bei Bitvektoren werden die Operanden von links nach rechtsverglichen. Das Resultat ist ein Wahrheitswert.
Bei Verilog gibt es dagegen zwei Sorten:
Vergleichsoperatoren >, >=, <= und <
Gleichheitsoperatoren ==, ! =, === und ! ==
Die Operanden werden auch von links nach rechts verglichen. DasResultat ist ein Bit: 0, 1 oder x (unbekannt).
Bei === und ! == ist als Resultat nur 0 oder 1 möglich, wobeidie Gleichheit aller Bits überprüft wird, auch x und z.
51 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
SchiebeoperatorenVerilog kennt nur die logischen Schiebeoperatoren << und >>.
VHDL kennt drei Arten:
Logische Schiebeoperatoren: SLL und SRL
Arithmetische Schiebeoperatoren: SLA und SRA
Rotationsoperatoren: ROL und ROR
Alle verschieben einen Bitvektor um die angegebene Anzahl vonStellen nach links oder rechts.
Bei den logischen und arithmetischen Operatoren verschwinden dieherausgeschobenen Bits, während Nullen (logisch) oder der Inhaltder letzten Stelle (arithmetisch) nachgeschoben werden.
Beim Rotieren werden die herausgeschobenen Bits auf der anderenSeite hereingeschoben.
52 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
SchiebeoperatorenVerilog kennt nur die logischen Schiebeoperatoren << und >>.
VHDL kennt drei Arten:
Logische Schiebeoperatoren: SLL und SRL
Arithmetische Schiebeoperatoren: SLA und SRA
Rotationsoperatoren: ROL und ROR
Alle verschieben einen Bitvektor um die angegebene Anzahl vonStellen nach links oder rechts.
Bei den logischen und arithmetischen Operatoren verschwinden dieherausgeschobenen Bits, während Nullen (logisch) oder der Inhaltder letzten Stelle (arithmetisch) nachgeschoben werden.
Beim Rotieren werden die herausgeschobenen Bits auf der anderenSeite hereingeschoben.
52 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
SchiebeoperatorenVerilog kennt nur die logischen Schiebeoperatoren << und >>.
VHDL kennt drei Arten:
Logische Schiebeoperatoren: SLL und SRL
Arithmetische Schiebeoperatoren: SLA und SRA
Rotationsoperatoren: ROL und ROR
Alle verschieben einen Bitvektor um die angegebene Anzahl vonStellen nach links oder rechts.
Bei den logischen und arithmetischen Operatoren verschwinden dieherausgeschobenen Bits, während Nullen (logisch) oder der Inhaltder letzten Stelle (arithmetisch) nachgeschoben werden.
Beim Rotieren werden die herausgeschobenen Bits auf der anderenSeite hereingeschoben.
52 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Zusammenfügungsoperatoren
Bei VHDL werden Bitvektoren mit dem & Operatoraneinandergehängt.
Bei Verilog werden Bitvektoren mit dem Anhängeoperator { } unddem Replikationsoperator { { } } zusammengefügt:
A = 1'b1; B = 2'b00; C = 2'b11;
X = { A, B } // X = 3'b100Y = { A, 2{B}, C } // Y = 7'b1000011
53 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Zusammenfügungsoperatoren
Bei VHDL werden Bitvektoren mit dem & Operatoraneinandergehängt.
Bei Verilog werden Bitvektoren mit dem Anhängeoperator { } unddem Replikationsoperator { { } } zusammengefügt:
A = 1'b1; B = 2'b00; C = 2'b11;
X = { A, B } // X = 3'b100Y = { A, 2{B}, C } // Y = 7'b1000011
53 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Zusammenfügungsoperatoren
Bei VHDL werden Bitvektoren mit dem & Operatoraneinandergehängt.
Bei Verilog werden Bitvektoren mit dem Anhängeoperator { } unddem Replikationsoperator { { } } zusammengefügt:
A = 1'b1; B = 2'b00; C = 2'b11;
X = { A, B } // X = 3'b100Y = { A, 2{B}, C } // Y = 7'b1000011
53 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Konditionaler Operator
Der konditionale Operator ? : hat drei Argumente, wovon das ersteein Bit ist und die beiden anderen Bitvektoren gleicher Länge sind,wie auch das Resultat. Ist das Bit 1, wird das zweite Argumentübernommen, bei 0 das dritte. Ist das Bit x, werdenübereinstimmende Stellen übernommen und die übrigen mit xbelegt.
54 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Konstrukte auf Gatterebene
In Verilog können neue Gatter erstellt werden. Für diese UserDe�ned Primitives (UDP) gilt:
Eingabewerte sind im UDP bestimmte Bits
Ausgabewert ist immer ein einziges Bit
Mit Hilfe einer Wahrheitstabelle in der Deklaration kann derAusgabewert dann bestimmt werden. Dabei gibt es zwei Typen:
Kombinatorische UDP
Sequentielle UDP
55 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Konstrukte auf Gatterebene
In Verilog können neue Gatter erstellt werden. Für diese UserDe�ned Primitives (UDP) gilt:
Eingabewerte sind im UDP bestimmte Bits
Ausgabewert ist immer ein einziges Bit
Mit Hilfe einer Wahrheitstabelle in der Deklaration kann derAusgabewert dann bestimmt werden. Dabei gibt es zwei Typen:
Kombinatorische UDP
Sequentielle UDP
55 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Konstrukte auf Gatterebene
In Verilog können neue Gatter erstellt werden. Für diese UserDe�ned Primitives (UDP) gilt:
Eingabewerte sind im UDP bestimmte Bits
Ausgabewert ist immer ein einziges Bit
Mit Hilfe einer Wahrheitstabelle in der Deklaration kann derAusgabewert dann bestimmt werden. Dabei gibt es zwei Typen:
Kombinatorische UDP
Sequentielle UDP
55 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Konstrukte auf Gatterebene
In Verilog können neue Gatter erstellt werden. Für diese UserDe�ned Primitives (UDP) gilt:
Eingabewerte sind im UDP bestimmte Bits
Ausgabewert ist immer ein einziges Bit
Mit Hilfe einer Wahrheitstabelle in der Deklaration kann derAusgabewert dann bestimmt werden. Dabei gibt es zwei Typen:
Kombinatorische UDP
Sequentielle UDP
55 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Kombinatorische UDP
Bei kombinatorischen UDP ist der Ausgabewert immer direkt vonden Eingabewerten und nichts anderem abhängig.
Der Ausgabewert wird dabei einer Wahrheitstabelle entnommen. Indieser Wahrheitstabelle sollten alle Kombinationen derEingabewerte abgedeckt werden.
Bei nicht abgedeckten Kombinationen der Eingabewerte ergibt sichals Rückgabewert x.
56 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Kombinatorische UDP - Beispiel
primitive udp_or(out, a, b);//Deklarationenoutput out;input a, b;
table// a b : out;0 0 : 0;? 1 : 1;1 ? : 1;endtable
endprimitive
Das Fragezeichen steht für '0, 1 oder x'.
57 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Sequentielle UDP
Bei sequentiellen UDP gibt es wichtige Unterschiede zukombinatorischen UDP:
Der neue Ausgabewert nicht nur von den Eingabewerten, sondernauch vom bisherigen Ausgabewert abhängig. Der Ausgabewert wirdhier als Zustand bezeichnet.
Der Zustand wird in einem Register festgehalten; dieserRegisterwert kann auch initialisiert werden.
Die Eingabewerte können als Werte oder als Übergänge (Flanken) inder Tabelle erscheinen.
Alle möglichen Kombinationen der Eingabewerte müssen in derWahrheitstabelle angegeben werden, um unbekannte Ausgabewerte(x) zu vermeiden.
58 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Sequentielle UDP
Bei sequentiellen UDP gibt es wichtige Unterschiede zukombinatorischen UDP:
Der neue Ausgabewert nicht nur von den Eingabewerten, sondernauch vom bisherigen Ausgabewert abhängig. Der Ausgabewert wirdhier als Zustand bezeichnet.
Der Zustand wird in einem Register festgehalten; dieserRegisterwert kann auch initialisiert werden.
Die Eingabewerte können als Werte oder als Übergänge (Flanken) inder Tabelle erscheinen.
Alle möglichen Kombinationen der Eingabewerte müssen in derWahrheitstabelle angegeben werden, um unbekannte Ausgabewerte(x) zu vermeiden.
58 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Sequentielle UDP
Bei sequentiellen UDP gibt es wichtige Unterschiede zukombinatorischen UDP:
Der neue Ausgabewert nicht nur von den Eingabewerten, sondernauch vom bisherigen Ausgabewert abhängig. Der Ausgabewert wirdhier als Zustand bezeichnet.
Der Zustand wird in einem Register festgehalten; dieserRegisterwert kann auch initialisiert werden.
Die Eingabewerte können als Werte oder als Übergänge (Flanken) inder Tabelle erscheinen.
Alle möglichen Kombinationen der Eingabewerte müssen in derWahrheitstabelle angegeben werden, um unbekannte Ausgabewerte(x) zu vermeiden.
58 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Sequentielle UDP
Bei sequentiellen UDP gibt es wichtige Unterschiede zukombinatorischen UDP:
Der neue Ausgabewert nicht nur von den Eingabewerten, sondernauch vom bisherigen Ausgabewert abhängig. Der Ausgabewert wirdhier als Zustand bezeichnet.
Der Zustand wird in einem Register festgehalten; dieserRegisterwert kann auch initialisiert werden.
Die Eingabewerte können als Werte oder als Übergänge (Flanken) inder Tabelle erscheinen.
Alle möglichen Kombinationen der Eingabewerte müssen in derWahrheitstabelle angegeben werden, um unbekannte Ausgabewerte(x) zu vermeiden.
58 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Sequentielle UDP - Beispiel
primitive edge_di�(q, d, clock , clear );
//Deklarationenoutput q;reg q;input d, clock , clear ;
// Sequentielle Initialisierunginitialq = 0;
59 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Sequentielle UDP-Beispiel
table// d clock clear : q : q+ ;? ? 1 : ? : 0 ; //wenn clear=1, output=0? ? (10) : ? : − ; //Zustand bei fallender Flanke von clear halten1 (10) 0 : ? : 1 ; //Übernehme d bei fallender0 (10) 0 : ? : 0 ; //Flanke von clock? (1x) 0 : ? : − ; //Zustand bei Übergang von clock zu x halten? (0?) 0 : ? : − ; //Zustand bei steigendem Übergang von clock halten? (x1) 0 : ? : − ; //Zustand bei steigendem Übergang von clock halten(??) ? 0 : ? : − ; //Solange clock gleich bleibt , Zustand haltenendtable
endprimitive
60 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Übersicht1 Einleitung
AnfängeProgrammablaufKomplexität
2 GrundlagenDatentypenFunktionenModularisierungZeitverhaltenOperatorenKonstrukte auf Gatterebene
3 ProgrambeispieleVHDL EncoderVerilog Decoder
4 Fazit
61 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Der Manchester Code
Non Return to Zero (NRZ)
Manchester Daten =Clock XOR NRZ
DC Anteil gleich Null
UART ähnliche Übertragung
62 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Der Manchester Code
Non Return to Zero (NRZ)
Manchester Daten =Clock XOR NRZ
DC Anteil gleich Null
UART ähnliche Übertragung
62 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Der Manchester Code
Non Return to Zero (NRZ)
Manchester Daten =Clock XOR NRZ
DC Anteil gleich Null
UART ähnliche Übertragung
Quelle Wiki: http://de.wikipedia.org/wiki/Bild:
Manchester_encoding_both_conventions.svg
62 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Der Manchester Code
Non Return to Zero (NRZ)
Manchester Daten =Clock XOR NRZ
DC Anteil gleich Null
UART ähnliche Übertragung
Quelle Wiki: http://de.wikipedia.org/wiki/Bild:
Manchester_encoding_both_conventions.svg
62 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Der Manchester Code
Non Return to Zero (NRZ)
Manchester Daten =Clock XOR NRZ
DC Anteil gleich Null
UART ähnliche Übertragung
Quelle Wiki:
http://de.wikipedia.org/wiki/Bild:RS-232_timing.png
62 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Der Manchester Encoder (VHDL)
Aufbau der Encoder Entity me:
ent i t y me i sport (
r s t , c lk16x , wrn : i n s t d_ l og i c ;d i n : i n s t d_ log i c_vec to r (7 downto 0) ;t b r e : out s t d_ l og i c ;mdo : out s t d_ l og i c
) ;end me ;
63 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Der Manchester Encoder (VHDL)
Parameter in der Entity port Liste:
Name Typ Bedeutung
rst in Encoder Resetwrn in Write Register Nextclk16x in 16-facher Taktdin in[7:0] NRZ Daten Vectortbre out Transceiver Bu�er Register Emptymdo out Manchester Data Out
64 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Der Manchester Encoder (VHDL)
Struktur der Architektur für die me Entity:
arch i tec tu re v1 of me i s
s i gna l c l k 1 x : s t d_ l og i c ;s i gna l c l k1x_enab l e : s t d_ l og i c ;s i gna l c l k d i v : s t d_ log i c_vec to r (3 downto 0 ) ;s i gna l t s r : s t d_ log i c_vec to r (7 downto 0 ) ;s i gna l t b r : s t d_ log i c_vec to r (7 downto 0 ) ;s i gna l no_bits_sent : s t d_ log i c_vec to r (3 downto 0 ) ;
begin−− Ständ i ge Zuweisungen und Proz e s s e
end ;
66 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Der Manchester Encoder (VHDL)
Interne Signale der Architektur:
Name Typ1 Bedeutung
clk1x std_logic MC Clockclk1x_enable std_logic Freigabe Status für clk1xclkdiv stdlv[3:0] Clock Counter Registertsr stdlv[7:0] Ausgabe Vektortbr stdlv[7:0] Temporärer Vektorno_bits_sent stdlv[3:0] Bit Counter Register
1stdlv[n:0]=�std_logic_vector (n downto 0)�
67 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Der Manchester Encoder (VHDL)
Interne Signale der Architektur:
Name Typ1 Bedeutung
clk1x std_logic MC Clockclk1x_enable std_logic Freigabe Status für clk1xclkdiv stdlv[3:0] Clock Counter Registertsr stdlv[7:0] Ausgabe Vektortbr stdlv[7:0] Temporärer Vektorno_bits_sent stdlv[3:0] Bit Counter Register
1stdlv[n:0]=�std_logic_vector (n downto 0)�
67 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Der Manchester Encoder (VHDL)
Direkte Zuweisung in der Architektur:
−− s e t t i n g up the c l k 1 xc l k 1 x <= c l k d i v (3 ) ;−− Genera te Manchester data from NRZmdo <= t s r (7 ) xor c l k 1 x ;
68 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Der Manchester Encoder (VHDL)
Prozessbeispiel: Takt einschalten
process ( r s t , c l k16x , wrn , no_bits_sent )begin
i f r s t = '1 ' or s t d_ log i c_vec to r ( no_bits_sent ) ="1010" then
c l k1x_enab l e <= ' 0 ' ;e l s i f c lk16x ' even t and c l k 16x = '1 ' then
i f ( wrn = '1 ' ) thenc l k1x_enab l e <= ' 1 ' ;
end i f ;end i f ;
end process ;
69 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Der Manchester Encoder (VHDL)
Prozessbeispiel: Taktzähler inkrementieren
process ( r s t , c l k16x , c l k d i v , c l k1x_enab l e )begin
i f r s t = '1 ' thenc l k d i v <= "0000" ;
e l s i f c lk16x ' even t and c l k 16x = '1 ' theni f c l k1x_enab l e = '1 ' then
c l k d i v <= c l k d i v + "0001" ;end i f ;
end i f ;end process ;
70 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Der Manchester Encoder (VHDL)
Prozessbeispiel: Source Register laden und Rotieren
process ( r s t , c l k1x , no_bits_sent , t s r )begin
i f r s t = '1 ' thent s r <= "00000000" ;
e l s i f c lk1x ' even t and c l k 1 x = '1 ' theni f s t d_ log i c_vec to r ( no_bits_sent ) = "0001" then
t s r <= tb r ;e l s i f s t d_ log i c_vec to r ( no_bits_sent ) >= "0010"and s t d_ log i c_vec to r ( no_bits_sent ) <= "1010"
thent s r <= t s r (6 downto 0) & ' 0 ' ;
end i f ;end i f ;
end process ;
71 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Der Manchester Encoder (VHDL)
Starting Simulation of VHDL me
Loading, please wait...
72 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Der Manchester Decoder (Verilog)Aufbau des Decoder Modul md:
module md ( r s t , c l k16x , mdi , rdn , dout , data_ready ) ;
input r s t ;input c l k 16x ;input mdi ;input rdn ;output [ 7 : 0 ] dout ;output data_ready ;
// Dek l a r a t i o n i n t e r n e r Va r i a b l e n bzw . R e g i s t e r
// D i r e k t e Zuweisungen a s s i g n
// P roz e s s e bzw . a lways Blöcke
endmodule
73 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Der Manchester Decoder (Verilog)
Parameter des md Moduls:
Name Typ Bedeutung
rst input Decoder Resetrdn input Lese Kontroll Signalclk16x input 16-facher Clockmdi input MC Daten Eingangdata_ready output Decoding fertig Status Signaldout output [7:0] Array mit den Decodierten NRZ Daten
74 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Der Manchester Decoder (Verilog)
Interne Signale des Moduls:
Name Typ Bedeutung
clk1x_enable reg Freigabe Status für clk1xmdi1,mdi2 reg Letzter Zustand von mdi
nrz reg NRZ Wert des letzten/aktuellen sampleno_bits_rcvd reg [3:0] Wort Zähler/ Operations Statusclkdiv reg [3:0] Clock Counter Registerrsr reg [7:0] Ergebniszwischenspeicher zum shiftenclk1x wire MC Taktsample wire Zeitgeber für 1/4 und 3/4 Takt Lesungen
75 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Der Manchester Decoder (Verilog)
Direkte Zuweisung im Modul:
// Genera te c e n t e r sample at p o i n t s 1/4 (0011) and3/4 (1100) through the data c e l l
ass ign sample = ( ! c l k d i v [ 3 ] && ! c l k d i v [ 2 ] && c l k d i v[ 1 ] && c l k d i v [ 0 ] ) | | ( c l k d i v [ 3 ] && c l k d i v [ 2 ] &&! c l k d i v [ 1 ] && ! c l k d i v [ 0 ] ) ;
// Genera te 1x c l o c kass ign c l k 1 x = c l k d i v [ 3 ] ;
76 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Der Manchester Decoder (Verilog)
Prozessbeispiel: Manchester Code Decodieren
always @( posedge c l k 16x or posedge r s t )i f ( r s t )
n r z = 1 ' b0 ;e l s e
i f ( no_bits_rcvd > 0 && sample == 1 ' b1 )n rz = mdi2 ^ c l k 1 x ; // ^ i s XOR
77 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Der Manchester Decoder (Verilog)
Prozessbeispiel: Decodiertes Datum in Array speichern
always @( posedge c l k 1 x or posedge r s t )i f ( r s t ) begin
r s r <= 8 ' h0 ;ende l s e begin
r s r [ 7 : 1 ] <= r s r [ 6 : 0 ] ;r s r [ 0 ] <= nrz ;
end
78 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Der Manchester Decoder (Verilog)
Prozessbeispiel: Bit-Zähl/Status Register erhöhen
always @( posedge c l k 1 x or posedge r s t or negedgec l k1x_enab l e )
begini f ( r s t )
no_bits_rcvd = 4 ' b0000 ;e l s e i f ( ! c l k1x_enab l e ) begin
no_bits_rcvd = 4 ' b0000 ;ende l s e
no_bits_rcvd = no_bits_rcvd + 1 ;end
79 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Simulation Manchester Decoder
Starting Simulation of Verilog md
Loading, please wait...
80 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Übersicht1 Einleitung
AnfängeProgrammablaufKomplexität
2 GrundlagenDatentypenFunktionenModularisierungZeitverhaltenOperatorenKonstrukte auf Gatterebene
3 ProgrambeispieleVHDL EncoderVerilog Decoder
4 Fazit
81 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Die Wahl der Programmiersprache beinhaltet folgende Faktoren
Die Kompatibilität der eingesetzten Entwicklungsumgebung (EDA)
Vorkenntnisse der Programmierer
Pro VHDL
VHDL ist etwas weiter in Richtung Hochsprache angesiedelt
Wiederverwendbarkeit
Starke Typisierung
Mehr deklarativ als Verilog
Pro Verilog
Verilog ist für eine schnelle simple Umsetzung gut geeignet
82 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Die Wahl der Programmiersprache beinhaltet folgende Faktoren
Die Kompatibilität der eingesetzten Entwicklungsumgebung (EDA)
Vorkenntnisse der Programmierer
Pro VHDL
VHDL ist etwas weiter in Richtung Hochsprache angesiedelt
Wiederverwendbarkeit
Starke Typisierung
Mehr deklarativ als Verilog
Pro Verilog
Verilog ist für eine schnelle simple Umsetzung gut geeignet
82 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Die Wahl der Programmiersprache beinhaltet folgende Faktoren
Die Kompatibilität der eingesetzten Entwicklungsumgebung (EDA)
Vorkenntnisse der Programmierer
Pro VHDL
VHDL ist etwas weiter in Richtung Hochsprache angesiedelt
Wiederverwendbarkeit
Starke Typisierung
Mehr deklarativ als Verilog
Pro Verilog
Verilog ist für eine schnelle simple Umsetzung gut geeignet
82 / 83
VHDL vs. Verilog
Einleitung Grundlagen Programbeispiele Fazit
Ende.
So thank you for listening to us!
Are there any questions?
83 / 83
VHDL vs. Verilog
top related