Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

Ähnliche Präsentationen


Präsentation zum Thema: "VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)"—  Präsentation transkript:

1 VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

2 Beispiel Flankendetektor
Inhalt Getaktete Logik D-FF 8-bit Register D-FF mit asynchronem Reset D-FF mit synchronem Reset Synthese Beispiel Flankendetektor

3 Was könnte dieses VHDL beschreiben?
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY vhdl IS PORT(clk : IN std_logic; d : IN std_logic; q : OUT std_logic); END vhdl; ARCHITECTURE rtl OF vhdl IS BEGIN logik : PROCESS(clk) BEGIN IF clk'EVENT AND clk = '1' THEN q <= d; ELSE q <= q; END IF; END PROCESS logik; END rtl;

4 D-FF D Q clk CLK D Qn+1 1 D Q

5 VHDL Beschreibung eines D-FF
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY dff_logic IS PORT(clk : IN std_logic; d : IN std_logic; q : OUT std_logic); END dff_logic; ARCHITECTURE rtl OF dff_logic IS BEGIN dff : PROCESS(clk) BEGIN IF clk'EVENT AND clk = '1' THEN q <= d; ELSE q <= q; END IF; END PROCESS dff; END rtl; Prozess nur aktiviert wenn clk ändert wahr wenn sich clk ändert Else nicht notwendig, wenn if nicht zutrifft bleibt q wie vorher

6 Was ist hier anders als vorher ?
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY dff_logic IS PORT(clk : IN std_logic; d : IN std_logic_vector(7 downto 0); q : OUT std_logic_vector (7 downto 0); END dff_logic; ARCHITECTURE rtl OF dff_logic IS BEGIN dff : PROCESS(clk) BEGIN IF clk'EVENT AND clk = '1' THEN q <= d; END IF; END PROCESS dff; END rtl;

7 8-bit breites Register D(7) D Q Q(7) D(0) D Q Q(0) CLK

8 Welches Signal ist bei diesem Prozess neu?
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY dff_arst IS PORT( clk, din, reset : IN std_logic; qout : OUT std_logic ); END dff_arst; ARCHITECTURE rtl OF dff_arst IS BEGIN dff : PROCESS(clk, reset) IF reset = '1' THEN qout <= '0'; ELSIF clk'EVENT AND clk = '1' THEN qout <= din; END IF; END PROCESS dff; END rtl; - Asynchroner Reset ! Reset zu oberst im if statement hat deshalb höchste Priorität

9 Was passiert hier ? Synchroner Reset
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY dff_arst IS PORT(clk,d,reset : IN std_logic; q : OUT std_logic); END dff_arst; ARCHITECTURE rtl OF dff_arst IS BEGIN dff : PROCESS(clk) BEGIN IF clk'EVENT AND clk = '1' THEN IF reset = '1' THEN q <= '0'; ELSE q <= d; END IF; END IF; END PROCESS dff; END rtl; Synchroner Reset

10 D-Flip Flop mit synchronem Reset
CLK D Q RESET dff : PROCESS(clk) BEGIN IF clk'EVENT AND clk = '1' THEN IF reset = '1' THEN q <= '0'; ELSE q <= d; END IF; END IF; END PROCESS dff;

11 D-Flip Flop mit synchronem Reset
& D Q RESET CLK S dff : PROCESS(clk) BEGIN IF clk'EVENT AND clk = '1' THEN IF reset = '1' THEN q <= '0'; ELSE q <= d; END IF; END IF; END PROCESS dff;

12 Geschachteltes IF statement
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY dff_srst IS PORT(clk,d,reset : IN std_logic; q : OUT std_logic); END dff_srst; ARCHITECTURE rtl OF dff_srst IS BEGIN dff : PROCESS(clk) BEGIN IF clk'EVENT AND clk = '1' THEN IF reset = '1' THEN q <= '0'; ELSE q <= d; END IF; END IF; END PROCESS dff; END rtl; Geschachteltes IF statement

13 Erzeugung eines Taktes für Simulation
SIGNAL clk_halfp : time := 20ns; clkgen : PROCESS BEGIN WAIT FOR 1*clk_halfp; clk <= '1'; clk <= '0'; END PROCESS clkgen; END struct; Ohne Sensitivity Liste

14 Übung: Zeichnen Sie den Schaltplan dieses VHDL
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY dff_logic IS PORT( clk,j,k : IN std_logic; h : OUT std_logic); END dff_logic; ARCHITECTURE rtl OF dff_logic IS Signal i : std_logic; BEGIN dff : PROCESS(clk) BEGIN IF clk'EVENT AND clk = '1' THEN h <= i; i <= j OR k; END IF; END PROCESS dff; END rtl;

15 Lösung der Übung >1 k j i D Q D Q h clk Als Faustregel gilt:
dff : PROCESS(clk) BEGIN IF clk'EVENT AND clk = '1' THEN h <= i; i <= j OR k; END IF; END PROCESS dff; Als Faustregel gilt: Jedes Signal das nach clk‘event zugewiesen wird, wird als Flip-Flop synthetisiert

16 Übung: Eindeutiger VHDL Kode
ARCHITECTURE rtl OF dff_logic IS Signal i, next_i : std_logic; Signal next_h : std_logic; BEGIN dff : PROCESS(clk) BEGIN IF clk'EVENT AND clk = '1' THEN i <= next_i; h <= next_h; END IF; END PROCESS dff; comb : PROCESS(i,j,k) BEGIN next_i <= j OR k; next_h <= i; END PROCESS dff; END rtl;

17 Zeitliches Verhalten der Übung
k >1 j i D Q D Q h clk j k clk i h

18 Zeitliches Verhalten der Übung
k >1 j i D Q D Q h clk j k clk i h

19 Aufbau und Architektur von PLD

20 Übersicht Programmierbare Logik
Programmierbare Bausteine CPLD FPGA Field Programmable Gate Array Logic Array basierend Multiplexer basierend Look Up Table basierend

21 Darstellung von kombinatorischer Logik
& >1 A N Z & S A = Z & K & !S # Z & N & !S (Disjunktive Form) Gute Minterme K N Logische Verknüpfung A S Z

22 + Darstellung von sequentieller Logik Beispiel synchroner Zähler
Folge- Zustand Gegenwärtiger Zustand + Q n n = Anzahl der FFs n !Q int. 1 Takt Reset

23 Allgemeine RTL Beschreibung einer Synchronen Digitalen Schaltung
(RTL = Register Transfer Level)

24 PLD I1 I0 Out0 Out1 Out2 Out3 CLK >1 & >1 >1 >1
Eingangspuffer OR Feld (fest verdrahtet) Eingangsignal invertiert & Out0 & >1 D Q & & & & Out1 & >1 D Q & & & Out2 & >1 D Q & & & Out3 & >1 D Q & & CLK AND Feld (programmierbar)

25 Complex Programmable Logic Device
Ein Logik Block = 16 FF Programmable Interconnect Matrix

26 2. Aufbau mit Multiplexern
A X = A UND B 1 & B A X A B X 1

27 RS-Flip-Flop aufgebaut aus Multiplexern
!R !S Qn+1 !Qn+1 1 Qn !Qn 1 Q 1 1 Q 1 S R

28 Logikgrundzelle von Actel basierend auf Multiplexern
Transfergate

29 Logik mit Look Up Tabellen
y 1 a LUT Y b 4 x 1 RAM XOR Funktion im LUT

30 Ein Logic Element (LE) im MAXII

31 MAXII Block Diagram

32 LE Kluster (Logic Array Blocks)

33 Direkte Links zu benachbarten LAB

34 MAXII Floorplan

35 Verteilung spezieller Signale

36 MAX II I/O

37 Spezielle Pins

38 Synthese

39 Synthese = Umwandlung einer VHDL Schaltungsbeschreibung in
physikalische Gatter und Flip Flops Gatter/Flip-Flop Bibliothek ARCHITECTURE comb OF beisp IS BEGIN q0 <= not (e0 and e1); sig3 <=(e2 and e3) or (e0 and e1); (Beschreibung nicht vollständig) END comb; G3 G2 G1 E0 & Q0 & E1 sig3 & E2 & Q1 & E3 D Q Q2 Netzliste FF0 !! Jedes synthetisierbare VHDL wird Hardware !! Hardware Beschreibung

40 VHDL Synthesizer Architecture: A Architecture: B Package: A
Bauteile Libraries Entity: A Entity: B VHDL Synthesizer (umwandlung von VHDL code in Gatter und Flip Flops) Working Library ieee Library primitive Library .jed .rpt .pin .vhd Bericht Pin Belegung Ergebnis in VHDL Form Dateien für Programmiergerät

41 Synthese Beispiel I Synthese Ergebnis der Übung (Folie 14)

42 Synthese Beispiel II D-FF mit async. Reset LIBRARY ieee;
USE ieee.std_logic_1164.all; ENTITY dff_arst IS PORT( clk, din, reset : IN std_logic; qout : OUT std_logic ); END dff_arst; ARCHITECTURE rtl OF dff_arst IS BEGIN dff : PROCESS(clk, reset) IF reset = '1' THEN qout <= '0'; ELSIF clk'EVENT AND clk = '1' THEN qout <= din; END IF; END PROCESS dff; END rtl;

43 Synthese Beispiel II D-FF mit async. Reset Synthese Ergebnis

44 Synthese Beispiel III D-FF mit Sync. Reset LIBRARY ieee;
USE ieee.std_logic_1164.all; ENTITY dff_srst IS PORT( clk, d, reset : IN std_logic; qout : OUT std_logic ); END dff_srst; ARCHITECTURE rtl OF dff_srst IS BEGIN dff : PROCESS(clk, reset) IF clk'EVENT AND clk = '1' THEN IF reset = '1' THEN qout <= '0'; ELSE qout <= d; END IF; END PROCESS dff; END rtl;

45 Synthese Beispiel III D-FF mit Sync. Reset Synthese Ergebnis

46 Erklärungen zum Lab Flankendetektor

47 Flankendetektor & Q D q1 q2 flin clk q1 q2 steig reset steig flin clk
Wie können wir die Schaltung ändern, so dass wir fallende und steigende Flanken anzeigen

48 Simulation von getakteter Logik (am Beispiel Flankendetektor)

49 Was muss man testen? Was weiss man vom Logikverhalten?
Nach der zweiten Taktflanke nachdem flin =‚1‘ wird steig = ‚1‘ „steig“ bleibt genau für eine Taktperiode ‚1‘ Nach der fallenden Taktflanke von flin =‚1‘ bleibt „steig“ auf ‚0‘.

50 Simulatoren und Debugger
Testbench Process: clk Check mit Assert Process: Stimulus Process: Stimulus DUT

51 Signal Stimulus reset <= '1'; RESET RAUS stimuli: process begin
wait for 1*clk_halfp ; flin <= '0'; reset <= '1'; RESET RAUS wait for 5*clkp; reset <= '0'; assert (steig = '0') report " after reset should be zero" severity failure; wait for 1*clkp ; flin <= '1'; assert (steig = '0') report " should still be zero" severity failure; wait for 1*clkp;-- 1. Takt nach flin = '1' wait;

52 Overhead Folie ENTITY dff_arst IS
PORT( clk : IN std_logic; din : IN std_logic; reset : IN std_logic; qout : OUT std_logic); END dff_arst; ARCHITECTURE rtl OF dff_arst IS BEGIN dff : PROCESS(clk, reset) IF reset = '1' THEN qout <= '0'; ELSIF clk'EVENT AND clk = '1' THEN qout <= din; END IF; END PROCESS dff; END rtl; Overhead Folie

53 Zeichnen Sie den Schaltplan dieses VHDL
Übung: Zeichnen Sie den Schaltplan dieses VHDL LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY dff_logic IS PORT( clk,j,k : IN std_logic; h : OUT std_logic); END dff_logic; ARCHITECTURE rtl OF dff_logic IS Signal i : std_logic; BEGIN dff : PROCESS(clk) BEGIN IF clk'EVENT AND clk = '1' THEN h <= i; i <= j OR k; END IF; END PROCESS dff; END rtl; Overhead Folie

54 Was könnte dieses VHDL beschreiben?
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY vhdl IS PORT(clk : IN std_logic; d : IN std_logic; q : OUT std_logic); END vhdl; ARCHITECTURE rtl OF vhdl IS BEGIN logik : PROCESS(clk) BEGIN IF clk'EVENT AND clk = '1' THEN q <= d; ELSE q <= q; END IF; END PROCESS logik; END rtl; Overhead Folie

55 & reset steig flin D Q D Q clk q1 q2 flin clk q1 q2 steig
Overhead Folie


Herunterladen ppt "VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)"

Ähnliche Präsentationen


Google-Anzeigen