Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Hampe Karhoff Geändert vor über 10 Jahren
1
VHDL2_Sprachelemente und Concurrent Statements (Nebenläufige Anweisungen)
2
Inhalt nSprachelemente und Objekte nOperatoren nConcurrent Statements (Nebenläufige Anweisungen)
3
Sprachelemente und Objekte
4
Kommentare -- Das ist eine Kommentarzeile -- auch eine zweite Zeile muss mit -- eingeleitet werden Entity nand4 IS ( -- Kommentar bis zum Zeilenende -- VHDL ist unempfindlich hinsichtlich Klein- und Grossschreibung ! -- Jedoch ist es sinnvoll, wenn Sie in Ihrer Gruppe eine Konvention -- hinsichtlich der Namensgebung haben
5
Daten Objekte CONSTANT a: std_logic_vector (7 DOWNTO 0) :=01001100 ; VARIABLE b: std_logic_vector (7 DOWNTO 0) ; SIGNAL c: std_logic ; CONSTANT name [, name...]: Type := wert; VARIABLE name [, name...]: Type [:= wert]; SIGNAL name [, name...]: Type [:= wert]; NameDatentyp deklaration Zuweisung eines Wertes -- std_logic Datentypen sind definiert in Package ieee.std_logic_1164
6
Vordefinierte Typen Deklarationen
7
Vordefinierte Datentypen DatentypenMögliche Zustände der Datentypen integer0, 1, 2, 345, 4, -1, -2, -3 booleanTrue oder false bit1 oder 0 bit_vector0010110 std_logic U uninitialized X forcing unknown 0 forcing zero 1 Forcing one Z High Impedance W weak unknown L weak zero H weak one - dont care std_logic_vector0010110 oder HHHHLLH unsigned0010110 signed0010110
8
SIGNAL a, b: std_logic ; SIGNAL c: std_logic_vector (7 DOWNTO 0) ; SIGNAL zaehler: unsigned (6 DOWNTO 0) ; a <= 1; b <= 0; c(7 DOWNTO 2)<= 100110 c(1) <= 1; c(0) <= 0; Zuweisung von Werten: Deklaration von Signalen: Beispiel zur Verwendung von vordefinierten Datentypen
9
Operatoren
10
:=Zuweisung für VariablenV := 5; <=Zuweisung für SignaleS <= ( a AND b) Zuweisungs Operatoren
11
a <= (b and c) or d ; c b d & >1 a logischer Operator Beispiel von logischen Operatoren
12
SIGNAL a: std_logic_vector (7 DOWNTO 0) ; SIGNAL b: std_logic_vector (7 DOWNTO 0) ; SIGNAL c: std_logic ; =gleich <kleiner >grösser /=ungleich <=Kleiner gleich >=Grösser gleich Relationaler OperatorZuweisung c <= 1 WHEN (a <= b) ELSE 0; Beispiel von relationalen Operatoren
13
SIGNAL a: unsigned (7 DOWNTO 0) ; SIGNAL b: unsigned (7 DOWNTO 0) ; SIGNAL c: unsigned (7 DOWNTO 0) ; SIGNAL d: unsigned (15 DOWNTO 0) ; +addition -subtraktion & Verknüpfungs- operator *multiplikation /division c <= a + b; d <= a & b; 0001100110001111 <= 00011001 & 10001111 Beispiel von arithmetischen Operatoren
14
Concurrent Statements
15
Concurrent Statements am Beispiel des When-Else ARCHITECTURE comb OF test IS BEGIN q <= NOT (a OR b); y <= 1 WHEN ( a = 0 AND b = 1) ELSE 0; END comb; Concurrent Statements werden alle zum gleichen Zeitpunkt ausgewertet. Die Reihenfolge in der sie stehen spielt keine Rolle. Befinden sich zwischen BEGIN und END einer Architektur.
16
X d c b a s 2 4 4 4 11 01 10 00 4 x 4 Multiplexer
17
4 x 4 Multiplexer mit Boolscher Logik ENTITY mux IS PORT ( a,b,c,d : IN std_logic_vector(3 downto 0); S : IN std_logic_vector(1 downto 0); X : OUT std_logic_vector(3 downto 0)); END mux; ARCHITECTURE comb OF mux IS BEGIN x(3) <= (a(3) AND NOT (s(1)) AND NOT(s(0))) OR(b(3) AND NOT (s(1)) AND s(0)) OR(c(3) AND s(1) AND NOT(s(0))) OR(d(3) AND s(1) AND s(0)) ; x(2) <= (a(2) AND NOT ((s(1)) AND NOT(s(0)) OR(b(2) AND NOT (s(1)) AND s(0)) – USW. END comb;
18
4 x 4 Multiplexer mit When-Else ENTITY mux IS PORT ( a,b,c,d : IN std_logic_vector(3 downto 0); S : IN std_logic_vector(1 downto 0); X : OUT std_logic_vector(3 downto 0)); END mux; ARCHITECTURE comb OF mux IS BEGIN x <= a WHEN (s = "00") ELSE b WHEN (s = "01") ELSE c WHEN (s = "10") ELSE d ; END comb; Die erste zutreffende Zeile wird dem Ausgang zugewiesen, alle nachfolgenden fallen heraus. (priorisierend) Bedingungen dürfen sich überlappen: when (Y = 5) else...when (Y <=5) else... Jedes when benötigt immer ein else
19
Beispiel für Priorität ENTITY mux IS PORT ( a,b,c : IN std_logic_vector(3 downto 0); S : IN std_logic_vector(1 downto 0); X : OUT std_logic_vector(3 downto 0)); END mux; ARCHITECTURE comb OF mux IS BEGIN x <= a WHEN (s(0) = 1) ELSE b WHEN (s = "10") ELSE c ; END comb;
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.