Highspeed modem for the EPP

Jürgen Hasch, DG1SCR, Meisenstraße 23, 73066 Uhingen, Germany

Motivation

Remark: This text is somehow shorter than its german original, please excuse this. However, I tried to include all information neccessary to understand how the modem works.

Since the introduction of a 200kHz broadband channel for highspeed packet radio applications in Germany 1997, some effort has been put into the design of new hardware for this channel.

Recently data transceivers with appropriate bandwith and moderate T/R switching delay became available [1], so there arises the need for a modem that keeps up with the possible speed and is easy to interface to a computer./

For these reasons a new modem has been developed, which can be connected to the parallel port of any PC that is capable of the EPP mode for the parallel port. The EPP mode can transfer up to 500kB/s in both directions, which seems to be sufficient for some time. Older PCs without EPP can easily updated with an extra ISA slot card for less than 25$.

The modem has been realized using an XCS10 (Spartan family) FPGA from Xilinx. This device allows the integration of EPP interface at the PC side and the complete digital part of the FSK modem with moderate cost.

What is a FPGA ?

The abbreviation FPHA stands for "field programmable gate array". Such a device is a completely digital part, consisting of a large number of basic logic elements.

There is a number of hardware manufacturers producing FPGAs, most noteably are Xilinx and Altera. For the modem described here, an XCS10 FPGA from Xilinx was used.

If you buy a new FPGA it is unprogrammed, e.g. you will have to program it yourself with special programming data.

There are several programming technologies for FPGAs. The Cypres pASIC380 for example uses antifuse technology, therefore these FPGAs can be only programmed once and never be changed again.

Other devices use flash eeprom technology, which is simular to the memory cells of common flash memories. The programming can be changed here by erasing the previous programming and reprogramming the device.

A thid variant are SRAM based FGPAs. Here each time supply power is applied, the programming data has to be transferred the FPGA (this is like booting a PC to be able to work with). The major advantage to this FPGA type is (or at least can be) its dynamic reconfiguration capability. This means, you can update the logic inside FPGA from your PC , simply by executing a certain program. In the modem described here, the driver configures the FPGA automatically, so when you get a new driver update, you will probably also get a logic update for the FPGA.

As written previously, a FPGA contains a great number of basic logic functions called "logic cell", as shown in Figure 1.

DrawObject
Figure 1: structure of a FPGA

The "programming" of a FPGA means to establish connections between the logic cells (routing) and to program the logic cells itself .

A single logic cell mostly consists of one or a few basic logical functions and a flip flop. Xininx's XC5200 family used here consist... Eine Logikzelle selbst besteht meist aus einer oder mehreren logischen Grundfunktionen und einem Flipflop. Bei der hier eingesetzten XC5200-Familie von Xilinx besteht die Gatterlogik einfach aus einer 16 Bit großen Speicherzelle. Für eine beliebige Eingangskombination an den vier Eingängen kann damit jeder gewünschte Ausgangswert einprogrammiert werden:

Abbildung 2: Aufbau einer Logikzelle bei der XC5200-Familie

Jede Logikzelle ist einzeln für sich programmierbar. Der ausgewählte Baustein XC5204 von Xilinx enthält 480 solcher Logikzellen und erreicht damit eine Komplexizität von etwa 6000 Gattern.

Konzept

Bei einer Bitrate von etwa 100kBit/s soll das Modem dem PC eine möglichst geringe Rechenleistung abverlangen, da moderne (Fenster-)Betriebssysteme schon einen Großteil der Rechenleistung benötigen.

Um die Interrupt-Last des PC's bei Empfang niedrig zu halten, ist eine Pufferung der Empfangsdaten notwendig, möglichst sollte im Modem ein komplettes Frame dekodiert werden und erst nach Verifizierung der CRC-Prüfsumme für den PC freigegeben werden. Da bei dem verwendeten XC5204-FPGA Speicherplatz eine wertvolle Resource ist, wurde ein externes 8k*8 RAM zur Speicherung vorgesehen.

Der Sendefall ist ein wenig einfacher aufgebaut, hier erzeugt der PC den Sendedatenstrom inklusive HDLC-Kodierung und Bitstuffung. Lediglich NRZI-Kodierung und Scrambler sind Bestandteil des Modems. Vorteil dieser Methode ist, daß man einerseits durch Voranstellen von HDLC-Flags den benötigten TX-Delay erzeugen kann und trotzdem die Sendedaten im RAM des Modems speichern kann.

Die Realisierung des EPP-Interface ist sehr einfach gelöst. Ein Datenzugriff vom PC aus liest oder schreibt ein Zeichen aus dem RAM des Modems aus und setzt gleichzeitig einen Zeiger auf das nächste Zeichen im RAM. Bei einem Adresszugriff wird das Statusregister im Modem neu gesetzt, bzw. ausgelesen.

Die Abbildung zeigt das Blockschaltbild des Modems:

DrawObject
Abbildung 3: Funktionsblöcke des Modems

Gut erkennbar ist die Entkopplung zwischen dem eigentlichen Modem-Teil (RX und TX) und der EPP-Schnittstelle durch die Zwischenspeicherung der Daten im RAM.

Der Empfänger (RX) besteht aus fünf Funktionsblöcken:

DrawObject
Abbildung 4: Funktionsblöcke des Empfängers

In der DPLL geschieht die Taktrückgewinnung und DCD-Erkennung. Dazu wird der 64fache Empfangstakt zugeführt und versucht, auf die Flanken des Datensignals zu regeln. Die DCD-Erkennung geschieht, indem überprüft wird, ob in der Mitte der Augenöffnung eine Änderung der Empfangsdaten vorkommt. Falls dies geschieht, wird die DCD zurückgesetzt. Um ein Hängenbleiben der DCD ohne Signal zu vermeiden, kann die DCD-Erkennung durch den HDLC-Decoder zurückgesetzt werden, sobald mehr als 7 aufeinanderfolgende Einsen festgestellt wurden.

Der HDLC-Decoder erkennt empfangene HDLC-Flags und zählt die Anzahl der nach einem Flag empfangenen Bytes mit. Stimmt am Ende eines Frames die übertragene Prüfsumme mit der berechneten Prüfsumme überein, wird die Länge des empfangenen Frames vor die Frame-Daten geschrieben und dem PC über einen Interrupt signalisiert, daß ein Frame empfangen wurde.



Der Sender ist sehr einfach aufgebaut:

DrawObject
Abbildung 6: Funktionsblöcke des Senders

Der RAM-Controller liest alle 8 Bit ein neues Zeichen aus dem externen RAM ein. Nach NRZI-Kodierung und Scrambler, wird der Datenstrom auf ein FIR-Filter zur Tiefpass-filterung gegeben. Außerhalb des FPGAs wird der Filterausgang auf einen D/A-Wandler geführt.

Hardware

Das Schaltbild gibt es hier. Zentraler Baustein der Schaltung ist natürlich das FPGA, das direkt an die EPP-Schnittstelle des PCs angeschlossen ist. Wird der Modemtreiber auf der PC-Seite gestartet, so wird das FPGA mittels Reset-Leitung zurückgesetzt und über die Write- und D0-Leitung der Druckerschnittstelle werden anschließend die Konfigurationsdaten seriell in das FPGA übertragen. Nach erfolgreicher Initialisierung meldet sich das FPGA, indem die Select-Leitung auf +5V gelegt wird.

Da das FPGA keine eigene Oszillatorschaltung besitzt, wird als Taktquelle ein HA7210-Oszillatorbaustein von Harris mit einem 4,9152MHz Quarz verwendet.

Die aus dem internen FIR-Filter kommenden Sendedaten, die an den Ausgängen O0-O7 anliegen, werden über ein als D/A-Wandler beschaltetes Widerstandsnetzwerk zu einem aktiven Tiefpaßfilter geführt und gehen, nach einem Impedanzwandler und einem Trimmer zur Pegeleinstellung, auf den Ausgangsstecker.

Das vom Funkgerät kommende Empfangssignal wird zuerst auf einen Impdeanzwandler geführt, gefolgt von einem Tiefpaßfilter. Danach folgt ein Komparator, der, je nachdem ob der empfangene Spannungswert oberhalb oder unterhalb der halben Betriebsspannung liegt, den Datenstrom zu 1 oder 0 entscheidet.

Die PTT-Leitung ist zusätzlich mit einer Watchdog-Schaltung versehen, die verhindern soll, daß ein Sender auf Dauersendung geht.

Die komplette Schaltung wird über einen 5V Spannungsregler versorgt. Ein Betrieb ohne eigene Spannungsversorgung ist leider nicht möglich, da alle Ausgangspins des Druckerports benutzt werden und wer möchte schon, daß, sobald Nullen übertragen werden, das Modem aussteigt ?

Software

Wie schon angedeutet, besteht die Erstellung Software aus zwei Teilen, der Programmierung des FPGAs und dem Schreiben des Modem-Treibers für den PC.

Die FPGA-Programmierung geschieht mit Hilfe der vom Hersteller gelieferten Software „Xilinx Foundation 1.4“, in einer Mischung zwischen Schaltbildeingabe und VHDL-Unterfunktionen.

Die Schaltbildeingabe wird für die oberste Hierarchieebene der Schaltung verwendet, in der alle Komponenten nur noch miteinander verdrahtet werden müssen. Die grafische Darstellung erhöht dabei die Übersichtlichkeit.

Die eigentlichen Baugruppen im Modem sind mittels der Beschreibungssprache „VHDL“ (Very High Speed Integrated Circuit High Definition Langugage) realisiert. Das ist eine Hardware-Beschreibungssprache, die, freundlich formuliert, auch für digitale Schaltungen in FPGAs geeignet ist. Gegenüber der Schaltbildeingabe erleichtert sich hier die Realisierung algorithmischer Baugruppen erheblich, allerdings um den Preis eines erhöhten Ressourcenverbrauchs und des geringen Zugriffs auf spezifische Eigenschaften der gewählten Bausteinfamilie.

Auf der PC-Seite ist ein Flexnet-Treiber in der Entwicklung. Der Treiber führt nach Programmstart zuerst die Konfiguration des FPGAs durch, im Betrieb reicht er dann die vom Modem dekodierten Pakete direkt zu Flexnet durch.

Im Sendebetrieb erzeugt der Treiber die für das Modem benötigten Rohdaten (d.h. er erzeugt die HDLC-Flags, fügt das Bitstuffing ein und berechnet die CRC-Prüfsumme). Ein beliebiges TX delay kann durch hinzufügen von genügend Flags vor die Nutzdaten erreicht werde.

Ausblick

With the ability to update the FPGA functionality through software updates, improvements to the modem are easily possible.

Bibliography

  1. Alexander Kurpiers DL8AAU und Martin Liebeck DL2ZBN: Hochgeschwindigkeits-Packet-Radio - ein Transceiverkonzept für das 70cm Band
    Skriptum zur 13. Internationalen Packet-Radio Tagung

  2. W.-H. Rech DF9IC et al : Ein Modemadapter für den EPP
    Skriptum zur 13. Internationalen Packet-Radio Tagung

  3. John Wiseman: Modern Digital Design for the Radio Amateur
    QEX magazine, December 1997

  4. Nico Palermo: Yet Another 9k6 Modem
    description at http://www.microlet.com/yam