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 23:03] – Bitratenberechnung thastiprojekte:das:dvbs [2015/02/02 10:36] (aktuell) – [Netzwerkprotokoll] thasti
Zeile 1: Zeile 1:
 ====== FPGA DVB-S Encoder ====== ====== FPGA DVB-S Encoder ======
 Die Idee ist, einen DVB-S-Encoder in VHDL zu realisieren.  Die Idee ist, einen DVB-S-Encoder in VHDL zu realisieren. 
 +
 +===== Links / Referenzen =====
 +  * [[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]]
 +  * [[http://www.waveguide.se/?article=creating-dvb-t-compatible-mpeg2-streams-using-ffmpeg|TS-Erzeugung CBR]]
 +
 +==== Schnittstellen ====
 +  * Schnittstelle zum PC: Ethernet (UDP)
 +  * Schnittstelle zum I/Q-Modulator: 2xDAC
 +
 +==== Komponenten ====
 +Die geplante Komponentenstruktur wurde in KiCAD erstellt, was bei der Planung ungemein hilft:
 +  * {{:projekte:das:dvb-s-blocks.pdf|Download Blockschaltbild}}
 +  * {{:projekte:das:dvbs-kicad.zip|KiCAD-Projekt und Schaltplanfiles}}
 +
 +Designfragen:
 +  * 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. Die Spezifikation jedes Einzelmoduls ist im Git-Repository zu finden.
  
 ==== Berechnung Bitrate des MPEG2-TS ==== ==== Berechnung Bitrate des MPEG2-TS ====
Zeile 17: Zeile 36:
     * 6 Mbit/s * 0,921 = 5,529 Mbit/     * 6 Mbit/s * 0,921 = 5,529 Mbit/
   * Also Gesamtechnung: Sendebitrate / Bit pro Symbol / Puncturing factor * RS-Faktor   * Also Gesamtechnung: Sendebitrate / Bit pro Symbol / Puncturing factor * RS-Faktor
-===== Software ===== 
- 
-  * [[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]] 
-  * [[http://www.waveguide.se/?article=creating-dvb-t-compatible-mpeg2-streams-using-ffmpeg|TS-Erzeugung CBR]] 
-==== Schnittstellen ==== 
-  * Schnittstelle zum PC: Ethernet (UDP) 
-  * Schnittstelle zum I/Q-Modulator: 2xDAC 
- 
-==== Komponenten ==== 
-Ethernet - FIFO - Scrambler - RS-Encoder - Interleaver - P/S-Converter - Convolutional Coder - Puncturing - Mapping - (Interpolation) - Baseband Filter 
- 
-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önnen, damit der RS-Encoder seine sechs Paritätsbytes einschieben kann. 
- 
-=== 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: 
-  * Eingang: Datenstrom aus FIFO (Byte) 
-  * Ausgang: FIFO read enable (Bit) 
-  * TBC... 
- 
-=== Netzwerk-RX === 
-Aufgabe: 
-  * Empfang von UDP-Paketen (Sanity-Check) 
-  * Weiterreichen der Nutzdaten an FIFO 
- 
-Schnittstelle: 
-  * Eingang: Netzwerk-Pins (Bits) 
-  * Ausgang: Datenstrom (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 === 
-Aufgabe: 
-  * Vertauschen der Byte-Reihenfolge 
- 
-Schnittstelle: 
-  * Eingang: Daten (Byte) 
-  * Ausgang: Daten (Byte) 
- 
-=== P/S-Converter === 
-Aufgabe: 
-  * Byteweisen Datenstrom in Bitweisen Datenstrom wandeln 
  
-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.1422659019.txt.gz · Zuletzt geändert: 2015/01/30 23:03 von thasti

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki