Benutzer-Werkzeuge

Webseiten-Werkzeuge


projekte:das:dvbs

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
projekte:das:dvbs [2015/02/01 09:45] thastiprojekte: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, Faktor 188/204 = 0,921... 
-    * 6 Mbit/s * 0,921 = 5,529 Mbit/ 
-  * Also Gesamtechnung: Sendebitrate / Bit pro Symbol / Puncturing factor * RS-Faktor 
 ===== Links / Referenzen ===== ===== Links / Referenzen =====
   * [[http://www.etsi.org/deliver/etsi_en%5C300400_300499%5C300421%5C01.01.02_60%5Cen_300421v010102p.pdf|ETSI-Standard DVB-S]]   * [[http://www.etsi.org/deliver/etsi_en%5C300400_300499%5C300421%5C01.01.02_60%5Cen_300421v010102p.pdf|ETSI-Standard DVB-S]]
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+  * gegebenSymbolrate 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 von Datenbits, damit geringere Bitrate 
-Aufgabe+    z.B. 2/3 
-  * Empfang von UDP-Paketen (Sanity-Check) +      * 3 Ausgangsbits pro 2 Datenbits 
-  Weiterreichen der Nutzdaten an FIFO +      * Redundanz bedeutet Faktor 2 
- +      * alsopro 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, Faktor 188/204 = 0,921... 
-  * Wenn FIFO fast leer: "Mach schneller" senden +    * 6 Mbit/s * 0,921 = 5,529 Mbit/ 
-  * Wenn FIFO fast voll"Mach langsamer" senden+  * Also GesamtechnungSendebitrate / Bit pro Symbol / Puncturing factor * RS-Faktor
  
-=== FIFO ===  +Bei Weglassen des Puncturing (Code Rate 1/2ist 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.
-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 (von 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 | 
 +| 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, sodass mehrere Takte für die Berechnung eines gefilterten Wertes notwendig sind. Anhaltspunktgr-dvbs verwendet bei Samplerate = 2*Symbolrate eine Filterlänge von 20 Taps.
-Aufgabe: +
-  * Verkürzten RS-Code auf jeweils einen MPEG-Frame anwenden +
-  Paritätsbytes einfügen +
-  * Bei jedem CE-Signal ein Ausgangsbyte erzeugen!+
  
-=== Interleaver === 
-Aufgabe: 
-  * Vertauschen der Byte-Reihenfolge 
  
-=== P/S-Converter === +==== Netzwerkprotokoll ==== 
-Aufgabe+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.
-  * Byteweisen Datenstrom in Bitweisen Datenstrom wandeln+
  
-=== Convolutional Coder === +Allgemeiner Paketaufbau
-Aufgabe+| Ethernet-Header | IP-Header | UDP-Header | UDP-Daten | Ethernet-Footer |
-  * Faltungskode auf serielle Daten anwenden+
  
-=== 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 - wird erstmal weggelassen+  * Im UDP-Header wird der Ziel-Port überprüft. Die Länge kann optional überprüft werden 
 +  * Das Längen-Feld aller Protokollebenen wird ignoriert 
 +  * 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 Datenrate erhöhen 
 +    * 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: 2015/02/01 09:45 von thasti

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki