+ All Categories
Home > Documents > School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen...

School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen...

Date post: 06-Apr-2015
Category:
Upload: bertram-heinzmann
View: 103 times
Download: 0 times
Share this document with a friend
26
School of Engineerin g Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt
Transcript
Page 1: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

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

Inhalt

Page 2: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

Generic

Page 3: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

Generic in Entity

ENTITY zaehl_generic ISGENERIC (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) BEGIN cnt_folge <= cnt_gegenwart + 1 ; END PROCESS logik; flip_flops : PROCESS(clk, reset) BEGIN 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

Page 4: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

Generic eine Hierarchie höher

instance1: zaehl_generic

GENERIC MAP (width => 50)

PORT MAP(clk => clk50,reset => rst,cnt_out => out_vector);

COMPONENT zaehl_genericGENERIC (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;

Page 5: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

Prozess mitKombinatorischer

Logik

comb_

Prozess mitgetakteter

Logik

reg_

cnt_gegenwart

cnt_folge

clk

reset

4

4

Ausgangszuweisung

cnt_out

cnt_out <= std_logic_vector(cnt_gegenwart);

PORT( clk,reset : IN std_logic; cnt_out : OUT std_logic_vector(width-1 downto 0) );

Page 6: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

CPLD Synthese

Page 7: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

Zaehler Einfach

ENTITY zaehl_generic ISGENERIC (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) BEGIN cnt_folge <= cnt_gegenwart + 1 ; END PROCESS logik; flip_flops : PROCESS(clk, reset) BEGIN 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;

Page 8: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

RTL Diagramm zaehler_einfach

A[3..0]

B[3..0]OUT[3..0]

ADDER

D QPRE

ENA

CLR

Add0

4' h1 --

cnt_gegenwart[3..0]

clkreset

cnt_out[3..0]4’h1

Page 9: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

Ein Logic Element im MAXII

Page 10: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

Technology Map von zaehler_einfach

!ACLR

CLK

DATAA

REGOUT

LOGIC_CELL (5555) !ACLR

CLK

DATAC

DATAD

REGOUT

LOGIC_CELL (0FF0)

!ACLR

CLK

DATAB

DATAC

DATAD

REGOUT

LOGIC_CELL (3CCC)

!ACLR

CLK

DATAA

DATAB

DATAC

DATAD

REGOUT

LOGIC_CELL (6AAA)

cnt_gegenwart[0]

cnt_gegenwart[1]

cnt_gegenwart[3]

clkreset

cnt_out[0]

cnt_out[1]

cnt_out[2]

cnt_out[3]cnt_gegenwart[2]

Page 11: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineeringTechnology Map von zaehler_einfach

(Hierarchien expandiert)

cnt_gegenwart[3]

cnt_gegenwart[2]cnt_gegenwart[1]

cnt_gegenwart[0]

DATAA

DATAB

DATAC

DATAD

OUT

SUM_LUT (6AAA)

D

ENA

QPRE

CLRDATAB

DATAC

DATAD

OUT

SUM_LUT (3CCC)

D

ENA

QPRE

CLR

DATAA OUT

SUM_LUT (5555)

D

ENA

QPRE

CLR

DATAC

DATADOUT

SUM_LUT (0FF0)

D

ENA

QPRE

CLR

S

S

S

S

clkreset

cnt_out[0]

cnt_out[1]

cnt_out[2]

cnt_out[3]

Page 12: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

Ein Logic Element im MAXII

Page 13: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

IF reset = '1' THENcnt_folge <= 0;

ELSE IF up = '1' THEN

IF cnt_gegenwart < 9 THENcnt_folge <= cnt_gegenwart + 1 ;

ELSEcnt_folge <= 0;

END IF;ELSE

IF cnt_gegenwart > 0 THENcnt_folge <= cnt_gegenwart - 1 ;

ELSEcnt_folge <= 9;

END IF;END IF;

END IF;

Up/down counter

Page 14: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

Mux Diagramm UP-Down Zähler

-1

9

1

0

9

0

0

IF reset = '1' THENcnt_folge <= 0;ELSE IF up = '1' THEN

IF cnt_gegenwart < 9 THENcnt_folge <= cnt_gegenwart + 1 ;ELSEcnt_folge <= 0;END IF;

ELSEIF cnt_gegenwart > 0 THENcnt_folge <= cnt_gegenwart - 1 ;

ELSEcnt_folge <= 9;END IF;

END IF;END IF;

Page 15: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

Timing Analyse

Page 16: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

1 2

21

tsu

Q

D

CLK

th

Minimal benötigte Setup ZeitMinimal benötigte Hold Zeit

Fenster in dem Datenstabil sein müssen

Setup und Hold Zeiten beim D-FF

Page 17: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

QD

!Q

QD

!Q

CLK

tPDCLKQ-cnt_gegenwart(1) + tPD-Logic + tSU-cnt_gegenwart(3) + tPD-VerbindungTperiod-max =

fmax = Tperiod-max

1

FF:cnt_gegenwart(1) FF:cnt_gegenwart(3)

Nur ein Ausschnitt des Zählers gezeigt!

Berechnen der Maximalen Taktfrequenz eines Zählers

Page 18: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

QD

!QCLK

Q1 Ausgangs-Pin

tcoCPLD = tpdCLKBUF + tcoFLIP-FLOP + tpdLOGIK

tpdCLKBUF

tpdLOGIK

tcoFLIP-FLOP

Propagation Delay am CPLD Ausgang (tco)

Page 19: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

QD

!Q

QD

!QCLK1 CLK2

cnt_out(0)

cnt_out(1)cnt_gegenwart(1)

cnt_gegenwart(0)CLK

Nur ein Ausschnitt des Zählers gezeigt!

Timing Analyse von clk zu cnt_out

Page 20: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

QD

!Q

QD

!Q

Q1 Q2

FF1

CLK

tsetup

CLK

D1

D2

D2D1 QD

!Q

FF1

QD

!Q

FF2

Flanke 1)(Launch Clock)

Flanke 2)(Latch Clock)

Die SETUP Zeit beim Verschalten von CPLDs

CPLD Eingangspin

Page 21: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

QD

!QCLK

D2Eingangs-Pin

tsuCPLD = tsuFLIP-FLOP + tpdLOGIK

tsuFLIP-FLOP

tpdLOGIK

Set Up Zeit am CPLD Eingang (tSU)

Page 22: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

QD

!Q

QD

!Q

Q1 Q2

FF1

CLK

thold

CLK

Q1

D2

D2D1 QD

!Q

FF1

QD

!Q

FF2

Flanke 1) Flanke 2)

Q2

tlogic

Logic

thold

tlogic

Verfügbare HOLD Zeit für CPLD Eingang

CPLD Eingangspin

Page 23: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

QD

!QCLK

D2Eingangs-Pin

thFLIP-FLOP tpdLOGIK

thCPLD = thFLIP-FLOP - tpdLOGIK

Hold Zeit am CPLD Eingang

Page 24: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

Timing Analyse Up/Down Counter

Page 25: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

PIN Zuweisungen Fixieren

Page 26: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt.

School ofEngineering

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


Recommended