1 / 51

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

VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten). Inhalt. Getaktete Logik D-FF 8-bit Register D-FF mit asynchronem Reset D-FF mit synchronem Reset Synthese Beispiel Flankendetektor. Was könnte dieses VHDL beschreiben?. LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY vhdl IS

nishi
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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 ISBEGIN logik : PROCESS(clk)BEGINIF clk'EVENT AND clk = '1' THEN q <= d;ELSE q <= q; ENDIF;ENDPROCESS logik;END rtl;

  4. D-FF D Q clk CLK D Q

  5. 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 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 ISBEGIN dff : PROCESS(clk)BEGINIF clk'EVENT AND clk = '1' THEN q <= d;ELSE q <= q; ENDIF;ENDPROCESS dff;END rtl;

  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 ISBEGIN dff : PROCESS(clk)BEGINIF clk'EVENT AND clk = '1' THEN q <= d;ENDIF;ENDPROCESS dff;END rtl;

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

  8. - Asynchroner Reset ! Reset zu oberst im if statementhat deshalb höchste Priorität 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) BEGIN IF reset = '1' THEN qout <= '0'; ELSIF clk'EVENT AND clk = '1' THEN qout <= din; ENDIF; ENDPROCESS dff; END rtl;

  9. Synchroner Reset 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)BEGINIF clk'EVENT AND clk = '1' THENIF reset = '1' THEN q <= '0';ELSE q <= d;ENDIF;ENDIF;ENDPROCESS dff;END rtl;

  10. D CLK Q RESET D-Flip Flop mit synchronem Reset dff : PROCESS(clk)BEGINIF clk'EVENT AND clk = '1' THENIF reset = '1' THEN q <= '0';ELSE q <= d;ENDIF;ENDIF;ENDPROCESS dff;

  11. D-Flip Flop mit synchronem Reset D & D Q RESET CLK S dff : PROCESS(clk)BEGINIF clk'EVENT AND clk = '1' THENIF reset = '1' THEN q <= '0';ELSE q <= d;ENDIF;ENDIF;ENDPROCESS 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)BEGINIF clk'EVENT AND clk = '1' THENIF reset = '1' THEN q <= '0';ELSE q <= d;ENDIF;ENDIF;ENDPROCESS dff;END rtl; Geschachteltes IF statement

  13. Erzeugung eines Taktes für Simulation SIGNAL clk_halfp : time := 20ns; clkgen : PROCESS BEGIN WAITFOR 1*clk_halfp; clk <= '1'; WAITFOR 1*clk_halfp; clk <= '0'; ENDPROCESS 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 ISSignal i : std_logic;BEGIN dff : PROCESS(clk)BEGINIF clk'EVENT AND clk = '1' THEN h <= i; i <= j OR k;ENDIF;ENDPROCESS dff;END rtl;

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

  16. Übung:Eindeutiger VHDL Kode ARCHITECTURE rtl OF dff_logic ISSignal i, next_i : std_logic;Signal next_h : std_logic; BEGIN dff : PROCESS(clk)BEGINIF clk'EVENT AND clk = '1' THEN i <= next_i; h <= next_h;ENDIF;ENDPROCESS dff; comb : PROCESS(i,j,k)BEGIN next_i <= j OR k; next_h <= i;ENDPROCESS 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 FPGAField Programmable Gate Array CPLD LogicArraybasierend Multiplexerbasierend Look Up Tablebasierend

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

  22. Darstellung von sequentieller Logik Beispiel synchroner Zähler Folge-Zustand GegenwärtigerZustand + 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. & D D D D Q Q Q Q >1 >1 >1 >1 PLD I1 I0 OR Feld(fest verdrahtet) Eingangspuffer Eingangsignal invertiert & Out0 & & & & Out1 & & & & Out2 & & & & Out3 & & & CLK AND Feld(programmierbar)

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

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

  27. RS-Flip-Flop aufgebaut aus Multiplexern 0 0 1 0 Q 1 1 0 Q 1 S R 0

  28. Logikgrundzelle von Actel basierend auf Multiplexern Transfergate

  29. Logik mit Look Up Tabellen 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. G1 G3 G2 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; E0 Q0 & & E1 sig3 & E2 Q1 & & E3 D Q Q2 Netzliste FF0 !! Jedes synthetisierbare VHDL wird Hardware !! Hardware Beschreibung

  40. VHDL Synthesizer Architecture: B Package: A Architecture: A BauteileLibraries Entity: B Entity: A VHDL Synthesizer (umwandlung von VHDL code in Gatter und Flip Flops) WorkingLibrary primitiveLibrary ieeeLibrary .jed .rpt .pin .vhd Pin Belegung Ergebnis inVHDL Form Bericht Dateien fürProgrammiergerä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) BEGIN IF reset = '1' THEN qout <= '0'; ELSIF clk'EVENT AND clk = '1' THEN qout <= din; ENDIF; ENDPROCESS 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) BEGIN IF clk'EVENT AND clk = '1' THEN IF reset = '1' THEN qout <= '0'; ELSE qout <= d; END IF; ENDIF; ENDPROCESS dff; END rtl;

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

  46. Erklärungen zum LabFlankendetektor

  47. reset steig & flin D Q D Q clk q1 q2 Flankendetektor flin clk q1 q2 steig 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 DUT Process:Stimulus

More Related