Forum: FPGA, VHDL & Co. Zum Artikel in Sachen Taktung von FPGAs.


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Carsten (Gast)


Bewertung
0 lesenswert
nicht lesenswert
https://www.mikrocontroller.net/articles/Taktung_FPGA/CPLD

Im Ernst, ich habe genau kein Wort verstanden. Weil ich nicht 1/10 von 
der Ahnung habe, die der Autor da mal eben so mit uns teilt. Wow!

Meine größte Leistung in Sachen Digitaltechnik war vor sehr vielen 
Jahren mal, einen Z80H (sic!) mit SRAM und EEPROM auf einer Euro-Platine 
zu verfädeln und ihn auf 10 MHz (sic!!) hochzutakten. Er hat später 
sogar CP/M kapiert (ja, sic! ^^).

Ich finde es sensationell und einfach nur gut, wenn solche Fachleute ihr 
Wissen mit uns Einsteigern teilen. Die Lernkurve ist hier teilweise sehr 
hoch, aber so muss es wohl auch sein.

Tolles Forum!

von S. R. (svenska)


Bewertung
0 lesenswert
nicht lesenswert
Was willst du uns damit jetzt sagen?

Ich habe den Artikel nur kurz überflogen, wirkte in sich schlüssig. Die 
Takterei bei FPGAs ist nicht ganz ohne, aber ohne sich da tief 
reinzusteigern, scheitert man ohnehin schon lange vorher. BTDT.

von Carsten (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Genau das wollte ich damit sagen: dass dieses Forum vom Anfänger bis zum 
Vollprofi allen was zu bieten hat, und dass es ab vom Elko etwa wohl das 
einzige Forum ist, das so eine große Spannweite bietet. Es war einfach 
ein Dankeschön an die vielen Autoren solcher Artikel, die mehr als U = R 
* I rausrücken wollen, nämlich auch die vielen Feinheiten aus der 
Praxis, die nicht in den Datenblättern stehen, sondern nur in den Hirnen 
von erfahrenen Profis.

Auch wenn ich nach wie vor in diesem speziellen Text nix verstanden 
habe, ich bin mehr der Software-Mäkler ;)

von S. R. (svenska)


Bewertung
0 lesenswert
nicht lesenswert
Achso. Ich war mir nicht sicher, ob ich in deinem Text eher Ernst oder 
Ironie interpretieren sollte. :-)

Aber ja, hier ist's recht schön. Ruppig, aber meist kompetent.

von Bego (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Der Artikel ist insofoern gut, weil er Aspekte bringt, die viele nicht 
kennen. Allerdings hat die Taktbaumstruktur in FPGAs wenig Gehalt, weil 
man die eh nicht konfigurieren kann. Damit ist das Wissen darüber eher 
theoretisch.

Leider sind andere Aspekte etwas kurz geraten und auch nicht mehr zu 
100% aktuell.

von Sigi (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Bego schrieb:
> Allerdings hat die Taktbaumstruktur in FPGAs wenig Gehalt, weil
> man die eh nicht konfigurieren kann.

Je nachdem, was man zum Taktbaum zählt kann man
schon einiges konfigurieren. So kann man nicht nur
Clockswitches oder PLL/oÄ dazuschalten oder am
Ziel invertieren, es gibt z.B. bei einigen FPGAs
konfigurierbare regionale und lokale Strukturen,
die einen Teil des Baums darstellen. Das kann für
schnelle Datenübertragung z.B. bei DDR-RAM wichtig
sein. Sich damit zu beschäftigen kann also sehr
wichtig sein.

von C. A. Rotwang (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Bego schrieb:
> Allerdings hat die Taktbaumstruktur in FPGAs wenig Gehalt, weil
> man die eh nicht konfigurieren kann. Damit ist das Wissen darüber eher
> theoretisch.

Wenn man setzen von timing constraints auch zur grauen Theorie zählt, 
dann ja. Ansonsten ist es schon wichtig den Begriff skew im zusammenhang 
mit timing constraints zu verstehen und der erschliesst sich eben über 
das Verständniss der physischen Struktur - also dem clock tree.

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Bewertung
2 lesenswert
nicht lesenswert
S. R. schrieb:
> Die Takterei bei FPGAs ist nicht ganz ohne
Allerdings hat die feste Struktur der Taktverteilung einen Vorteil, den 
der Hersteller über alle Flipflops im FPGA hinweg garantiert: man muss 
sich keine Gedanken um eine Race-Condition machen. Ein Bit kann da nicht 
einfach durch eine (Schiebe-)Registerkette "durchfallen", wie es z.B. 
bei diesem Aufbau in einem ASIC sein könnte:
1
        _               tp          tp          tp
2
  Clk _|   --------o----->-----o----->-----o----->-----.
3
                   |           |           |           |     
4
                 -----       -----       -----       -----
5
                | Clk |     |     |     |     |     |     |    
6
     In    -----|D   Q|-->--|D   Q|-->--|D   Q|-->--|D   Q|---  Out
7
                |     | tp  |     | tp  |     | tp  |     |    
8
                 -----       -----       -----       -----
9
                 FF1          FF2         FF3         FF4
Wenn hier z.B. alle Flipflops '0' sind und der In '1', dann könnte es 
sein, dass mit der steigenden Flanke das FF1 "sofort" den Pegel '1' am 
Ausgang annimmt, und dieser Pegel zusammen mit der steigenden Flanke 
nach der Laufzeit tp am FF2 ankommt, und dieses dann gleich die '1' 
übernimmt, und das auch das FF2 und das FF3 macht. Dann ist die '1' mit 
einem einzigen Taktimpuls durch die Registerkette "durchgefallen".
Besser wäre es dann, den Takt am FF3 einzuspeisen:
1
                        tp          tp          tp           _
2
                   .----<------o----<------o----<------o-- _|   Clk
3
                   |           |           |           |     
4
                 -----       -----       -----       -----
5
                | Clk |     |     |     |     |     |     |    
6
     In    -----|D   Q|-->--|D   Q|-->--|D   Q|-->--|D   Q|---  Out
7
                |     | tp  |     | tp  |     | tp  |     |    
8
                 -----       -----       -----       -----
9
                 FF1          FF2         FF3         FF4
Dann kann dieses "Durchfallen" nicht passieren, weil ja erst das FF4 den 
Zustand vom FF3 übernimmt, usf bis zum Schluss das FF1 den Pegel vom In 
einliest.
Wird die Taktverteilung in einem "Baum" gemacht, hat von der "Wurzel", 
(dem Takteingang) bis zu den "Blättern" (den Flipflops) das Taktsignal 
die gleiche Laufzeit.
1
                                   CLk_ 
2
                                    _|
3
                                    
4
                                     |
5
                         .-----------o-----------.
6
                         |                       |  
7
                   .-----o-----.           .-----o-----. 
8
                   |           |           |           |     
9
                 -----       -----       -----       -----
10
                | Clk |     |     |     |     |     |     |    
11
     In    -----|D   Q|-----|D   Q|-----|D   Q|-----|D   Q|---  Out
12
                |     | tp  |     | tp  |     | tp  |     |    
13
                 -----       -----       -----       -----
14
                 FF1          FF2         FF3         FF4
Weil der FPGA-Hersteller durch den balancierten Taktbaum garantiert, 
dass eine Race-Condition", also ein "Durchfallen" im FPGA nicht 
vorkommen kann, macht es einfach, synchrone Designs zu realisieren.

Dass darüber hinaus die Taktgenerierung, die Taktmodifizierung und die 
Taktverteilung ein eigenes Kapitel im Handbuch haben, zeigt aber, dass 
das Taktmanagement weit über solche "Selbstverständlichkeiten" 
hinausgeht.

: Bearbeitet durch Moderator
von Jürgen S. (engineer) Benutzerseite


Bewertung
2 lesenswert
nicht lesenswert
Lothar M. schrieb:
> Weil der FPGA-Hersteller durch den balancierten Taktbaum garantiert,
> dass eine Race-Condition", also ein "Durchfallen" im FPGA nicht
> vorkommen kann, macht es einfach, synchrone Designs zu realisieren.

Ich würde das etwas weicher formulieren, weil auch ein Taktbaum keine 
perfekte Verteilung garantiert.

Der Baum ermöglicht eine geringere Diskrepanz zwischen frühester und 
spätester Flanke, als eine Kette und damit mehr budget für die 
Laufzeiten der Kombinatorik -> höhere Taktfrequenzen für das synchrone 
Schalten.

Allerdings lassen sich genau durch solche Schaltungen innerhalb eines 
synchronen Taktes in ASIC besonders hohe Schaltgeschwindigkeiten 
erzielen, indem man solche Ketten lokal gezielt aufbaut und den später 
kommenden Takt am Ende der Kette nutzt.

Heisst: Höhere Taktfrequenzen für das "asynchrone" Schalten. Dazu muss 
man allerdings speziell bauen und simulieren.

Will man das bei speziellen Anwendungen in FPGAs nutzen wird das 
besonders anspruchsvoll, da mit den mikroskopischen Verzögerungen der 
LUTs und gegateten Takten gearbeitet werden muss.

Eine Mischung der Techniken ist möglich, wenn man mit mehreren Takten 
arbeitet, die aus derselben PLL kommen und einen festen Bezug haben. 
Z.B: 0,90,180,270 Grad.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.