Der Vorgänger
In einem Beitrag Anfang des Jahres hatte ich einen ersten Prototyp des Gamma-Messgerätes beschrieben. Das dort vorgestellte Board habe ich nie gefertigt, weil es mich selbst nicht richtig überzeugt hat. Ich bin inzwischen auf die Gowin FPGAs gestoßen, die auf den Tang Boards von Sipeed eingesetzt werden. Sie haben mich förmlich elektrisiert und das habe ich in einem ersten Beitrag auch schon beschrieben.
Der echte Prototyp
Das neue Design des Gamma-Messgerätes verwendet nun ein Tang Primer 25K Board mit einem Gowin GW5A-LV25MG121NC1/I0 FPGA. Fünf Leiterplatten, zwei davon bestückt, liegen seit einer Woche auf meinem Basteltisch und der einzige Fehler, den ich bisher gefunden habe ist, daß die grüne LED, die die Versorgungsspannung anzeigt, viel zu hell leuchtet. Damit kann man leben. In diesem Beitrag soll die Hardware und einige grundlegende Messungen beschrieben werden, ein weiterer Beitrag über die Software und den FPGA-RTL-Code wird folgen. Soviel schonmal hier: es läuft.
Tang Primer 25K
Nochmal zur Erinnerung: was ist ein Tang Primer 25K? Tang Primer 25K besteht aus einem Basis-Board und einem darauf aufgesteckten Core-Board.
Tang Primer 25K Core-Board
Das Tang Primer 25K Core-Board ist nur 23 mm x 18 mm groß und beinhaltet das oben genannte FPGA, einen seriellen FLASH-Speicher, einen 50 MHz Quarzoszillator und die notwendigen Spannungsregler.


Beim Einschalten der Betriebsspannung wird automatisch die FPGA-Konfiguration und eventuell die Software für einen Mikroprozessor in das FPGA geladen. Dieses Core-Board wird über zwei jeweils 60-polige Subminiatur Steckverbinder aus der DF40-Serie von Hirose mit dem Tang 25K Basisboard oder einem selbst zu bauenden Applikationsboard verbunden.
Tang Primer 25K Basis-Board
Das Basis-Board stellt unter anderem eine USB-Schnittstelle zur Außenwelt und eine zweireihige 100-mil-Pfostenleiste zur Verfügung. Die Spannungsversorgung und die Kommunikation mit einem PC erfolgt über USB, mehr braucht man nicht für erste Versuche.

Die Leiterplatte des Gamma-Messgeräts
Hier zunächst der Schaltplan:
und das fertige Board in der KiCad-3D-Ansicht:


Hier ist die Leiterplatte mit aufgestecktem Tang Primer 25K Core-Board zu sehen. Alternativ, bevorzugt zu Entwicklungszwecken, kann das Tang Primer 25K Basis-Board (hier nicht gezeigt) von unten in die Pfostenleiste eingesteckt werden. Auch die optionalen Bluetooth und USB-Module sind hier gezeigt. Statt BT oder USB kann auch die RS-485-Schnittstelle zur Kommunikation benutzt werden. Das komplette KiCad-Projekt kann hier zur freien Verfügung heruntergeladen werden:
Die HF-Eingänge
Die vom Richtkoppler erfassten Vorlauf- und Rücklaufspannungen werden an die Ports J1 und J2 eingespeist. Das sind SMA Buchsen, die jeweils mit zwei parallelgeschalteten 105-Ω-Widerständen terminiert sind. Das ergibt nominal einen Widerstand von 52,5 Ω, aber mit den weiteren Eingangswiderständen sollten sich ziemlich genau die notwendigen 50 Ω ergeben. Die Messungen weiter unten zeigen, daß das nicht ganz hinkommt. Die beiden Widerstände haben die SMD Baugröße 2010 und können jeweils 500 mW vertragen, zusammen als 1 W. Damit kann ein Richtkoppler mit 30 dB Koppeldämpfung zumindest theoretisch an einen 1‑kW-Sender angeschlossen werden. Auf jeden Fall bleibt eine hinreichende Sicherheitsmarge zu den 100 W, die mein IC-7300 liefern kann.
Pegelwandlung
Zur Wandlung der Vorlauf- und Rücklaufpegel wird jeweils ein Klassiker eingesetzt, ein logarithmischer Verstärker vom Typ AD8307A (U1 und U2). Er liefert an seinem Ausgang eine Spannung, die den Eingangspegel logarithmisch abbildet, also proportional zum Eingangspegel in dBm ist. Den logarithmischen Verstärkern ist noch ein 6 dB Dämpfungsglied vorgeschaltet, das mit 3 dB Reserve für einen 100-W-Sender dimensioniert ist, denn der AD8307A verträgt maximal 17 dBm an seinem Eingang. Für größere Leistungen müssen diese Dämpfungsglieder also anders dimensioniert werden.
Analog-Digital Wandler ADS1118
Die Ausgänge der logarithmischen Verstärker sind über RC-Tiefpässe auf die Analogeingänge des 16-bit AD-Konverters ADS1118 U3 geschaltet. Der hat einen vierfachen Eingangsmultiplexer und kann zusätzlich als fünften Kanal noch die Temperatur messen. Er kann knapp 1000 Messungen pro Sekunde ausführen, was für die beabsichtige Messperiode von 10 ms mehr als ausreichend ist. Für die ersten Versuche habe ich ihn auf 128 SPS (samples per second) gedrosselt, was der Messgenauigkeit zugute kommt. Die Beschaltung ist einfach, weil die Referenzspannung intern erzeugt wird. Die Datenübertragung erfolgt seriell über eine SPI-Schnittstelle und so passt er bequem in ein kleines 10-Pin-Gehäuse. Wie im Datenblatt empfohlen, sind jeweils 33-Ω-Widerstände seriell in die Übertragungsleistungen geschaltet. Die ansonsten unbenutzten Analogeingänge AIN0 und AIN1 messen die Versorgungsspannung VIN und VDD033.
Digitalisierung der HF-Signale
Im FPGA soll die Phasenverschiebung zwischen vor- und rücklaufendem Signal gemessen werden, denn aus den Pegeln kann man nur das Stehwellenverhältnis, aber nicht den komplexen Reflexionsfaktor Gamma errechnen. Zur digitalen Weiterverarbeitung der HF-Signale im FPGA müssen sie also digitalisiert werden.
Wie im ersten PoC-Board werden dazu auch hier wieder schnelle Komparatoren benötigt. Statt der dort verwendeten TLV3501 wurde jetzt aber die schnellere Variante TLV3601 eingesetzt, die mit 325 MHz Schaltfrequenz und 2,5 ns Verzögerung spezifiziert ist. Die vorherige Schaltung wurde im wesentlichen beibehalten. Die Kapazität der Koppelkondensatoren C10 und C11 wurde von 1 nF auf 100 nF erhöht um ein besseres Verhalten bei niedrigen Frequenzen sicherzustellen. Außerdem wurden Doppelschottkydioden des Typs BAS70-04 zum Kappen eventueller Spannungsspitzen vorgesehen. Falls tatsächlich 1 W am Eingang anliegt, hat man eine Spitzenspannung von 10 V, die den zulässigen Eingangspegel der Komparatoren übersteigt. Diese Dioden wären übrigens laut Datenblatt verzichtbar, wenn der Eingangsstrom auf 10 mA limitiert wird. Dazu müssten aber die Widerstände R24 und R26 auf knapp 1 kΩ erhöht werden.
Das Prinzip der Digitalisierung ist übrigens ziemlich banal. Die Spannungsteiler aus zwei 100-kΩ-Widerständen ziehen den Gleichspannungspegel auf die Mitte der Versorgungsspannung. Dieser Pegel liegt über einem 100-kΩ/10-nF-Tiefpass am negativen Eingang des Komparators an. Damit wird der HF-Anteil der Eingangssignale weitgehend unterdrückt. Praktisch ungedämpft gelangt die HF aber an den positiven Eingang und schaltet den Ausgang des Komparators ein oder aus.
Die Eingangshysterese ist mit typisch 3 mV angegeben (min. 1,5 mV, max. 5 mV). Das bedeutet, daß das positive Signal mindestens um diese Hysterese vom negativen Eingangssignal abweichen muß, damit der Ausgang umschaltet. Das führt zu Messfehlern, die sich bei gleich großen vor- und rücklaufenden Signalpegeln und gleichen Eigenschaften der beiden Komparatoren aufheben. Der Fehler wird aber größer, wenn einer der Pegel sehr niedrig ist oder die Exemplarstreuung zwischen beiden Komparatoren groß ist. Gerade bei guter Anpassung, also geringer Rücklaufspannung, wird damit die Phasenverschiebung nur noch schwer oder überhaupt nicht mehr messbar.
Damit kann man eine Abschätzung über die zu erwartende Empfindlichkeit machen. Fällt Vp unter 5 mV, kann man keine sichere Erkennung des Signals mehr erwarten. Das ist eine Effektivspannung von etwa 3,5 mV, also etwa ‑36 dBm. Eine auch nur halbwegs präzise Messung der Phasenverschiebung benötigt ein stärkeres Signal.
Die Kommunikationsschnittstellen
Zur Kommunikation mit der Außenwelt sind drei alternative serielle Schnittstellen vorgesehen. Für meine Projekte im Außenbereich verwende ich sehr gerne eine RS-485-Schnittstelle mit Fernspeisung der Geräte über bis zu 40 V‑Gleichspannung (aktuell 32 V). Dieser Bus wird über J3 angeschlossen und die Versorgungsspannung mit U4 auf 5 V stabilisiert. U10 ist das zugehörige physikalische Interface. Alternativ kann auf den Sockel U9 ein Bluetooth-Modul aufgesteckt werden oder auf U8 ein RS232-USB-Konverter. In der aktuellen Entwicklungsphase am PC ist der RS232-USB-Konverter die ideale Wahl.
Das Tang Primer FPGA-Board
Auf die Buchsenleiste J16 auf der Unterseite kann das Tang Primer 25K Basis-Board direkt aufgesteckt werden. Für die Entwicklungsphase ist das sehr praktisch, denn es bringt die Programmierschnittstelle zum PC und die Spannungsversorgung direkt mit. Man kann in wenigen Sekunden den FPGA-Code per USB in den Prototypen laden.
Das Tang Primer 25K Core-Board kann alternativ (nicht gleichzeitig!) in J11 und J13 auf der Oberseite eingesteckt werden. Ein zukünftiges Applikationsboard wird nur noch ein Core-Board unterstützen, nicht das Basis-Board.
Die Spannungsversorgung
Alle Komponenten des Prototypen werden mit 3,3 V versorgt. Diese Spannung wird mit dem Linearregler U7 aus 5 V (VDD050) erzeugt. Als Quelle für VDD050 kann über einen Jumper auf der Stiftleiste J4 entweder das Basis-Board (VINDOCK), das USB-Modul (VINUSB) oder der eigene Spannungswandler ausgewählt werden.
Testpins
Der hier gezeigte Prototyp hat zu Mess- und Entwicklungszwecken einige Testpins, Taster und LEDs die auf einem späteren Applikationsboard entfallen werden. J12, J15 und J17 sind frei verwendbare Stiftleisten, die an FPGA-Pins angeschlossen sind. Bei ihnen ist jeweils der dem Signal gegenüberliegende Pin an GND angeschlossen. Da lässt sich jeweils sehr bequem ein Eingangskanal eines Logikanalysators anschließen. J12 war ursprünglich ein vierfach DIP-Schalter, daher die Bezeichnungen DSW[1..4]. Hier können Jumper aufgesteckt werden oder alternativ weitere Kanäle eines Logikanalysators.
MMCX Koax-Steckverbinder
Außer den genannten Testpins sind eine handvoll weibliche 50-Ω-MMCX-Sockel zum Anschluß eines Oszilloskops oder eines Spektrumanalysators vorgesehen. Sie bieten eine bessere Signalqualität als die üblichen Probes, die immer deutliche Überschwinger wegen der unvermeidlichen Induktivitäten des Masseanschlusses zeigen. Da sie allerdings mit 50-Ω-Koaxkabeln angeschlossen werden, müssen sie im Oszilloskop auch mit 50 Ω terminiert werden. Das ist in vielen Fällen zu niederohmig, so daß Serienwiderstände von 450 Ω oder 4950 Ω vorgeschaltet wurden. Zusammen mit der Terminierung ergibt sich damit ein Spannungsteiler von 10:1 oder 100:1. Auch im 100:1‑Fall bleibt eine mittelohmige Last von 5 kΩ, was für manche Fälle noch zu niedrig ist. Messergebnisse für das 10:1‑Port TO2 sind weiter unten gezeigt.
Die Werte der hier implementierten Widerstandsnetzwerke sind rein praktischer Natur: „basic parts“ beim Leiterplattenhersteller sind immer auf dem Bestückungsautomaten verfügbar und kosten nichts (einige „millicent“), „extended parts“, die manuell in den Automaten eingelegt werden müssen, kosten einmalig 3 €. Gerade bei geringen Leiterplatten-Stückzahlen nimmt man also am besten das, was ohnehin da ist.
Messergebnisse
In diesem Abschnitt werden die Messergebnisse gezeigt, die mit einem Netzwerkanalysator bzw. einem Signalgenerator an den HF-Eingängen erzielt wurden. Es soll der nutzbare Eingangsfrequenz- und Eingangsspannungsbereich ermittelt werden.
Messung der Eingangsimpedanzen
Zunächst soll die Eingangsimpedanz über den Betriebsfrequenzbereich und etwas darüber hinaus gemessen werden. Hier die beiden Messungen zwischen 100 kHz und 150 MHz:


Das Verhalten beider Ports ist praktisch gleich. Sie verhalten sich erwartungsgemäß leicht kapazitiv. Am Ende des Kurzwellenbereichs bei 30 MHz wird der Realanteil der Impedanz ziemlich genau 50 Ω. Das SWR bleibt bis 50 MHz unter 1,2. Natürlich kann man immer bestrebt sein, die Werte weiter zu verbessern, aber für meine Amateurzwecke bin ich damit zufrieden.
Bei einem Redesign werde ich trotzdem noch etwas feilen. Da bieten sich zunächst die Eingangswiderstände an. Bei 1 MHz zeigt sich ziemlich genau die reelle Impedanz der parallelgeschalteten Widerstände von 2 * 105 Ω und 3.2 kΩ von etwa 51,5 Ω. Die beiden 6‑dB-Dämpfungsglieder sollten also besser auf nominal 1050 Ω reduziert werden. Die Messung zeigt außerdem, daß eine kapazitive Last von 10 bis 12 pF an den Ports anliegt. Sie wird sicherlich zum Teil von der Kapazität der Pads gegen die direkt darunterliegende Massefläche verursacht. Die kann man bei einem neuen Design an den Stellen weglassen und so ein paar pF gewinnen.
Messung der logarithmischen Verstärker
Diese Messungen sollen klären, in welchem Frequenz- und Eingangspegelbereich die Digitalwandlung zuverlässig funktioniert und innerhalb welcher Grenzen mit welchen Messfehlern gerechnet werden muß. Außerdem soll gezeigt werden, ob es eine Abweichung der Phasenlage beider Kanäle gibt und falls ja, wie groß sie ist.
Wie beim allerersten PoC-Board sollen die Messungen exemplarisch bei 10 MHz und Eingangspegeln zwischen ‑70 dBm und +23 dBm gemessen werden. Hier das Ergebnis:

Das sieht in einem weiten Bereich sehr schön linear aus und wie beim PoC-Board ist auch hier wieder eine konstante Abweichung von der Ideallinie um ‑2 bzw. ‑4 dB zu sehen. LOGUR überschreitet damit den im Datenblatt spezifizierten Bereich von 3 dB um etwa 1 dB. Die Ursache mag ein Fehler meinerseits beim Layout sein, er beunruhigt mich aber nicht, denn gerade weil die Kurven so schön linear sind, lässt sich der Fehler leicht per Software korrigieren.
Beunruhigend ist aber das Abknicken der Kurven bei Eingangspegeln über 0 dBm. Das ist ein krasser Unterschied zum PoC-Board und die Ursache kann nur der jetzige Betrieb mit 3,3 V sein, während das vorherige Board mit 5 V betrieben wurde. Irgendwas geht irgendwo in die Sättigung. Zwar ist der nutzbare Dynamikbereich immer noch etwa 50 dB, aber das soll ohne Not so nicht bleiben. Auch beim Betrieb mit 5 V steigt die Ausgangsspannung nicht über etwa 2,5 V an, was immer noch sehr deutlich im gesunden Betriebsbereich des AD-Wandlers liegt. Da ein zukünftiges Board wegen des Tang Core-Boards sowieso mit 5 V betrieben werden soll, gibt es überhaupt keinen Grund, die LogAmps nicht auch mit 5 V zu betreiben. Es sollte sogar relativ einfach sein, den jetzigen Prototypen entsprechend zu korrigieren.
Messung der Digitalwandler
Hier wird gemessen, wie genau die Ausgangsspannungen der logarithmischen Verstärker den Eingangspegel abbilden und wie sie voneinander abweichen. Auch hier soll zunächst nur bei 10 MHz gemessen werden, Messungen bei anderen Frequenzen müssen folgen.
Zur Erläuterung der Messmethode folgt die Darstellung einer Messung mit Eingangspegeln von jeweils 0 dBm und ohne Phasenverschiebung der beiden Signale:

CH1 zeigt CLKUF, die digitalisierte vorlaufende Spannung, CH2 zeigt CLKUR, die digitalisierte rücklaufende Spannung. CH3 und CH4 zeigen LOGUF und LOGUR, die Ausgangsspannungen der logarithmischen Verstärker. In der rechten „Result“-Spalte wird die gemessene Taktfrequenz von CH2/CLKUR angezeigt. Solange das Signal eindeutig erkannt wird, muß diese Frequenz identisch mit der von CLKUF sein, hier also 10 MHz. Die Felder darunter zeigen die aktuelle und gemittelte Ausgangsspannung der logarithmischen Verstärker an. Sie wurden für die im vorigen Abschnitt gezeigten Messungen verwendet. Das unterste Feld zeigt schließlich die Phasenverschiebung der beiden steigenden Flanken an.
Die folgenden Bilder zeigen weitere Messungen bei 180°, +90° und ‑90° Phasenverschiebung und Eingangspegeln von +10 dBm bzw. 0 dBm:



Jetzt kommen die spannendsten Messungen, nämlich die über den Dynamikbereich, die zeigen, bei welchem Pegel das Signal zuverlässig erfasst wird:










Kurz zusammengefasst: bei ‑19 dBm wird das Signal noch zuverlässig erkannt, bei ‑20 dBm nicht mehr. Das sieht man nicht nur am Signalverlauf, sondern sehr eindrücklich an der Frequenzanzeige. Der Frequenzzähler erkennt nicht mehr jeden Puls. Bei noch niedrigeren Pegeln wird UR überhaupt nicht mehr erkannt und eine Phasenmessung ist dann nicht mehr möglich. Das liegt leider deutlich über den oben abgeschätzten ‑36 dBm. Da muß ich nochmal nach dem Fehler suchen und vielleicht das Datenblatt nochmal studieren.
Schon bei ‑10 dBm wird das rücklaufende Signal deutlich asymmetrisch. Offensichtlich wird die positive Flanke erst deutlich nach dem Nulldurchgang erkannt und die negative Flanke bereits deutlich davor. Auch hier muß ich der Ursache noch auf den Grund gehen. Ich hoffe, daß sich das im FPGA oder in der Software kompensieren lässt.
MMCX Testport im Vergleich zu einfachen Testpins
Hier wird das Oszillogramm eines 50-Ω-MMCX-Testports dem eines klassischen hochohmigen Oszilloskop-Tastkopfes an einem Testpin gegenübergestellt.
Das Tang Core-Board hat einen 50 MHz Oszillator, der als Frequenzbasis für die im FPGA eingebaute PLL benutzt wird. In der jetzigen Entwicklungsphase werden intern 200 MHz für den Phasendetektor benötigt und 40 MHz für die RISC-V-CPU. Dazu wird der interne Oszillator mit 800 MHz betrieben, woraus durch Teilung die benötigten Frequenzen erzeugt werden.

In beiden Fällen wurde das aus der PLL abgeleitete CPUCLK Signal von 40 MHz ausgegeben. CH1 (oben in gelb) ist mit einem hochohmigen 10:1 Tastkopf an der Stiftleiste TB5 angeschlossen, CH4 (unten in blau) ist über ein 2 m langes RG316 Koaxkabel am MMCX Testport TO2 angeschlossen. CH2 ist im Oszilloskop mit 50 Ω terminiert und ebenfalls auf 10:1 eingestellt, denn der Quellwiderstand hat 450 Ω. Beide FPGA-Ausgänge sind auf 8 mA konfiguriert und die hochohmige Probe ist korrekt kompensiert. Hinweis: man beachte die unterschiedliche vertikale Auflösung von 1 V bzw. 2 V. Das Oszilloskop wurde im „infinite persistance“ Modus betrieben, das bedeutet, daß alle Messungen innerhalb des Messintervalls überlagert dargestellt werden. Es fällt auf, daß das MMCX-Signal um knapp 2 ns verzögert ist. Das ist mit dem etwa 50 cm längeren Messkabel an CH4 gut erklärbar.
Der MMCX-Port zeigt ein deutlich saubereres Signal. Die Kanten sind etwas abgeschliffen, was sicherlich an der relativ hohen Belastung von knapp 7 mA liegt. Das Signal an dem hochohmigen Tastkopf zeigt deutliche Überschwinger und langsamere Flanken. Außerdem variiert es stärker, es wird durch „infinite persistance“ verschwommener dargestellt. Das zeigt, daß es sich lohnen kann, bei kritischen Signalen einen Koax-Testanschluß vorzusehen, soweit die Belastung das zulässt.
Messung der PLL des FPGAs
Da die Messung für das MMCX-Port gerade aufgebaut ist, soll auch noch das erzeugte Frequenzspektrum mit einem Spektrumanalysator insbesondere auf seine Seitenbänder untersucht werden. TO2 wird also mit demselben Messkabel wie oben an einen Spektrumanalysator angeschlossen.




Im Breitbandspektrum sieht man erwartungsgemäß deutlich die ungeradzahligen Oberwellen, denn das gemessene Signal ist wie oben gezeigt ein Rechtecksignal. Die schmalbandigeren Messungen zeigen Seitenbandsignale im Abstand von etwa 120 kHz, die von der Phasenregelung der PLL erzeugt werden. Die Schmalbandmessung mit 1 kHz Spannbreite und 10 Hz RBW zeigt keine Auffälligkeiten. Im Rahmen dessen, was mein Spektrumanalysator an Seitenbandrauschen überhaupt messen kann, sieht das gut aus.
Das Spektrum des Oszillators kann optional mit einem Spread Spectrum Controller verbreitert werden. Die Versuche hebe ich mir für später auf.
Wie geht’s weiter?
In den nächsten Tagen muß ich die hier gefundenen Auffälligkeiten klären, besonders die Digitalisierung mit den Komparatoren. Die ist unbefriedigend. Ich werde berichten…
Außerdem muß ich den Verilog-Code für das FPGA und die Testsoftware noch etwas verfeinern. Das wird sich vermutlich bis in das nächste Jahr hinziehen.
Links
Gamma-Messgerät – Der echte erste Prototyp (Nachtrag zu den Messungen)
