DE3586442T2 - Kodier- und dekodierschaltung fuer parameterblockkodierung. - Google Patents

Kodier- und dekodierschaltung fuer parameterblockkodierung.

Info

Publication number
DE3586442T2
DE3586442T2 DE19853586442 DE3586442T DE3586442T2 DE 3586442 T2 DE3586442 T2 DE 3586442T2 DE 19853586442 DE19853586442 DE 19853586442 DE 3586442 T DE3586442 T DE 3586442T DE 3586442 T2 DE3586442 T2 DE 3586442T2
Authority
DE
Germany
Prior art keywords
output
circuit
input
galois
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE19853586442
Other languages
English (en)
Other versions
DE3586442D1 (de
Inventor
Pierre Laurent
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Thales SA
Original Assignee
Thomson CSF SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Thomson CSF SA filed Critical Thomson CSF SA
Publication of DE3586442D1 publication Critical patent/DE3586442D1/de
Application granted granted Critical
Publication of DE3586442T2 publication Critical patent/DE3586442T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Probability & Statistics with Applications (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Error Detection And Correction (AREA)

Description

  • Die Erfindung bezieht sich auf einen parametrierbaren Kodierer-Dekodierer für Blockkodes vom Typ BCH oder RS. In einer bevorzugten Ausführungsform ist dieser Kodierer-Dekodierer als integrierter Schaltkreis ausgeführt.
  • Da immer mehr Digitalübertragungen auf Kanälen von oft mittelmäßiger Qualität erfolgen, insbesondere auf dem Gebiet des drahtlosen Telefons und der taktischen Übertragungen, ist man dazu übergegangen, die Information durch Beifügen von Kodes zur Erfassung und/oder Korrektur von Fehlern und Auslassungen zu schützen.
  • In den klassischen Kanälen erfolgt der Schutz durch Anfügen von Kontrollzeichen, Paritätszeichen genannt, an die Information, wodurch die Auswirkungen der Fehler verringert werden, indem sie in den meisten Fällen erkannt werden. Wurde ein Fehler erkannt, dann verlangt der Empfänger die Wiederholung der Nachricht.
  • Die Zunahme des Nachrichtenverkehrs in bereits praktisch vollen Frequenzbändern und der Wunsch, Daten schnell und sicher selbst bei Vorliegen eines Rauschens zu übertragen, führen zur Verbesserung dieses Verfahren, indem man Kodierverfahren verwendet, die unmittelbar die Fehler zu korrigieren erlauben, um die systematische Wiederholung der Nachrichten und damit den Grad der Belegung des Übertragungskanals in Grenzen zu halten.
  • Die meist verwendeten Korrekturkodes sind Blockkodes, die aus zwei großen Familien ausgewählt werden:
  • - Die aus einem binären Alphabet aufgebauten Kodes, im allgemeinen auf der Basis von BCH-Kodes, und hauptsächlich bei der Binärübertragung verwendet, wenn die Fehler als Einzelfehler auftreten: Die übertragenen Zeichen sind Binärzeichen;
  • - die aus einem Alphabet mit M Elementen gebildeten Kodes, wobei M = 2m, auf der Basis von RS-Kodes (Reed-Solomon), die in der Lage sind, Fehlerpakete zu korrigieren: die übertragenen Zeichen sind Wörter von m Bits.
  • Je nach der Verwendung können die kodierten Blöcke oder Kodewörter unterschiedliche Länge, eine mehr oder minder große Korrekturkapazität und/oder bewußt in ihrer Korrekturkapazität beschränkt sein, um die Übertragungssicherheit zu verbessern. Diese Beschränkung geschieht folgendermaßen: Wenn der Kode t Fehler korrigieren kann, dann ist der Schaltkreis so ausgebildet, daß er höchstens tef Fehler korrigieren kann (tef ist kleiner als t), wobei die Wiederholung der Nachricht verlangt wird, wenn mehr als tef Fehler erkannt worden sind.
  • Wenn der zu übertragende Nutzdurchsatz nicht einige Kilobits pro Sekunde übersteigt, dann können die Kodierung und die Dekodierung mit Hilfe eines Mikroprozessors erfolgen, wenngleich ein solcher Mikroprozessor keine für derartige Vorgänge besonders angepaßte Struktur besitzt. Ein Mikroprozessor ist nämlich eher für einfache arithmetische Operationen optimisiert als für arithmetische und Polynomoperationen in Anwendung auf Galois-Körper. Dies sind aber die erforderlichen Operationen, um die Kodierung und Dekodierung mit den oben erwähnten Kodes BCH oder RS durchzuführen. Außerdem soll der Mikroprozessor im übrigen während des größten Teils der Zeit andere Operationen für die Verwaltung des Endgeräts durchführen, was zu einer delikaten Programmierung führt.
  • Heutzutage besteht die Tendenz in der Erhöhung des Durchsatzes, die beispielsweise für die digitale Sprachübertragung in einer gestörten Umgebung notwendig ist. Es ist daher nötig, hochwirksame Kodes zu verwenden, die sehr schwer in einem Mikroprozessor zu Kodier- und Dekodierzwecken verarbeitet werden können.
  • Beispielsweise ist aus der europäischen Patentanmeldung EP-A-0 096 109 ein vollständig verdrahteter spezialisierter Schaltkreis bekannt, der Verarbeitungen durchführen kann. Da seine Struktur Tabellen verwendet, ist er nicht beliebig anpaßbar an die Verarbeitung anderer Kodes in ggf. unterschiedlichen Galois-Körpern.
  • Gegenstand der vorliegenden Erfindung ist ein vorzugsweise monolithisches, genormtes intelligentes Periphergerät eines Mikroprozessors, das Durchsätze von mehreren zehn Kilobit pro Sekunde mit einer hohen Fehlerrate im Übertragungskanal bearbeiten kann, wobei dieser genormte Schaltkreis parametrierbar und somit in der Lage ist, ohne Veränderungen in der Hardware oder der Software alle üblichen Kodes der oben erwähnten Kodefamilien (BCH und RS) in ihren verschiedenen Versionen zu verarbeiten, ohne daß der Host-Mikroprozessor mehr intervenieren müßte als bei der Definition der verwendeten Kodes und der Verwaltung der Eingabe-Ausgabe-Operationen.
  • Erfindungsgemäß ist ein parametrierbarer Kodierer-Dekodierer für Blockkodes, wobei ein Block vor der Kodierung k Informationszeichen und nach der Kodierung n Zeichen enthält (n > k), mit
  • - einen Taktgeber,
  • - einer Schnittstellenschaltung, die für den Empfang von zu kodierenden oder zu dekodierenden Datenblöcken und für die Übertragung der kodierten oder dekodierten Blöcke ausgebildet ist,
  • - einer Steuerschaltung,
  • - einem arithmetischen Rechenwerk zum Ausführen von einfachen Operationen an vorzeichenbehafteten ganzen Zahlen,
  • - einem Galois-Rechenwerk zum Ausführen von Additionen und Multiplikationen an Elementen des Galois-Körpers CG(M= 2m), wobei M die Anzahl der Elemente des Körpers und m die charakteristische Zahl dieses Körpers ist, während n höchstens gleich M-1 ist und die Blöcke von k zu kodierenden Informationszeichen und die kodierten Blöcke von n Zeichen und die dekodierten Blöcke von k Zeichen dem selben Körper angehören, dadurch gekennzeichnet, daß:
  • - die Steuerschaltung mit einer Folgerschaltung, einem programmierbaren Speicher und einem dazugehörigen Mikrobefehlsregister, dessen Ausgang mit einem Befehlsbus verbunden ist, und einer mit dem Befehlsbus und mit einem internen Datenbus verbundenen Schaltung für die Befehlsdekodierung und die Testmultiplexierung versehen ist,
  • - das arithmetische Rechenwerk mit einer Arithmetikund Logikeinheit und einem Arbeitsspeicher mit Zweifachzugriff versehen ist, der mit der Arithmetik- und Logikeinheit verbunden ist, wobei der Eingang des Arbeitsspeichers über eine durch ein von der Steuerschaltung ausgegebenes und im programmierbaren Speicher programmiertes Konfigurationssteuerwort gesteuerte Wechselschaltung mit dem Befehlsbus, oder dem internen Bus oder mit dem Ausgang der Arithmetik- und Logikeinheit oder mit dem Ausgang des Speichers selbst verbunden ist,
  • - das Galois-Rechenwerk versehen ist mit einem Arbeitsspeicher mit Zweifachzugriff, einem Multiplizierer in den Galois-Körpern, einem Addierer in den Galois-Körpern und einem Akkumulator, wobei der Eingang des Speichers über ein durch ein von der Steuerschaltung ausgegebenes und im programmierbaren Speicher programmiertes Konfigurationssteuerwort gesteuerte Wechselschaltung mit dem Befehlsbus, oder dem internen Bus oder mit dem Ausgang des Akkumulators oder mit dem Ausgang des Addierers oder mit dem Ausgang des Multiplizierers verbunden ist, wobei die charakteristische Zahl m des zu verwendenden Galois-Körpers über die Schnittstellenschaltung gesteuert wird.
  • Die Erfindung sowie weitere Merkmale gehen aus der nachfolgenden Beschreibung anhand der beigefügten Zeichnungen hervor.
  • Fig. 1 ist ein Übersichtsschema des integrierten Kodierers-Dekodierers gemäß der Erfindung.
  • Die Fig. 2 und 3 zeigen Einzelschaltungen einer Ausführungsform der Steuerschaltung aus Fig. 1.
  • Fig. 4 ist die Einzeldarstellung des arithmetischen Rechenwerks 300 aus Fig. 1.
  • Fig. 5 zeigt im einzelnen das Galois-Rechenwerk 400 aus Fig. 1.
  • Fig. 6 zeigt im einzelnen den Multiplizierer 470 aus Fig. 5.
  • Fig. 7 zeigt im einzelnen den Schnittstellenkreis 500 aus Fig. 1.
  • Fig. 8 zeigt das Format der verwendbaren Befehle.
  • Der integrierte und parametrierbare Blockkode-Kodierer-Dekodierer kann alle BCH- und RS-Kodes der Form (n, k) bearbeiten, wobei n die Gesamtzahl der Zeichen je Kodewort und k die Anzahl der Informationszeichen ist. In der nachfolgend beschriebenen Ausführungsform kann n die Höchstwerte Nmax = 15, 31, 63 oder 127 annehmen. Hierzu sind diese Kodes für die Galois-Körper CG(16), CG(32), CG(64) und CG(128) konzipiert, die durch die Ordnungen der minimalen Erzeugungspolynome gekennzeichnet sind, m = 4, 5, 6, 7.
  • Für CG(2&sup4;=16) gilt Nmax=15 und das Minimalerzeugungspolynom ist g(X) = X&sup4;+ X + 1
  • Für CG(2&sup5;=32) gilt Nmax=31 und das Minimalerzeugungspolynom ist g(X) = X&sup5;+ X² + 1
  • Für CG(2&sup6;=64) gilt Nmax=63 und das Minimalerzeugungspolynom ist g(X) = X&sup6; + X + 1
  • Schließlich gilt für CG(2&sup7;=128): Nmax=127 und g(X) = X&sup7; + X³ + 1
  • Es ist auch möglich, die nachfolgend beschriebene Ausführungsform zu verbessern, um direkt Bytes (8 Bits) zu übertragen, indem diese Kodes aufgrund des Galois-Körpers CG(2&sup8;=256) gebildet werden, wobei gilt Nmax=255 und g(X) = X&sup8; + X&sup4; + X³ + X² + 1.
  • Die verwendete Kodierung ist vom systematischen Typ, wobei die Informationszeichen unverändert bleiben und am Beginn der Kodeworte liegen, während die durch das Kodierverfahren berechneten Redundanzzeichen daran anschließen. Die Einzelheiten betreffend die Implementierung eines Kodier- oder Dekodierverfahrens mit Hilfe des erfindungsgemäßen integrierten und parametrierbaren Kodierers-Dekodierers werden später nach der Einzelbeschreibung dieses Kodierers-Dekodierers erläutert.
  • Aufgrund der Komplexität und der großen Verschiedenheit der von diesem Kreis durchzuführenden Bearbeitungen besitzt der erfindungsgemäße Kodierer-Dekodierer eine Architektur einer intern mikroprogrammierten Maschine, wobei das für alle Fälle verwendbare Programm in einem dem Benutzer nicht zugänglichen Festwertspeicher enthalten ist. Ein Teil der notwendigen Funktionen ist fest verdrahtet und ein anderer in Software verwirklicht. Beispielsweise hat die Wahl des Galois-Körpers keine Auswirkung auf das im Programmspeicher der Maschine enthaltene interne Programm. Wie weiter unten erläutert wird, speichert ein bestimmtes Pufferregister den charakteristischen Wert, und eine automatische Rekonfiguration des Kodierers-Dekodierers ergibt sich durch Verdrahtung, insbesondere in einem Konstantengenerator und in einem Multiplizierer, wie weiter unten erläutert wird.
  • Ein Überblick über den genormten Kodierer-Dekodierer ist in Fig. 1 zu sehen mit den hauptsächlichen Baugruppen, die nachfolgend erläutert werden. Eine erste Baugruppe 100 ist ein Steuerkreis und enthält eine Folgerschaltung 140, einen Festwertspeicher 110 für die Programme in Verbindung mit einem Mikrobefehlsregister 120 und einen verdrahteten logischen Befehlsdekodier- und Testmultiplexierkreis 130. Der Dekodierkreis 130 und die Folgerschaltung 140 sind mit dem Mikrobefehlsregister 120 über einen Befehlsbus 125 verbunden. Diese Steuereinheit steuert zwei spezialisierte Rechenwerke, nämlich ein arithmetisches Rechenwerk 300 mit einem Arbeitsspeicher 310, in dem ganze Zahlen gespeichert werden, eine vereinfachte Rechen- und Logikeinheit UAL 350 und ein Rechenwerk 400, das Galois-Rechenwerk genannt wird und einen Arbeitsspeicher 410 zur Speicherung der M-fach Zeichen und einen Multiplizierer 470 im Galois-Körper enthält. Neben dieser Baugruppe findet sich noch ein Schnittstellenkreis 500 zum Dialog mit der Außenwelt. Das Ganze wird von einem Taktgeber 200 gesteuert, der an eine äußere Uhr oder auch einen Quarz angeschlossen sein kann. Die im Kodierer-Dekodierer verwendeten Module sind über einen internen Datenbus 600 verbunden, der Informationen unterschiedlichster Art übertragen kann, über den Befehlsbus 125, der mit den Rechenwerken 300 und 400 und über andere speziellere Verbindungen verbunden ist, wie die Konfigurationsverbindungen CONF.AR und CONF.GA, die den Befehlsdekodierkreis 130 mit den Rechenwerken 300 und 400 verbinden. Diese speziellen Verbindungen, die die verschiedenen Module verknüpfen, werden im einzelnen nachfolgend erläutert. Der Anschluß nach außen kann entweder über den bidirektionalen Bus 700 eines mit einem externen Takt E arbeitenden Mikroprozessors oder über Dateneingangs- und -ausgangsdrähte DIN und DOUT mit zugeordneter äußerer Uhr CK für die Serienverbindungen erfolgen.
  • Um die nachfolgende Detailbeschreibung zu vereinfachen, wurden die Takteingänge der verschiedenen verwendeten und in den Figuren dargestellten Kreise nicht systematisch erwähnt.
  • Die Fig. 2 und 3 zeigen im einzelnen eine Ausführungsform der Steuereinheit 100 der Schaltungsanordnung. In Fig. 2 erkennt man den Programmspeicher 110 mit seinen Adresseneingang und seinem Befehlsausgang, das Mikrobefehlsregister 120 sowie den Taktgeber 200 und alle Bestandteile der Folgerschaltung 140. Diese Folgerschaltung enthält ein Register für die nächstfolgende Adresse 141, das die Adresse speichert, an der das Programm beim nächsten Takt ankommen wird. Dieses Register für die nachfolgende Adresse wird aufgrund einer Steuerung durch einen Ausgang LDAS eines logischen Kreises 131 des Befehlsdekodierkreises 130 durch den Ausgang eines Aufwärtszählers 142 geladen, an dessen Eingang sich im gegebenen Augenblick die gültige Adresse ADC befindet, die am Adresseneingang des Programmspeichers 110 entnommen wurde. Die Folgerschaltung enthält weiter einen Stapel von Rückkehradressen 143, der für die Verzweigungen der Unterprogramme und den Rücksprung von Unterprogrammen verwendet wird und vom Ausgang des Registers 141 für die nächstfolgende Adresse aufgrund einer Steuerung durch einen Ausgang LDAR des logischen Kreises 131 geladen wird. Eine Wechselschaltung 144 dient der Auswahl der aktuellen Programmadresse, die an den Adresseneingang ADC des Programmspeichers 110 übertragen wird, und zwar aufgrund von vier möglichen Quellen, nämlich:
  • - dem Ausgang ADIT des logischen Kreises 131, um eine Unterbrechung zu erreichen, wobei diese Adresse am Eingang 1 der Wechselschaltung anliegt,
  • - der nächstfolgenden Adresse ADS am Ausgang des Registers 141, die am Eingang 2 anliegt,
  • - der am Ausgang des Stapels 143 verfügbaren Rücksprungadresse ADR, die am Eingang 3 vorliegt,
  • - oder schließlich einer Verzweigungsadresse ADB, die unmittelbar in einem Adressenfeld am Ausgang des Mikrobefehlsregisters 120 verfügbar ist und am Eingang 4 anliegt.
  • Die Schaltstellung der Wechselschaltung 144 wird vom Adressenauswahlausgang SA des logischen Kreises 131 gesteuert, der verschiedene Eingangssignale berücksichtigt, um unter den möglichen Operationen entweder die Fortsetzung der Folge (Eingang 2), oder die bedingte Verzweigung an einer gegebenen Adresse im Programm oder den Aufruf eines gegebenen Unterprogramms (Eingang 4) oder schließlich die Rückkehr von einem Unterprogramm (Eingang 3) auszuwählen. Eine andere Möglichkeit besteht noch darin, in eine Unterbrechung auszuweichen (Eingang 1), wenn gewisse Eingangssignale des logischen Kreises geeignete logische Pegel besitzen, um eine prioritäre Unterbrechung zu berücksichtigen, die über die Schnittstelle 500 von außen kommt.
  • Die Schaltung für die Befehlsdekodierung und die Testmultiplexierung enthält den logischen Kreis 131, der Schnittstellensteuersignale ADINT, INIT, INT, START, ein Testbestätigungssignal VTST von dem nachfolgend beschriebenen Testmultiplexierkreis 133, das Taktsignal H und einen Teil des aktuellen Befehls empfängt und abhängig von diesen Eingangssignalen und dem aktuellen Befehl die nachfolgend angegebenen Ladesteuersignale und Bestätigungssignale ENTOP, ENACT, ENAR für den Rest des Befehlsdekodier- und Testmultiplexierkreises erzeugt, der in Fig. 3 gezeigt ist, sowie ein Wartesteuersignal "WAIT" für die Schnittstelle.
  • Der Programmspeicher 110 enthält alle Programme der Anordnung in einem Festwertspeicher, der also nicht von außen zugänglich ist und ein für alle mal beschrieben wurde. Der Ausgang dieses Speichers, der dem Befehl an der aktuellen Adresse entspricht, wird bei jedem Takt des Taktgebers vom Mikrobefehlsregister aufgrund einer Steuerung LDM übernommen, die vom Register 131 ausgeht. Ein Gatter 121 ist in der Anordnung vorgesehen, um eine gewisse Anzahl von Ausgängen des Programmspeichers zu kombinieren, ehe sie im Mikrobefehlsregisters eingespeichert werden, um die Dekodierung gewisser besonderer Befehle zu beschleunigen, wie z. B. der Eingangs-Ausgangs-Befehle, für die die Geschwindigkeit der Ausführung kritisch ist. Der auf dem Befehlsbus 125 verfügbare Befehl wird unmittelbar in der Folgerschaltung (Verzweigungsadressen ADB), im logischen Kreis 131 der Dekodierschaltung und auch im Rest der Schaltung zur Befehlsdekodierung und Testmultiplexierung verwendet, die in Fig. 3 dargestellt ist. Er steuert auch die Synchronisation SH des Taktgebers 200 und den Eingang/Ausgang des Kodierers-Dekodierers, INT/ über die Schnittstelle 500 (Fig. 7).
  • Fig. 3 zeigt eine Steuerkreis 132 für den internen Bus 600, der von einem Feld des Mikrobefehls gesteuert wird, dessen Ausgänge die Treiber oder Gatter mit drei Zuständen aktivieren kann, um auf dem internen Bus der Anordnung Daten von den verschiedenen Quellen anzubringen, die in dem dargestellten Beispiel von einem der in der Schnittstelle 500 enthaltenen Register, über die Signale SB&sub0; und SB&sub1;, von der arithmetischen und logischen Einheit 350 über den Ausgang SB&sub2; oder von einem der Ausgänge des Galois-Rechenwerks über den Ausgang SB&sub3; gebildet werden.
  • Ein Testmultiplexer 133 wählt abhängig von einem Feld des Mikrobefehls einen logischen Wert von mehreren aus, die die Werte charakteristischer Indikatoren des internen Zustands der Maschine sind. Der ausgewählte Pegel ist der Wert des logischen Tests VTST, der an den logischen Kreis 131 übertragen wird und, wenn der Test erfolgreich war, eine bedingte Abzweigung durchführen kann, bzw. verbietet, wenn der Test nicht erfolgreich war. Ein Indikatoreingang "1" (WAHR) liefert den Wert des Tests für die keinem Test unterworfenen Operationen.
  • Ein Top-Dekoder 134 erzeugt aufgrund eines Befehls an einem der Eingänge, der an den Ausgang ENTOP des logischen Kreises 131 angeschlossen ist und in Abhängigkeit von einer durch ein Feld des Mikrobefehls definierten Adresse ein logisches Signal auf einem seiner Ausgänge. Dieses logische Signal ist dazu bestimmt, eine der Baugruppen der Maschine zu steuern, beispielsweise das Einschreiben in Register des Dekodierkreises selbst (LD CONF-GA, LD CONF-AR), in die Schnittstellenregister (WRE, WRD) oder in die Register des Galois-Rechenwerks (LDCG, LDCA, LDCB), die Nullsetzung eines Akkumulators RAZ.ACC.CA, das Schreiben in einen Speicher des Galois-Rechenwerks (WRAM.GA) oder die Steuerung einer Kippstufe (SET und RESET). Ein Top-Impulsgenerator 135, bestehend aus einer Gruppe logischer Gatter, hat ungefähr dieselbe Funktion wie der Top-Dekoder 134 aufgrund eines Befehls, der an seine mit den Ausgängen EN AR und EN ACT des Kreises 131 verbundenen Eingängen angelegten Befehls, aber er wird unmittelbar von einem Feld des Mikrobefehls gesteuert, um zugleich verschiedene Impulse für verschiedene Register oder verschiedene Speicher der Maschine zu erzeugen (WRAM.AR, WREG.AR, LD-ACC, EN.CA, EN.CB). Die Gesamtheit des Top-Dekodierers 134 und des Top-Impulsgenerators 135 erlaubt es, in einer einzigen Operation verschiedene Schreib-, Nullsetzungs- oder Ladeoperationen durchzuführen.
  • Ein Galois-Konfigurationsregister 136 speichert aufgrund eines Befehls LD.CONF.GA (Ausgang des Kreises 134) acht Bits des Mikrobefehls, die ein Konfigurationswort des Galois- Rechenwerks bilden. In gleicher Weise dient ein Rechenwerkkonfigurationsregister 137 aufgrund eines Befehls CONF.AR (Ausgang des Kreises 134) der Speicherung eines Worts von acht Bits, das die Konfiguration des arithmetischen Rechenwerks wiedergibt. Das Konfigurationswort eines Rechenwerks steuert die Stellung verschiedener Wechselschaltungen im Inneren dieses Rechenwerks, definiert die Art der vom Rechenwerk durchzuführenden Operation durch einen charakteristischen Kode, beispielsweise Addition oder Multiplikation, und definiert, beispielsweise wenn das Rechenwerk einen Arbeitsspeicher enthält, die Adressenquellen des Speichers. Eine Wechselschaltung 138 ermöglicht es, als Konfigurationswort CONF.GA des Galois- Rechenwerks entweder den Ausgang des Registers 136 (Stellung 1) oder direkt einen Teil des Mikrobefehls zu verwenden (Stellung 0), wodurch es möglich ist, direkt für einen bestimmten gegebenen Befehl das Galois-Rechenwerk ausgehend von einem Mikrobefehl zu steuern. Die Wechselschaltung 139 hat genau dieselbe Rolle für die Konfiguration CONF-AR des arithmetischen Rechenwerks. Diese Wechselschaltungen 138 und 139 werden durch die Ausgänge Q und einer Kippstufe 150 gesteuert, deren Eingänge die Signale SET und RESET des Top-Dekoders 134 zugeführt erhalten, über logische UND-Gatter 151 und 152, denen außerdem ein Befehlsbit zugeführt wird und die verwendet werden, um in einem gegebenen Augenblick eines der beiden Rechenwerke, das Galois- oder das arithmetische Rechenwerk auszuwählen, das unmittelbar von dem Mikrobefehl konfiguriert werden kann.
  • Fig. 4 zeigt das arithmetische Rechenwerk, dessen Aufgabe darin besteht, einfache arithmetische Operationen auf ganze vorzeichenbehaftete Zahlen anzuwenden, vorliegend die Addition und die Subtraktion, einfache logische Operationen auf Wörter von acht Bits oder Bytes anzuwenden, wobei diese Operationen Oder-Operationen Bit für Bit und Und-Operationen Bit für Bit sind, um Bits auf 1 oder 0 zu setzen oder deren Wert zu testen. Dieses arithmetische Rechenwerk setzt sich aus einem Arbeitsspeicher mit Zweifachzugriff 310 zusammen, der zwei Adresseneingänge ADA und ADB, einen Dateneingang, über den in den Speicher aufgrund der Schreibsteuerung WRAM-AR ein von einer Wechselschaltung 320 aus vier nachfolgend erläuterten Quellen ausgewählter Wert eingeschrieben wird, und zwei Ausgänge A und B enthält. Eine Adressenwechselschaltung 330 mit zwei Stellungen kann als Adresseneingang A des Speichers den Ausgang eines Akkumulatorregisters 380 (Stellung 1) oder aber eine in dem vom Befehlsbus 125 kommenden Mikrobefehl enthaltene Konstante auswählen (Stellung 0). In gleicher Weise kann eine Adressenwechselschaltung 340 als Adresseneingang B des Speichers entweder den Ausgang des Registers 380 (Stellung 1) oder eine andere in dem vom Befehlsbus 125 kommenden Mikrobefehl eingeschriebene Konstante auswählen (Stellung 0).
  • Die arithmetische und logische Einheit 350, die die oben erwähnten Operationen durchführen soll, besitzt zwei Eingänge E1 und E2. Der Eingang E1 wird vom Ausgang eines Schalters 360 gebildet, der zwischen dem Ausgang des Registers 380 oder dem Ausgang A des Arbeitsspeichers mit Zweifachzugriff wählen kann. Der Eingang E2 ist an den Ausgang einer Wechselschaltung 370 angeschlossen, die zwischen einer auf dem Befehlsbus 125 verfügbaren mikroprogrammierten Konstanten und dem Ausgang B des arithmetischen Arbeitsspeichers wählen kann. Die Wechselschaltungen 320, 330, 340, 360 und 370 sowie der Typ der von der arithmetischen und logischen Einheit durchzuführenden Operation werden von dem Konfigurationswort CONF-AR gesteuert. Der Ausgang der arithmetischen und logischen Einheit ist mit dem internen Bus 600 über ein Gatter mit drei Zuständen 390 verbunden, das von SB&sub2; gesteuert wird und ist an einen ersten Eingang der Wechselschaltung 320 angeschlossen. Der Befehlsbus 125, der Ausgang B des Arbeitsspeichers 310 und der interne Bus 600 sind je an einen der Eingänge 2, 3 und 4 der Wechselschaltung 320 angeschlossen. Der Ausgang dieser Wechselschaltung ist mit dem Dateneingang des Speichers 310 und auch mit dem Eingang des Registers 380 für ein eventuelles Einschreiben in dieses Register aufgrund einer Steuerung WREG-AR und dann für eine Übertragung an einen der Adresseneingänge A und B des Arbeitsspeichers 310 verbunden (über die Wechselschaltungen 330 und 340). Schließlich liefert die arithmetische und logische Einheit 350 noch drei Indikatorbits TPAIR, TNEG und TNUL, die vom Testmultiplexer 133 (Fig. 3) überprüft werden können und angeben, ob das Ergebnis der in dem augenblicklichen Befehl gewünschten Operation geradzahlig, negativ oder null ist.
  • Fig. 5 zeigt das Galois-Rechenwerk, das das Herz des Systems bildet und skalare Operationen oder Polynomoperationen auf Elemente eines Galois-Körpers anwendet, die auch M-fach Zeichen genannt werden. Es enthält einen Arbeitsspeicher mit Zweifachzugriff 410 und einem Dateneingang A, zwei Adresseneingängen A und B und zwei Ausgängen A und B. Der Dateneingang ist mit dem Ausgang einer Wechselschaltung 420 verbunden, die aus vier möglichen Quellen die an der Adresse A im Speicher aufgrund einer Schreibsteuerung WRAM-GA einzuschreibenden Informationen auswählen kann. Ein erster Eingang der Wechselschaltung ist mit dem Befehlsbus 125, ein zweiter Eingang mit dem internen Bus 600 über eine Maskenkreis 479 verbunden, während die Anschlüsse der beiden anderen Eingänge nachfolgend erläutert werden. Die Adresse A des Speichers wird von einer Wechselschaltung 430 zwischen einem vom Befehlsbus 125 gelieferten Wert (Stellung 0) und dem Ausgang CA eines Aufwärts- Abwärts-Zählers 450 ausgewählt (Stellung 1).
  • In gleicher Weise ist der Adresseneingang B mit dem Ausgang einer Wechselschaltung 440 verbunden, die zwischen einem vom Befehlsbus gelieferten Wert (Stellung 0) oder einem vom Ausgang CB eines Abwärtszählers 460 gelieferten Wert wählen kann (Stellung 1). Die Stellungen der Wechselschaltungen 420, 430, 440 sowie die Zählrichtung des Aufwärts-Abwärts-Zählers 450 (Eingang V) werden durch das Konfigurationswort CONF.GA des Galois-Rechenwerks gesteuert. Die Zähler 450 und 460 können einzeln geladen und auf einen Wert von jeweils neun Bits voreingestellt werden aufgrund einer Steuerung durch die Signale LD.CA, EN.CA und LD.CB, EN.CB, die vom Dekodierkreis 130 (Fig. 3) geliefert werden. Die sieben Bits geringer Wichtung werden vom internen Bus 600 entnommen und stammen im allgemeinen vom Ausgang der arithmetischen und logischen Einheit des arithmetischen Rechenwerks, während die beiden Bits höchster Wichtung vom Befehlsbus 125 entnommen werden. Die sieben Bits geringer Wichtung der Ladeadresse der Zähler bilden nämlich ganz allgemein den Grad eines Polynoms, der im arithmetischen Rechenwerk berechnet wird, und die Zähler werden im wesentlichen in den Polynom-Operationen zur Bestimmung des Werts eines Polynoms oder eines Koeffizienten eines gegebenen Grads des Produkts zweier Polynome verwendet.
  • Das Galois-Rechenwerk enthält weiter einen Multiplizierer 470, dessen erster Eingang vom Ausgang A des Arbeitsspeichers und dessen zweiter Eingang vom Ausgang einer Wechselschaltung 482 gespeist wird, welche entweder den Ausgang B des Arbeitsspeichers 410 oder den Ausgang eines Akkumulatorregisters 481 auswählt. Dieser Multiplizierer ist programmierbar gemäß den verwendeten Galois-Körper, dessen Identität in Form des Grads m seines erzeugenden Polynoms vom internen Bus 600 entnommen und in einem Register 478 aufgrund einer Ladesteuerung LD.CG gespeichert und an den Steuereingang m des Multiplizierers übertragen wird. Dieses Register 478 steuert auch den Maskenkreis 479, der die Aufgabe hat, in an seinen Eingang angelegten und vom internen Bus 600 kommenden Wörtern aus sieben Bits die nicht verwendeten höherwertigen Bits automatisch auf Null zu setzen, wenn die Länge der aktuellen Zeichen weniger als sieben Bits beträgt. Beispielsweise müssen bei Verwendung eines Galois-Körpers mit Zeichen von vier Bits die drei höchstwertigen Bits unbedingt auf Null gesetzt werden, damit der Multiplizierer und die anderen internen Systeme des Galois-Rechenwerks richtig arbeiten. Der Ausgang des Multiplizierers 470 ist an einen der beiden Eingänge eines Addierers 480 im Galois-Körper angeschlossen, während der zweite Eingang des Addierers mit dem Ausgang einer Wechselschaltung 483 verbunden ist. Der Ausgang des Addierers ist an den Eingang des Akkumulatorregisters 481 und an einen der beiden Eingänge einer Wechselschaltung 484 angeschlossen. Der zweite Eingang der Wechselschaltung 484 ist mit dem Ausgang des Multiplizierers 470 verbunden. Die Wechselschaltung 484 liefert an den vierten Eingang der Wechselschaltung 420 das Ergebnis einer Operation, die entweder eine Addition in einem Galois-Körper (Ausgang des Addierers 480) oder eine Multiplikation in einem Galois-Körper sein kann (Ausgang des Operators 470). Der Ausgang des Akkumulatorregisters 481 ist einerseits mit einem Eingang der Wechselschaltung 483 verbunden, deren anderer Eingang an den Ausgang B des Arbeitsspeichers 410 angeschlossen ist, andererseits mit dem dritten Eingang der Wechselschaltung 420. Das Akkumulatorregister 481 kann unter Steuerung durch das Signal LD-ACC geladen werden und unter Steuerung durch das Signal RZ.ACC auf Null gesetzt werden, die beide vom Dekodierkreis 130 geliefert werden, insbesondere während der Operationen zur Berechnung von Polynomwerten. Die aus dem Multiplizierer 470, dem Addierer 480 und dem Akkumulator 481 gebildete Baugruppe kann mit Hilfe der Wechselschaltungen 482, 483, 484 aufgrund des Konfigurationsworts CONF.GA des Galois-Rechenwerks konfiguriert werden, um Operationen wie die Multiplikation eines Polynoms mit einem Binom, die Berechnung des Werts eines Polynoms, die Berechnung des Werts eines Koeffizienten gegebenen Grads des Produkts zweier Polynome oder auch Operationen an skalaren Größen wie z. B. die Multiplikation oder die Addition durchführen.
  • Eine Gruppe von Gattern mit drei Zuständen 490 ist mit ihrem Eingang an den Ausgang B des Arbeitsspeichers 410 und mit ihrem Ausgang an den internen Bus 600 angeschlossen und wird vom Ausgang SB&sub3; des Steuerkreises 132 für den internen Bus (siehe Fig. 3) gesteuert. Zwei Zustandsvariable TVAL und TBIT werden ebenfalls vom Ausgang B des Speichers 410 entnommen und an den Testmultiplexer 133 (Fig. 3) angelegt. Die Wechselschaltung 420, die den Eingang A des Arbeitsspeichers beaufschlagt, kann zwischen vier Informationsquellen auswählen, die dann in den Speicher eingeschrieben werden: Die Informationen können entweder eine Konstante sein, die unmittelbar von einem Feld des Mikrobefehls stammt, oder auf dem internen Bus 600 übertragene Daten oder der Ausgang des Akkumulators 481 oder schließlich der Ausgang des Multiplexers 470 oder der Ausgang des Addierers 480, je nach Stellung der Wechselschaltung 484. Dies ermöglicht alle Speicheroperationen, die während des Kodierens und des Dekodierens erforderlich sind.
  • Wie oben angegeben, liefert das Galois-Rechenwerk dem Testmultiplexer verschiedene Indikatorsignale, die den Ablauf des Programms beeinflussen:
  • - einen Indikator TRS, der vom Register 478 ausgeht und einerseits direkt und andererseits über einen Inverter zum Multiplexer führt, was bedeutet, daß die Operationen auf RS- Kodes bzw. auf BCH-Kodes angewandt werden,
  • - einen Nulldurchgangsindikator TCA des Zählers 450 und einen Nulldurchgangsindikator TCB des Abwärtszählers 460,
  • - die Signale TACC-NUL und TACC-BIN am Ausgang des Akkumulators 481, die angeben, ob der Inhalt des Akkumulators Null ist oder ob er 1 oder 0 anzeigt, d. h. rein binär ist,
  • - die beiden Bits TBIT und TVAL am Ausgang B des Speichers 410, die angeben, ob das Ausgangswort des Arbeitsspeichers ein Bit ist und ob das Ausgangswort des Arbeitsspeichers bestätigt ist. Im Arbeitsspeicher wird nämlich jedem Zeichen einer Länge von bis zu sieben Bits ein achtes Bit hinzugefügt, das angibt, ob das Zeichen bestätigt ist oder nicht; dieses achte Bit wird für die Lokalisierung der Löschungen verwendet.
  • Fig. 6 zeigt ein Ausführungsbeispiel des in den verschiedenen in dieser Ausführungsform verwendbaren Galois-Körpern programmierbaren Multiplizierers 470. Beispielsweise besitzen die verschiedenen verwendeten Galois-Körper 16 oder 32 oder 64 oder 128 Elemente und können durch Polynome des Grads m höchstens gleich 7 erzeugt werden. Der Multiplizierer enthält in diesem Fall eine Gruppe von m² = 7² = 49 UND-Gattern 471, mit der alle Produkte Bit für Bit der beiden Operanden A und B erzeugt werden können. Wenn also
  • A = a&sub0; + a&sub1; X + a&sub2; X² + ...ai Xi + ...a&sub6; X&sup6; und
  • wenn B = b&sub0; + b&sub1; X... + bj Xj + ...b&sub6; X&sup6;,
  • dann liegen alle Produkte ajbji und j zwischen 0 und 6. Die Ausgänge dieser Gatter werden zu einer Gruppe von Exklusiv- ODER-Gattern 472 gelenkt, mit der die 2m-1 Ausdrücke verschiedener Grade des Produkts berechnet werden. Die Anzahl dieser Begriffe Dq mit q = i+j ist höchstens 13, von q = 0 bis q = 12 für CG(128 = 2m=7) und sind stets dieselben, nämlich:
  • - D&sub0;= a&sub0; + b&sub0;
  • - D&sub1; = a&sub0; b&sub1; + a&sub1; b&sub0;
  • - D&sub2; = a&sub0; b&sub2; + a&sub1; b&sub1; + a&sub2; b&sub0;
  • - . . ..........
  • - D&sub1;&sub1; = a&sub5; b&sub6; + a&sub6; b&sub5;
  • - D&sub1;&sub2; = a&sub6; b&sub6;.
  • In einer Ausführungsform, die Exklusiv-ODER-Gatter mit zwei Eingängen verwendet, enthält diese Gruppe 472 36 Gatter. Die 13 Ausgänge dieser Gruppe sind an die Eingänge von logischen Kreisen 473, 474, 475 bzw. 476 angeschlossen, die den Galois-Körpern CG(16), CG(32), CG(64) und CG(128) zugeordnet sind, die sie so kombinieren, daß ihre Ausgänge tatsächlich im betrachteten Galois-Körper das Produkt der Argumente A und B darstellen unter Beibehaltung der Eigenschaften der Elemente dieser Gruppe. Für CG(M = 16 = 2m=4) sind die vier Begriffe des Grades 0 bis 3 Funktionen der 2m-1 Begriffe Dq:
  • P&sub0; = D&sub0; + D&sub4;; P&sub1; = D&sub1; + D&sub4; + D&sub5;; P&sub2; = D&sub2; + D&sub5; + D&sub6;; P&sub3; = D&sub3; + D&sub6;.
  • Für CG(32) sind die m = 5 Begriffe folgende:
  • P&sub0; = D&sub0; + D&sub5; + D&sub8;; P&sub1; + D&sub1; + D&sub6;; P&sub2; = D&sub2; + D&sub5; + D&sub7; + D&sub8;; P&sub3; = D&sub3; + D&sub6; + D&sub8;; P&sub4; = D&sub4; + D&sub7;.
  • Für CG(64) sind die m = 6 Begriffe folgende:
  • P&sub0; = D&sub0; + D&sub6;; P&sub1; = D&sub1; + D&sub6; + D&sub7;; P&sub2; = D&sub2; + D&sub7; + D&sub8;; P&sub3; = D&sub3; D&sub8; + D&sub9;; P&sub4; = D&sub4; + D&sub9; + D&sub1;&sub0;; P&sub5; = D&sub5; + D&sub1;&sub0;
  • und für CG(128) sind die m = 7 Begriffe folgende:
  • P&sub0; = D&sub0; + D&sub7; + D&sub1;&sub1;; P&sub1; = D&sub1; + D&sub8; + D&sub1;&sub2;; P&sub2; = D&sub2; + D&sub9;; P&sub3; = D&sub3; + D&sub7; + D&sub1;&sub0; + D&sub1;&sub1;; P&sub4; = D&sub4; + D&sub8; + D&sub1;&sub1; + D&sub1;&sub2;; P&sub5; = D&sub5; + D&sub9; + D&sub1;&sub2;; P&sub6; = D&sub6; + D&sub1;&sub0;.
  • Die Wahl der verwendeten Ausgänge erfolgt durch den Multiplexer 477 abhängig von der Identität m des Galois-Körpers, die vom Ausgang des Registers 478 geliefert wird.
  • Fig. 7 zeigt ein Ausführungsbeispiel des Schnittstellenkreises, der die Verbindung nach außen herstellt und von einem Mikroprozessor und/oder einem Dateneingabe-Ausgabesystem in Reihe sowie vom Rest des Schaltkreises gebildet wird.
  • Eine Gruppe von Kippstufen und Gattern bildet einen Kreis 510 zur Erzeugung und Synchronisation von logischen Signalen. Er erzeugt und synchronisiert die verschiedenen logischen Signale, die für den Betrieb der Schnittstelle und den Dialog mit dem Steuerkreis 100 (Fig. 1, 2 und 3) sowie für die Abfolgesteuerung erforderlich sind, insbesondere die Signale, die für den Befehlsdekodierkreis 130 benötigt werden (INIT, INT, START). Er empfängt das Wartesteuersignal WAIT, das von diesem Kreis ausgeht, sowie das Eingangs-Ausgangssteuersignal INT/OUT. Einer der Eingänge dieses logischen Kreises 510 ist an den Ausgang eines Pufferregisters 520 angeschlossen, der mit den Vorderflanken des äußeren Taktsignals E des Mikroprozessors die klassischen Schnittstellensignale speichert, wie z. B. die Chip-Selektionssignale CS und CS und die Lese-Schreibsignale für das interne Register R/W und RS. Eine Gruppe von Kippstufen 531, 532, 533, die vom äußeren Serientaktsignal CK sowie vom Taktsignal H des Kodierers-Dekodierers gesteuert werden, hat die Aufgabe, die am Serieneingang DIN des Kreises (siehe Fig. 1) ankommenden Daten wieder in Form zu bringen. Ebenso wie die Serieneingangsdaten synchronisiert werden, werden auch die über parallelen Zugriff über den bidirektionalen Bus 700 des Mikroprozessors verfügbaren Daten in einem Eingangspufferspeicher 540 aufgrund einer Steuerung durch die ansteigenden Flanken des Taktsignals E des Mikroprozessors registriert. Während diese Daten eine vom Mikroprozessor kommende Steuerung bilden, werden sie auch in einem Register 550 gespeichert, das Steuerregister genannt wird und dessen Ladevorgang von einem Ausgang LD.RC des logischen Kreises 510 gesteuert wird.
  • Die Eingangsdaten können auf den internen Bus 600 über eine Wechselschaltung 560 und ein Gatter mit drei Zuständen 570 übertragen werden, das vom Signal SB&sub0; des Steuerkreises 132 für den internen Bus stammt und auch an den logischen Kreis 510 gelangt. Diese Wechselschaltung 560 ist mit ihren Eingängen an den Ausgang des Eingangspufferregisters 540 und an den Ausgang der wieder synchronisierten Kippstufe 533 angeschlossen. Einer dieser beiden Eingänge überträgt jeweils Eingangsdaten auf den internen Bus 600 aufgrund einer Steuerung der Wechselschaltung durch ein Auswahlsignal SEL, das vom logischen Kreis 510 stammt. Für die von der Kippstufe 533 kommenden Daten wird ein einziges Bit von der Kippstufe geliefert, und es ist notwendig, sechs ergänzende Bits des Werts 0 und ein höchstwertiges Bit des Werts 1 zu liefern, um anzugeben, daß das Bit bestätigt ist. Dies erfolgt durch Verdrahtung an den Eingängen MSB. Der Ausgang des Steuerregisters 550 ist an einen Eingang des logischen Kreises 510 angeschlossen, da der Betrieb dieses logischen Kreises vom letzten empfangenen Steuerwort abhängt. Der Betrieb der Eingänge und Ausgänge hängt nämlich von dem Steuerwort ab: Die vom logischen Kreis 510 erzeugten Signale sind andere, wenn der Eingang in Serienform erfolgt, als wenn der Eingang in Parallelform erfolgt. Der Ausgang des Registers 550 kann auch am Bus 600 über ein Gatter mit drei Zuständen 580 liegen, das vom Signal SB&sub1; des Steuerkreises 132 für den internen Bus stammt, und gewisse Bits AD.INT können unmittelbar an den logischen Kreis 131 des Befehlsdekodierkreises 130 übertragen werden.
  • In der anderen Richtung können zwei Arten von Daten nach außen geliefert werden; diese Daten sind auf dem internen Bus 600 in gewissen Augenblicken des Betriebs des Kodierers- Dekodierers verfügbar. Wenn sie den Zustand des Kreises angeben, werden sie in einem Zustandsregister 591 gespeichert, und wenn sie nach außen zu liefernde Daten wie z. B. Zeichen nach der Kodierung oder Zeichen nach der Dekodierung darstellen, dann werden sie im Datenregister 592 gespeichert. Die Dateneingänge dieser Register sind also mit dem internen Bus verbunden und ihre Steuereingänge empfangen die Signale WRE und WRD vom Top-Dekoder 134 des Befehlsdekodierkreises 130.
  • Der Mikroprozessor kann direkt den Inhalt des Zustandsregisters 591 und von einem Teil des ein Zustandswort bildenden Steuerregisters über ein Gatter mit drei Zuständen 595 lesen, dessen Dateneingang an den Ausgang des Registers 591 und an den Ausgang des Registers 550 angeschossen ist und dessen Steuereingang ein Steuersignal vom logischen Kreis 510 empfängt. Dies kann ohne jeden Einfluß auf den Betrieb des Kodierers-Dekodierers erfolgen. Das Auslesen des Zustandsworts, das auf dem Bus des Mikroprozessors übertragen wird, ist transparent. Ein Bit des Zustandsworts am Ausgang des Registers 591 kann auf eine Ausgangsverbindung E/S über ein Verstärkungsgatter 596 übertragen werden, wenn die Eingänge/Ausgänge in Serie erfolgen. Dies teilt einem Modem mit, das mit dem Kodierer/Dekodierer Nachrichten austauscht, ob die gewünschte Operation, beispielsweise eine Kodierung gerade läuft oder gerade beendet wurde.
  • Das Schema der Fig. 7 zeigt, daß das Zustandswort sich aus einer gewissen Anzahl von Bits zusammensetzt, die durch den Kreis selbst über den internen Bus 600 eingestellt werden, und aus einem Teil der Steuerbits am Ausgang des Steuerregisters 550, die unverändert nach außen wieder ausgesandt werden. Dies erspart dem Mikroprozessor eine Speicherung der Steuerungen, die er zum Schnittstellenkreis übertragen hat, da diese im Register 550 registriert sind.
  • Der Datenausgang zum Mikroprozessor erfolgt über ein Gatter mit drei Zuständen 597, das von einem vom logischen Kreis 510 kommenden Ausgangssteuersignal gesteuert wird und an den externen Bus 700 des Mikroprozessors den Inhalt des Registers 592 ausgibt, in dem die Information vorher gespeichert wurde. Das Bit mit der geringsten Wichtung in dieser Information ist unmittelbar an einen Ausgangsanschluß DOUT des Schnittstellenkreises über einen Verstärker 598 für die Serienausgänge verfügbar.
  • Schließlich kann der Mikroprozessor auch im Unterbrechungsmodus arbeiten, um zu vermeiden, daß dauernd der Zustand des Kreises daraufhin untersucht werden soll, ob ein Zugriff zu den von einer gewünschten Kodierung oder Dekodierung stammenden Daten möglich ist. Hierzu sieht man ein Unterbrechungsgeneratorsystem vor, das maskierbar ist und von einem Unterbrechungsgenerator 593 gebildet wird, dessen Ausgang an ein Gatter 594 mit offenem Kollektor angeschlossen ist, welches das Unterbrechungssignal IR liefert. Der Unterbrechungsgenerator ist mit einem Eingang an den Ausgang des Zustandsregisters 591 und mit einem Steuereingang an einen Ausgang des logischen Kreises 510 angeschlossen und wird durch den Zustandswechsel bestimmter Bits des im Register 591 gespeicherten Zustandsworts gesteuert.
  • Die Betriebsweise des Kreises wird anhand eines konkreten Beispiels erläutert. Es soll beispielsweise der Wert eines Polynoms des Grads n-1 nach der Methode von HORNER berechnet werden, wobei diese Berechnung beispielsweise in der Berechnung der Syndrome Sp während einer Dekodierung implementiert wird. Eine solche Berechnung erfolgt in n Taktschritten gemäß folgender Formel:
  • a&sub0; + a&sub1; X + a&sub2; X² + . . . + an-1 Xn-1
  • - a&sub0; X (a&sub1; + X (a&sub2; + . . . + X (an-2 + an-1 X)...))
  • - 1. Schritt an-1
  • - 2. Schritt an-1 X + an-2
  • - 3. Schritt (an-1 X + an-2) X + an-3
  • - 4. Schritt (an-1 X² + an-2 X + an-3) X + an-4
  • - . . .
  • - (n-1)ter Schritt (an-1 Xn-3 + an-2 Xn-4 + . . . + a&sub2;) X + a&sub1;
  • - n-ter Schritt (an-1 Xn-2 + an-2 Xn-3 + . . . a&sub2; X + a&sub1;) X + a&sub0;.
  • Diese Operation benutzt sowohl das arithmetische wie das Galois-Rechenwerk, so daß die Beziehungen zwischen diesen beiden Rechenwerken klar werden. Es sei beispielsweise angenommen, daß der Grad n-1 des Polynoms im Arbeitsspeicher 310 des arithmetischen Rechenwerks an der Adresse 5 gespeichert ist und daß andererseits die n Koeffizienten des Polynoms a&sub0;, a&sub1;, . . . an-1 im Arbeitsspeicher 410 des Galois-Rechenwerks auf der dritten Seite gespeichert sind, d. h. der Seite, deren zwei Bits hoher Wichtung beide den Wert 1 haben, und zwar ab der Adresse 0 bis zur Adresse n-1 dieser Seite.
  • Der Ablauf dieser Operationen läßt sich folgendermaßen beschreiben.
  • Zuerst wird der Abwärtszähler 460 mit dem Wert n-1, dem Grad des Polynoms geladen. Hierzu kann dieser Wert n-1 auf den Bus 600 durch das Aktivierungssignal SB&sub2; des Gatters mit drei Zuständen 390 gelegt werden, das am Ausgang der arithmetischen Einheit 350 liegt. Die beiden Eingänge E1 und E2 dieser arithmetischen und logischen Einheit (UAL) sind über Wechselschaltungen 360 und 370 an die Ausgänge A und B des arithmetischen Speichers 310 angeschlossen. Die Adressen A und B werden beide von den Wechselschaltungen 330 und 340 auf denselben Wert 5 durch die mikroprogrammierte Konstante ausgewählt, wobei sich an dieser Adresse der Grad des Polynoms befindet. Die durch das Konfigurationswort CONF.AR des arithmetischen Rechenwerks in der arithmetischen Einheit 350 ausgewählte Operation ist die Oder-Operation. So liefert ihr Ausgang auf dem internen Bus 600 eine Zahl, die Bit für Bit das Ergebnis der Oder-Verknüpfung des Inhalts des Speichers 310 an der Adresse 5 mit sich selbst darstellt, d. h. der Zahl n-1 selbst. Der Abwärtszähler 460 des Galois-Rechenwerks wird dann mit einem Wort von 9 Bits geladen, dessen sieben geringwertige Bits der Inhalt des internen Bus sind, d. h. der Grad n-1 des Polynoms, der zugleich die Adresse des Koeffizienten höchsten Grades an-1 des Polynoms ist, während die beiden Bits höchster Wichtung den Wert 3 bilden, was die Nummer der Seite angibt, auf der die Koeffizienten ai des zu berechnenden Polynoms liegen, wobei der Wert 3 unmittelbar am Ausgang des Befehlsbus 125 verfügbar ist.
  • Die nächste Operation besteht darin, den Akkumulator des Galois-Rechenwerks 481 auf Null zu setzen, der am Ende der Operation den Wert des Polynoms enthalten wird. Eine andere Vorbereitungsphase der Operation besteht darin, das Register 478 des Galois-Rechenwerks und das entsprechende Konfigurationsregister 136 des Befehlsdekodierkreises 130 (Fig. 2) so zu laden, daß im Galois-Rechenwerk
  • - die Wechselschaltung 482 mit ihrem Eingang an den Ausgang des Akkumulators angeschlossen ist,
  • - die Wechselschaltung 483 mit ihrem Eingang an den Ausgang B des Arbeitsspeichers 410 führt,
  • - der Adresseneingang A des Arbeitsspeichers mit Zweifachzugriff 410 (der an den Ausgang der Wechselschaltung 430 angeschlossen ist) mit dem Befehlsbus 125 verbunden ist, um eine mikroprogrammierte Konstante zu empfangen, die die Adresse des Werts der Unbekannten X ist, für die das Polynom berechnet werden soll,
  • - und der Adresseneingang B des Arbeitsspeichers 410 über die Wechselschaltung 440 an den Ausgang des Abwärtszählers 460 führt.
  • Von diesem Augenblick an erfolgt die Berechnung des Werts des Polynoms in n Elementaroperationen, die je enthalten
  • - die Berechnung des Produkts der Unbekannten X mit dem alten Wert des Akkumulators, der bei der ersten Operation 0 ist, bei der zweiten an-1, bei der dritten (an-1 X + an-2) usw;
  • - die Berechnung der Summe des berechneten Produkts mit dem Koeffizienten, der am Ausgang B des Arbeitsspeichers vorliegt (an-1, an-2 . . . a&sub0; für die n aufeinanderfolgenden Operationen),
  • - ein Laden des Akkumulators über den Ausgang des Addierers,
  • - ein Abwärtszählen des Abwärtszählers 460.
  • Der Vorgang endet, wenn die sieben Bits geringer Wichtung des Zählers 460 null sind, was der Folgerschaltung durch eine Aktivierung des Tests des Zustands null TCB des Abwärtszählers 460 mitgeteilt wird. In diesem Augenblick ist die Berechnung des Polynoms beendet und sein Wert findet sich im Akkumulator. Dieser Wert kann im Speicher 410 gespeichert werden, indem die Wechselschaltung 420 in die Stellung 3 zum Ausgang des Akkumulators 481 gesetzt wird und indem der Wert an einer Adresse eingeschrieben wird, die am Ausgang der Wechselschaltung 430 verfügbar ist und entweder durch eine mikroprogrammierte Konstante oder auch durch den laufenden Inhalt des Aufwärts-Abwärtszählers 450 definiert ist. Diese letztgenannte Lösung wird gewählt, wenn man die Syndrome Di berechnet, die man in aufeinanderfolgenden Adressen des Arbeitsspeichers 410 für eine spätere Weiterverarbeitung ablegt, wenn eine Dekodierung von außen angefordert worden war.
  • Die genauen Funktionen der verschiedenen den oben beschriebenen Kodierer-Dekodiererkreis bildenden Module sind nun klargeworden.
  • Die Folgerschaltung 140 mit dem zugeordneten Festwertspeicher 110 übernimmt die Steuerung der Eingangs/Ausgangsoperationen bei der Kodierung und der Dekodierung. Hierzu besitzt die Folgerschaltung einen beschränkten Satz von Befehlen, unter denen man neben den klassischen Befehlen zur Steuerung der Durchführung der Operationen in ihrer Folge andere Befehle findet, die steuern:
  • - die Verzweigung, den Aufruf eines Unterprogramms (in einer einzigen Ebene), die Rückkehr eines Unterprogramms, wobei diese Verzweigungen bedingt oder unbedingt erfolgen können,
  • - Befehle, die die bedingte Durchführung von Operationen steuern,
  • - Befehle, die die wiederholte Durchführung von Operationen steuern, wobei ein einziger Befehl beispielsweise die Berechnung eines Polynoms wie oben dargelegt veranlassen kann,
  • - das Warten am Eingang und Ausgang.
  • Die Folgerschaltung ist auch so ausgebildet, daß sie auf unmittelbar verdrahtete Unterbrechungen antworten kann, wobei die drei ersteren INIT, INT und START der Ankunft einer äußeren Steuerung entsprechen und über die Schnittstelle übertragen werden, während die vierte Unterbrechung VTST der Testfunktion des Kreises entspricht und vom Testmultiplexer 133 des Kreises 130 zur Dekodierung der Befehle und zur Testmultiplexierung stammt.
  • Das Format der Befehle ist für die Anwendung optimisiert und die Bedeutung der verschiedenen Felder eines gegebenen Befehls hängt von ihrer Art ab. Ein gleiches Feld kann in einem gegebenen Zeitpunkt eine Speicheradresse sein oder den Wert einer Konstanten enthalten oder auch Teil einer Abzweigungsadresse sein usw. Fig. 8 ist ein Beispiel für das Format der Befehle, die vom Programmspeicher ausgegeben werden können. Die Befehle sind über drei Bytes kodiert und in acht Typen aufgeteilt, deren Kodes durch die drei letzten Bits des Befehls gegeben werden, die ihrerseits in vier Gruppen aufgeteilt sind. Die drei einen Befehlstyp charakterisierenden Bits werden im logischen Kreis 131 zur Erzeugung der Steuersignale verwendet.
  • Die Bits 17 bis 20 eines Mikrobefehls sind der Steuerkode entweder des Top-Dekoders 134 oder des Testmultiplexers 133, je nach der entsprechenden Gruppe von Befehlen, die an den Eingang des Dekoders 134 für die Gruppe 1 und an den Eingang des Multiplexers 133 für die Gruppe 2 angelegt ist. Die Bits 9 bis 16 eines Mikrobefehls sind Daten, die entweder Konfigurationen der Rechenwerke, nämlich die im Register 136 gespeicherte Konfiguration des Galois-Rechenwerks, oder die im Register 137 gespeicherte Konfiguration des arithmetischen Rechenwerks, oder die Adressen charakterisieren, die an die Adresseneingänge ADA oder ADB der Speicher 310 oder 410 angelegt werden, oder schließlich Konstante charakterisieren, die an die Eingänge der Speicher mit Zweifachzugriff 310 oder 410 über die Wechselschaltungen 320 (Eingang 2) bzw. 420 (Eingang 1) angelegt werden, wobei die Bedeutung dieser Bits vom Typ und der Gruppe der Befehle (Gruppe 1 und Gruppe 2) abhängt. Für diese selben Gruppen 1 und 2 werden die Bits 7 und 8 an den Steuereingang des Top-Impulsgenerators 135 angelegt. Für die Befehle der Gruppe 3 mit den Typen 4 und 5 bilden die Bits 7 bis 16 Verzweigungsadressen, die an den Eingang 4 der Wechselschaltung 144 der Folgerschaltung angelegt sind und Verzweigungsadressen im Programmspeicher 110 bezeichnen.
  • Für die drei Gruppen 1, 2 und 3 sind die Bits 4 bis 6 zur Steuerung des Galois-Rechenwerks bestimmt und werden an den Top-Dekoder 135 angelegt. Für diese drei Gruppen sind die Bits 2 und 3 auch ein Steuerkode für den Steuerkreis des internen Bus 132. Schließlich wird das Bit 1 an die UND-Gatter 151 und 152 angelegt und das Bit 0 wird für die Steuerung der Geschwindigkeit des Taktgebers SH verwendet.
  • Die Befehle der Gruppe 4, entsprechend dem Typ 8 und charakterisiert durch den Kode des Typs 111, werden für den Datentransfer verwendet; das Bit des Rangs 0 mit dem Wert 1 bestimmt einen schnellen Takt und das Bit des Rangs 1 gibt die Transferrichtung IN-OUT an. Die Bits 4 bis 8 liegen in diesem Fall auf Null.
  • Da soeben beschriebene arithmetische Rechenwerk enthält die unbedingt erforderlichen Elemente, um die Bearbeitung einer ganzen vorzeichenbehafteten Zahl durchführen zu können, beispielsweise Indices oder Bytes entsprechend einem Cursor, Indices oder verschiedene Variable. Hierzu enthält das Rechenwerk wie oben angegeben den Arbeitsspeicher mit Zweifachzugriff und geringer Kapazität sowie eine vereinfachte arithmetische logische Einheit, die nur in der Lage ist, folgende Operationen auf Wörter von 8 Bits anzuwenden: vorzeichenrichtige Addition, vorzeichenrichtige Subtraktion, "OER" Bit für Bit, um Bits auf 1 zu setzen, "UND" Bit für Bit, um Bits auf Null zu setzen und um Bits zu testen. Es enthält weiter das Akkumulatorregister 380, das unter anderem zur Adressierung des Speichers dienen kann, und Wechselschaltungen, die die Konfiguration der Daten- und Adressenpfade abhängig von den Erfordernissen bestätigen.
  • Das Galois-Rechenwerk hat eine Struktur ähnlich der des arithmetischen Rechenwerks, aber, wie aus der obigen Beschreibung hervorgeht, wurde ein besonderes Augenmerk darauf verwendet, seine Architektur so zu optimisieren, daß die wiederholten Verarbeitungsvorgange beschleunigt werden. Hierzu ist der Arbeitsspeicher mit Zweifachzugriff 410 in Seiten unterteilt, die ihrerseits in Unterseiten gegliedert sind. Die Unterseite des absolut niedrigsten Rangs wird zur Speicherung der skalaren Größen verwendet und die anderen für die Speicherung der Koeffizienten der Polynome. Das Galois-Rechenwerk enthält weiter wie oben angegeben die beiden Adressenzähler, von denen der eine als Aufwärts- und Abwärtszähler und der andere nur als Abwärtszähler dient. Diese Zähler können mit einem Wert geladen werden, der vom arithmetischen Rechenwerk kommt. Das Rechenwerk enthält weiter einen Addierer im Galois-Körper und einen Multiplizierer in den Galois-Körpern, der wie oben angegeben durch Verdrahtung programmierbar ist, sowie ein Akkumulatorregister und Wechselschaltungen, die die Konfiguration der Daten- und Adressenpfade nach den Bedürfnissen bestätigen.
  • Schließlich ist die Schnittstelle so beschaffen, daß der Betrieb der programmierten Teile des Kodierers-Dekodierers soweit wie möglich vom äußeren Umfeld unabhängig wird. Wie oben erläutert, hat so die Schnittstelle die Aufgabe, verschiedene Signale in Form zu bringen und zu synchronisieren, die ankommenden und ausgehenden verschiedenen Informationen zu lenken und zu maskieren, Betriebsparameter zu speichern und das Steuerwort und das Zustandswort zu speichern, wobei letzteres von außen ohne jede Wirkung auf den Betrieb des Kreises gelesen werden kann.
  • Auf diese Weise ist der beschriebene Kodierer-Dekodierer von Blockkodes parametrierbar und kann als ein genormtes Bauteil für allgemeine Anwendungen in der digitalen Übertragung aufgrund seiner großen Flexibilität betrachtet werden. In der bevorzugten Ausführungsform als integrierter Schaltkreis stellt er einen einheitlichen Baustein dar, der die Transparenz zwischen Sender oder Empfänger der nutzbaren Information und dem Übertragungskanal sichert, auf dem ein gewisser Schutz gewährleistet sein soll. Die Komplexität, Oberfläche und der Verbrauch lassen sich in der Größenordnung der Werte abschätzen, die heute die Kreise VLSI besitzen.
  • Die für eine Implementierung in diesem Normkodierer- Dekodierer vorgeschlagenen Kodier- und Dekodieralgorithmen mittels Blockkodes stellen unter den bekannten Algorithmen eine günstigen Kompromiß zwischen der Komplexität und der Geschwindigkeit der Ausführung dar. Insbesondere ist es in gewissen Fällen günstig, Verfahren zu verwenden, die wenig ausgefeilt aus theoretischer Sicht erscheinen, aber die in dem Kreis leicht implementiert werden können. So werden hier die Algorithmen vorgeschlagen, welche nur eine Addition und eine Multiplikation in den Galois-Körpern erfordern. Algorithmen, die Berechnungen von Logarithmen Exponentialfunktion oder dazu inverse Berechnungen verwenden, können durch den integrierten Kodierer-Dekodierer gemäß der Erfindung nicht implementiert werden. Mit wenigen Ausnahmen werden für die BCH-Kodes, in denen die Zeichen Bits sind, und für die RS-Kodes, in denen die Zeichen mehrere Bits enthalten, dieselben Algorithmen verwendet.
  • Die Beschreibung dieser Algorithmen findet sich beispielsweise in den folgenden Druckschriften:
  • - Algebraic Coding Theory, E.R. BERLEKAMP, McGRAW-HILL 1968,
  • - Error Correcting Codes von W.W. PETERSON und E.J. WELDON, MIT Press 1972,
  • - Error Correcting Coding for Digital Communications, G.C. CLARK und J.B. CAIN, Plenum Press NY und London 1982.
  • Die nachfolgende gestraffte Beschreibung faßt die hauptsächlichen Schritte beim Kodieren und Dekodieren eines Blockkodes zusammen, die in dem oben beschriebenen Kodierer- Dekodierer ablaufen können.
  • Ein Kodewort kann in Form eines Polynoms ausgedrückt werden C(X) = cn-1Xn-1+cn-2Xn-2+ etc . . . + c&sub1;X + c&sub0;. Gemäß der Definition der Kodes BCH und RS muß dieses Polynom mit einem Polynom G(X) multipliziert werden, das Kodeerzeuger wie oben angegeben genannt wird und dessen Wurzeln 2t aufeinanderfolgende Exponenten eines Elements des betreffenden Galois- Körpers sind.
  • In der Anwendung wird dieses Basiselement primitiv gewählt, d. h. daß jedes der Element des Galois-Körpers gleich einer ganzzahligen Potenz dieses Elements mit Ausnahme von Null ist, und man trifft folgende Vereinbarung, in der das primitive oben angegebene Element mit a bezeichnet ist, Wurzel des Polynoms G(X) : G(ap) = 0 für p = 1, 2, . . . 2t (für Kodes eines Abstands 2t+1).
  • Weiter gilt G(ap) = 0 für p = 0, 1, 2, . . . 2t (für Kodes eines Abstands 2t+2).
  • Die Kodierung erfolgt folgendermaßen: In einer ersten Phase werden die k Informationszeichen eines Blocks an den Kopf des Kodeworts kopiert.
  • In einer zweiten Phase erfolgt die Berechnung der Redundanzzeichen. Die Berechnung des ersten Redundanzzeichens erfolgt durch eine gewichtete Summierung der k Informationszeichen. Wenn n, die Anzahl der Zeichen je Kodewort, kleiner als Nmax ist, dann sind die Nmax-n Symbole höherer Wichtung entsprechend den höheren Graden in der Polynomialdarstellung, ursprünglich null. Dann wird jedes der nachfolgenden Redundanzzeichen durch gewichtete Summierung der existierenden Zeichen berechnet. Die Wichtungskoeffizienten werden in einer Initialisierungsphase berechnet und sind die Koeffizienten eines Polynoms H(X), das folgendermaßen definiert ist und nur vom gewählten Galois-Körper, der Art des Kodes und dem gewählten Abstand für diesen Kode abhängt:
  • Hierbei ist d der Grad des erzeugenden Polynoms G(X), M ist die Charakteristik des Galois-Körpers und G(X) ist das erzeugende Polynom des Kodes wie oben definiert.
  • Die Dekodierung erfolgt ihrerseits in fünf Schritten, von denen einzelne je nach Fall abgekürzt oder ganz weggelassen werden können.
  • In einer ersten Phase werden die Löschungen erkannt und eine erste Version eines Fehlstellenortungspolynoms L(Z) wird berechnet, das als Wurzeln die inversen Werte der Fehlstellen besitzt. Eine solche Fehlstelle ist ein direkter Fehler (dessen Lage man nicht kennt) oder eine Auslöschung, ein Zeichen eines zweifelhaften oder nicht definierten Werts, dessen Lage man kennt. Die Position Xi (i = 1 bis e) einer den Koeffizienten des Grads p des empfangenen Worts betreffenden Fehlstelle in der Polynomialdarstellung ist gleich der p-ten Potenz von a. Das Lokalisierungspolynom kann also in folgender Form geschrieben werden:
  • L(Z) = (1 - X&sub1; Z) (1 - X&sub2; Z) . . . (1 - Xe Z) Hierbei ist e die Anzahl der Löschungen.
  • In einer zweiten Phase berechnet der Kodierer-Dekodierer Syndrome Sp die die Werte des Polynoms C(X) nach dem Empfang sind und von den Werten bei der Aussendung abweichen können. Bezeichnet man dieses empfangene Polynom mit C'(X), dann läßt sich dieses abhängig von C(X) auf folgende Weise ausdrükken:
  • C'(X) = C(X) + E(X) Die Syndrome Sp haben folgende Werte: Sp = C'(ap) mit p = 1, 2, . . . 2t.
  • Das Polynom E(X) wird Fehlstellenpolynom genannt. Diejenigen Koeffizienten, die nicht null sind, können nur an Positionen liegen, die den Fehlstellen (falsche Zeichen oder Löschungen) entsprechen und haben Werte gleich denen der betreffenden Fehlstellen.
  • In einer dritten Phase wird das Polynom L(Z) zunehmend verlängert durch den Algorithmus von Berlekamp, um seinen Grad in üblicher Weise unter Berücksichtigung der Syndrome zu erhöhen. L(Z) erhält also zusätzliche Wurzeln zugeteilt, die die inversen Werte der Fehlerpositionen sind, die somit erfaßt wurden, soweit die Kapazität des Kodes nicht überschritten wird.
  • In einer vierten Phase berechnet der Kodierer-Dekodierer die Fourier-Transformierte des Fehlerpolynoms E(Z) ausgehend von den Syndromen (Sp) und dem Fehlstellenortungspolynom L(Z).
  • In einer fünften Phase wird das Polynom E(Z) durch inverse Fourier-Transformation und dann Korrektur der Fehler und Wiederherstellung der gelöschten Bereiche berechnet, um das ursprüngliche Polynom C(X) zu erhalten.
  • In jeder Phase werden Überprüfungen durchgeführt, um falsche Dekodierungen zu vermeiden. Beispielsweise verifiziert der Kodierer/Dekodierer im Fall der Kodes BCH bei der Berechnung des Polynoms E(Z), ob die Fehlstellenwerte gleich 0 oder 1 sind. Wenn die effektive gewünschte Korrekturkapazität überschritten wird, selbst wenn die maximale Kapazität noch nicht überschritten wird, dann endet der Dekodieralgorithmus durch eine Diagnose der Nichtdekodierung, worauf in einem zugeordneten Modulator-Demodulator eine Anfrage auf Wiederholung veranlaßt werden kann. Wenn schließlich der Kodeabstand gleich 2t+2 ist, dann überprüft der Dekodierer, ob das Syndrom S&sub0; das den Wert von C'(X) für X = 1 bildet, den geeigneten Wert hat. Ist dies nicht der Fall, dann endet der Dekodieralgorithmus in einer Diagnose der Nichtdekodierung.
  • Diese Kodier- und Dekodierverfahren sind an sich bekannt, und der erfindungsgemäße Kodierer-Dekodierer kann sie unter guten Bedingungen verwenden. Die Programmierung des Speichers 110 für die Initialisierungsoperationen und die Kodierung und Dekodierung gemäß den an sich bekannten Algorithmen liegt im Bereich fachmännischer Maßnahmen und wurde hier deshalb nicht in allen Einzelheiten beschrieben.
  • Die verwendeten Kodes können t Fehler zwischen einem Fehler und einem Höchstwert korrigieren, der vom Galois-Körper und der Art des verwendeten Kodes (BCH oder RS) abhängt, ohne jedoch augenblicklich aus technologischen Gründen den Wert 15 übersteigen zu können. Für Kodes RS mit höchstens 127 Zeichen liegt die Größe des Speichers 410 bei etwa 500 Wörtern von 7 oder 8 Bits, wenn man höchstens 15 Fehler korrigiert, aufgrund der Anzahl und des Grads der Polynome, die gleichzeitig bei der Dekodierung gespeichert werden müssen. Eine Korrektur von noch mehr Fehlern erforderte einen größeren Speicher, was die Realisierung des Schaltkreises in integrierter Form aufgrund der verfügbaren Technologie erschweren würde, wobei zu berücksichtigen ist, daß außer dem Speicher komplexe Einrichtungen und eine unregelmäßige Struktur erforderlich sind, also eine erhöhte Oberfläche. Es ist jedoch möglich, den Kreis bis auf RS-Kodes zu erweitern, für die M = 8 gilt, und diese Begrenzung auf 15 Fehler ist lediglich an die derzeit verfügbare Technologie gebunden. Der Hamming-Abstand dieser Kodes wird wie oben angegeben gleich 2t+1 gewählt und kann auf 2t+2 erhöht werden, wenn der Benutzer dies wünscht, um den Anteil falscher Dekodierungen zu verringern, wenn die Korrekturkapazität überschritten wurde und der Dekodierer Fehler erzeugt.
  • Diese Kodes werden für die Erkennung und Korrektur von Fehlern und Löschungen verwendet, was für die RS-Kodes üblich ist, aber für die BCH-Kodes nicht, für die keine Bewertungsangabe vorgesehen ist. Für diese letzteren Kodes sieht eine Betriebsweise vor, daß jedes Bit eines Kodeworts mehrfach wiederholt werden kann und eine gewichtete Mehrheitsentscheidung über die Wiederholungen eines gegebenen Bits vor der eigentlichen Dekodierung durchgeführt wird. Eine vorab definierte Mehrheit ist notwendig, damit das fragliche Bit als gültig bewertet wird. Ansonsten wird es als gelöscht betrachtet, aber seine Position ist bekannt. Ein beliebiges Bit kann seinerseits gelöscht werden wie ein M-fach-Zeichen von m Bits im Fall der Kodes RS.
  • In manchen Anwendungen ist es notwendig, einen ersten Kode zur Übertragung von Daten und einen zweiten Kode zur Übertragung von Steuersignalen zu besitzen. Die Vorrichtung ist programmierbar, um in folgender Weise darauf Rücksicht zu nehmen: Ein erster Kode, Basiskode von Parametern n und k, wird gewählt. Ausgehend von diesem ersten Kode definiert man einen zweiten Kode, der durch Verkürzung des ersteren erhalten wird, wobei diese Verkürzung dadurch erreicht wird, daß implizit eine gewisse Anzahl von Zeichen hoher Wichtung auf Null gesetzt wird und, im Fall der RS-Kodes, indem ggf. eine gewisse Anzahl von Zeichen geringer Wichtung, die Redundanzzeichen sind, nicht übertragen werden. Bei der Dekodierung werden diese nicht übertragenen Zeichen als gelöscht betrachtet. Beispielsweise für einen Basiskode (n = 31, k = 15), der 15 Informationszeichen und 16 Redundanzzeichen entspricht, wobei mit diesen 16 Redundanzzeichen 8 Fehler in 31 Bits oder 4 Fehler und 8 Löschungen usw. korrigiert werden können, besteht eine abgekürzte Version dieses Kodes darin, 16 Bits in der Form (n' = 16, k' = 4) zu übertragen, d. h. vier Zeichen, die die letzten Zeichen des Informationsworts sind, und 12 Zeichen, die die zwölf ersten Redundanzzeichen sind, wobei die elf ersten Informationszeichen und die vier letzten Redundanzzeichen nicht übertragen werden. Dieser Kode erlaubt die Korrektur von sechs Fehlern in 16 Zeichen. Wenn diese Zeichen Worte von fünf Bits sind, dann bilden vier Informationszeichen 20 Bits.
  • Was nun die effektive Korrekturkapazität eines gegebenen Kodes angeht, so kann diese Kapazität wie oben angegeben auf Wunsch des Nutzers moduliert werden, der dann der Vorrichtung die Maximalanzahl von Fehlern angibt, die er zur Korrektur zuläßt. Diese Zahl kann von 0 bis t reichen, wobei t als die theoretische Kapazität des Kodes definiert ist, d. h. die größte Anzahl von algebraisch korrigierbaren Fehlern, für die der Kode entworfen worden war. Unter diesen Bedingungen wird die Korrektur nur durchgeführt, wenn die folgende Beziehung erfüllt ist: zweimal die Anzahl der Fehler plus die Anzahl der Löschungen muß kleiner oder gleich zweimal der effektiven Korrekturkapazität sein.
  • Unter Bezugnahme auf die oben beschriebene Ausführungsform des Kodierer-Dekodierers und die oben gemachten Ausführungen in Bezug auf die Kodes sind die Betriebsweisen des Kodierers-Dekodierers folgendermaßen definiert:
  • Der Prozessor wurde wie oben angegeben so gestaltet, daß er möglichst wenig den Host-Mikroprozessor belastet. Beim Einschalten oder in jedem anderen Augenblick, in dem man die Kodes wechseln will, müssen die Charakteristika der beiden verwendeten Kodes dem integrierten Kodierer-Dekodierer über die Schnittstelle mitgeteilt werden. Diese Charakteristika sind die Art de Kodes BCH oder RS, seine Länge, seine effektive Korrekturkapazität. Initialisierungsrechnungen werden angesteuert und der Kodierer-Dekodierer ist dann verfügbar, um Kodierungen oder Dekodierungen auf Befehl des Mikroprozessors durchzuführen.
  • Wenn also der Mikroprozessor eine Dekodieroperation ansteuert, dann wartet der Kodierer-Dekodierer, daß ihm von außen die entsprechende Anzahl von Zeichen geliefert wird. Erst dann wird mit der Dekodierung begonnen, und der Kodierer-Dekodierer geht dann in die Wartestellung über, wenn die Dekodierung beendet ist, bis das dekodierte Wort vom äußeren Mikroprozessor ausgelesen wird. Liegt dann kein neuer Befehl vor, dann gelangt der Kodierer-Dekodierer automatisch in die Wartestellung, in der er auf zu dekodierende Zeichen wartet.
  • Der äußere Mikroprozessor kann in jedem Augenblick die Vorrichtung unterbrechen, er kann auch ihren Zustand durch das oben beschriebene System des transparenten Abfragens des Zustandsworts kennen oder auch die Vorrichtung veranlassen, eine Unterbrechung IR zu übertragen, wenn die gewünschte Verarbeitung beendet ist.
  • Wie ebenfalls oben angegeben, können die Eingänge und Ausgänge beispielsweise in Reihe mit einem Modulator-Demodulator oder parallel mit dem Mikroprozessor erfolgen, wobei die beiden Richtungen voneinander unabhängig sind.
  • Die Erfindung ist nicht auf die im einzelnen oben beschriebene Ausführungsform des Kodierers-Dekodierers beschränkt. Insbesondere für Kodes in einem Galois-Körper CG(256) sind die durchzuführenden Änderungen mit dem Register 478, das die möglichen Identitäten des Galois-Körpers speichert, und mit dem Multiplizierer 470 verbunden, der die erforderlichen Elemente besitzen muß, nämlich zusätzliche Gatter in den Baugruppen 471, 472, größere Breite des Bus 600 und der zu verarbeitenden oder zu speichernden Wörter und einen logischen Kreis, der an die Produkte in diesem Galois-Körper angepaßt ist.

Claims (8)

1. Parametrierbarer Kodierer-Dekodierer für Blockkodes, wobei ein Block vor der Kodierung k Informationszeichen und nach der Kodierung n Zeichen enthält (n > k), mit
- einen Taktgeber (200),
- einer Schnittstellenschaltung (500), die für den Empfang von zu kodierenden oder zu dekodierenden Datenblöcken und für die Übertragung der kodierten oder dekodierten Blöcke ausgebildet ist,
- einer Steuerschaltung (100),
- einem arithmetischen Rechenwerk (300) zum Ausführen von einfachen Operationen an vorzeichenbehafteten ganzen Zahlen,
- einem Galois-Rechenwerk (400) zum Ausführen von Additionen und Multiplikationen an den Elementen des Galois-Körpers CG(M = 2m), wobei M die Anzahl der Elemente des Körpers und m die charakteristische Zahl dieses Körpers ist, während n höchstens gleich M-1 ist und die Blöcke von k zu kodierenden Informationszeichen und die kodierten Blöcke von n Zeichen und die dekodierten Blöcke von k Zeichen dem selben Körper angehören, dadurch gekennzeichnet, daß:
- die Steuerschaltung (100) mit einer Folgerschaltung (140), einem programmierbaren Speicher (110) und einem dazugehörigen Mikrobefehlsregister (120) versehen ist, dessen Ausgang mit einem Befehlsbus (125) verbunden ist, und einer mit dem Befehlsbus und mit einem internen Datenbus (600) verbundenen Schaltung für die Befehlsdekodierung und die Testmultiplexierung (130),
- das arithmetische Rechenwerk (300) versehen ist mit einer Arithmetik- und Logikeinheit (350) und einem Arbeitsspeicher (310) mit Zweifachzugriff, der mit der Arithmetikund Logikeinheit (350) verbunden ist, wobei der Eingang des Arbeitsspeichers (310) über eine durch ein von der Steuerschaltung (100) ausgegebenes und im programmierbaren Speicher (110) programmiertes Konfigurationssteuerwort (CONF.AR) gesteuerte Wechselschaltung (320) mit dem Befehlsbus (125) oder mit dem internen Bus (600) oder mit dem Ausgang der Arithmetik- und Logikeinheit (350) oder mit dem Ausgang des Speichers (310) selbst verbunden ist,
- das Galois-Rechenwerk (400) versehen ist mit einem Arbeitsspeicher (410) mit Zweifachzugriff, einem Multiplizierer in den Galois-Körpern (470), einem Addierer in den Galois-Körpern (480) und einem Akkumulator (481), wobei der Eingang des Speichers über eine durch ein von der Steuerschaltung (100) ausgegebenes und im programmierbaren Speicher (110) programmiertes Konfigurationssteuerwort (CONF.GA) gesteuerte Wechselschaltung (420, 484) mit dem Befehlsbus (125) oder mit dem internen Bus (600) oder mit dem Ausgang des Akkumulators (481) oder mit dem Ausgang des Addierers (480) oder mit dem Ausgang des Multiplizierers (470) verbunden ist, wobei die charakteristische Zahl m des zu verwendenden Galois-Körpers über die Schnittstellenschaltung gesteuert wird.
2. Kodierer-Dekodierer gemäß Anspruch 1, dadurch gekennzeichnet, daß die Gesamtheit der konstitutiven Schaltungen auf einem einzigen Substrat integriert ist.
3. Kodierer-Dekodierer gemäß einem der Ansprüche 1 und 2, dadurch gekennzeichnet, daß die Adressen-Eingänge des Arbeitsspeichers (410) des Galois-Rechenwerks über ebenfalls von der Steuerschaltung gesteuerte Wechselschaltungen (430, 440) mit dem Befehlsbus oder mit dem Ausgang eines Adressen-Aufwärts- Abwärtszählers (450) oder mit dem Ausgang eines Abwärtszählers (460) verbunden sind, wobei diese Abwärtszähler mittels eines einzigen vom programmierbaren Speicher (110) ausgegebenen Befehls die Ausführung von Reihen von identischen Operationen an im Arbeitsspeicher (410) an aufeinanderfolgenden Adressen angeordneten Elementen erlauben.
4. Kodierer-Dekodierer gemäß Anspruch 3, dadurch gekennzeichnet, daß
- ein Eingang des Multiplizierers (470) mit einem ersten Ausgang des Arbeitsspeichers (410) verbunden ist, wobei der andere Eingang dieses Multiplizierers über eine ebenfalls von der Steuerschaltung (100) gesteuerte Wechselschaltung (482) entweder mit dem zweiten Ausgang des Arbeitsspeichers (410) oder mit dem Ausgang des Akkumulators (481) verbunden ist,
- ein Eingang des Addierers (480) mit dem Ausgang des Multiplizierers (470) verbunden ist, wobei der andere Eingang des Addierers (480) über eine von der Steuerschaltung gesteuerte Wechselschaltung (483) entweder mit dem Ausgang des Akkumulators (481) oder mit dem zweiten Ausgang des Arbeitsspeichers verbunden ist, wobei das Galois-Rechenwerk die Ausführung von Reihen von iterativen Multiplikationen und Additionen mittels eines einzigen Befehls erlaubt, wobei eine Multiplikation, eine Addition und eine Verschiebung im Akkumulator während eines einzigen Taktschritts ausgeführt werden können.
5. Kodierer-Dekodierer gemäß einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß der Multiplizierer in den Galois- Körpern (470) versehen ist mit einer Gruppe von UND-Gattern (471), die m²max UND-Gatter aufweist, wobei mmax die charakteristische Zahl des Galois-Körpers von maximal verwendbarem Grad ist, um sämtliche möglichen Produkte zwischen den die zwei miteinander zu multiplizierenden Elemente des Galois-Körpers definierenden Zeichen ai und bj zu bilden, wobei i und j zwischen 0 und m-1 variieren, einer Gruppe von Exklusiv-ODER- Gattern (472), um die mindestens 2m-1 Summen der Produkte ai bj gleichen Grades q = i + j zu bilden, und Logikschaltungen (473, 474, 475, 476), von denen jede einem vorgegebenen Galois-Körper zugeordnet ist, um das Element des Körpers zu bilden, das sich aus dem Produkt der zwei Eingangselemente ergibt, wobei die Ausgänge dieser Logikschaltungen über einen durch die charakteristische Zahl m des verwendeten Körpers gesteuerten Multiplexer (477) mit dem Ausgang des Multiplexers verbunden sind.
6. Kodierer-Dekodierer gemäß einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß das arithmetische Rechenwerk (300) außerdem ein Akkumulator-Register (380) aufweist, dessen Eingang mit dem Ausgang der Wechselschaltung (320) verbunden ist und dessen Laden von der Steuerschaltung in Abhängigkeit vom Befehl gesteuert wird, wobei die Adresseneingänge des Arbeitsspeichers (310) über Adressenwechselschaltungen (330, 340) mit dem Befehlsbus (125) oder mit dem Ausgang des Registers (380) verbunden sind, wobei die Eingänge der Arithmetik- und Logikeinheit (350) über Wechselschaltungen (360, 370) jeweils mit den Ausgängen des Arbeitsspeichers (310) oder mit dem Ausgang des Registers (380) oder mit dem Befehlsbus (125) verbunden sind, wobei die Wechselschaltungen (330, 340, 360, 370) ebenfalls vom Rechenkonfigurationswort gesteuert werden.
7. Kodierer-Dekodierer gemäß einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, daß die Schnittstellenschaltung (500) versehen ist mit einem Eingang (DIN), der für den seriellen Empfang von Daten ausgebildet ist, und einem Eingang für einen zugeordneten externen Takt (CK), einem Eingang (700), der für den parallelen Empfang von Daten und eines zugeordneten externen Taktes (E) ausgebildet ist, einem Ausgang für die seriellen Daten (DOUT) und einem Ausgang für die parallelen Daten (700), wobei die Typen von eingegebenen und ausgegebenen Daten unabhängig voneinander programmierbar sind.
8. Kodierer-Dekodierer gemäß Anspruch 7, dadurch gekennzeichnet, daß die Schnittstellenschaltung außerdem einen Unterbrechungsgenerator (493) aufweist, um aus dem Kodierer-Dekodierer ein Unterbrechungssignal (IR) auszugeben, das den Zustand des Fortgangs einer von außen angeforderten Operation angibt.
DE19853586442 1984-05-24 1985-05-21 Kodier- und dekodierschaltung fuer parameterblockkodierung. Expired - Fee Related DE3586442T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR8408141A FR2565048B1 (fr) 1984-05-24 1984-05-24 Codeur-decodeur de codes de blocs, parametrable

Publications (2)

Publication Number Publication Date
DE3586442D1 DE3586442D1 (de) 1992-09-10
DE3586442T2 true DE3586442T2 (de) 1993-03-04

Family

ID=9304358

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19853586442 Expired - Fee Related DE3586442T2 (de) 1984-05-24 1985-05-21 Kodier- und dekodierschaltung fuer parameterblockkodierung.

Country Status (3)

Country Link
EP (1) EP0165147B1 (de)
DE (1) DE3586442T2 (de)
FR (1) FR2565048B1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2605769B1 (fr) * 1986-10-22 1988-12-09 Thomson Csf Operateur polynomial dans les corps de galois et processeur de traitement de signal numerique comportant un tel operateur
FR2605818B1 (fr) * 1986-10-27 1992-09-18 Thomson Csf Codeur-decodeur algebrique de codes en blocs reed solomon et bch, applicable aux telecommunications numeriques
US4856004A (en) * 1987-10-05 1989-08-08 Motorola, Inc. Microprocessor based BCH decoder
US4928280A (en) * 1988-04-29 1990-05-22 International Business Machines Corporation Fast processor for multi-bit error correction codes

Also Published As

Publication number Publication date
DE3586442D1 (de) 1992-09-10
FR2565048A1 (fr) 1985-11-29
FR2565048B1 (fr) 1986-08-29
EP0165147A1 (de) 1985-12-18
EP0165147B1 (de) 1992-08-05

Similar Documents

Publication Publication Date Title
DE3486200T2 (de) Verfahren und vorrichtung zur dekodierung eines fehlerverbesserungskodes.
DE68924944T2 (de) Fehlerkorrekturschaltung.
DE3382661T2 (de) Korrektur von fehlerbuendeln in datengruppen.
DE69114788T2 (de) Datenübertragungssystem mit Kontrollsummerechenmittel.
DE3650102T2 (de) Anordnung und Verfahren zur Berechnung zyklischer redundanter Kode.
DE69834542T2 (de) Hardwareoptimierter reed-solomon-decoder zur decodierung grosser datenblöcke
EP0123921B1 (de) Parallelverknüpfungsschaltung mit verkürztem Übertragsdurchlauf
DE3789929T2 (de) Verfahren und Gerät zur Fehlerkorrektur in einem aus parallelem Prozessor bestehenden Datenverarbeitungssystem.
DE69722571T2 (de) System und Verfahren zur digitalen Übertragung mit einem Produktkode kombiniert mit multidimensionaler Modulation
DE69212695T2 (de) Decodierungseinrichtung
DE3750526T2 (de) Dekodierer.
DE102006005817B4 (de) Fehlererkennungsvorrichtung für einen Adressdecoder und Vorrichtung zur Fehlererkennung für einen Adressdecoder
EP0282877B1 (de) Verfahren und Einrichtung zur Steuerung der Fehlerkorrektur innerhalb einer Datenübertragungssteuerung bei von bewegten peripheren Speichern, insbesondere Plattenspeichern, eines Datenverarbeitungssystems gelesenen Daten
DE102005022107B4 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
EP0176981B1 (de) D/A-Wandler
DE3586442T2 (de) Kodier- und dekodierschaltung fuer parameterblockkodierung.
DE60309857T2 (de) Methode zur dekodierung von reed-solomon kodes mittels feinentscheidung
DE2053836C3 (de) Anordnung zur Korrektur von Fehlerbündeln in binär codierten Datengruppen
EP0003480B1 (de) Schaltungsanordnung zum Umwandeln von Binärinformationen mittels Kontrollbits
DE60109344T2 (de) Hochgeschwindigkeitscodierer für Faltungscodes
EP0231434B1 (de) In integrierter Technik hergestellter Baustein zur Erstellung integrierter Schaltungen
DE3587190T2 (de) Fehlerkorrekturschaltung mit einem reduzierten syndromwort.
DE69126459T2 (de) Fehlerkorrektursystem fähig zur Verbesserung des Kopfteils eines Paketes durch Verwendung eines Reed-Solomon-Codes
DE3784684T2 (de) Fehlerkorrekturdecoder fuer schnelle behandlung von pufferueberlaeufen.
DE4117726C2 (de) Fehlerkorrekturverfahren und Einrichtung zu dessen Durchführung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee