Die Idee ist, einen DVB-S-Encoder in VHDL zu realisieren.
Die geplante Komponentenstruktur wurde in KiCAD erstellt, was bei der Planung ungemein hilft:
Designfragen:
Bis nach dem Interleaver ist die Struktur byteweise, danach arbeitet sie bit-seriell. Die Pipeline muss vor dem RS-Encoder aller 188 Byte angehalten werden können, damit der RS-Encoder seine sechs Paritätsbytes einschieben kann. Die Spezifikation jedes Einzelmoduls ist im Git-Repository zu finden.
Bei Weglassen des Puncturing (Code Rate 1/2) ist die Sendesymbolrate (=Bitrate nach RS) ein ganzzahliger Teiler der Systemfrequenz. Die Bitrate des TS errechnet sich nur durch Multiplikation mit dem Reed-Solomon-Overhead-Faktor. Folgende Tabelle fasst erreichbare Datenraten bei 50MHz Systemtakt zusammen.
Clock-Divider | Brutto-Datenrate | Netto-(TS)-Datenrate |
---|---|---|
1 | 50 MSym/s | 46,08 MBit/s |
2 | 25 MSym/s | 23,04 MBit/s |
3 | 16,67 MSym/s | 15,36 MBit/s |
4 | 12,5 MSym/s | 11,51 MBit/s |
5 | 10 MSym/s | 9,22 MBit/s |
6 | 8,33 MSym/s | 7,68 MBit/s |
7 | 7,14 MSym/s | 6,58 MBit/s |
8 | 6,25 MSym/s | 6,76 MBit/s |
Es muss bedacht werden: Der Interpolator am Ausgang (der zur Entlastung der Anforderungen des Ausgangsfilters vorhanden mindestens mit Faktor 2 interpolieren sollte) verhindert das Verwenden von 1 als Divider. Außerdem muss der RRC-Filter seine Operationen möglicherweise serialisieren, sodass mehrere Takte für die Berechnung eines gefilterten Wertes notwendig sind. Anhaltspunkt: gr-dvbs verwendet bei Samplerate = 2*Symbolrate eine Filterlänge von 20 Taps.
Eine aufwendige Stack-Implementierung soll vermieden werden - diese Aufgabe könnte später mal ein IP-Stack übernehmen. Im Moment ist es wichtig, eine stabile, Datenflusskontrollierte Verbindung in den FPGA aufzubauen. Es wird daher eine einfache Zwei-Wege-Kommunikation definiert.
Allgemeiner Paketaufbau:
Ethernet-Header | IP-Header | UDP-Header | UDP-Daten | Ethernet-Footer |
Folgende Anforderungen werden spezifiziert:
Pakete werden nicht wiederholt, bevor die entsprechende Bedingung nicht verlassen wurde.