Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

School of Engineering VHDL 3: Sequential Statements (Process)

Ähnliche Präsentationen


Präsentation zum Thema: "School of Engineering VHDL 3: Sequential Statements (Process)"—  Präsentation transkript:

1 School of Engineering VHDL 3: Sequential Statements (Process)

2 School of Engineering Inhalt Sequential Statements Process If Statement Case Statement Wait Assert

3 School of Engineering Process

4 School of Engineering ARCHITECTURE comb OF rsff IS BEGIN q <= not (r or qn); qn <= not (s or q); END comb; Architecture mit Concurrent Statements

5 School of Engineering ARCHITECTURE comb OF rsff IS BEGIN END comb; P1:Process(xxx) Begin … End process p1; P2: Process(xxx) Begin … End process p2; Concurrent Statements Architecture mit Process

6 School of Engineering detect_overflow: process (zaehler) begin end process detect_overflow; if (zaehler > ) then overflow <= 1; end if; overflow <= 0; Beispiel Process

7 School of Engineering Ein Process ist ein Concurrent Statement welches eine Ansammlung von Sequentiellen Statements enthält. Prozesse können gleichzeitig mit anderen Concurrent Statements und Prozessen kommunizieren. Process

8 School of Engineering Prozess_name: process (sensitivity liste) deklarationen (variablen etc.) begin sequentielle statements end process prozess_name; Sequentielle statements Sensitivity Liste Benennung signal overflow: std_logic; signal zaehler: std_logic_vector(7 DOWNTO 0); Eingangssignal Ausgangszuweisung detect_overflow: process (zaehler) begin overflow ) then overflow <= 1; end if; end process detect_overflow; Ausgangssignal Process Default Statement

9 School of Engineering P1: process (reset,A,M) Begin if reset = 1 then next_q <= 0; else next_q <= A and M; end if; end process P1; P2: process (clock,next_q) Begin if clockevent and clock= 1 then q <= next_q; end if; end process P2; Process 1 Process 2 Die Prozesse selbst sind ein concurrent statement und laufen innerhalb der Architektur gleichzeitig ab Sequentielle statements: Innerhalb eines Prozesses laufen Statements sequentiell ab. Ablauf von Process-en

10 School of Engineering Ablauf von Process-en Deltazeit (Rechnerzeit) Simulationszeit

11 School of Engineering Process In einem Process werden Anweisungen sequentiell (der Reihenfolge nach) abgearbeitet. Hat der Process eine Sensitivity Liste, wird er zum Leben erweckt, sobald sich ein Signal, dass sich auf der sensitivity Liste befindet, verändert. Nach Ausführung der letzten Anweisung werden alle im Prozess zugewiesenen Signale aktualisiert, danach stirbt der Process. Hat ein Process keine Sensitivity Liste, ist er immer aktiv.

12 School of Engineering Sequentielle Statements (Statements im Process)

13 School of Engineering If-Then-Else Statement

14 School of Engineering Beispiel für Priorität: Alarmpanel im KKW In einem Kernkraftwerk soll ein Alarmpanel auftretende Störungen in Alarmstufen einteilen (Alarmstufe 3 höchste Dringlichkeit, Alarmstufe 1 niedrigste Dringlichkeit). Es gibt drei Hauptgefahrenquellen, die nach Ihrer Dringlichkeit eingeteilt sind (siehe Tabelle). Am Ausgang der Schaltung befinden sich 4 Lampen, die die jeweiligen Alarmstufen anzeigen. Bei einem Druckabfall im Primärkühlkreislauf würde Alarmstufe 3 (rot) aufleuchten. Bei einem Druckabfall im Sekundärkühlkreislauf würde Alarmstufe 2 (orange) aufleuchten. Bei verringerter Generatordrehzahl gibt es nur Alarmstufe 1 (gelb). Meldet keiner der Eingaenge einen Alarm, so leuchtet die gruene Lampe auf. Ist mehr als ein Alarmsignal aktiv, so richtet sich die Alarmstufe immer nach dem Alarm mit der grössten Dringlichkeit. Wenn z.B. Sekundärkreislauf und Generatordrehzahl Alarm melden, dann ist die Alarmstufe orange.

15 School of Engineering Entity des Alarmpanels Druck Primärkreislauf Druck Sekundärkreislauf Generatordrehzahl gering rot orange gelb grün StörungSignalAlarmstufe Druck im Primärkreislaufprimär = 1 Druckabfall Alarm, primär = 0 Druck o.k. rot Druck im Sekundärkreislaufsekundär = 1 Druckabfall Alarm, sekundär = 0 Druck o.k. orange Generator Drehzahlgenerator = 1 Drezahl Alarm, generator = 0 Drehzahl o.k. gelb Keine Störunggrün

16 School of Engineering Wahrheitstabelle EingängeAusgänge primärsekundärdrehzahlgrüngelborangerot

17 School of Engineering Unvollständige Wahrheitstabelle EingängeAusgänge primärsekundärdrehzahlgrüngelborangerot 1xx x

18 School of Engineering primar sekundar drehzahl rot orange gelb grün ENTITY kkw IS PORT( primar,sekundar,drehzahl : IN std_logic; rot,orange,gelb,gruen : OUT std_logic ); END kkw; Entity des Alarmpanels

19 School of Engineering 19 LIBRARY ieee; USE ieee.std_logic_1164.all; ARCHITECTURE rtl OF kkw IS BEGIN p1: PROCESS (primar, sekundar, drehzahl) BEGIN IF (primar = '1') THEN rot <= '1'; orange <= '0'; gelb<='0'; gruen <= '0'; ELSIF(sekundar = '1') THEN rot <= '0'; orange <= '1'; gelb<='0'; gruen <= '0'; ELSIF(drehzahl = '1') THEN rot <= '0'; orange <= '0'; gelb<= '1'; gruen <= '0'; ELSE rot <= '0'; orange <= '0'; gelb<= '0'; gruen <= '1'; END IF; END process p1; END rtl; Ausgangs Zuweisungen Prioritätsencoder mit IF-THEN-Else Statement Eingangs Bedingung

20 School of Engineering if condition_1 then sequential statements elsif condition_2 then sequential statements else sequential statements end if ; IF-THEN-ELSE statement

21 School of Engineering IF-THEN-ELSE statement Die erste zutreffende Zeile wird dem Ausgang zugewiesen, alle nachfolgenden fallen heraus. (priorisierend) Bedingungen dürfen sich überlappen if (Y = 5) then...if (Y <=5) then. elsif und else sind nicht notwendig If –THEN-ELSE statements können nur in einem Process verwendet werden IF-THEN-ELSE statements dürfen verschachtelt werden IF-THEN-ELSE statements sind die allgemeine Form zur Beschreibung von kombinatorischer Logik in VHDL

22 School of Engineering IF Then ELSE

23 School of Engineering CASE Statement

24 School of Engineering Komb. Logik 1 Gray(0) Komb. Logik 2 Gray(1) Komb. Logik 3 Gray(2) Binary(0) Binary(1) Binary(2) Beispiel: Codewandler Binary-Gray

25 School of Engineering Gray BCD Wahrheitstabelle Codewandler Binary-Gray

26 School of Engineering Entity des BCD-Gray Codewandlers ENTITY bingray IS PORT ( binary: IN std_logic_vector(2 downto 0); gray: OUT std_logic_vector(2 downto 0) ); END bingray;

27 School of Engineering Wähler bcd2gray: process (bcd) Begin case bcd is when 000 => gray <= 000; when 001 => gray <= 001; when 010 => gray <= 011; when 011 => gray <= 010; when 100 => gray <= 110; when 101 => gray <= 111; when 110 => gray <= 101; when OTHERS => gray <= 100; end case; end process bcd2gray; Eingangssignal Ausgangs Zuweisung Code Wandler mit CASE statement

28 School of Engineering case eingang is when wähler => sequential statements when wähler => sequential statements end case; Case statement

29 School of Engineering Case statement Nicht priorisierend, jede Zeile wird gleich behandelt Jede mögliche Eingangskombination muss vorkommen falls am Ende nicht mit others abgeschlossen wird. Keine Eingangskombination darf mehr als 1 x vorkommen Case Statements können nur in einem Process verwendet werden Werden hauptsächlich für Dekodier Funktionen oder zum beschreiben von Automaten verwendet.

30 School of Engineering Generic View Case Statement

31 School of Engineering Technology Map von Case

32 School of Engineering Sequentiell (innerhalb Prozess) priorisierendIf-Then-Else nicht priorisierendCase Übersicht über mögliche Fallunterscheidungen in VHDL

33 School of Engineering ASCII Decoder mit case statement ARCHITECTURE rtl OF ascii_decoder IS SIGNAL pointer: INTEGER RANGE 0 TO 79; SIGNAL zeichen: STD_LOGIC_VECTOR (7 DOWNTO 0); BEGIN comb_decoder : PROCESS(pointer) BEGIN case pointer IS when 0 => zeichen <= x48"; when 1 => zeichen <= x65"; when 2 => zeichen <= x6c"; when 3 => zeichen <= x6c"; when 4 => zeichen <= x6f"; when 5 => zeichen <= x21"; when OTHERS => zeichen <= x"20"; END case; …. End process;

34 School of Engineering Concurrent (ausserhalb Prozess) Sequential (innerhalb Prozess) overflow <= 0 ;.. overflow <= 1 ; Nicht möglich – Fehlermeldung overflow <= 0 ;.. overflow <= 1 ; Möglich – Software arbeitet Zeile für Zeile ab das Signal wird erst am Ende des Prozesses aktualisiert Mehrmalige Zuweisung von Signalen

35 School of Engineering wait until condition; wait on signal_list; wait for time; wait; Wait until CLK= 1; Wait for 10 nS; Wait on A,B; Warten bis ein bestimmter Zustand eintritt Warten bis ein bestimmte(s) Signal(e) wechselt Eine bestimmte Zeit warten Unbestimmt Warten Beispiele: Wait Statements

36 School of Engineering WAIT Statements WAIT Statements sind sequentielle Statements und dürfen nur im Prozess vorkommen Beim Ausführen des WAIT Statements wird der Process unterbrochen und die zugewiesenen Signale werden aktualisiert Nach Ausführen der WAIT Bedingung wird der Prozess an der Stelle fortgefahren, wo er unterbrochen wurde WAIT ist nicht synthetisierbar

37 School of Engineering Testbench steig clk reset flin Logische Funktion Stimulus Generator Erwartete Ergebnisse Simulation Assert testbench.vhd dut.vhd

38 School of Engineering Assert Statement assert condition report string severity severity_level ; Mögliche level sind: note warning error failure (bricht Simulation ab) Beispiele: ASSERT erlaubt bei einer bestimmten Bedingung im Simulations- programm einen Bericht auszugeben oder das Simulationsprogramm ganz zu stoppen. Assert wird bei der Synthese ignoriert. assert (A = B) report A ungleich B severity error ; assert false report Test programm beendet severity note ; Falls Condition nicht erfüllt, wird ein Report generiert

39 School of Engineering STIMULUS: process begin bcd <= "000" ; wait for 10 nS; assert (gray = "000") report "expected 000 " severity failure; wait for 100 nS; bcd <= "111"; wait for 10 nS; assert (gray = "100") report "expected 100 " severity failure; wait for 100 nS; assert false report " --- ALL TESTS PASS ---" severity note; wait; end process; Testprogramm zum Austesten des bcd-gray Kodewandlers

40 School of Engineering Compile Script (compile.do) für funktionale Simulation # create work library vlib work # compile project files vcom explicit -work work../../source/flanken.vhd vcom explicit -work work../../source/tb_flanken.vhd # run the simulation vsim -t 1ns -lib work work.tb_flanken do../scripts/wave.do run ns Startet Simulator Bildet Workverzeichniss work Compiliert VHDL und legt es im work ab Lässt Simulator für 1800 ns laufen Öffnet Waveform Betrachter


Herunterladen ppt "School of Engineering VHDL 3: Sequential Statements (Process)"

Ähnliche Präsentationen


Google-Anzeigen