school of engineering einen zähler generisch aufbauen cpld synthese timing analyse pin zuweisungen...
TRANSCRIPT
![Page 1: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/2.jpg)
School ofEngineering
Generic
![Page 3: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/6.jpg)
School ofEngineering
CPLD Synthese
![Page 7: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/15.jpg)
School ofEngineering
Timing Analyse
![Page 16: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/25.jpg)
School ofEngineering
PIN Zuweisungen Fixieren
![Page 26: School of Engineering Einen Zähler generisch aufbauen CPLD Synthese Timing Analyse PIN Zuweisungen fixieren Inhalt](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7649795902118cbb04/html5/thumbnails/26.jpg)
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