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/01/30 12:03] – [Software] 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. 
  
-===== Software ===== +===== 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]]
   * [[https://github.com/drmpeg/gr-dvbs/tree/master/docs|drmpeg gr-dvbs]]   * [[https://github.com/drmpeg/gr-dvbs/tree/master/docs|drmpeg gr-dvbs]]
   * [[http://www.waveguide.se/?article=creating-dvb-t-compatible-mpeg2-streams-using-ffmpeg|TS-Erzeugung CBR]]   * [[http://www.waveguide.se/?article=creating-dvb-t-compatible-mpeg2-streams-using-ffmpeg|TS-Erzeugung CBR]]
 +
 ==== Schnittstellen ==== ==== Schnittstellen ====
   * Schnittstelle zum PC: Ethernet (UDP)   * Schnittstelle zum PC: Ethernet (UDP)
Zeile 12: Zeile 12:
  
 ==== Komponenten ==== ==== Komponenten ====
-Ethernet - FIFO - Scrambler - RS-Encoder - Interleaver - P/S-Converter - Convolutional Coder - Puncturing - Mapping - (Interpolation) - Baseband Filter +Die geplante Komponentenstruktur wurde in KiCAD erstelltwas bei der Planung ungemein hilft
- +  * {{:projekte:das:dvb-s-blocks.pdf|Download Blockschaltbild}} 
-Bis nach dem Interleaver ist die Struktur byteweise aufgebaut, danach arbeitet sie bit-seriell. Die Pipeline muss vor dem RS-Encoder aller 188 Byte angehalten werden könnendamit der RS-Encoder seine sechs Paritätsbytes einschieben kann. +  * {{:projekte:das:dvbs-kicad.zip|KiCAD-Projekt und Schaltplanfiles}}
- +
-=== Controller === +
-Aufgabe+
-  * Datenstrom überwachen (Frame-Syncronität) +
-  * Steuersignal für die einzelnen Komponenten erzeugen +
-    * Sync-Signal für Framestart an Scrambler +
-    * Data Valid für Scrambler +
-    * Reset für den Interleaver +
-    * Reset für den RS-Encoder +
-    * Reset für den Convoluational Coder +
- +
-Schnittstelle: +
-  * EingangDatenstrom aus FIFO (Byte) +
-  * AusgangFIFO read enable (Bit) +
-  * TBC... +
- +
-=== Netzwerk-RX === +
-Aufgabe: +
-  * Empfang von UDP-Paketen (Sanity-Check) +
-  * Weiterreichen der Nutzdaten an FIFO +
- +
-Schnittstelle: +
-  * EingangNetzwerk-Pins (Bits) +
-  * AusgangDatenstrom (Byte) +
-  * Ausgang: Daten valid (Bit) +
- +
-=== Netzwerk-TX === +
-Aufgabe: +
-  * Auswerten der FIFO-Signale und Erzeugung von UDP-Nachichten zur Datenflusskontrolle +
-  * Wenn FIFO fast leer: "Mach schneller" senden +
-  * Wenn FIFO fast voll: "Mach langsamer" senden +
- +
-Schnittstelle: +
-  * Eingang: FIFO fast voll (Bit) +
-  * Eingang: FIFO fast leer (Bit) +
- +
-=== FIFO ===  +
-Aufgabe: +
-  * MPEG-Datenstrom von Ethernet entgegennehmen und an Encoder weitergeben +
-  * Signalisierung der noch vorhandenen Daten (zu viel / zu wenig) +
- +
-Schnittstelle: +
-  * Eingang: Daten von Ethernet (Byte) +
-  * Eingang: Schreiben aktiv (Bit) +
-  * Eingang: Lesen aktiv (Bit) +
-  * Ausgang: Daten an Encoder (Byte) +
-  * Ausgang: Fast voll (Bit) +
-  * Ausgang: Fast leer (Bit) +
- +
-=== Scrambler === +
-Aufgabe: +
-  * Entsprechend der Position im Frame Scrambling anwenden +
-  * MUX Adaptation (7 von 8 Sync Words invertieren) +
- +
-Schnittstelle: +
-  * Eingang: Reset-Sync-Logik (Byte) +
-  * Eingang: valide Daten vorhanden (Clock Enable) (Byte) +
-  * Eingang: Datenstrom von FIFO (Byte) +
-  * Ausgang: Angepasster Datenstrom (Byte) +
- +
-=== RS-Encoder === +
-Aufgabe: +
-  * Verkürzten RS-Code auf jeweils einen MPEG-Frame anwenden +
-  * Paritätsbytes einfügen +
- +
-Schnittstelle: +
-  * Eingang: Daten ohne RS (Byte) +
-  * Ausgang: Daten mit RS (Byte) +
  
-=== Interleaver === +Designfragen
-Aufgabe+  * Können die FrameSync-Eingänge einfach durch den Reset ersetzt werden / sind sie notwendig?
-  * Vertauschen der Byte-Reihenfolge+
  
-Schnittstelle: +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.
-  * Eingang: Daten (Byte+
-  * Ausgang: Daten (Byte)+
  
-=== P/S-Converter === +==== Berechnung Bitrate des MPEG2-TS ==== 
-Aufgabe+  * gegebenSymbolrate 4,5 MSym/s 
-  * Byteweisen Datenstrom in Bitweisen Datenstrom wandeln+  * QPSK, also 2 Bit pro Symbol 
 +    * aber: aus Faltungskodierer kommen 2 Bit pro Datenbit 
 +    * d.h.: 2x4,5Mbit/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/s  
 +  * Also Gesamtechnung: Sendebitrate / Bit pro Symbol / Puncturing factor * RS-Faktor
  
-Schnittstelle: +Bei Weglassen des Puncturing (Code Rate 1/2ist die Sendesymbolrate (=Bitrate nach RSein 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.
-  * Eingang: Daten (Byte) +
-  * Ausgang: Daten (Bit, MSB first)+
  
-=== Convolutional Coder === +^ Clock-Divider ^ Brutto-Datenrate ^ Netto-(TS)-Datenrate ^ 
-Aufgabe: +| 1 | 50 MSym/s | 46,08 MBit/s | 
-  * Faltungskode auf serielle Daten anwenden+| 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 | 
  
-Schnittstelle: +Es muss bedacht werdenDer Interpolator am Ausgang (der zur Entlastung der Anforderungen des Ausgangsfilters vorhanden mindestens mit Faktor 2 interpolieren sollteverhindert 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.
-  * Eingang: Daten (Bit) +
-  * AusgangX (Bit) +
-  Ausgang: Y (Bit)+
  
-=== Puncturing/Mapping === 
-Aufgabe: 
-  * Weglassen definierter Bits aus dem convolutional Coder 
-  * Mapping auf I/Q-Symbole 
  
-Schnittstelle: +==== Netzwerkprotokoll ==== 
-  * Eingang: X (Bit) +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.
-  * Eingang: Y (Bit) +
-  * Ausgang: I (Bit) +
-  * Ausgang: Q (Bit)+
  
-=== (Interpolator) === +Allgemeiner Paketaufbau
-Aufgabe+| Ethernet-Header | IP-Header | UDP-Header | UDP-Daten | Ethernet-Footer |
-  * Einfügen von Nullen in den Datenstrom+
  
-Schnittstelle+Folgende Anforderungen werden spezifiziert
-  * Eingang: I (Bit) +  * Im Ethernet-Header sollen beliebige Quellen- und Ziel-MAC-Adresse stehen dürfen 
-  * Eingang: Q (Bit) +  * Im IP-Header sollen beliebige Ziel- und Quell-Adressen stehen dürfen - kein Feld wird überprüft 
-  * Ausgang: I (Bit) +  * Im UDP-Header wird der Ziel-Port überprüft. Die Länge kann optional überprüft werden 
-  * Ausgang: Q (Bit)+  * Das Längen-Feld aller Protokollebenen wird ignoriert 
 +  * Zum Senden werden feste (vorher definiertePakete mit vorher berechneten Checksummen genutzt.
  
-=== Baseband Filter === +=== Pakete PC -> FPGA === 
-Aufgabe: +  * UDP-Pakete, Ziel-Port 40000 
-  * Spectral Shaping mit RRC-Filter+  * Payload: 7*188 Byte Daten (7 MPEG-Frames) 
 +    * optional: variable Länge, kann vom FPGA überprüft werden
  
-Schnittstelle: +=== Pakete FPGA -> PC === 
-  * Eingang: I (Bit) +  * UDP-Pakete, Ziel-Port 40001 
-  * EingangQ (Bit) +  * Payload1 Byte 
-  AusgangI (Bit-Vektor+    0x00FIFO hat unteren Schwellwert erreicht Datenrate erhöhen 
-  Ausgang(Bit-Vektor)+    * 0x01: FIFO hat oberen Schwellwert erreicht - Datenrate erniedrigen 
 +    * 0x02: FIFO hat normalen Füllstand erreicht 
 +    * 0x02: (optionalFIFO ist leer, einmalig 
 +    0x03: (optionalFIFO ist voll, einmalig
  
 +Pakete werden nicht wiederholt, bevor die entsprechende Bedingung nicht verlassen wurde.
  
  
projekte/das/dvbs.1422619418.txt.gz · Zuletzt geändert: 2015/01/30 12:03 von thasti

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki