Einführung In VHDL - TU Chemnitz

Transcription

Einführung in VHDL Digitale Systeme haben immer größereBedeutung erlangt. Komplexität wurde dabeiimmer größer, sodass die Entwicklungdigitaler Systeme zu weiten Teilen nur nochmit Computerunterstützung durchführbar ist.Zur Beschreibung von Hardware existierenHardwarebeschreibungssprachen, wie etwaVHDL, ABEL, Verilog u.a., die Architektur,Struktur und Verhalten von digitalenSystemen beschreiben.

Einführung in VHDL (2) Very High Speed Integrated Circuit HardwareDescription LanguageSpezifikation: Anfang der 80er JahreStandardisierung: 1987, 1993 von IEEEWichtige Schritte des HardwaredesignProzesses, die unterstützt werden:–––Simulation und Verifikation des modelliertenSystemsOptimierungSynthese der beschriebenen Hardware für einebestimmte Technologie

Einführung in VHDL rungsspracheModellierungssprache

Einführung in VHDL rungsspracheHier behandelte SichtweisenModellierungssprache

Einführung in VHDL (4) Im Gegensatz zu „normalen“Programmiersprachen wie C entstehtdurch die Compilierung von VHDLProgrammen kein direkt ausführbarer Code.Eine VHDL-Beschreibung ist nur imZusammenhang mit einem Logiksimulator( Testumgebung) verifizierbar.

Einführung in VHDL (5) Enthält neben den aus „normalen“Programmiersprachen bekanntenDatentypen, Kontrollstrukturen,Prozeduren, . auch einige Konzepte,welche die die speziellen Eigenschaften vonHardware reflektierenSyntax ist stark an Pascal angelehnt.

Einführung in VHDL (6) Beispiel (Verwendung wie „normale“ PS(nicht synthetisierbar)):-- Hello world program.use std.textio.all; -- Imports the standard textio package.-- Defines a design entity, without any ports.entity hello world isend hello world;architecture behaviour of hello world isbeginprocessvariable l : line;beginl : new String'("Hello world!");writeline (output, l);wait;end process;end behaviour;

Aufbau von VHDLBeschreibungen Einführung–––Reales System verfügt üblicherweise überSchnittstellen und eine interne Realisierung, inder Verbindungen und Komponenten (z.B.logische Gatter, FlipFlops usw. enthalten sind.Schnittstelle: entityInterne Realisierung: architecture

Aufbau von VHDLBeschreibungen Einführung––Schnittstelle: entityInterne Realisierung: architectureBild: -integrated-circuit-aka.html

Aufbau von VHDLBeschreibungen DesignFileLibraryIEEELibrarySTDLibrary.LibraryWork

Aufbau von VHDLBeschreibungen (3)testbench.vhdtest.vhdmodel.vhd

Aufbau von VHDLBeschreibungen (4)entityarchitectureMinimalstruktur eines VHDL-Modells

Aufbau von VHDLBeschreibungen (5) Schnittstellenbeschreibung–––Schlüsselwort entitySpezifikation der Ein- und Ausgänge desSystems durch das Schlüsselwort portDaneben können Konstanten, sogenannteGenerics definiert werden, die zum Zeitpunkt derÜbersetzung der VHDL-Quelldatei Einfluss aufbestimmte Architekturparameter nehmen(Busbreite, Verzögerungszeiten,.)

Aufbau von VHDLBeschreibungen (6) Beispiel:–Zweieingängiges NOR-Gatter.a 1bentity mnor isport(a, b:r:);end mnor2;in bit;out bit;r

Aufbau von VHDLBeschreibungen (7) Als Typ ist neben bit oder bit vector u.a. der Typstd logic oder std logic vector möglich.Der Typ std logic erfordert das Einbinden derLibrary IEEE vor der Entity-Deklarationdurch:Library IEEE;use IEEE.std logic 1164.all;use IEEE.std logic unsigned.all;

Aufbau von VHDLBeschreibungen (8) Nach IEEE 1164 kann ein Signal folgendeZustände annehmen: U : UninitializedX : Forcing Unknown0 : Forcing 01 : Forcing 1Z : High ImpedanceW : Weak UnknownL : Weak 0H : Weak 1D : Don‘t Care

Aufbau von VHDLBeschreibungen (9) Mit std logic wird ein Logik-Signal als 9-wertigdefiniert. Diese 9-wertige Logik ist heute faktischIndustrie-Standard. Durch das Einbinden derLibrary IEEE.std logic 1164.all stehenbestimmte Funktionen zur Verfügung; das giltauch für die Library– IEEE.std logic unsigned.all.

Aufbau von VHDLBeschreibungen (9a)std logic 1164 NOTUUXX0110ZXWXL1H0Dx

Aufbau von VHDLBeschreibungen (9b)std logic 1164 XX

Aufbau von VHDLBeschreibungen (9c)std logic 1164 X

Aufbau von VHDLBeschreibungen (9) Im weiteren soll aber nur die zweiwertigeLogik (Datentyp bit oder bit vector)betrachtet werden.

Aufbau von VHDLBeschreibungen (10) Architekturbeschreibung––––Eigentliche Realisierung der EntitySchlüsselwort architectureZu jeder Architektur gehört eine Entity, eineEntity kann aber mehrere Realisierungen haben(siehe später)Beispiel (NOR-Gatter)architecture a of mnor2 isbeginr not(a or b);end architecture a;

Aufbau von VHDLBeschreibungen (11) erungDatenflussmodellierungStrukturmodellierung

Aufbau von VHDLBeschreibungen (11) Beispiel: 2-bit Volladdiererentity fulladder isport(a,b,cin: in bit;r, cout: out bit);end fulladder;

Verhaltensmodellierung Beschreibbar ‘Concurrent’ - Prozeduraufrufen;‘Concurrent’ - Regelüberprüfungen.

Verhaltensmodellierung (2)Verhaltensmodell Volladder mit Signalzuweisungenarchitecture behavioral of adder isbeginl1: r '0' when (a '0' and b '0' and cin '0') else'1' when (a '0' and b '0' and cin '1') else'1' when (a '0' and b '1' and cin '0') else'0' when (a '0' and b '1' and cin '1') else'1' when (a '1' and b '0' and cin '0') else'0' when (a '1' and b '0' and cin '1') else'0' when (a '1' and b '1' and cin '0') else'1' when (a '1' and b '1' and cin '1');l2: cout '0' when (a '0' and b '0' and cin '0') else'0' when (a '0' and b '0' and cin '1') else'0' when (a '0' and b '1' and cin '0') else'1' when (a '0' and b '1' and cin '1') else'0' when (a '1' and b '0' and cin '0') else'1' when (a '1' and b '0' and cin '1') else'1' when (a '1' and b '1' and cin '0') else'1' when (a '1' and b '1' and cin '1');end architecture behavioral;

Verhaltensmodellierung (3)Verhaltensmodell D-FF mit Prozessenentity d ffbit isport( CLK, D, R : in bit;Q: inout bit);end d ffbit;architecture A2 DFF of d ffbit isbeginP1: process( CLK, R )beginif R '1' thenQ '0'after 5 ns;elsif( CLK'event and CLK '1' ) thenQ D after 5 ns;-- else Q Q; Kommentarend if;end process;end A2 DFF;

Verhaltensmodellierung (3)Verhaltensmodell D-FF mit Prozessenentity d ffbit isport( CLK, D, R : in bit;Q: inout bit);end d ffbit;architecture A2 DFF of d ffbit isbeginP1: process( CLK, R )beginif R '1' thenQ '0'after 5 ns;elsif( CLK'event and CLK '1' ) thenQ D after 5 ns;-- else Q Q; Kommentarend if;end process;end A2 DFF;Der Process wird von Ereignissen der Signale, die in der „Sensitivity-List“(CLK,R) enthalten sind, getriggert. Jedes Ereignis der „Sensitivity“-Listverursacht die Ausführung des Prozesses.

hitecture dataflow of adder isbeginr cin xor (a xor b);cout (a and b) or (a and cin)xor (b and cin);end architecture dataflow;

StrukturmodellierungEin Strukturmodell nutzt zur Realisierung derlogischen Funktion bereits in VHDLbeschriebeneTeilkomponenten (z. B.Realisierung eines Mikroprozessors durchSynthese aus ALU, Internal Cache, Register). Strukturmodelle beschreiben, wie die einzelnenTeilkomponenten untereinander zu verbindensind.

Strukturmodellierung (2)architecture structural of adder iscomponent mxor2port(a1, a2: in bit;c:out bit);end component;component mand2port(a1,a2: in bit;c:out bit);end component;component mor3port(a1,a2,a3:in bit;c:out bit);end component;

Strukturmodellierung (2)signal t1,t2,t3,t4:bit;beginp1: mxor2 port map(a,b,t1);p2: mxor2 port map(t1,cin,r);p3: mand2 port map (a,b,t2);p4: mand2 port map (a,cin,t3);p5: mand2 port map (b,cin,t4);p6: mor3 port map (t2,t3,t4,cout);end architecture structural;

Signalzuweisung Eine Signalzuweisung (SIGNAL Assignment) istein ‘Concurrent’ - Statement; sie ist das wichtigste‘Behavioral’ - Statement von VHDL. Signaleübertragen Informationen zwischen Prozessen.Syntax: signal name wert [after timeexpression];

Signalzuweisung Eine Signalzuweisung (SIGNAL Assignment) istein ‘Concurrent’ - Statement; sie ist das wichtigste‘Behavioral’ - Statement von VHDL. Signaleübertragen Informationen zwischen Prozessen.Die Signalzuweisung ändert links nur dann denWert, wenn rechts ein Ereignis auftritt. Derzugewiesene Wert ist ein Folgeereignis. Im Beispielmand2.vhdl (Verhaltensbeschreibung) wird eineArchitecture mit Concurrent Signal Assignmentverwendet. Die Signalverzögerung ist im Beispielkonstant 2 ns (fiktive Annahme).

Signalzuweisung (2)entity mand2 isport( a, b: in bit;r: out bit );end mand2;architecture behav ofmand2 isbeginr (a and b) after 2 ns;end;

Testbench Um einen Entwurf zu simulieren, muss er mitwohldefinierten Stimuli versorgt werdenNotwendigkeit einer Testbench(Testumgebung)Es werden zu definierten Eingangswerten dieerwarteten Ausgangswerte angegeben.

Testbench (2)entity adder tb isend adder tb;architecture behav of adder tb iscomponent adderport (i0, i1 : in bit; ci : in bit; s : out bit; co : out bit);end component;for adder 0: adder use entity work.adder;signal i0, i1, ci, s, co : bit;beginadder 0: adder port map (i0 i0, i1 i1, ci ci, s s, co co);-- siehe nächste Folieend behav;

Testbench (3)processtype pattern type is recordi0, i1, ci : bit;s, co : bit;end record;type pattern array is array (natural range ) ofpattern type;constant patterns : pattern array : (('0', '0', '0', '0', '0'),('0', '0', '1', '1', '0'),('0', '1', '0', '1', '0'),('0', '1', '1', '0', '1'),('1', '0', '0', '1', '0'),('1', '0', '1', '0', '1'),('1', '1', '0', '0', '1'),('1', '1', '1', '1', '1'));

Testbench (4)beginfor i in patterns'range loopi0 patterns(i).i0;i1 patterns(i).i1;ci patterns(i).ci;wait for 1 ns;assert s patterns(i).sreport "bad sum value" severity error;assert co patterns(i).coreport "bad carray out value" severity error;end loop;assert false report "end of test" severity note;wait;end process;

GHDL OpenSource – Implementierung von VHDLghdl.free.frBesonderheit gegenüber anderen Systemen:–––– Sourcekode muss compiliert werdenghdl -a sourcefilename.vhdlghdl -e entitynameghdl -r entitynameSignalviewer:––GTKwave (siehe auch ghdl.free.fr)ghdl -r entityname --vcd output[.vcd]

port (i0, i1 : in bit; ci : in bit; s : out bit; co : out bit); end component; for adder_0: adder use entity work.adder; signal i0, i1, ci, s, co : bit; begin adder_0: adder port map (i0 i0, i1 i1, ci ci, s s, co co);-- siehe nächste Folie end behav;