PLL Phase Locked Loop

In den FPGAs sind PLLS ein Standard für zwei Gründe:
– Um Pfadverzögerungen zu Kompensieren (Bsp. 2)
– Um andere Taktfrequenzen zu erhalten (Bsp. 1)

Neuer Takt
Viele Protokole besitzen ihre eigene Takt-Frequenz. Daher braucht es einige Takte innerhalb eines FPGAs

f_out = (f_in * m) / n         // m wird multipliziert,  n und g dividiert

pll_schema_Takt_Generator


Kompensation Verzögerung

Werte im Feedback Pfad v1= 3 ns  schieben CLK_IN nach vorne,
Werte beim Ausgang v2 = 8 ns  verzögern CLK_IN.
pll_schema_delay

Bsp Kompensation
Ausgangslage: Durch Flip-Flop-Verzögerung oder Pfadverzögerung und IO-Verzögerung kommt data 5ns später als CLK_50 beim SRAM an.
1.)  Entweder führt man ein PLL in den data-Pfad ein,
dann muss der PLL den CLK_50 vorverlegen v1 = 5 ns
um die Verspätung zu kompensieren,
oder   (siehe Bild)
2.) man verzögert den CLK_50 zum SRAM mit genau der Verzögerung,
die der data-Pfad hat v2 = 5 ns . Dann kommt CLK RAM „gleich verzögert “
wie data beim SRAM an.
PLL_SDRAM

 

PLL Rechenbeispiel mit Takterzeugung und Verzögerung

a_pll

..

JTAG: Built in Testing

Von der Prüfspitze zu Testpins
Früher wurde ausschliesslich mit der „Nadelmethode“ Testnadeln an ausgewählte Stellen (Knoten) angelötet, um den Signalverlauf zu testen.
Da die Bauteile immer kleiner werden ist dies physisch fast nicht mehr möglich. An den Teststellen (Knoten) werden Leitungen an die Oberfläche fix geführt. Ist dies in einem Chip (Built in) so enstehen Pins am Chip-Ausgang, die Zugang zu den Knoten bieten.

JTAG-Standard
Der IEEE 1149.1 Standard ist von der Gruppe JTAG verfasst und definiert eine Schnittstelle für Boundary Scan Test in Chips. Detailierter Artikel JTAG

Über die JTAG-Schnittstelle, auch TAP = Test Access Port genannt kann auf die SCAN CHAIN (siehe Boundary Scan) auf die Ein-und Ausgänge des Chips zugegriffen werden.

scanChain

TAP Schnisstelle
JTAG definiert 4 Signale:
– TCK: Der Clock
– TMS: Der Testmode
– TDI: Die Datenleitung für Input (Simulation)
– TDO: Die Ausgabe des aktuellen Zustands an den Ein-und Ausgängen.

 

..

SignalTap

Über den USB-Blaster kann bei altera mit dem Programm SignalTap der Verlauf der internen Signale sichtbar gemacht werden. Der Vorteil zu einem Logic Analyser ist, dass SignalTap intern funktioniert und damit die Signale nicht zuerst nach aussen geführt werden müssen.

Die Screenshots sind von der Präsentation: de.slideshare.net/… quartus tutorial signaltap

 

Die Signale werden durch Doppelklick bei „node“ ausgewählt. Mit einem * erhält man alle Signale.
singaltap_select_signal

Der Tackt muss angegeben werden:

singaltap_set_clock
clock setzen

Nach dem Clk sind die Grundeinstellungen wichtig. Kleine FPGAs haben nicht viel Speicher und zeichnen deshalb nur wenig Signale auf…
singaltap_configurations

Am Schluss wird die Konfiguration ins FPGA geladen. (Zuvor sollte man das Projekt .sof bereits einmal hinuntergealden haben.)
singaltap_download_signaltap

Die Signale erscheinen so:
singaltap_analysis

Will man ein Signal detaillierter anschauen, so geht dies so:
singaltap_analysis_more_details

VHDL Code von Speicher starten

Datei.pof
Der Speicher braucht ein bistream als Synthese.  Deshalb muss neben der *.sof-Datei auch eine *.pof-Datei erzeugt werden.

Grundeinstellung ändern
Bei der Synthese, soll gleich auch die *.pof-Datei generiert werden.
Assignments/Device     Taste: Device and Pin Options    /Configuration
Auswählen von:           Active Serial
Hacken bei:                     v   Use configuration device:       Auto (oder auswählen)
.                                            v   Generate compressed bitstream


Konvertieren *.sof zu *.pof

File/Convert Programming Files…/    Folgende EinstellungeProgramming file type:        Programmer Object File (.pof)
Configuration device:           (siehe Namen auf Board)
File name:                                  <pfad>/name.pof
Input files to convert:            – Anklicken SOF Data
.                                                      – Add File..
.                                                      – outputfile/datei.sof  aus Ordner Synthese
Generate

Programmer Einstellungen
Mode:                                          Active Serial Programming
File:                                              *.sof löschen
.                                                      *.pof adden
Device:                                          <name des Speichers> ! nicht des FPGA

Auf Board
!!!!! Schalter auf Programm !!! nur so entsteht Verbindung zu Speicher.

Timing Durchlaufverzögerung t_pd

Durchlaufverzögerung (propagation delay)
Ein Signal am Eingang erscheint (theortisch) direkt Ausgang. Real jedoch hat jedes Signal eine Gatter- oder Flip-Flop-Verzögerung.

Verzögerung bei Logik
Jedes Gatter braucht eine kurze Zeit, um die Logik auszugeben. Diese nennt man Gatter-Verzögerung bzw. auf englisch progagation delay.
delay_gatter
Nimmt man pro Gatter eine Verzögerung von 5 ns, so hat man nach 3 Gattern einen Pfad von 15 ns.

Verzögerung bei Flip-Flop
Auch jedes Flip-Flop hat nach dem Clk noch eine Verzögerung. Das Signal liegt nicht unmittelbar nach dem Clk am Ausgang an.
Durchlaufverzoegerung_FF

Die Verzögerung (t_pd) darf nicht zu lange sein, weil sonst das Signal nicht mehr anliegt. Die Regel ist, dass die Verzögerung küzer sein muss, als die minimale Haltezeit des Signal (t_hold). Bei den Flip-Flops muss zusätzlich noch die Zeit vor dem Clock berücksichtig werden (t_setup). Mehr dazu unter Metastabilität.

 

 

 

Tristate: Pull Up, Pull Down

Tristate ist die Zustandsbezeichnung von digitalen IOs. Diese können den Zustand ‚0‘, ‚1‘ oder (je nach Verdrahtung) ‚Z‘ oder ‚Z‚ sein. Der Grund dafür ist, dass Ausgänge getrieben werden müssen, was Transistoren bedingt. Diese können in der Luft hängen und dadurch den dritten Zustand erzeugen.

Pull up (‚Z‘)
Im Ruhezustand fehlt die Verbindung zu GND, aber die Verbindung zu VCC ist über den Widerstand gegeben.
Pull_up

Im Ruhezustand erhält der Ausgang aufgrund der Verbindung mit VCC einen definierten Zustand:  logisch HIGH.

Pull down (‚Z‚)
Im Ruhezustand erhält die Leitung durch die Verbindung zu GND einen klaren Zustand: Logisch LOW.

Pull_down

 

Tri-State Transistoren treiben Ausgang / Bus

Transistoren vor IO
In der Digitaltechnik müssen IOs getrieben werden. Das heisst, dass der Input nicht „von selbst“ an den Ausgang übertragen wird, sondern nur, verstärkt den Zustand übergeben kann. Dazu dienen Transistoren.

npnbuffr
IO-Logik hat deshalb nicht nur zwei, sondern drei Leitungen zu verwalten (In, Out und enable).

tristate

Zustand des Ausgangs

Durch das Transistoren-Bild sieht man, dass der Output, beim Nichtleiten, vom Rest abgehängt ist.  Aus diesem Grund gibt es in der Digitaltechnik für die IOs den dritten Zustand ‚Z‚, was so viel wie in der Luft hängen bez. hochomig bedeutet.

Diese gute Visualisierung habe ich von folgender Website.

Optimieren Taktfrequenz Bauteil

Bei einem FPGA hängt die höchte Taktfrequenz vom langsten Pfad zwischen zwei FF ab.
f_max = 1 / t_pfad_max

Logikpfad

Je länger der Pfad, desto tiefer die maximale Taktfrequenz.
t_pfad = 5 ns      f_max = 200 MHz               CLK_Bauteil = 200 MHz
t_pfad = 3 ns      f_max = 333 MHz               CLK_Bauteil = 333 MHz

Optimierung
Durch das direkte Anbinden eines FF beim Ausgang eines Speichers, wird der Pfad verkürzt.

Nachteil der Optimierung
Die Datenverarbeitung braucht insgesamt einen Takt-Zyklus mehr.

Speicher Timing Zeitverlauf

Das Timing (einhalten der Setup- und Hold-Zeit) ist eine Fehlerquelle für ungültige Daten.

Bsp. eines Schreibe-Zyklus
Ein neuer Zylkus beginnt bei der fallenden Flanke
   Da Daten leicht verzögert ankommen, beginnt der neue Zyklus
nach der fallenden Flanke. Die Verzögerung darf nicht so gross sein,
dass die setup Zeit verletzt wird.
(t_setup = Zeit, in der Daten vor CLK anliegen müssen)
Ausführen des Befehls bei steigender Flanke
Hier ist es ein Schreibbefehl. Auch der Lesebefehl wird bei steigender Flanke
ausgeführt.
Der Befehl wird leicht verzögert ausgeführt.
Um den Befehl recht auszuführen, darf die Hold Zeit nicht verletzt werden.
(t_hold = Zeit, in der die Daten nach dem CLK noch anliegen müssen)

Bereits kurz nach der ausführenden Flanke sind die Daten wieder Weg und der neue Zyklus beginnt.

Timing_Speicher

FPGA
Speicher haben intern einen Takt. Dadurch entfällt das Timingproblem.