Die restlichen FPGA-Pins

Jetzt, wo ich die großen Verbindungen und ihre Pins zugeordnet habe, kann ich mit den übrigen beginnen. Ich benutze hierzu die gleiche Methode wie auf dem SoC. Ich habe einen FPGA-Pin als Eingabe definiert, mit einem Pull-up- oder Pull-down-Widerstand konfiguriert. Danach verbinde ich interessante Kontakte auf der Platine über einen 330-Ohm-Widerstand mit der Masse oder einer Stromquelle und verfolge, ob ein Schaltvorgang auf dem FPGA registriert wird.

Zuerst probiere ich die beiden Kontakte des I2C-Busses am AT88SC-Kryptospeicher. Es stellt sich heraus: Pin C4 am FPGA entspricht dem SCL-Pin und B6 dem SDA-Pin. Wenn ich darüber nachdenke, ist das sinnvoll. Wenn die Seriennummer und der Lizenzschlüssel für die Firmware im FPGA stecken, dann könnte sich dort auch der Lizenzcheck befinden und ist damit schwerer zu umgehen. Clever!

In meinem Blog habe ich noch eine ganze Reihe weitere gefundener Pins aufgelistet, hier beschränke ich mich auf eine Auswahl.

Ich bemerke außerdem, dass am Pin A4 ein Signal mit der Frequenz von 50 MHz anliegt, wenn ich es über den regulären Stromanschluss betreibe statt über die Batterie. Ich schaue in der Dokumentation nach: Das Oszilloskop kann tatsächlich über den Stromanschluss getriggert werden.

Der Pin D5 schaltet mit einer Frequenz von 1 KHz, wenn ich einen Oszilloskop-Tastkopf an Kanal 1 mit einem 1-KHz-Testsignal verbinde. Ich vermute, das ist die Ausgabe des Trigger-Schaltkreises von Kanal 1 des Oszilloskops. Nicht gefunden habe ich bislang den Trigger für Kanal 2 oder den externen Trigger. Das sollte aber leichter sein, wenn ich weiß, wie ich das Analog-Frontend konfigurieren kann.

Zwei weitere Pins scheinen mit dem Video-Trigger-IC verbunden zu sein. Ich weiß gar nicht, wie ich eine Quelle für ein Composite-Video-Signal auftreiben soll, das ist so 20.-Jahrhundert-mäßig. Vielleicht muss ich meinen alten Amiga 1000 aus dem Keller holen und hoffen, dass er noch funktioniert.

Die finale Karte

Jetzt können wir die Karte weiter vervollständigen.

  • 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)
Vollständig dokumentierte Karte der Pins (Bild: Christer Weinigel)

Immer noch sind gut ein Dutzend IO-Pins des FPGA übrig, die ich nicht zuordnen kann. Bei einigen handelt es sich wohl um Trigger, einige könnten ADC-Signale sein, und manche sind sicherlich unbenutzt.

Abgesehen davon habe ich wohl tatsächlich alle Verbindungen innerhalb des Oszilloskops aufdecken können. Ich weiß, wie der SoC mit seiner Peripherie und einigen Komponenten im Analog-Frontend verbunden ist. Ich weiß, wie der FPGA mit dem SoC verbunden ist, dem DDR-Speicher, dem ADC und anderen Komponenten wie dem Taktgenerator, dem DAC und den übrigen Komponenten im Analog-Frontend.

Die FPGA-SoC-Bus-Verbindung wird schwer auszunutzen sein. Die Verbindung arbeitet sehr schnell, und jeder Fehler in der Signalverarbeitung des FPGA korrumpiert den Speicher im SoC und führt zum Absturz des Oszilloskops. Das wird sehr schwer zu testen und zu debuggen. Der DDR-Speichercontroller im FPGA entspricht nicht den Empfehlungen von Xilinx und ich weiß noch nicht, wie ich damit umgehe.

Es sollte nicht zu aufwendig sein, ein FPGA-Image zu erzeugen, das den Taktgenerator und das Analog-Frontend startet. Dann kann ich die Daten vom ADC im internen RAM des FPGA speichern und über die drei IO-Pins übertragen, die ich auch bisher benutze, auch wenn die Datenrate dabei deutlich unter 10 MBit pro Sekunde liegen wird. Dabei gibt es wahrscheinlich noch viele Kleinigkeiten zu beachten, um alle Komponenten zu initialisieren. Das ist zwar nicht hart, aber sehr zeitaufwendig, auch weil ich gerade mal ein HDL-Einsteiger bin.

Die Tasten am Gerät auswerten

Schauen wir uns stattdessen das Frontpanel näher an, das über den Steckverbinder mit der Hauptplatine verbunden ist. Der Forenteilnehmer "lemon" im EEVBlog-Forum hat bereits einige gute Bilder der Leiterplatten des Frontpanels gemacht. Im dortigen Bild sind die Schaltkreise gut zu sehen.

Bei U31 handelt es sich um einen 74HC393-Dual 4-Bit-Binary-Ripple-Counter. U7 und U26 sind 74HC4051-8-Channel-Analog-Multipler-Demultiplexer (PDF). Die Leiterbahnen sind im Bild deutlich sichtbar und selbst ohne Blick auf die Rückseite der Platine ist die Funktionsweise erkennbar. Hier das Schaltbild:

  • 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)
Matrix-Schaltung der Bedientasten am Oszilloskop (Bild: Christer Weinigel)

Die Tasten sind im Schaltplan in einer Matrix angeordnet, auf der realen Platine wird das nicht sofort deutlich, einige Tasten sind sogar auf anderen Platinen. Jede Taste besteht aus einem Schalter, der eine Spalte mit einer Zeile über eine Diode verbindet. Einige Tasten sind eigentlich Drehgeber, aber hier reicht es, sie als einfache Tasten zu betrachten.

Der U31-Counter hat zwei Zählwerke. Das erste Zählwerk steuert über diesen drei niederwertige Bits U7 und wählt darüber die abzufragende Spalte aus, die dann mit einem FPGA-Pin verbunden wird. Das zweite Zählwerk steuert gleichfalls über die drei niederwertigsten Bits U26 und verbindet jeweils die abzufragende Zeile mit der Masse.

Normalerweise liegt an allen Spalten über die Widerstände R1-R8 ein High-Signal an. Wenn eine Taste gedrückt wird, und die zugehörige Spalte wie auch die Zeile sind gerade ausgewählt, dann verursacht die Taste einen Kurzschluss mit der Masse. Dadurch liegt am Z-Pin von U7 ein Low-Signal an, das von einem FPGA-Pin ausgewertet wird.

Die Prüfung des Status der Tasten erfolgt über den FPGA. Zuerst führt er einen Zähler-Reset über den FPGA-Pin A5 durch. Beide Zähler stehen auf 0, über U7 und U26 sind die erste Spalte und erste Zeile der Tastenmatrix ausgewählt. Am FPGA-Pin B5 liegt nun das Signal der ersten Taste an. Zur Prüfung der nächsten Taste liefert der FPGA am Pin C6 ein Taktsignal, das den ersten Zähler um eins erhöht. Damit wird der Taster in der zweiten Spalte der ersten Reihe ausgewertet.

Erreicht der erste Zähler einen bestimmten Wert, wird der zweite Zähler um eins erhöht und damit zur nächsten Zeile weitergeschaltet. Wurden so alle 64 Tasten geprüft, wird ein erneuter Reset durchgeführt und das Spiel geht von neuem los. Da die Schaltfrequenz des Pin C6 mit 312,5 KHz recht hoch ist, wirkt es für den Nutzer, als ob alle Tasten gleichzeitig geprüft werden.

Ein Bauteil fehlt

Die übrigen Pins des Steckverbinders vom Frontpanel kontrollieren die Beleuchtung der Tasten. Ich habe keine Ahnung, warum ein SoC-Pin für die grüne LED benutzt wird, die anderen beiden hingegen vom FPGA kontrolliert werden.

Ein Pin bleibt noch übrig: Der SoC-Pin GPH3 liegt ebenfalls am Steckverbinder an. Aber ich konnte keinen zugehörigen Kontakt am Panel finden.

Allerdings gibt es an der Front etwas, das wie ein kleines Fenster für einen Infrarotempfänger aussieht. Und auf der Leiterplatte befinden sich unbenutzte Kontakte für zusätzliche Bauelemente direkt hinter diesem Fenster.

Der SoC-Pin GPH3 ist der Empfänger-Pin für einen seriellen Anschluss, und die zugehörigen UARTs unterstützen die Auswertung von Infrarotsignalen!

Ich habe bislang noch nicht überprüft, ob GPH3 tatsächlich mit den unbenutzten Kontakten verwendet wird, da ich dafür das Frontpanel aufschrauben müsste. Aber ich halte es für sehr wahrscheinlich. Vermutlich sollte ursprünglich ein Infrarotempfänger verbaut werden, doch dann wurde davon abgesehen.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Den echten DDR-Bus identifizierenOszilloskop-Daten auslesen 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7.  


Aktuell auf der Startseite von Golem.de
Wissenschaft
In Energydrinks enthaltenes Taurin könnte Leben verlängern

Wissenschaftler haben Anzeichen dafür entdeckt, dass Taurin die Gesundheit verbessern und das Leben verlängern könnte. Mehr Energydrinks sollte man aber nicht trinken.

Wissenschaft: In Energydrinks enthaltenes Taurin könnte Leben verlängern
Artikel
  1. Tesla Files: Cybertruck ist undicht, laut und bremst schlecht
    Tesla Files
    Cybertruck ist undicht, laut und bremst schlecht

    Internen Dokumenten zufolge steht Teslas Pick-up-Truck vor großen Problemen. Der Cybertruck befinde sich in der Alpha-Phase.

  2. VATM: Menschen nutzen weiter Call-by-Call und Preselection
    VATM
    Menschen nutzen weiter Call-by-Call und Preselection

    Die Telekom hat Call-by-Call und Preselection mehrfach verlängert. Obwohl viele Menschen sie weiterhin nutzen, enden diese Dienste bald.

  3. Einführung in Plotly: Damit die Daten Sinn ergeben
    Einführung in Plotly
    Damit die Daten Sinn ergeben

    Interaktive Plots mit Plotly zu erstellen, ist nicht schwer - und sehr nützlich. In einer zweiteiligen Reihe zeigen wir Schritt für Schritt, wie es funktioniert.
    Eine Anleitung von Antony Ghiroz

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    • Daily Deals • XXL-Sale bei Alternate (u. a. Samsung 970 EVO Plus 2 TB 84,90€) • MindStar: Palit RTX 4070 Ti GameRock OC 859€, be quiet! Pure Base 500 59€ • Thermaltake Toughliquid Ultra 240 145,89€ • PS5-Spiele & Zubehör bis -75% • Chromebooks bis -32% • NBB: Gaming-Produkte bis -50% [Werbung]
    •  /