Die Erfindung betrifft ein Verfahren zur Verarbeitung digitaler Signale, die als eine Folge von Datenwörtern auftreten.
Sollen Datenwörter die in einer Folge auftreten, wahlweise verschiedenen Verarbeitungen nach verschiedenen Regeln zugeführt werden, so ist es bekannt, dass die gewünschte Verarbeitung durch entsprechende Steuerbefehle gewählt und gesteuert wird. Dabei kann die gewünschte Verarbeitung durch diese Steuerbefehle für eine Gruppe von Datenwörtern gemeinsam oder für jedes Datenwort einzeln bestimmt werden. Um für jedes Datenwort die ihm zugedachte individuelle Verarbeitung durchführen zu können, wird jedem Datenwort ein sogenanntes Steuerwort zugeordnet, das Angaben über die für dieses Datenwort gewünschte Verarbeitung enthält. Findet die Verarbeitung in einem Prozessor statt, so wird vor der Verarbeitung des Datenwortes auch dieses Steuerwort gelesen und im Prozessor bitweise verarbeitet. Dabei bewirkt jedes Bit eine Entscheidung.
Nach jeder Entscheidung wird ein weiteres Bit verarbeitet und es folgt eine weitere Entscheidung. Somit folgt der Lese- und Entscheidungsprozess einer bekannten Baum-Struktur.
Soll die Verarbeitung der Datenwörter in Echtzeit erfolgen, so ist die Zeit für die Analyse der einzelnen Bits des Steuerwortes und für den nachfolgenden Entscheidungsprozess und die nachfolgende Verarbeitung beschränkt. Ist das digitale Signal beispielsweise ein Audiosignal oder ein Echtzeit-Steuersignal in einer Raketensteuerung, so ist diese Zeit sehr kurz. Andererseits arbeiten bekannte Prozessoren nicht beliebig schnell. So kann es vorkommen, dass die Analyse der Steuerbits aus den Steuerwörtern und der Entscheidungsprozess für das Steuerwort einen grossen Teil der Zeit benötigen und dass dementsprechend wenig Zeit für die Verarbeitung des Datenwortes bleibt.
Es ist deshalb eine Aufgabe der Erfindung, wie sie in den Patentansprüchen gekennzeichnet ist, ein Verfahren zu schaffen, bei dem mehr Zeit für die Verarbeitung eines Datenwortes zur Verfügung steht.
Die Aufgabe wird insbesondere dadurch gelöst, dass im Steuerwort die Reihenfolge und die Position der einzelnen Bits so gewählt wird, dass die Programmadressen desjenigen Programmes oder Programm-Moduls, mit dem das betreffende Datenwort verarbeitet werden soll, direkt aus den betreffenden Bits oder nur durch wenige zusätzliche Programmschritte ermittelt werden kann.
Die durch die Erfindung erreichten Vorteile sind im wesentlichen darin zu sehen, dass digitalisierte Audiosignale in einem handelsüblichen Signalprozessor, beispielsweise mit einer Harvard-Architektur, verarbeitet werden können. Dabei können für jedes Datenwort verschiedene Verarbeitungen oder für jedes Datenwort mehrere Verarbeitungen nacheinander durchgeführt werden. Dort wo die Verarbeitung von Datenwörtern mit hoher Geschwindigkeit und in Echtzeit geschehen soll und wo man sich jeden unnötigen Befehl sparen möchte, ist das erfindungsgemässe Verfahren vorteilhaft. Die Entscheidungsprozesse werden damit wesentlich verkürzt gegenüber den üblichen Software-Entscheidungsmethoden, die mit der Baum-Architektur arbeiten. Man kann dann mehr Aufgaben mit einem einzigen Signalprozessor lösen und damit die Effizienz in bezug auf die Kosten und den beanspruchten Raum steigern.
Im folgenden wird die Erfindung anhand von lediglich einen Ausführungsweg darstellenden Zeichnungen näher erläutert.
Es zeigt
Fig. 1 eine schematische Darstellung einer Vorrichtung zur Durchführung des Verfahrens,
Fig. 2 eine schematische Darstellung eines Steuerwortes und
Fig. 3 eine schematische Darstellung von Datenwörtern mit Steuerwörtern zusammen.
Fig. 1 zeigt in schematischer Darstellung ein Beispiel einer Vorrichtung zur Durchführung des erfindungsgemässen Verfahrens. Dieses Beispiel bezieht sich insbesondere auf die Verarbeitung von digitalen Audiosignalen in einem Mehrkanaltonbandgerät. Fig. 1 zeigt deshalb nur jenen Teil eines solchen Gerätes, der zwischen einem Aufnahme- oder Wiedergabekopf und einem analog/digital oder digital/analog Wandler liegt und in dem digitalisierte Signale gewissen Verarbeitungsschritten unterzogen werden. Diese Verarbeitung geschieht im Signalprozessor 1, der über einen Anschluss 2 an einen Datenbus 3 angeschlossen ist, in dem in bekannter Weise digitalisierte Signale, d.h. Datenwörter befördert werden. An den Datenbus 3 sind auch zwei Ein- und Ausgabeeinheiten 4 und 5 über Anschlüsse 6 und 7 angeschlossen.
Dabei ist die Ein- und Ausgabeeinheit 4 beispielsweise für digitale Audiodaten vorgesehen. Über einen Bus 8 ist auch ein Steuerwortgenerator 9 an den Datenbus 3 angeschlossen.
Der Signalprozessor 1 ist als handelsüblicher Digital Signal Prozessor ausgebildet, wie er beispielsweise unter der Bezeichnung TMS 320 bereits bekannt ist. Er weist insbesondere einen Rechner 10, einen Programmspeicher 11 und einen getrennten Datenspeicher 12 auf, die alle über einen internen Bus 19 miteinander verbunden sind. Über einen Anschluss 2 ist der Signalprozessor 1 mit dem Datenbus 3 verbunden. Intern ist der Anschluss 2 an den Datenspeicher 12 angeschlossen. Insbesondere weist der Rechner 10 einen an sich bekannten und deshalb hier nicht näher beschriebenen Akkumulatorteil sowie eine Arithmetikeinheit auf, die gemäss den Instruktionen aus einem Programm arbeiten.
Der Steuerwortgenerator 9 besteht beispielsweise aus drei Registern 13, 14 und 15, die alle an den Bus 8 angeschlossen sind. Beispielsweise ist Register 13 als seriell-paralleles Schieberegister, Register 14 als Parallelregister und Register 15 ebenfalls als Parallelregister ausgebildet. Statt Register sind ebenso sogenannte Tri-State-Treiber denkbar. Register 13 ist auch an eine Leitung 16, Register 14 an Leitungen 17 und Register 15 an Leitungen 18 angeschlossen. Über jede Leitung erhält das Register eine Information, die einem Bit entspricht. Register 14 erhält somit vier Bit und Register 15 erhält sieben Bit Informationen gleichzeitig.
Fig. 2 zeigt den Aufbau eines Steuerwortes 20. Mit 21, 22, 23 und 24 sind vier Steuerbits bezeichnet, die zusammen ein Programm-Modul oder eine sogenannte Routine kennzeichnen, die in einem Programmspeicher gespeichert ist. Wenn im ganzen Steuerwort 20 nicht alle Bits für die Kennzeichnung eines Programm-Moduls benötigt werden, spielt auch die Lage der Steuerbits in bezug auf den Anfang und das Ende des Steuerwortes eine wichtige Rolle. Ein Steuerwort kann weitere Steuerbits enthalten, die zusammen einen oder mehrere verschiedene Programmteile kennzeichnen. Ein Steuerwort hat beispielsweise die gleiche Anzahl Bit wie ein Datenwort, z.B. 16. Damit ist in einem Steuerwort genug Raum für mehrere Gruppen von Steuerbits, sofern eine Gruppe nicht eine allzugrosse Zahl von Teilprogrammen kennzeichnen muss.
Ein Steuerwort mit 16 Bit wie es Fig. 2 zeigt, kann 65 536 verschiedene Adressen für Programm-Module oder Programmschritte angeben. Das ist aber nicht immer gewünscht wie in diesem Beispiel, denn mit vier Steuerbits kann man nur 64 verschiedene Programm-Module kennzeichnen. Man kann durch die Lage dieser Steuerbits somit den Abstand im Speicher zwischen dem Beginn oder der Adresse jedes Programm-Moduls einstellen. In der gezeigten Lage bedeutet dies, dass zwischen zwei aufeinanderfolgenden Adressen für ein Programm-Modul theoretisch weitere 64 Adressen verfügbar wären.
Fig. 3 zeigt eine Folge von Datenwörtern 25, 26, 27, 28, der Steuerwörter 29, 30, 31, 32 beigegeben sind. Beispielsweise durch den Beginn 33 und 34 zweier Datenwörter ist ein Abtastintervall oder eine Abtastzeit 35 definiert.
Die Wirkungsweise der Vorrichtung ist dabei wie folgt. Zuerst wird der Programmspeicher 11 mit einem Programm oder mit der benötigten Anzahl Teilprogramme versehen, die für die Durchführung der gewünschten Verarbeitungsschritte an den Datenwörtern notwendig sind. Da die Erfindung am Beispiel der Verarbeitung von digitalen Audiosignalen erklärt werden soll, kommen etwa folgende Verarbeitungsschritte in Frage:
- Aus- und Einblenden des Signales
- Überblenden von zwei Signalen
- Interpolation von fehlerhaften Datenwörtern
- Ausführung eines sog. Splice-Vorganges
- Verzögerung des Signales
- Erzeugung eines Testsignales usw.
Für jeden dieser Verarbeitungsschritte gibt es mindestens ein Teilprogramm. Diese Teilprogramme sind aber an sich bekannt und die Art wie sie in den Programmspeicher gelangen ebenfalls. Ebenfalls bekannt ist ein Programm, das den Rechner 10 anweist, ein Steuerwort zu lesen und zu verarbeiten. Aber bei diesem bekannten Programm erfolgt das Lesen und Verarbeiten des Steuerwortes bitweise. Zuerst werden alle Bits gelesen, dann wird aber nur das erste Bit verarbeitet und dabei beispielsweise mit einer Vorgabe verglichen. Das Resultat des Vergleiches ergibt dann eine neue Situation worauf das zweite Bit des Steuerwortes verarbeitet wird. Dieses wird wieder mit einer Vorgabe verglichen, und zwar zusammen mit dem Resultat aus dem vorgängigen Vergleich. Dann wird das dritte Bit verarbeitet usw.
Damit wird das Steuerwort nach und nach verarbeitet und dessen Inhalt und dessen Bedeutung wird gemäss einer Baum-Struktur ermittelt.
Gemäss unserer Erfindung soll nun aber die Analyse und die Verarbeitung des Steuerwortes nicht mehr bitweise nach und nach, sondern auf einmal gruppenweise geschehen. Jede Gruppe von Steuerbits enthält eine Angabe darüber, welches Teilprogramm für einen Verarbeitungsschritt zu wählen ist. Damit muss der Programmspeicher 11 nun mit einem Programm versehen werden, das den Rechner 10 anweist, jeweils eine Gruppe von Bits miteinander zu verarbeiten und darausfolgend ein Teilprogramm im Programmspeicher 11 zu wählen. Wie ein solches Programm ausgestaltet ist, ist hier nicht näher beschrieben, nachdem es bloss eine fachmännische Angelegenheit ist, ausgehend von einem Programm zum bitweisen Verarbeiten ein Programm zum bitgruppenweisen Verarbeiten zu erstellen.
Sollen beispielsweise Audiosignale auf einem Magnetband aufgezeichnet werden, so werden sie zuerst in einem Wandler digitalisiert und gelangen von dort über die Ein- und Ausgabeeinheit 4 in den Datenbus 3. Die Datenwörter werden in einem bestimmten Zeitraster in Zeitabständen, die durch die Abtastfrequenz bestimmt sind, an den Datenbus 3 abgegeben. In jedem solchen Zeitabstand oder Abtastintervall 35 erhält der Steuerwortgenerator 9 die Gelegenheit, auch ein Steuerwort an den Datenbus 3 abzugeben. Ein solches Steuerwort ergibt sich dann aus der Kombination der Signale, die zu dieser Zeit gerade in den Leitungen 16, 17, 18 anliegen, wenn diese in Treiber münden, oder die in den Registern 13, 14 und 15 gespeichert sind. Das Signal in der Leitung 16 gibt beispielsweise an, ob das gerade im Datenbus 3 anliegende Datenwort richtig oder fehlerhaft ist.
Da in unserem Beispiel das Register 13 als seriell-paralleles Schieberegister ausgebildet ist, sind darin immer Fehlermarkierungen von fünf aufeinanderfolgenden Datenwörtern gespeichert. Diese fünf Fehlermarkierungen geben einen Fehlerzustand an, der gerade als Adresse für eine Interpolationsroutine verwendet wird. Das Register 13 hat damit in dieser Ausführung einen Eingang mit der Leitung 16 und fünf parallele Ausgänge in den Bus 8, an den immer fünf Bits parallel abgegeben werden. Die Signale in den Leitungen 17 geben die Betriebsart der Vorrichtung wieder. Zum Beispiel können zwei der Leitungen Befehle übermitteln, die sich auf einen Splice-Vorgang beziehen. Eine Leitung gibt beispielsweise an, ob gerade das Ausgangssignal unterdrückt werden (mute) soll oder nicht.
Eine weitere Leitung gibt an, ob im gerade vorliegenden Taktintervall ein gerades oder ungerades Datenwort vorliegt usw. Die Betriebsart wird beispielsweise durch das Drücken bestimmter Tasten an einer Eingabeeinheit oder durch ein Steuerprogramm vorgegeben. Diese Signale werden dann in einem Rechner in digitale Signale umgewandelt und hier parallel an die Leitungen 17 angelegt. Dazu gibt es viele Möglichkeiten, die an sich bekannt und deshalb hier nicht näher dargestellt sind. Die Signale in den Leitungen 17 können beispielsweise auch angeben um wieviel Zeit die Datenwörter aus dem Datenbus 3 bei der Verarbeitung verzögert werden sollen, ob eine Ein-, Aus- oder Überblendung stattfinden soll und wie lange sie allenfalls dauern soll usw. Der daraus gewonnene Teil des Steuerwortes trägt dann eben auch dazu bei, im Programmspeicher 11 das dazu geeignete Programm zu finden.
Bei der hier beispielsweise beschriebenen Verarbeitung werden die Datenwörter zudem in an sich bekannter Weise kodiert oder verschachtelt, d.h. deren ursprüngliche Reihenfolge wird für die Aufzeichnung auf einem Magnetband verändert. Dabei werden auch redundante Korrekturwörter hinzugefügt und die Datenwörter werden geprüft, ob sie richtig oder falsch oder einfach unlesbar sind. Solche Angaben liefert ein an sich bekannter Kodierer oder Dekodierer über die Leitungen 18. Dies dürfte aber hauptsächlich bei der Wiedergabe von Signalen vorkommen. Damit sind alle Plätze in den Registern 13, 14 und 15 gefüllt. Es ist ebenfalls als bekannt vorausgesetzt, dass alle in Fig. 1 dargestellten Elemente durch Taktsignale gesteuert werden, die über weitere Leitungen zugeführt werden, die hier der übersichtlicheren Darstellung wegen nicht speziell dargestellt, aber trotzdem vorhanden sind.
Ein solches Taktsignal, das eine feste Beziehung zur Frequenz der eintreffenden Datenwörter hat, bewirkt in jedem Abtastintervall, dass der Inhalt der Register 13, 14 und 15 auf einmal über den Bus 8 ausgelesen wird. So entsteht ein Steuerwort und so wird es im Datenbus 3 abwechselnd mit den Datenwörtern angelegt. Zu bestimmten Zeiten liegt somit ein Steuerwort über den internen Bus 19 am Rechner 10 an. Dieser liest und verarbeitet nun das ganze Steuerwort auf einmal und gibt eine Adresse des Speicherbereiches für ein entsprechendes Teilprogramm im Programmspeicher 11 über den internen Bus 19 wieder ab. Im Datenspeicher 12 werden alle Daten- und Steuerwörter über mehrere Abtastintervalle gespeichert, so dass dieser wie ein Pufferspeicher wirkt.
Der Rechner 10 kann damit für jedes Datenwort mit den Angaben im Steuerwort im Programmspeicher 11 ein Programm und im Datenspeicher 12 das oder die beteiligten Datenwörter holen und die Verarbeitung des Datenwortes oder der Datenwörter vornehmen. Die verarbeiteten Datenwörter werden anschliessend über den Datenbus 3 und die Ein- und Ausgabeeinheit 5 an den Kodierer weitergegeben und später von dort aus auf das Band aufgezeichnet.
Sollen beispielsweise Audiosignale von einem Magnetband wiedergegeben werden, so werden sie in bekannter Weise gelesen und dem Dekodierer zugeführt. Von dort gelangen die Datenwörter über die Ein- und Ausgabeeinheit 5 in den Datenbus 3. Zwischen den Zeiten, zu denen diese Datenwörter nun eintreffen oder anliegen, gibt der Steuerwortgenerator 9 Steuerwörter ab, die er, wie bereits oben beschrieben, in Funktion der gewünschten Verarbeitung (Signale in Leitungen 17) und in Funktion des Zustandes der Datenwörter, wie er vom Dekodierer (über Leitungen 16 und 18) gemeldet wird, gestaltet. Mit diesem Steuerwort ist nun der Signalprozessor 1 in der Lage, das Datenwort schnell genug mit dem gewünschten Teilprogramm zu verarbeiten und weiterzugeben, bevor das nächste Datenwort eintrifft.
Es ist auch möglich ein Steuerwort einer ganzen Gruppe von Datenwörtern zuzuordnen. Dann kann aber die Verarbeitung nicht mehr von Datenwort zu Datenwort verändert werden. Ein Steuerwort kann auch Angaben enthalten, die es dem Rechner 10 erlauben, im Programmspeicher 11 mehrere Teilprogramme zu beziehen und die dadurch bestimmten Verarbeitungen nacheinander mit dem gleichen Datenwort durchzuführen. Dies geht jedenfalls dann, wenn die Programme kurz oder schnell genug sind, um alle in demselben Abtastintervall ablaufen zu können. Dann enthält das Steuerwort mehrere Steuerbitgruppen, die im Rechner 10 nacheinander verarbeitet werden.
Die beste Wirkung erzielt man, wenn man die Steuerbits 21 bis 24 im Steuerwort 20 so plaziert, dass sie gerade die Anfangsadresse der betreffenden Routine darstellen, deren Ablauf sie gerade auslösen sollen und dabei die Reihenfolge der Steuerbits im Einklang mit den Routinen und deren Reihenfolge im Programmspeicher stehen. Mit den vier Steuerbits 21, 22, 23, 24 kann man zwischen maximal sechszehn Routinen oder Programm-Modulen wählen. Die restlichen Bits des Steuerwortes 20, die hier nicht näher durch Ziffern bezeichnet sind und die in keinem Zusammenhang zu einem zu wählenden Programm stehen, können durch eine entsprechende Schaltung beim Lesen auf Null gesetzt werden oder durch einen Befehl maskiert, d.h. ignoriert werden.
Innerhalb des Steuerwortes 20 müssen aber die Steuerbits nicht unbedingt an der richtigen Stelle stehen. Es genügt, wenn die Steuerbits die richtige Reihenfolge haben, so dass sie einen Index oder eine Nummer bilden. Aus dieser Nummer kann dann eine Adresse gebildet werden, beispielsweise durch einen bei digitalen Signalprozessoren bekannten Befehl, der "Lesen und Schieben" bewirkt. Durch diesen einzigen Befehl wird dann erreicht, dass die Steuerbits im Steuerwort an die richtige Stelle geschoben werden, oder dass sie so gelesen werden, wie wenn sie an einer anderen aber gewünschten Stelle stehen würden. So entsteht aus dem Index oder der Nummer die richtige Adresse.
Die beiden oben genannten Fälle gehen davon aus, dass die Routinen oder Programm-Module im Programmspeicher in einem binären Raster auftreten oder eingelesen sind. Ist dies nicht der Fall, d.h., folgen die Abstände, in Programm-Speicherplätzen gemessen, zwischen den einzelnen Routinen anderen Gesetzmässigkeiten, so kann die Nummer oder der Index, die durch die Steuerbits gegeben sind, mit einer Konstanten multipliziert werden, was im Befehlssystem solcher digitaler Signalprozessoren auch nur einen Befehl kostet.
Wenn im Programmspeicher 11 Platz gespart werden soll, kann eine Routine oder ein Teilprogramm anhand seiner Nummer aktiviert werden, die durch die Steuerbits gegeben wird. Dazu wird eine Tabelle generiert, in der die Startadressen der Routinen den Nummern gegenüberstehen. So können die Routinen an beliebigen Stellen im Programmspeicher 11 abgelegt sein und trotzdem jederzeit abgerufen werden.
Alle diese Verfahren zur Auswahl einer Routine oder eines Programm-Moduls durch eine Gruppe von Steuerbits führen besonders dann zu erheblichen Zeitersparnissen, wenn viele Steuerbits verwendet werden müssen. Dies im Gegensatz zu üblichen Entscheidungsalgorithmen gemäss der üblichen Baumstruktur.
The invention relates to a method for processing digital signals that occur as a sequence of data words.
If data words that occur in a sequence are to be optionally fed to different processing operations according to different rules, it is known that the desired processing is selected and controlled by appropriate control commands. The desired processing can be determined jointly for a group of data words or for each data word individually using these control commands. In order to be able to carry out the individual processing intended for each data word, a so-called control word is assigned to each data word, which contains information about the processing desired for this data word. If processing takes place in a processor, this control word is also read before the data word is processed and processed bit by bit in the processor. Each bit makes a decision.
After each decision, another bit is processed and another decision follows. The reading and decision-making process thus follows a known tree structure.
If the data words are to be processed in real time, the time for the analysis of the individual bits of the control word and for the subsequent decision-making process and the subsequent processing is limited. If the digital signal is, for example, an audio signal or a real-time control signal in a missile control system, this time is very short. On the other hand, known processors do not work as quickly as desired. It can happen that the analysis of the control bits from the control words and the decision-making process for the control word take up a large part of the time and accordingly there is little time left for processing the data word.
It is therefore an object of the invention, as characterized in the claims, to provide a method in which more time is available for processing a data word.
The object is achieved in particular in that the sequence and the position of the individual bits in the control word are selected such that the program addresses of the program or program module with which the data word in question is to be processed, directly from the bits concerned or only by a few additional program steps can be determined.
The advantages achieved by the invention can essentially be seen in the fact that digitized audio signals can be processed in a commercially available signal processor, for example with a Harvard architecture. Different processing operations can be carried out for each data word or multiple processing operations can be carried out in succession for each data word. The method according to the invention is advantageous wherever the processing of data words is to take place at high speed and in real time and where one would like to save every unnecessary command. The decision-making processes are thus significantly shortened compared to the usual software decision-making methods that work with the tree architecture. You can then do more with a single signal processor, increasing efficiency in terms of cost and space.
The invention is explained in more detail below with the aid of drawings which illustrate only one embodiment.
It shows
1 is a schematic representation of an apparatus for performing the method,
Fig. 2 is a schematic representation of a control word and
Fig. 3 is a schematic representation of data words with control words together.
1 shows a schematic illustration of an example of a device for carrying out the method according to the invention. This example relates in particular to the processing of digital audio signals in a multi-channel tape recorder. 1 therefore only shows that part of such a device which lies between a recording or playback head and an analog / digital or digital / analog converter and in which digitized signals are subjected to certain processing steps. This processing takes place in the signal processor 1, which is connected via a connection 2 to a data bus 3, in which digitized signals, i.e. Data words are conveyed. Two input and output units 4 and 5 are also connected to the data bus 3 via connections 6 and 7.
The input and output unit 4 is provided for digital audio data, for example. A control word generator 9 is also connected to the data bus 3 via a bus 8.
The signal processor 1 is designed as a commercially available digital signal processor, as is already known, for example, under the designation TMS 320. It has in particular a computer 10, a program memory 11 and a separate data memory 12, all of which are connected to one another via an internal bus 19. The signal processor 1 is connected to the data bus 3 via a connection 2. Internally, the connection 2 is connected to the data memory 12. In particular, the computer 10 has an accumulator part which is known per se and therefore not described in more detail here, and an arithmetic unit which operate according to the instructions from a program.
The control word generator 9 consists, for example, of three registers 13, 14 and 15, all of which are connected to the bus 8. For example, register 13 is designed as a serial-parallel shift register, register 14 as a parallel register and register 15 also as a parallel register. So-called tri-state drivers are also conceivable instead of registers. Register 13 is also connected to a line 16, register 14 to lines 17 and register 15 to lines 18. The register receives information about each line that corresponds to one bit. Register 14 thus receives four bits and register 15 receives seven bits of information simultaneously.
2 shows the structure of a control word 20. Four control bits are designated by 21, 22, 23 and 24, which together identify a program module or a so-called routine, which is stored in a program memory. If the entire control word 20 does not require all of the bits for identifying a program module, the position of the control bits with respect to the beginning and the end of the control word also plays an important role. A control word can contain further control bits, which together identify one or more different program parts. For example, a control word has the same number of bits as a data word, e.g. 16. This means that there is enough space in a control word for several groups of control bits, unless a group has to identify an excessively large number of sub-programs.
A control word with 16 bits as shown in FIG. 2 can specify 65 536 different addresses for program modules or program steps. However, this is not always desirable as in this example, because with four control bits you can only identify 64 different program modules. The position of these control bits can thus be used to set the distance in the memory between the start or the address of each program module. In the situation shown, this means that theoretically a further 64 addresses would be available between two successive addresses for a program module.
3 shows a sequence of data words 25, 26, 27, 28, to which control words 29, 30, 31, 32 are added. For example, a sampling interval or a sampling time 35 is defined by the start 33 and 34 of two data words.
The operation of the device is as follows. First, the program memory 11 is provided with a program or with the required number of partial programs which are necessary for the execution of the desired processing steps on the data words. Since the invention is to be explained using the example of processing digital audio signals, the following processing steps are possible:
- Hide and show the signal
- Crossfading two signals
- Interpolation of incorrect data words
- Execution of a so-called splice process
- delay of the signal
- generation of a test signal, etc.
There is at least one partial program for each of these processing steps. However, these partial programs are known per se and the way in which they reach the program memory is also known. A program is also known which instructs the computer 10 to read and process a control word. But with this known program, the control word is read and processed bit by bit. All bits are read first, but then only the first bit is processed and compared, for example, to a specification. The result of the comparison then results in a new situation, whereupon the second bit of the control word is processed. Again, this is compared to a specification, together with the result of the previous comparison. Then the third bit is processed, etc.
The control word is thus processed gradually and its content and meaning is determined in accordance with a tree structure.
According to our invention, however, the analysis and processing of the control word is no longer to be done bit by bit, but rather suddenly in groups. Each group of control bits contains information about which program unit to select for a processing step. The program memory 11 must therefore now be provided with a program which instructs the computer 10 to process a group of bits with one another in each case and to subsequently select a partial program in the program memory 11. How such a program is designed is not described in more detail here, since it is merely an expert matter to create a program for bit-group processing starting from a program for bit-wise processing.
If, for example, audio signals are to be recorded on a magnetic tape, they are first digitized in a converter and from there enter the data bus 3 via the input and output unit 4. The data words are determined in a certain time grid at time intervals which are determined by the sampling frequency. output to the data bus 3. In each such time interval or sampling interval 35, the control word generator 9 is given the opportunity to also output a control word to the data bus 3. Such a control word then results from the combination of the signals which are present at the time in the lines 16, 17, 18 when these end in drivers or which are stored in the registers 13, 14 and 15. The signal in line 16 indicates, for example, whether the data word currently in data bus 3 is correct or incorrect.
Since the register 13 is designed as a serial-parallel shift register in our example, error markings of five successive data words are always stored therein. These five error flags indicate an error condition that is currently being used as an address for an interpolation routine. In this embodiment, register 13 thus has an input with line 16 and five parallel outputs on bus 8, to which five bits are always output in parallel. The signals in lines 17 represent the operating mode of the device. For example, two of the lines can send commands related to a splice operation. For example, a line indicates whether the output signal is to be suppressed (mute) or not.
Another line indicates whether there is an even or odd data word in the current clock interval, etc. The operating mode is specified, for example, by pressing certain keys on an input unit or by a control program. These signals are then converted into digital signals in a computer and are applied here in parallel to the lines 17. There are many ways of doing this which are known per se and are therefore not shown in more detail here. The signals in the lines 17 can also indicate, for example, how much time the data words from the data bus 3 are to be delayed during processing, whether fading in, fading out or fading should take place and how long it should last, etc. The part obtained therefrom of the control word then also helps to find the suitable program in the program memory 11.
In the processing described here, for example, the data words are also encoded or interleaved in a manner known per se, i.e. their original order is changed for recording on a magnetic tape. Redundant correction words are also added and the data words are checked whether they are correct, incorrect or simply unreadable. Such information is provided by a coder or decoder known per se via the lines 18. This should, however, mainly occur when signals are reproduced. This completes all the spaces in registers 13, 14 and 15. It is also assumed to be known that all of the elements shown in FIG. 1 are controlled by clock signals which are supplied via further lines, which are not specifically shown here for the sake of clarity, but are nevertheless present.
Such a clock signal, which has a fixed relationship to the frequency of the incoming data words, causes the content of the registers 13, 14 and 15 to be read out at one time via the bus 8 in each sampling interval. This is how a control word is created and how it is created in data bus 3, alternating with the data words. At certain times, a control word is thus present on the computer 10 via the internal bus 19. This now reads and processes the entire control word at once and outputs an address of the memory area for a corresponding partial program in the program memory 11 via the internal bus 19. All data and control words are stored in the data memory 12 over a plurality of sampling intervals, so that this acts like a buffer memory.
The computer 10 can thus fetch a program for each data word with the information in the control word in the program memory 11 and the data word (s) involved in the data memory 12 and process the data word or data words. The processed data words are then passed on to the encoder via the data bus 3 and the input and output unit 5 and later recorded on the tape from there.
If, for example, audio signals are to be reproduced from a magnetic tape, they are read in a known manner and fed to the decoder. From there, the data words enter the data bus 3 via the input and output unit 5. Between the times at which these data words now arrive or are present, the control word generator 9 outputs control words which, as already described above, it functions in accordance with the desired processing (Signals in lines 17) and in function of the state of the data words, as reported by the decoder (via lines 16 and 18), designed. With this control word, signal processor 1 is now able to process and pass on the data word quickly enough with the desired partial program before the next data word arrives.
It is also possible to assign a control word to an entire group of data words. Then the processing can no longer be changed from data word to data word. A control word can also contain information which allows the computer 10 to obtain a plurality of partial programs in the program memory 11 and to carry out the processing operations determined thereby one after the other with the same data word. In any case, this is possible if the programs are short or fast enough to be able to run all in the same sampling interval. The control word then contains a number of control bit groups which are processed in succession in the computer 10.
The best effect is achieved if the control bits 21 to 24 are placed in the control word 20 so that they represent the start address of the routine in question, the sequence of which they are supposed to trigger and the order of the control bits in accordance with the routines and their order in Program memory are available. With the four control bits 21, 22, 23, 24 you can choose between a maximum of sixteen routines or program modules. The remaining bits of the control word 20, which are not identified by numerals here and which have no connection to a program to be selected, can be set to zero by a corresponding circuit during reading or masked by a command, i.e. be ignored.
However, the control bits do not necessarily have to be in the correct place within the control word 20. It is sufficient if the control bits are in the correct order so that they form an index or a number. An address can then be formed from this number, for example by means of a command which is known in digital signal processors and which causes “reading and pushing”. With this single command it is then achieved that the control bits in the control word are shifted to the correct position or that they are read as if they were at a different but desired position. This is how the correct address is created from the index or number.
The two cases mentioned above assume that the routines or program modules appear or have been read in the program memory in a binary grid. If this is not the case, i.e. if the distances, measured in program memory locations, follow other laws between the individual routines, then the number or the index given by the control bits can be multiplied by a constant, which is the case in the command system digital signal processors cost just one command.
If space is to be saved in the program memory 11, a routine or a partial program can be activated on the basis of its number, which is given by the control bits. For this purpose, a table is generated in which the start addresses of the routines face the numbers. Thus, the routines can be stored anywhere in the program memory 11 and still be called up at any time.
All of these methods for selecting a routine or a program module by means of a group of control bits lead to considerable time savings, particularly when many control bits have to be used. This is in contrast to the usual decision algorithms according to the usual tree structure.