projekte:das:dvbs
                Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| projekte:das:dvbs [2015/02/01 09:45] – thasti | projekte:das:dvbs [2015/02/02 10:36] (aktuell) – [Netzwerkprotokoll] thasti | ||
|---|---|---|---|
| Zeile 2: | Zeile 2: | ||
| Die Idee ist, einen DVB-S-Encoder in VHDL zu realisieren.  | Die Idee ist, einen DVB-S-Encoder in VHDL zu realisieren.  | ||
| - | ==== Berechnung Bitrate des MPEG2-TS ==== | ||
| - | * gegeben: Symbolrate 4,5 MSym/s | ||
| - | * QPSK, also 2 Bit pro Symbol | ||
| - | * aber: aus Faltungskodierer kommen 2 Bit pro Datenbit | ||
| - | * d.h.: 2x4,5Mbit/s Datenstrom am Ausgang | ||
| - | * Durch Puncturing: Weglassen von Datenbits, damit geringere Bitrate | ||
| - | * z.B. 2/3 | ||
| - | * 3 Ausgangsbits pro 2 Datenbits | ||
| - | * Redundanz bedeutet Faktor 2 | ||
| - | * also: pro Datenbit 0,75 Ausgangsbits | ||
| - | * 4,5 Mbit/s / 0,75 = 6 MBit/s | ||
| - | * RS erzeugt aus 188 Byte immer 204 Byte | ||
| - |     * Geringere Nutzdatenrate, | ||
| - |     * 6 Mbit/s * 0,921 = 5,529 Mbit/ | ||
| - |   * Also Gesamtechnung: | ||
| ===== Links / Referenzen ===== | ===== Links / Referenzen ===== | ||
|   * [[http:// |   * [[http:// | ||
| Zeile 34: | Zeile 19: | ||
| * Können die FrameSync-Eingänge einfach durch den Reset ersetzt werden / sind sie notwendig? | * Können die FrameSync-Eingänge einfach durch den Reset ersetzt werden / sind sie notwendig? | ||
| - | 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. | + | 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. | 
| - | === Controller  | + | ==== Berechnung Bitrate des MPEG2-TS ==== | 
| - | Aufgabe: | + | * gegeben: Symbolrate 4,5 MSym/s | 
| - | * Datenstrom überwachen (Frame-Syncronität) | + | * QPSK, also 2 Bit pro Symbol | 
| - | * Steuersignale für die einzelnen Komponenten erzeugen | + | * aber: aus Faltungskodierer kommen 2 Bit pro Datenbit | 
| - | + | * d.h.: 2x4,5Mbit/s Datenstrom am Ausgang | |
| - | === Netzwerk-RX === | + |   * Durch Puncturing: Weglassen  | 
| - | Aufgabe: | + | * z.B. 2/3 | 
| - |   * Empfang  | + | * 3 Ausgangsbits pro 2 Datenbits | 
| - | * Weiterreichen der Nutzdaten an FIFO | + | * Redundanz bedeutet Faktor 2 | 
| - | + | * also: pro Datenbit 0,75 Ausgangsbits | |
| - | === Netzwerk-TX === | + | * 4,5 Mbit/s / 0,75 = 6 MBit/s | 
| - | Aufgabe: | + | * RS erzeugt aus 188 Byte immer 204 Byte | 
| - | * Auswerten der FIFO-Signale und Erzeugung von UDP-Nachichten zur Datenflusskontrolle | + |     * Geringere Nutzdatenrate, | 
| - |   * Wenn FIFO fast leer: "Mach schneller" | + |     * 6 Mbit/s * 0,921 = 5,529 Mbit/ | 
| - |   * Wenn FIFO fast voll: "Mach langsamer" | + | * Also Gesamtechnung: Sendebitrate / Bit pro Symbol / Puncturing factor * RS-Faktor | 
| - | === FIFO === | + | Bei Weglassen des Puncturing  | 
| - | Aufgabe: | + | |
| - | * MPEG-Datenstrom von Ethernet entgegennehmen und an Encoder weitergeben | + | |
| - | * Signalisierung der noch vorhandenen Daten (zu viel / zu wenig) | + | |
| - | === Scrambler === | + | ^ Clock-Divider ^ Brutto-Datenrate ^ Netto-(TS)-Datenrate ^ | 
| - | Aufgabe: | + | | 1 | 50 MSym/s | 46,08 MBit/s | | 
| - | * Entsprechend der Position im Frame Scrambling anwenden | + | | 2 | 25 MSym/s | 23,04 MBit/s | | 
| - | * MUX Adaptation (7 von 8 Sync Words invertieren) | + | | 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 | | ||
| - | === RS-Encoder === | + | 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, | 
| - | Aufgabe: | + | |
| - | * Verkürzten RS-Code auf jeweils einen MPEG-Frame anwenden | + | |
| - |    | + | |
| - | * Bei jedem CE-Signal ein Ausgangsbyte erzeugen! | + | |
| - | === Interleaver === | ||
| - | Aufgabe: | ||
| - | * Vertauschen der Byte-Reihenfolge | ||
| - | === P/ | + | ==== Netzwerkprotokoll ==== | 
| - | Aufgabe: | + | Eine aufwendige Stack-Implementierung soll vermieden werden - diese Aufgabe  | 
| - |   * Byteweisen Datenstrom  | + | |
| - | === Convolutional Coder === | + | Allgemeiner Paketaufbau: | 
| - | Aufgabe: | + | | Ethernet-Header | IP-Header | UDP-Header | UDP-Daten | Ethernet-Footer | | 
| - |   * Faltungskode auf serielle  | + | |
| - | === Mapping === | + | Folgende Anforderungen werden spezifiziert: | 
| - | Aufgabe: | + | * Im Ethernet-Header sollen beliebige Quellen- und Ziel-MAC-Adresse stehen dürfen | 
| - | * Mapping auf I/Q-Symbole | + | * Im IP-Header sollen beliebige Ziel- und Quell-Adressen stehen dürfen - kein Feld wird überprüft | 
| - |   * optional: Puncturing  | + |   * Im UDP-Header wird der Ziel-Port überprüft. Die Länge kann optional  | 
| + |   * Das Längen-Feld aller Protokollebenen  | ||
| + | * Zum Senden werden feste (vorher definierte) Pakete mit vorher berechneten Checksummen genutzt. | ||
| - | === (Interpolator)  | + | === Pakete PC -> FPGA === | 
| - | Aufgabe: | + | * UDP-Pakete, Ziel-Port 40000 | 
| - | * Einfügen von Nullen in den Datenstrom | + | * Payload: 7*188 Byte Daten (7 MPEG-Frames) | 
| + | * optional: variable Länge, kann vom FPGA überprüft werden | ||
| - | === Baseband Filter  | + | === Pakete FPGA -> PC === | 
| - | Aufgabe: | + | * UDP-Pakete, Ziel-Port 40001 | 
| - | * Spectral Shaping mit RRC-Filter | + | * Payload: 1 Byte | 
| + |     * 0x00: FIFO hat unteren Schwellwert erreicht  | ||
| + | * 0x01: FIFO hat oberen Schwellwert erreicht - Datenrate erniedrigen | ||
| + | * 0x02: FIFO hat normalen Füllstand erreicht | ||
| + | * 0x02: (optional) FIFO ist leer, einmalig | ||
| + | * 0x03: (optional) FIFO ist voll, einmalig | ||
| + | Pakete werden nicht wiederholt, bevor die entsprechende Bedingung nicht verlassen wurde. | ||
projekte/das/dvbs.1422783942.txt.gz · Zuletzt geändert:  von thasti
                
                