Benutzer-Werkzeuge

Webseiten-Werkzeuge


projekte:das:dvbs

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
projekte:das:dvbs [2015/01/30 11:18] – angelegt 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]] 
 +  * [[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 ==== ==== Schnittstellen ====
   * Schnittstelle zum PC: Ethernet (UDP)   * Schnittstelle zum PC: Ethernet (UDP)
Zeile 8: Zeile 12:
  
 ==== Komponenten ==== ==== Komponenten ====
-Ethernet FIFO Scrambler - RS-Encoder - Interleaver P/S-Converter Convolutional Colder Puncturing Mapping - (Interpolation) - Baseband Filter+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 ==== 
 +  * gegeben: Symbolrate 4,5 MSym/
 +  * 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/s  
 +  * Also Gesamtechnung: Sendebitrate / Bit pro Symbol / Puncturing factor * RS-Faktor 
 + 
 +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. 
 + 
 + 
 +==== Netzwerkprotokoll ==== 
 +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: 
 +  * Im Ethernet-Header sollen beliebige Quellen- und Ziel-MAC-Adresse stehen dürfen 
 +  * Im IP-Header sollen beliebige Ziel- und Quell-Adressen stehen dürfen - kein Feld wird überprüft 
 +  * 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. 
 + 
 +=== Pakete PC -> FPGA === 
 +  * UDP-Pakete, Ziel-Port 40000 
 +  * Payload: 7*188 Byte Daten (7 MPEG-Frames) 
 +    * optional: variable Länge, kann vom FPGA überprüft werden
  
-Bis nach dem Interleaver ist die Struktur byteweise aufgebautdanach arbeitet sie bit-seriell. +=== Pakete FPGA -> PC === 
 +  * UDP-PaketeZiel-Port 40001 
 +  * 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.1422616724.txt.gz · Zuletzt geändert: 2015/01/30 11:18 von thasti

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki