Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Inhalt Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse

Ähnliche Präsentationen


Präsentation zum Thema: "Inhalt Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse"—  Präsentation transkript:

1 Inhalt Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren

2 Generic

3 Generic in Entity Default Wert ENTITY zaehl_generic IS
GENERIC (width : natural := 5); PORT( clk,reset : IN std_logic; cnt_out : OUT std_logic_vector(width-1 downto 0) ); END zaehl_generic; ARCHITECTURE rtl OF zaehl_generic IS SIGNAL cnt_folge: unsigned(width-1 downto 0); SIGNAL cnt_gegenwart: unsigned(width-1 downto 0); BEGIN logik : PROCESS(cnt_gegenwart) cnt_folge <= cnt_gegenwart + 1 ; END PROCESS logik; flip_flops : PROCESS(clk, reset) IF reset = '1' THEN cnt_gegenwart <= to_unsigned(0,width); ELSIF clk'EVENT AND clk = '1' THEN cnt_gegenwart <= cnt_folge ; END IF; END PROCESS flip_flops; cnt_out <= std_logic_vector(cnt_gegenwart); END rtl; Default Wert

4 Generic eine Hierarchie höher
COMPONENT zaehl_generic GENERIC (width : natural ); PORT (clk,reset : IN std_logic; cnt_out : OUT std_logic_vector(width-1 downto 0); div_out : OUT std_logic); END COMPONENT; instance1: zaehl_generic GENERIC MAP (width => 50) PORT MAP(clk => clk50, reset => rst, cnt_out => out_vector);

5 Ausgangszuweisung 4 cnt_out
cnt_folge Prozess mit Kombinatorischer Logik comb_ Prozess mit getakteter Logik reg_ cnt_out 4 cnt_gegenwart clk reset 4 PORT( clk,reset : IN std_logic; cnt_out : OUT std_logic_vector(width-1 downto 0) ); cnt_out <= std_logic_vector(cnt_gegenwart);

6 CPLD Synthese

7 Zaehler Einfach ENTITY zaehl_generic IS
GENERIC (width : positive := 4); PORT( clk,reset : IN std_logic; cnt_out : OUT std_logic_vector(width-1 downto 0) ); END zaehl_generic; ARCHITECTURE rtl OF zaehl_generic IS SIGNAL cnt_folge: unsigned(width-1 downto 0); SIGNAL cnt_gegenwart: unsigned(width-1 downto 0); BEGIN logik : PROCESS(cnt_gegenwart) cnt_folge <= cnt_gegenwart + 1 ; END PROCESS logik; flip_flops : PROCESS(clk, reset) IF reset = '1' THEN cnt_gegenwart <= to_unsigned(0,width); ELSIF clk'EVENT AND clk = '1' THEN cnt_gegenwart <= cnt_folge ; END IF; END PROCESS flip_flops; cnt_out <= std_logic_vector(cnt_gegenwart); END rtl;

8 RTL Diagramm zaehler_einfach

9 Ein Logic Element im MAXII

10 Technology Map von zaehler_einfach

11 Technology Map von zaehler_einfach (Hierarchien expandiert)

12 Ein Logic Element im MAXII

13 Up/down counter IF reset = '1' THEN cnt_folge <= 0; ELSE IF up = '1' THEN IF cnt_gegenwart < 9 THEN cnt_folge <= cnt_gegenwart + 1 ; ELSE cnt_folge <= 0; END IF; ELSE IF cnt_gegenwart > 0 THEN cnt_folge <= cnt_gegenwart - 1 ; ELSE cnt_folge <= 9; END IF; END IF; END IF;

14 Mux Diagramm UP-Down Zähler
-1 IF reset = '1' THEN cnt_folge <= 0; ELSE IF up = '1' THEN IF cnt_gegenwart < 9 THEN cnt_folge <= cnt_gegenwart + 1 ; ELSE cnt_folge <= 0; END IF; ELSE IF cnt_gegenwart > 0 THEN cnt_folge <= cnt_gegenwart - 1 ; ELSE cnt_folge <= 9; END IF; END IF; END IF; 1 9 9

15 Timing Analyse

16 Setup und Hold Zeiten beim D-FF
Minimal benötigte Hold Zeit Minimal benötigte Setup Zeit tsu th CLK D 1 2 Q 1 2 Fenster in dem Daten stabil sein müssen

17 Berechnen der Maximalen Taktfrequenz eines Zählers
FF:cnt_gegenwart(1) FF:cnt_gegenwart(3) Q D !Q Q D !Q CLK Tperiod-max = tPDCLKQ-cnt_gegenwart(1) + tPD-Logic + tPD-Verbindung + tSU-cnt_gegenwart(3) fmax = Tperiod-max 1 Nur ein Ausschnitt des Zählers gezeigt!

18 Propagation Delay am CPLD Ausgang (tco)
Q1 Ausgangs- Pin Q D !Q tpdLOGIK CLK tcoFLIP-FLOP tpdCLKBUF tcoCPLD = tpdCLKBUF + tcoFLIP-FLOP + tpdLOGIK

19 Timing Analyse von clk zu cnt_out
cnt_gegenwart(1) Q D !Q Q D !Q cnt_out(0) CLK1 CLK2 CLK cnt_gegenwart(0) Nur ein Ausschnitt des Zählers gezeigt!

20 Die SETUP Zeit beim Verschalten von CPLDs
CPLD Eingangspin FF1 FF1 FF2 D2 D1 Q D !Q Q D !Q D Q D Q Q1 Q2 !Q !Q CLK Flanke 1) (Launch Clock) Flanke 2) (Latch Clock) CLK D1 D2 tsetup

21 Set Up Zeit am CPLD Eingang (tSU)
tpdLOGIK tsuFLIP-FLOP Eingangs- Pin D2 Q D !Q CLK tsuCPLD = tsuFLIP-FLOP + tpdLOGIK

22 Verfügbare HOLD Zeit für CPLD Eingang
CPLD Eingangspin Logic FF1 FF1 FF2 D2 D1 Q D !Q Q D !Q D Q D Q Q1 Q2 !Q !Q CLK Flanke 1) Flanke 2) CLK tlogic tlogic Q1 D2 thold thold Q2

23 Hold Zeit am CPLD Eingang
tpdLOGIK thFLIP-FLOP Eingangs- Pin D2 Q D !Q CLK thCPLD = thFLIP-FLOP - tpdLOGIK

24 Timing Analyse Up/Down Counter

25 PIN Zuweisungen Fixieren

26 Erstellen von Pin Zuweisungen
Synthetisieren Sie ein erstes Mal Führen Sie eine Backannotation durch: Assignments  Backannotate Speichern Sie das Projekt File Save Project Öffnen Sie den Assignment Editor: Assignments Pins Editieren Sie die Pins entsprechend dem PCB Board Kompilieren sie noch einmal und kontrollieren sie die Pin Assignments mit Assignments pins Abspeichern als TCL Datei: Project  Generate TCL File for Project Laden der TCL Datei: Tools TCL scripts


Herunterladen ppt "Inhalt Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse"

Ähnliche Präsentationen


Google-Anzeigen