Welche Hardware des Voyager-Raumfahrzeugs führte eine so komplizierte Codierung der übertragenen Daten durch? Hat die Bodendecodierung „ein großes Monster verwendet, das ein Rack füllt“?

Die mittlerweile berühmte Antwort auf Wie hängt das Stapeln von Orangen in 24 Dimensionen mit dem Empfang und der Dekodierung von Signalen von den Voyagern zusammen? Es lohnt sich, jetzt hier anzuhalten und zurückzugehen und zuerst zu lesen.

Okay, willkommen zurück! Der Kommentar von @NgPh unter der Frage verweist auf Channel Coding: The Road to Channel Capacity , das ebenfalls sehr lesenswert ist. Es sagt:

E. Implementierungen des Reed-Solomon-Codes

Die erste große Anwendung von RS-Codes war als äußere Codes in verketteten Codierungssystemen für die Weltraumkommunikation. Für die Voyager-Mission von 1977 verwendete das Jet Propulsion Laboratory (JPL) einen (255, 223, 33), 16-Fehler-korrigierenden RS-Code F 256 als ein äußerer Code, mit einem konvolutionellen inneren Code mit Rate 1/2 und 64 Zuständen (siehe auch Abschnitt IV-D). Der RS-Decoder verwendete spezielle Hardware zum Decodieren und war in der Lage, bis zu etwa 1 Mb/s zu laufen [27]. Dieses verkettete Faltungs-/RS-Codierungssystem wurde zu einem NASA-Standard.

1980 sah die erste große kommerzielle Anwendung von RS-Codes im Compact Disc (CD)-Standard. Dieses System verwendet zwei kurze RS-Codes über F 256 , nämlich (32, 28, 5) und (28, 24, 5) RS-Codes, und mit Bitraten in der Größenordnung von 4 Mb/s betrieben [28]. Alle nachfolgenden Audio- und Video-Magnetspeichersysteme haben RS-Codes zur Fehlerkorrektur verwendet, heutzutage mit viel höheren Raten.

[...] Linkabit Corp. wurde 1968 von Irwin Jacobs, Len Kleinrock und Andy Viterbi als Beratungsunternehmen gegründet. 1969 wurde Jerry Heller als erster Vollzeitmitarbeiter bei Linkabit eingestellt. Kurz danach baute Linkabit einen Prototyp eines Viterbi-Algorithmus-Decoders mit 64 Zuständen („ein großes Monster, das ein Rack füllt“ [60]), der mit 2 Mb/s laufen kann [61].

  • [27]: RW McEliece und L. Swanson, „Reed-Solomon-Codes und die Erforschung des Sonnensystems“, in Reed-Solomon-Codes und ihre Anwendungen (SB Wicker und VK Bhargava, Hrsg.), S. 25–40. Piscataway, New Jersey: IEEE Press, 1994.
  • [28]: KAS Immink, „Reed-Solomon-Codes und die CD“, in Reed-Solomon-Codes und ihre Anwendungen (SB Wicker und VK Bhargava, Hrsg.), S. 41–59. Piscataway, New Jersey: IEEE Press, 1994.
  • [60]:D. Morton, „Andrew Viterbi, Electrical Engineer: An Oral History“, IEEE History Center, Rutgers U., New Brunswick, NJ, Okt. 1999
  • [61]: JA Heller und IM Jacobs, „Viterbi-Decodierung für Satelliten- und Weltraumkommunikation“, IEEE Trans. Kommun. Tech., Bd. COM–19, S. 835–848, Okt. 1971.

Frage: Welche Hardware des Voyager-Raumfahrzeugs führte die Codierung der übertragenen Daten auf solch komplizierte Weise durch? Hat die Bodendecodierung „ein großes Monster verwendet, das ein Rack füllt“?

Ich bin daran interessiert, die Hardware (und Software, wenn möglich) zu sehen und / oder zu lesen, die die Codierung an Bord des Voyager-Raumschiffs implementiert hat, und die, die die Decodierung am Boden implementiert hat. War es an Bord der Voyagers ein winziger Computer und ein nettes Stück Code, oder wurde die Codierung mit einer Hardware-Implementierung durchgeführt?

Ich könnte später mehr Zeit damit verbringen, darauf einzugehen, aber ich denke, die Antwort auf Frage 2 könnte aus dem stammen, was ein MCD in Abschnitt 4.3 der DESCANSO Design and Performance Summary Series, Voyager Telecommunications, (2002) ist :
Ein Reed-Solomon-Hardware-Encoder war in Voyager enthalten, obwohl beim Start keine Software dafür enthalten war, aber laut dieser Seite existiert kein Bild oder konnte nicht gefunden werden. Es hat jedoch ein Layout des RS-Encoders. meh.com/forum/topics/building-the-plane-on-the-way-up
@blobbymcblobby das scheint der Anfang der Antwort zu sein, danke für den tollen Link!
Zu kurz, um eine Antwort zu sein: Es ist nicht kompliziert, zumindest auf der Seite der Raumfahrzeuge. Codieren ist einfach. Es ist die Dekodierung, die nicht so einfach ist. Das ist keine gute Frage.
@DavidHammen "Welche Hardware ..." ist eine großartige Frage. Die Art und Weise, wie die Hardware codiert, klingt für mich kompliziert, daher möchte ich die tatsächliche Codierungshardware sehen, um zu sehen, ob sie auch kompliziert aussieht oder sich als recht einfach herausstellt und ob die Codierung mit Hardware oder mit Software erfolgt . Es ist eine großartige Frage, ich freue mich auf die Antwort.

Antworten (2)

Obwohl abzuwarten bleibt, was in der Voyager steckt, gibt die Performance Study of Viterbi Decoding as Related to Space Communications 1 eine Beschreibung eines solchen Systems, das auf der Erde für die Bodenstation implementiert ist:

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Es ist nicht der Prototyp, es ist die endgültige Version.

Der Prototyp benötigte möglicherweise etwa das 4- bis 8-fache Volumen. Kein echtes Ungetüm, aber ein Rack von halber bis voller Höhe füllend. (32 bis 64 Zoll, 0,8 bis 1,6 m)

Der Encoder für das Raumschiff Voyager war eine kleine und einfache digitale Schaltung, die mit einem 12-Bit-Schieberegister und etwas Logik aufgebaut war.

Das 12-Bit-Schieberegister wurde aus 3 Schieberegistern mit jeweils 4 Bit aufgebaut, was 3 DIL-Chips mit 16 Pins erforderte.

Die Logik wurde mit 6 Halbaddierern aufgebaut. Ein Halbaddierer benötigt zwei UND-Gatter, ein ODER-Gatter und einen Inverter. Jedes Tor mit zwei Eingängen. Unter Verwendung von Chips mit 4 Gattern benötigen wir drei Chips mit UND-Gattern, zwei Chips mit ODER-Gattern und einen Chip mit sechs Invertern.

So bekamen wir nur neun kleine DIP-Chips für den Encoder.

Ich werde Blockschaltbild später hinzufügen.


1 Linkabit Corporation, I. M. Jacobs und JA Heller, 31. August 1971 Technischer Abschlussbericht zu Vertrag Nr. DAAB07-71-C-0148 (AD 738213)

Danke! Dieses System würde zum Empfangen am Boden sein, wurde es auch zum Senden verwendet? Vermutlich war der Encoder auf den Voyagers viel kleiner und wurde vor dem Start gebaut, es wird großartig sein, auch Informationen darüber zu finden.
@uhoh Schon in den 1970er / 1980er Jahren erforderte das Codieren kein "großes Monster-Füllregal". Das Voyager-Raumschiff brauchte kein „großes Monster-Füllgestell“, um die Codierung durchzuführen. Die Codierung ist um Größenordnungen einfacher als die Decodierung. Dieses "große Monster-Füllgestell" wurde am Boden benötigt, um den mit hoher Rate verschlüsselten Downlink der Voyagers zu entschlüsseln. Heutzutage reicht ein kleiner FPGA aus, aber in den 1970er / 1980er Jahren gab es die nicht.
@uhoh Ein weiterer wichtiger Unterschied: Der Uplink zu den Voyagern war unglaublich klein im Vergleich zum Downlink von ihnen. Während die Voyager über begrenzte Rechenleistung verfügten, hatten sie viel Zeit, um den Uplink zu entschlüsseln. Wenn der Uplink nicht richtig dekodiert wurde, könnten die Fahrzeuge um eine Wiederholung gebeten haben. Das Voyager-Raumschiff brauchte für die Dekodierung kein "großes Monster-Füllgestell".
@DavidHammen Bitte überprüfen Sie den Wortlaut der Frage noch einmal. Ich habe die Hardware in Voyager getrennt von der Hardware am Boden behandelt. Ich ermutige Uwe nur, den Voyager-Teil jetzt anzusprechen.
@uhoh Ich bin vielleicht verwirrt von deiner Frage. Hier gibt es zwei wesentliche Asymmetrien, die Sie nicht zu erkennen scheinen. (1) Das Codieren ist rechnerisch um viele Größenordnungen einfacher als das Decodieren. (2) Die Abwärtsstrecke war um viele Größenordnungen größer als die Aufwärtsstrecke.
@DavidHammen Ich verstehe nicht, was dich glauben lässt, dass ich das nicht schätze. Es gibt überhaupt nichts in der Frage, das darauf hindeutet, dass diese Dinge wahr sein könnten. Es scheint einfach nicht, dass ich diese Dinge nicht erkenne. Die Frage ist so geschrieben, dass eine Antwort veröffentlicht werden kann. Es gibt absolut nichts am Schreiben von Stack Exchange-Fragen, das erfordert, dass Sie etwas nicht wissen, um es zu stellen. Die Funktion der Frage besteht darin, eine Antwort festzulegen. Die Funktion der Antwort besteht in erster Linie darin, zukünftige Leser zu informieren.

Der RS-Encoder ähnelt Golay- und Hamming-Encodern (auf Schieberegisterbasis). Diese Ressource enthält beispielsweise ein schematisches Diagramm.

Im Prinzip so "einfach" wie binäre Encoder (Prüfbits aus Infobits errechnet). Der Hauptunterschied (und die Komplikation) besteht darin, dass Additionen und Multiplikationen jetzt mit Bytes (Prüfbytes, die aus Infobytes berechnet werden) arbeiten und speziellen Regeln in exotischen mathematischen Objekten folgen, die als "Galois-Felder" bezeichnet werden. Die Menge von 256 Bytes bildet ein "Feld", eine endliche Menge, in der Sie alle Operationen wie mit reellen Zahlen (Additionen, Multiplikationen, Divisionen, Logarithmen usw.) haben können, außer dass die Ergebnisse dieser Operationen auf die beschränkt sind endliche Menge (Evariste Galois, ein brillanter französischer Mathematiker, führte sie im 19. Jahrhundert ein. Er starb im Alter von 21 Jahren in einem Duell). Mit genügend Speicher könnten all diese exotischen Operationen vorberechnet und in Nachschlagetabellen gespeichert werden.

RS-Encoder auf Voyager-Raumfahrzeugen sind hardwarebasiert, da Bordcomputer zu dieser Zeit nicht genügend Speicher für Nachschlagetabellen haben konnten (siehe Das Flugzeug auf dem Weg nach oben bauen ).

Der RS-Code wird üblicherweise in Kombination mit einem Convolutional Code (CC) verwendet. Die Kombination wird als verketteter Code bezeichnet. Einzelheiten finden Sie unter CCSDS-Telemetriekanalcodierung (historisch) .

Der Golay-Encoder (ein 24-Bit-Wort, das jedem 12-Bit-Wort zugewiesen ist) war auch keine Nachschlagetabelle? Als solches würde es 4096 * 24 Bit oder etwa 12,3 kByte erfordern.
@uhoh, die Encoder aller BINARY-Codes (Golay, CC, Hamming, BCH,..) können mit ein paar Flipflops implementiert werden. Also sind sie wahrscheinlich auch HW-basiert. Eine Herausforderung für die Ingenieure der NASA (JPL) war der RS-Encoder. Das ist vielleicht der Grund, warum nur Voyager 2 die RS-Fähigkeit hatte (bitte überprüfen). Übrigens, von den 24 Bits des Golay-Codeworts sind 12 Bits die Info-Bits. Bei einem "Brute-Force"-Nachschlagetabellenansatz für Golay benötigen Sie also 1/2 Ihres berechneten Speichers.
Es ist ein Wunder! vielleicht mehrere Dutzend Flip-Flops? Also können die 4096 24-Bit-Wörter, die alle am weitesten voneinander entfernt sind (mein begrenztes Verständnis), 0-4095 als erste Hälfte enthalten?
@uhoh, um ehrlich zu sein, habe ich noch nie einen Code in FPGA implementiert, um Ihnen eine genaue Anzahl von Flip-Flops für einen Golay-Encoder zu geben. Der allgemeine Imbiss ist: Es ist ein Feedback-Schieberegister. Sie schieben Ihre 12 Informationsbits hinein und (Wunder!) Das Register enthält Ihre 11 Prüfbits. Fügen Sie dann ein Gesamtparitätsbit hinzu. Das Codewort: 12 Info-Bits + 11 Golay-Prüfungen + 1 Paritätsprüfung. Nehmen Sie ein beliebiges Paar dieser Codewörter, sie unterscheiden sich um mindestens 8 Positionen. Nehmen Sie JEDE 24-Bit-Nachricht, es gibt 1 Codewort, das sich um höchstens 3 Stellen unterscheidet => perfekte Kugelpackung.
Ah ... verstehe ... Ich werde losgehen und eine ganze Weile darüber nachdenken; Ich kämpfe immer noch mit 3D .
@uhoh, ein mathematisches Wunder: Nimm die Menge aller 24-Bit-Möglichkeiten. Nehmen Sie die 4096 Codewörter des Golay-Codes. Zeichnen Sie "Kugeln" mit "Hamming-Distanz" d = 3, die auf jedes dieser Golay-Codewörter zentriert sind. Diese 4096 Kugeln füllen das ganze Set aus. Mit euklidischer Distanz in einem Realraum der Dimension n, R^n, bekommt man ein solches Ergebnis nur mit n=1. Mit n = 3 lässt das Beste, was Sie packen können, immer noch ~ 26% leeren Raum (Keplers Vermutung, 1611, 1998 offiziell demonstriert)
Mein Gehirn ist heute hier Sind die "Codewörter" die 12 hinzugefügten Bits oder alle 24? Ich versuche immer noch zu verstehen, wie dies ein 24-dimensionaler Raum ist und wie die Lösung 0 bis 4095 in den "niedrigstwertigen Bits" enthält?
@uhoh, ein Codewort hat n = 24 Bits. Es gehört zu einem "Codebuch", einer Teilmenge des n-dim "Raums". Wenn Ihre Nachricht k Infobits hat, dürfen Sie (nk) Prüfbits haben. Beispielsweise hat ein Paritätsprüfcode ein Codebuch, das 1/2 der Größe des n-Raums (k = n – 1) beträgt, und jedes Paar von Codewörtern unterscheidet sich um mindestens 2 Stellen. Jedes Codebuch, bei dem sich jedes Paar von Codewörtern um mindestens (2t + 1) Stellen unterscheidet, kann t Fehler korrigieren. Sie möchten auch, dass Ihr Codebuch so groß wie möglich ist (=> T-Kugeln packen). Die Reihenfolge der Info- und Prüfbits können Sie selbst wählen (und mit der Rx-Seite vereinbaren). Die übliche Konvention ist zuerst die Info-Bits.