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. PSD Bank Karlsruhe-Neustadt eG, Karlsruhe
  2. Zentrum für Kunst und Medientechnologie Karlsruhe, Karlsruhe
  3. Ratbacher GmbH, Großraum Chemnitz
  4. Nash Direct GmbH / Harvey Nash Group, Essen, Köln, Frankfurt oder Hannover


Anzeige
Spiele-Angebote
  1. 109,99€ mit Vorbesteller-Preisgarantie
  2. 20,99€
  3. 6,99€

Folgen Sie uns
       


  1. Hasskommentare

    Koalition einigt sich auf Änderungen am Facebook-Gesetz

  2. Netzneutralität

    CCC lehnt StreamOn der Telekom ab

  3. Star Trek

    Sprachsteuerung IBM Watson in Bridge Crew verfügbar

  4. SteamVR

    Valve zeigt Knuckles-Controller

  5. Netflix und Amazon

    Legale Streaming-Nutzung in Deutschland nimmt zu

  6. Galaxy J7 (2017)

    Samsung-Smartphone hat zwei 13-Megapixel-Kameras

  7. Zenscreen MB16AC

    Asus bringt 15,6-Zoll-USB-Monitor für unterwegs

  8. Sonic the Hedgehog

    Sega veröffentlicht seine Spieleklassiker für Smartphones

  9. Monster Hunter World angespielt

    Dicke Dinosauriertränen in 4K

  10. Prime Reading

    Amazon startet dritte Lese-Flatrate in Deutschland



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Sony Xperia XZ Premium im Test: Taschenspiegel mit übertrieben gutem Display
Sony Xperia XZ Premium im Test
Taschenspiegel mit übertrieben gutem Display
  1. Keine Entschädigung Gericht sieht mobiles Internet nicht als lebenswichtig an
  2. LTE Deutsche Telekom führt HD Voice Plus ein
  3. Datenrate Vodafone bietet im LTE-Netz 500 MBit/s

1Sheeld für Arduino angetestet: Sensor-Platine hat keine Sensoren und liefert doch Daten
1Sheeld für Arduino angetestet
Sensor-Platine hat keine Sensoren und liefert doch Daten
  1. Calliope Mini im Test Neuland lernt programmieren
  2. Arduino Cinque RISC-V-Prozessor und ESP32 auf einem Board vereint
  3. MKRFOX1200 Neues Arduino-Board erscheint mit kostenlosem Datentarif

Mesh- und Bridge-Systeme in der Praxis: Mehr Access Points, mehr Spaß
Mesh- und Bridge-Systeme in der Praxis
Mehr Access Points, mehr Spaß
  1. Eero 2.0 Neues Mesh-WLAN-System kann sich auch per Kabel vernetzen
  2. BVG Fast alle Berliner U-Bahnhöfe haben offenes WLAN
  3. Broadcom-Sicherheitslücke Vom WLAN-Chip das Smartphone übernehmen

  1. Re: Unwahrheiten also verboten?

    Jogibaer | 05:15

  2. Re: Alle zu groß

    ilovekuchen | 04:43

  3. Re: Zu klein, kein richtiges OS, zu teuer

    ilovekuchen | 04:40

  4. Re: Verhältnismäßigkeit beim Preis

    ilovekuchen | 04:37

  5. Re: PC Master Race

    Gucky | 04:36


  1. 17:40

  2. 16:22

  3. 15:30

  4. 14:33

  5. 13:44

  6. 13:16

  7. 12:40

  8. 12:04


  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