Abo
  • Services:
Anzeige
FPGA
FPGA (Bild: Christer Weinigel)

Die Auswertung wird beschleunigt

Ich bringe die Abende einer Woche damit zu, mehr über MyHDL zu lernen und meine Zähler zu verbessern. Ich will die Flanken an allen Pins gleichzeitig zählen können, aber dafür muss ich die Menge an verwendeten Logikbausteinen zum Zählen reduzieren. Ich finde heraus, dass 180 Counter in den FPGA passen würden, wenn ich die Extraregister für die Gray-Encodierung weglassen und die Zählergröße auf 10 Bits reduzieren würde. Aber mit 10 Bits kann ich nur bis 1023 zählen, betrug die Frequenz an einem Pin 1 MHz, würde der Zähler innerhalb einer Millisekunde überlaufen. Das ist zu schnell, um sie über den SoC auszulesen.

Anzeige

So entscheide ich mich letztlich für ein hybrides Zählerdesign, bei dem 180 Zähler mit je 10 Bit Kapazität zur Anwendung kommen. Jeder Zähler wird vom Signal seines Pins getaktet und zählt direkt in Gray-Code. Ein Zähler, der direkt in Gray-Code zählt, ist nicht so schnell zu takten wie ein binärer Zähler, aber er erfordert weniger FPGA-Resourcen - wobei ich mir dabei nicht ganz sicher bin.

Da die 10-Bit-Zähler schnell überlaufen, füge ich eine periodisch aufgerufene Schaltung im FPGA ein, der jeden Zähler regelmäßig ausliest und bei einem Überlauf einen zugehörigen 32-Bit-Zähler im RAM entsprechend erhöht. Wenn die 180 Zähler jeweils bis 1023 zählen und dabei regelmäßig ausgelesen werden, wobei das Auslesen vom 50-Mhz-Takt vorgegeben wird, sollte ich jedes Signal mit einer maximalen Frequenz von 1024 * 50 /180 = 284 MHz pro Pin erfassen können. Vorausgesetzt, die Gray-Zähler packen das.

Tausende von Flanken werden gezählt

Das Ergebnis dieses Aufwandes ist in dieser Übersicht zu sehen, dabei wird die Anzahl der aufsteigenden Flanken an jedem Pin und dessen aktueller Zustand angezeigt.

  0  C4       0 ^  A4       0 ^  B5       0 ^  A5       0 ^  D5       0 ^
  5  C5       0 ^  B6       0 ^  A6       0 ^  F7       0 ^  E6   17.3k ^
 10  C7       0 ^  A7       0 ^  D6       0 ^  C6       0 ^  B8       0 ^
 15  A8       0 ^  C9       0 ^  A9       0 ^  B10      0 v  A10      0 ^
 20  E7  126.7M v  E8  126.7M v  E10      0 ^  C10  10.0M v  D8       0 v
 25  C8       0 ^  C11      0 ^  A11      0 v  F9       0 v  D9       0 v
 30  B12      0 v  A12      0 ^  C13      0 v  A13      0 ^  F10      0 v
 35  E11      0 ^  B14      0 ^  A14      0 v  D11      0 v  D12      0 ^
 40  E13      0 v  E12      0 ^  B15      0 v  B16      0 ^  F12      0 ^
 45  G11      0 v  D14      0 ^  D16      0 v  F13      0 ^  F14      0 v
 50  C15      0 v  C16      0 ^  E15      0 v  E16      0 ^  F15      0 v
 55  F16      0 ^  G14      0 v  G16      0 ^  H15      0 ^  H16      0 v
 60  G12      0 ^  H11      0 v  H13      0 v  H14      0 ^  J11      0 v
 65  J12      0 ^  J13      0 v  K14      0 ^  K12      0 v  K11      0 ^
 70  J14      0 v  J16      0 ^  K15      0 v  K16      0 ^  N14      0 ^
 75  N16      0 v  M15      0 v  M16      0 ^  L14      0 ^  L16      0 v
 80  P15      0 v  P16      0 ^  R15      0 v  R16      0 ^  R14      0 v
 85  T15      0 ^  T14      0 ^  T13      0 v  R12  17.3k ^  T12      0 ^
 90  L12      0 v  L13      0 ^  M13      0 v  M14      0 ^  T11      0 ^
 95  M12   1.8M v  M11 722.9k v  T10 210.2k ^  N12 104.0k v  P12 977.8k ^
100  N11      0 ^  P11 210.2k ^  N9    3.4M ^  P9  719.6k v  L10 976.7k ^
105  M10      0 ^  R9   13.8M ^  T9   27.3M v  M9  545.1k v  N8  694.1k v
110  P8  807.9k ^  T8  494.4k ^  P7  133.3M ^  M7  133.3M ^  R7  180.8k ^
115  T7  713.9k v  P6  458.5k ^  T6  828.5k v  R5    2.0M v  T5       0 ^
120  N5    1.1M ^  P5    1.9M v  L8  959.5k ^  L7    1.1M v  P4  647.2k v
125  T4    1.2M v  M6   27.3M v  N6    1.6M v  T3    1.1M v  M4  996.0k v
130  M3       0 ^  M5    2.0M v  N4    1.8M v  R2       0 v  R1       0 v
135  P2       0 v  P1       0 v  N3       0 v  N1       0 v  M2       0 v
140  M1       0 v  L3       0 v  L1       0 v  K2       0 v  K1       0 v
145  J3       0 v  J1       0 v  H2       0 v  H1       0 v  G3       0 v
150  G1       0 v  F2       0 v  F1       0 v  K3       0 v  J4       0 v
155  J6       0 v  H5       0 v  H4       0 v  H3       0 v  L4       0 v
160  L5       0 v  E2       0 v  E1       0 v  K5       0 v  K6       0 v
165  C3       0 v  C2       0 v  D3       0 v  D1       0 v  C1       0 v
170  B1  128.4k ^  G6       0 v  G5       0 v  B2       0 v  A2       0 v
175  F4    6.8M ^  F3       0 v  E4  971.0k ^  E3       0 v  F6  115.4k v
180  F5    1.0M v  B3  972.3k ^  A3       0 ^

Wow! Da passiert jede Menge, obwohl der FPGA eigentlich nichts tut. Es gibt einiges Interessante zu entdecken.

Pin C10m in der Zeile mit der 20 am Anfang wird 20 Millionen Mal pro Sekunde geschaltet. Mit ein wenig Glück ist das der 10-MHz-Referenztakt des Kristallquarzes (U98). Pins E7 und E8 schalten mit einem Takt von 126 MHz. Laut dem FPGA-Datenblatt können diese Pins zur symmetrischen Digitalübertragung benutzt werden und dienen auch als globaler Taktgeber für den FPGA. Wahrscheinlich handelt es sich um ein weiteres Taktsignal von einem anderen Bauteil des Oszilloskops.

Die Pins M7 und R7 scheinen ebenfalls ein symmetrisches Taktsignal für den FPGA zu sein und mit 133 MHz zu takten. Diese Pins in Pin-Bank 2 scheinen auch häufig geschaltet zu werden.

Unangenehme Überraschung

Wo habe ich die 133 MHz schonmal gesehen? In der Ausgabe des Linux-Kernels, wenn er die Taktgeschwindigkeiten ausgibt:

CPU: MPLL on 800.000 MHz, cpu 400.000 MHz, mem 133.333 MHz

Was? Wollt ihr mich verar***en? Was haben die Ingenieure geraucht, als sie sich das ausgedacht haben?

Sie benutzen das Bussystem für den DDR-Speicher als Highspeed-Verbindung zwischen den SoC und den FPGA. Anscheinend haben sie den FPGA so programmiert, dass er als DDR2-Speicher fungiert. Ernsthaft: Es gibt am SoC ein Bussystem, das mit dem Flash-Speicher verbunden ist und als Erweiterungsbus konzipiert wurde. Dieser Erweiterungsbus unterstützt sogar DMA (Direct Memory Access). Damit kann ein Gerät auf dem Bus Daten direkt in den Speicher des SoC kopieren, ohne die CPU zu nutzen. Warum sollte jemand so etwas Närrisches tun und den DDR-Speicherbus als Erweiterungsbus nutzen? Aber offensichtlich haben sie es getan, und die ganzen Signalwechsel in den Pin-Bänken 2 und 3 sind die Pins des Speicherbusses. Das erklärt auch, warum die Aktivierung der Pull-up-Widerstände an den FPGA-Pins des Linux zum Absturz brachte. Die Widerstände nahmen Einfluss auf den Speicherbus und verfälschten die Daten im Speicher.

Das würde alles noch einmal komplizierter machen.

Auch wenn das erst einmal ein Showstopper ist, setze ich meine Analysen fort. Es sollte trotzdem möglich sein, die anderen Komponenten zum Laufen zu bekommen und ein elektrisches Signal über das Analog-Frontend einzulesen und über die Konfigurationsleitung zum SoC zu übertragen. Ein ordentliches Oszilloskop unter Linux lässt sich so allerdings nicht ohne Weiteres realisieren.

Im letzten Teil der Artikelserie wird es Christer Weinigel schließlich gelingen, die vom Oszilloskop gemessenen Signalwerte auszuwerten und darzustellen.

Christer Weinigel ist freiberuflicher Ingenieur in seinem eigenen Unternehmen (Weinigel Ingenjörsbyrå AB). Er entwickelt hardwarenahe Software, arbeitet mit Embedded Betriebssystemen und spielt deshalb auch öfters direkt mit Hardware.

Diese Artikelserie erschien zuerst in seinem Blog. Mit seiner Erlaubnis hat Golem.de seine Artikel ins Deutsche übersetzt und dabei einige Kürzungen und Ergänzungen vorgenommen, damit der Inhalt auch Einsteigern verständlich ist.

 Hello World

eye home zur Startseite
Lasse Bierstrom 26. Nov 2016

Einsynchronisieren ist quasi im hello World für FPGA's mit drin. Alles andere ist (bis...

Lasse Bierstrom 26. Nov 2016

Wenn es um Oszilloskope geht wird idR kräftig in der Trickkiste gerührt. Schneller...

x-beliebig 25. Nov 2016

wir haben die Erfahrung gemacht, dass es Softwareleute gibt, die durchaus meinen, man...

tunnelblick 25. Nov 2016

was vielen nicht klar ist: ein fpga ist inhärent echtzeitfähig.

tunnelblick 25. Nov 2016

das ist so nicht ganz richtig. die synthese verwandet hdl-code in eine netzliste. diese...



Anzeige

Stellenmarkt
  1. TQ-SYSTEMS GMBH, Seefeld nahe München
  2. Daimler AG, Immendingen
  3. Medion AG, Essen
  4. GK Software AG, Schöneck, St. Ingbert, Berlin, Köln


Anzeige
Hardware-Angebote
  1. 17,99€ statt 29,99€
  2. 819,00€

Folgen Sie uns
       


  1. Apple

    MacOS Sierra 10.12.4 mit Nachtschicht-Modus

  2. Apple

    iOS 10.3 in finaler Version erschienen

  3. Videoüberwachung

    Erster Feldversuch mit Gesichtserkennung geplant

  4. Optane Memory

    Intel lässt den Festplatten-Beschleuniger wieder aufleben

  5. Cryptowars

    "Kein geheimer Ort für Terroristen"

  6. Trello

    Atlassian setzt alles auf eine Karte

  7. Endless Runway

    Der Flughafen wird rund

  8. Square Enix

    Gladiolus startet ohne die anderen Jungs in Final Fantasy 15

  9. All Walls Must Fall

    Strategie und Zeitreisen in Berlin

  10. Breitbandmessung

    Nutzer erhalten meist nicht versprochene Datenrate



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Mass Effect Andromeda im Test: Zwischen galaktisch gut und kosmischem Kaffeekränzchen
Mass Effect Andromeda im Test
Zwischen galaktisch gut und kosmischem Kaffeekränzchen
  1. Mass Effect Andromeda im Technik-Test Frostbite für alle Rollenspieler
  2. Mass Effect Countdown für Andromeda
  3. Mass Effect 4 Ansel und Early Access für Andromeda

D-Wave: Quantencomputer oder Computer mit Quanteneffekten?
D-Wave
Quantencomputer oder Computer mit Quanteneffekten?
  1. IBM Q Qubits as a Service
  2. Rechentechnik Ein Bauplan für einen Quantencomputer

Nier Automata im Test: Stilvolle Action mit Überraschungen
Nier Automata im Test
Stilvolle Action mit Überraschungen
  1. Nvidia "KI wird die Computergrafik revolutionieren"
  2. The Avengers Project Marvel und Square Enix arbeiten an Superheldenoffensive
  3. Nintendo Switch erscheint am 3. März

  1. Re: Curie-Temperatur?

    amagol | 03:39

  2. Re: Sand einfüllen

    amagol | 03:29

  3. wäre es in em fall nicht sinnvoll...

    My1 | 03:12

  4. Re: Jetzt also beim Laufen immer nach unten schauen?

    tingelchen | 02:44

  5. Re: Umweltschutz...

    Arkarit | 02:25


  1. 00:28

  2. 00:05

  3. 18:55

  4. 18:18

  5. 18:08

  6. 17:48

  7. 17:23

  8. 17:07


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel