Abo
  • Services:
Anzeige
Schaltbild des Panels
Schaltbild des Panels (Bild: Christer Weinigel)

Oszilloskop-Daten auslesen

Zurück zur eigentlichen Oszilloskop-Funktion. Welche Datenpins des ADC sind mit den Pins des FPGA verbunden?

Ich habe mich mittlerweile einige Wochen mit MyHDL beschäftigt und dabei einige FPGA-Module gebaut, die über einen Wishbone-Bus miteinander kommunizieren.

Als Erstes entstand ein SPI-Slave, der die drei Leitungen für die FPGA-Konfiguration benutzt. Normalerweise benötigt eine SPI-Schnittstelle vier Leitungen. Deshalb kombinierte ich die Leitungen für Serial Data Out (SDO) und Serial Data In (SDI) in einer bidirektionalen SDIO-Leitung. Ich versuchte, den Linux-Treiber spi-gpio zu modifizieren, damit er mit dieser einzelnen Leitung funktioniert, allerdings stellte sich das als zu schwierig heraus. So bastelte ich mir einen einfachen Treiber selbst zusammen.

Anzeige

Dieses SPI-Slave-Modul fungiert als Master des Wishbone-Busses und kann einen angeschlossenen Wishbone-Slave steuern. Ich funktionierte meinen MyHDL-Code zum Auswerten von Pin-Flanken um, so dass er als Wishbone-Slave fungierte. Das war relativ einfach. Schwieriger war es, einen Bus-Multiplexer zu schreiben, mit dem ich mehrere Wishbones-Slaves mit einem Wishbone-Master verbinden konnte. MyHDL funktionierte nicht immer so, wie ich es erwartet hatte und hatte verschiedene Einschränkungen, deshalb brauchte ich einige Wochen, bis es funktionierte.

Nachdem ich das alles zusammenhabe, erzeuge ich einen RAM-Baustein mit zwei Verbindungen im FPGA. Eine Verbindung besteht mit einem Wishbone-Slave, so dass der RAM-Inhalt vom SoC ausgelesen werden kann. Die zweite Verbindung besteht mit dem ADC des Oszilloskops. Im Takt des ADC werden die 32 symmetrischen Signale vom ADC im RAM gespeichert, bis er voll ist. Ein weiterer Wishbone-Slave mit einem einzelnen Bit-Register dient zum Starten und Stoppen des Speichervorgangs (Capturing).

Das erste Capturing

Mit dem Kommandozeilenprogramm sox auf einem Linux-PC spiele ich eine 3-KHz-Sinuskurve ab, die ich mit einem Tastkopf an Kanal 1 des Oszilloskops auswerte.

play -n synth 0 sin 3000

Ich boote wieder das Oszilloskop mit der Owon-Firmware und warte, bis ich eine Sinuskurve auf dem Bildschirm sehe. Dann führe ich wieder ein Soft-Reset durch und lade Linux. Dabei läuft der ADC weiter, so entdeckte ich damals die Pins, mit denen der ADC mit dem FPGA verbunden ist. Ich sehe außerdem, dass der ADC mit 100 MHz getaktet wurde. Deshalb modifiziere ich den FPGA-Code zum Speichern der Daten, es wird jetzt nur noch jede hundertste Abtastung im RAM gespeichert. Meine Abtastrate beträgt also 1 Msamples pro Sekunde.

Welche Pins bekommen welches Signal?

Der ADC liefert 32 symmetrische Signale an die FPGA-Pins. Die 32 Signale sind aufgeteilt in vier Gruppen mit je acht Pins, jeder Pin entspricht einem Bit. Tastet der ADC nur einen Kanal ab, werden dafür alle vier Gruppen genutzt und miteinander verzahnt übermittelt. Werden zwei Kanäle abgetastet, werden pro Kanal je zwei Gruppen verwendet. Verzahnt bedeutet, dass jeweils mehrere, zeitlich hintereinanderliegende Messwerte gleichzeitig übermittelt werden.

Es gilt nun herauszufinden, welche FPGA-Pins zu welcher Gruppe gehören und welcher Pin innerhalb einer Gruppe welcher Bitposition entspricht.

Als Ausgangspunkt für die Analyse der Pin-Gruppen-Zugehörigkeit nutze ich die Angaben zur Anordnung der Pins, wie sie im FPGA-Datenblatt angegeben werden. Ich übertrage die Daten in eine Grafik. Es ergab sich folgendes Bild. Die Rohdaten sind hier verfügbar.

  • Legende der FPGA-Pins (Bild: Christer Weinigel)
  • Die FPGA-Pins (Bild: Christer Weinigel)
  • Pins des SoC-Bus (Bild: Christer Weinigel)
  • Pins zum RAM (Bild: Christer Weinigel)
  • Pins zum ADC (Bild: Christer Weinigel)
  • Vollständig dokumentierte Karte der Pins (Bild: Christer Weinigel)
  • Matrix-Schaltung der Bedientasten am Oszilloskop (Bild: Christer Weinigel)
  • Noch keine Sinuskurve (Bild: Christer Weinigel)
  • Mit viel Phantasie eine Sinuskurve (Bild: Christer Weinigel)
  • Eine echte Sinuskurve (Bild: Christer Weinigel)
  • Das gleiche Spiel mit zwei Kanälen (Bild: Christer Weinigel)
  • Noch etwas Chaos (Bild: Christer Weinigel)
  • Wenigstens keine Ausreißer mehr (Bild: Christer Weinigel)
  • Beide Kanäle sind klar erkennbar. (Bild: Christer Weinigel)
  • Beide Kanäle mit größer Dämpfung (Bild: Christer Weinigel)
Noch keine Sinuskurve (Bild: Christer Weinigel)

Die roten, grünen, blauen und magentafarbenen Punkte entsprechen den jeweiligen Pin-Gruppen. Das sieht nicht direkt nach einer Sinuskurve aus, aber es wäre reiner Zufall gewesen, wenn ich die korrekte Zuweisung der Pins zu den Gruppen bereits beim ersten Versuch gefunden hätte.

Allerdings ist ein Muster erkennbar: eine 3-KHz-Sinuskurve, die mit 1 Msample pro Sekunde abgetastet wird, und bei 1.000 dargestellten Stichproben sollte sich das Signal dreimal im abgebildeten Graphen wiederholen, und das tut es.

Die Daten sehen auf den ersten Blick wie reines Rauschen aus, aber an drei Stellen haben wir eine klare Linie. Es gibt einige Punkte im Rauschen, die entfernt wie eine Sinuskurve aussehen, wenn ich ein wenig die Augen zudrücke.

Positiv oder negativ?

Nach etwas Nachdenken komme ich darauf, dass beim Start von Linux einige GPIO-Pins geschaltet werden, die den Schaltbereich der Dämpfungsrelais im Analog-Frontend verändern. Deshalb erhöht sich die Amplitude der Kurve, das Signal übersteigt die Erfassungsfähigkeit des ADC und wird abgeschnitten. Dann wird mir klar, dass es für die Analyse ganz praktisch ist, dass das Signal abgeschnitten wird, da sich die zugehörigen Pins einfacher verfolgen lassen.

Jedes symmetrische Signal wird über zwei Leitungen mit entgegengesetzter Polarität übertragen. Wenn die Leiterbahnen auf der Leiterplatine geplant werden, ist es manchmal einfacher, das positive Signal vom Sender mit dem Pin desjenigen Empfängers zu verbinden, der das negative Signal erwartet, und umgedreht. Damit wird das Layout der Leiterplatine einfacher, aber dann muss das Signal beim Empfänger invertiert werden. Da das Signal abgeschnitten wird und es zwangsläufig längere Abschnitte mit Einsen in den Bitdaten geben sollte, müssen alle Nullen in diesen Abschnitten invertiert werden. Also invertieren wir die entsprechenden Bits und zeichnen die Messpunkte erneut.

  • Legende der FPGA-Pins (Bild: Christer Weinigel)
  • Die FPGA-Pins (Bild: Christer Weinigel)
  • Pins des SoC-Bus (Bild: Christer Weinigel)
  • Pins zum RAM (Bild: Christer Weinigel)
  • Pins zum ADC (Bild: Christer Weinigel)
  • Vollständig dokumentierte Karte der Pins (Bild: Christer Weinigel)
  • Matrix-Schaltung der Bedientasten am Oszilloskop (Bild: Christer Weinigel)
  • Noch keine Sinuskurve (Bild: Christer Weinigel)
  • Mit viel Phantasie eine Sinuskurve (Bild: Christer Weinigel)
  • Eine echte Sinuskurve (Bild: Christer Weinigel)
  • Das gleiche Spiel mit zwei Kanälen (Bild: Christer Weinigel)
  • Noch etwas Chaos (Bild: Christer Weinigel)
  • Wenigstens keine Ausreißer mehr (Bild: Christer Weinigel)
  • Beide Kanäle sind klar erkennbar. (Bild: Christer Weinigel)
  • Beide Kanäle mit größer Dämpfung (Bild: Christer Weinigel)
Mit viel Phantasie eine Sinuskurve (Bild: Christer Weinigel)

Jetzt sind die flachen Abschnitte komplett auf null gesetzt, die Abschnitte dazwischen erinnern deutlicher an eine Sinuskurve.

 Die restlichen FPGA-PinsDie Macht der Statistik 

eye home zur Startseite
grslbr 26. Nov 2016

Du bist mit Abstand der coolste Typ auf dieser Erde. Wahrscheinlich wirst du eigentlich...

grslbr 26. Nov 2016

Jo, das Trollen bei Heise war schon mal lustiger. Früher konnte man da sicher sein, mit...



Anzeige

Stellenmarkt
  1. Birkenstock GmbH & Co. KG Services, Neustadt (Wied)
  2. LuK GmbH & Co. KG, Bühl
  3. Bosch Service Solutions Magdeburg GmbH, Berlin
  4. Loh Services GmbH & Co. KG, Monheim am Rhein


Anzeige
Top-Angebote
  1. (u. a. Huawei P8 Lite 2017 für 179€)
  2. 499,99€ - Aktuell nicht mehr bestellbar. Gelegentlich bezüglich Verfügbarkeit auf der...
  3. (u. a. Sony Alpha 6000 Bundle für 499€ und Lenovo C2 für 59€)

Folgen Sie uns
       


  1. Liberty Global

    Giga-Standard Docsis 3.1 kommt im ersten Quartal 2018

  2. Apache-Sicherheitslücke

    Optionsbleed bereits 2014 entdeckt und übersehen

  3. Tianhe-2A

    Zweitschnellster Supercomputer wird doppelt so flott

  4. Autonomes Fahren

    Japan testet fahrerlosen Bus auf dem Land

  5. Liberty Global

    Unitymedia-Mutterkonzern hat Probleme mit Amazon

  6. 18 Milliarden Dollar

    Finanzinvestor Bain übernimmt Toshibas Speichergeschäft

  7. Bundestagswahl

    Innenminister sieht bislang keine Einmischung Russlands

  8. Itchy Nose

    Die Nasensteuerung fürs Smartphone

  9. Apple

    Swift 4 erleichtert Umgang mit Strings und Collections

  10. Redundanz

    AEG stellt Online-USV für den 19-Zoll-Serverschrank vor



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Apples iPhone X in der Analyse: Ein iPhone voller interessanter Herausforderungen
Apples iPhone X in der Analyse
Ein iPhone voller interessanter Herausforderungen
  1. Face ID Apple erlaubt nur ein Gesicht pro iPhone X
  2. iPhone X Apples iPhone mit randlosem OLED-Display kostet 1.150 Euro
  3. Apple iPhone 8 und iPhone 8 Plus lassen sich drahtlos laden

Metroid Samus Returns im Kurztest: Rückkehr der gelenkigen Kopfgeldjägerin
Metroid Samus Returns im Kurztest
Rückkehr der gelenkigen Kopfgeldjägerin
  1. Doom, Wolfenstein, Minecraft Nintendo kriegt große Namen
  2. Nintendo Das NES Classic Mini kommt 2018 noch einmal auf den Markt
  3. Nintendo Mario verlegt keine Rohre mehr

Galaxy Note 8 im Test: Samsungs teure Dual-Kamera-Premiere
Galaxy Note 8 im Test
Samsungs teure Dual-Kamera-Premiere
  1. Galaxy S8 und Note 8 Bixby-Button lässt sich teilweise deaktivieren
  2. Videos Youtube bringt HDR auf Smartphones
  3. Galaxy Note 8 im Hands on Auch das Galaxy Note sieht jetzt doppelt - für 1.000 Euro

  1. Re: CO2 Ausstoß dieses Akkus bei der Produktion?

    Onkel Ho | 03:36

  2. Re: Beweise?

    LinuxMcBook | 02:59

  3. Re: Apple schafft das, was Microsoft nie...

    plutoniumsulfat | 02:54

  4. Re: Und darum brauchen wir eine echte...

    quasides | 02:36

  5. Re: Wie viel muss sich die dubiose "Antiviren...

    bombinho | 02:36


  1. 18:10

  2. 17:45

  3. 17:17

  4. 16:47

  5. 16:32

  6. 16:22

  7. 16:16

  8. 14:28


  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