Präsentation herunterladen
Veröffentlicht von:Bertram Heinzmann Geändert vor über 10 Jahren
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
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.