Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


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

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

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

3 School of Engineering 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; Was könnte dieses VHDL beschreiben?

4 School of Engineering clk QD D Q DQ n CLK D-FF

5 School of Engineering 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 VHDL Beschreibung eines D-FF

6 School of Engineering 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; Was ist hier anders als vorher ?

7 School of Engineering QD CLK QD Q(7) D(0) D(7) Q(0) 8-bit breites Register

8 School of Engineering 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) BEGIN IF reset = '1' THEN qout <= '0'; ELSIF clk'EVENT AND clk = '1' THEN qout <= din; END IF; END PROCESS dff; END rtl; Welches Signal ist bei diesem Prozess neu? Reset zu oberst im if statement hat deshalb höchste Priorität - Asynchroner Reset !

9 School of Engineering Was passiert hier ? 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 School of Engineering 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 School of Engineering D-Flip Flop mit synchronem Reset Q S D CLK RESET & D 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 School of Engineering 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 School of Engineering Erzeugung eines Taktes für Simulation SIGNAL clk_halfp : time := 20ns; clkgen : PROCESS BEGIN WAIT FOR 1*clk_halfp; clk <= '1'; WAIT FOR 1*clk_halfp; clk <= '0'; END PROCESS clkgen; END struct; Ohne Sensitivity Liste

14 School of Engineering Ü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 School of Engineering Lösung der Übung clk QDQD h i j >1 k 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 clkevent zugewiesen wird, wird als Flip-Flop synthetisiert

16 School of Engineering Ü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 School of Engineering Zeitliches Verhalten der Übung clk k i h QDQD h i j >1 k j

18 School of Engineering Zeitliches Verhalten der Übung clk k i h QDQD h i j >1 k j

19 School of Engineering Aufbau und Architektur von PLD

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

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

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

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

24 School of Engineering 24 & I1I1 I0I0 & & & & & & & & & & & & & & & & >1 AND Feld (programmierbar) OR Feld (fest verdrahtet) Eingangsignal invertiert Eingangspuffer >1 DQ DQ DQ DQ Out1 Out0 Out2 Out3 CLK PLD

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

26 School of Engineering 2. Aufbau mit Multiplexern B 0 A X = A UND B 1 0 & B A X ABX

27 School of Engineering RS-Flip-Flop aufgebaut aus Multiplexern Q 0 1 Q S R !R!SQ n+1 !Q n QnQn !Q n

28 School of Engineering Logikgrundzelle von Actel basierend auf Multiplexern Transfergate

29 School of Engineering a b aby XOR Funktion im LUT Y 4 x 1 RAM LUT Logik mit Look Up Tabellen

30 School of Engineering Ein Logic Element (LE) im MAXII

31 School of Engineering MAXII Block Diagram

32 School of Engineering LE Kluster (Logic Array Blocks)

33 School of Engineering Direkte Links zu benachbarten LAB

34 School of Engineering MAXII Floorplan

35 School of Engineering Verteilung spezieller Signale

36 School of Engineering MAX II I/O

37 School of Engineering Spezielle Pins

38 School of Engineering Synthese

39 School of Engineering Synthese FF0 QD & & & & & G3 G2 G1 Q1 Q2 Q0 E3 E0 E1 E2 = Umwandlung einer VHDL Schaltungsbeschreibung in physikalische Gatter und Flip Flops Gatter/Flip-Flop Bibliothek Hardware Beschreibung Netzliste 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; sig3 !! Jedes synthetisierbare VHDL wird Hardware !!

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

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

42 School of Engineering 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) BEGIN IF reset = '1' THEN qout <= '0'; ELSIF clk'EVENT AND clk = '1' THEN qout <= din; END IF; END PROCESS dff; END rtl; Synthese Beispiel II D-FF mit async. Reset

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

44 School of Engineering 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) BEGIN IF clk'EVENT AND clk = '1' THEN IF reset = '1' THEN qout <= '0'; ELSE qout <= d; END IF; END PROCESS dff; END rtl; Synthese Beispiel III D-FF mit Sync. Reset

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

46 School of Engineering Erklärungen zum Lab Flankendetektor

47 School of Engineering clk flin q1 q2 steig & flin QDQD q1q2 steig reset clk Wie können wir die Schaltung ändern, so dass wir fallende und steigende Flanken anzeigen Flankendetektor

48 School of Engineering Simulation von getakteter Logik (am Beispiel Flankendetektor)

49 School of Engineering 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 School of Engineering Simulatoren und Debugger DUT Process: Stimulus Process: clk Testbench Process: Stimulus Check mit Assert

51 School of Engineering Signal Stimulus 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' flin <= '1'; assert (steig = '0') report " should still be zero" severity failure; wait;

52 School of Engineering 52 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) BEGIN 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 School of Engineering Ü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 School of Engineering 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; Was könnte dieses VHDL beschreiben? Overhead Folie

55 School of Engineering clk flin q1 q2 & flin QDQD q1q2 steig reset clk Overhead Folie


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

Ähnliche Präsentationen


Google-Anzeigen