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...

Themenstart

Lasse Bierstrom 26. Nov 2016

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

Themenstart

x-beliebig 25. Nov 2016

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

Themenstart

tunnelblick 25. Nov 2016

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

Themenstart

tunnelblick 25. Nov 2016

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

Themenstart

Kommentieren



Anzeige

Stellenmarkt
  1. über Ratbacher GmbH, Bodenseeregion
  2. Zentrum für Informationstechnologie ZIT, Freiburg im Breisgau
  3. Janitza electronics GmbH, Lahnau
  4. Landesbetrieb IT.Niedersachsen, Hannover


Anzeige
Spiele-Angebote
  1. 18,99€

Folgen Sie uns
       


  1. Amazon Go

    Supermarkt ganz ohne Kasse

  2. Apollo Lake

    Intel bringt neue NUC-Mini-PCs mit Atom-Antrieb

  3. Ericsson und Intel

    AT&T startet 5G-Test mit Kunden

  4. Samsung

    Akku im Galaxy Note 7 hatte vermutlich zu wenig Platz

  5. Datenbank

    Youtube und Facebook bekämpfen Terrorpropaganda

  6. Gigaset Mobile Dock im Test

    Das Smartphone wird DECT-fähig

  7. Fire TV

    Amazon bringt Downloader-App wieder zurück

  8. Wechselnde Standortmarkierung

    GPS-Probleme beim iPhone 7

  9. Paketlieferungen

    Schweizer Post fliegt ab 2017 mit Drohnen

  10. Apple

    Akkuprobleme beim neuen Macbook Pro



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Spielen mit HDR ausprobiert: In den Farbtopf gefallen
Spielen mit HDR ausprobiert
In den Farbtopf gefallen
  1. Ausgabegeräte Youtube unterstützt Videos mit High Dynamic Range
  2. HDR Wir brauchen bessere Pixel
  3. Andy Ritger Nvidia will HDR-Unterstützung unter Linux

Breath of the Wild: Spekulationen über spielbare Zelda
Breath of the Wild
Spekulationen über spielbare Zelda
  1. Konsole Nintendo gibt Produktionsende der Wii U bekannt
  2. Hybridkonsole Nintendo will im ersten Monat 2 Millionen Switch verkaufen
  3. Switch Nintendo erwartet breite Unterstützung durch Entwickler

Gear S3 im Test: Großes Display, großer Akku, große Uhr
Gear S3 im Test
Großes Display, großer Akku, große Uhr
  1. In der Zuliefererkette Samsung und Panasonic sollen Arbeiter ausgebeutet haben
  2. Vernetztes Auto Samsung kauft Harman für 8 Milliarden US-Dollar
  3. 10LPU und 14LPU Samsung mit günstigerem 10- und schnellerem 14-nm-Prozess

  1. Re: "obwohl sie nur mehrere Safari-Tabs offen halten"

    bernd71 | 11:14

  2. Re: Apples Probleme

    Noppen | 11:13

  3. Re: Externes Gerät? Token?

    My1 | 11:12

  4. Re: Putzig: "... soll ein Austausch ... geholfen...

    dura | 11:10

  5. Jetzt braucht es nur eine Definition von...

    throgh | 11:08


  1. 11:17

  2. 10:47

  3. 10:20

  4. 10:02

  5. 09:49

  6. 09:10

  7. 08:29

  8. 07:49


  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