Der Digitale Signalprozessor (DSP)




Der Digitale Signalprozessor − DSP




Inhaltsverzeichnis:

A.
a) Einleitung
b) Was ist ein digitaler Signalprozessor und wieso benutzt man digitale Signalverarbeitung?

B.
a) Beispiel des C64x+ DSP Cores vonTexas Instruments
b) Anwendungen des C64x+ DSP Cores

C.
a) TMS320C6474 Multicore DSP
b) Blockschaltbild
c) Ein- und Ausgabeschnittstellen
d) Speichersystem
e) Ausführungseinheiten

D.
a) Programmierung

E.
a) Quellenverzeichnis



A.a)

Dieser Artikel wurde ursprünglich für einen 30-minütigen Seminarvortrag erstellt. Daher ist er vom Umfang und Tiefe ein wenig eingeschränkt, aber ich hoffe alles Wesentliche wird trotzdem verständlich dargestellt.

Viel Erkenntnis und Freude beim Lesen!


A.b)

Was ist ein digitaler Signalprozessor?

Ein digitaler Signalprozessor, kurz DSP, ist ein Prozessor, der auf die Verarbeitung von digitalisierten Signaldaten spezialisiert und optimiert ist.
Die Signaldaten können aus den verschiedensten Quellen stammen, das können Audiosignale sein, die mit einem Mikrophon aufgenommen wurden, Videosignale, die mit einem Bildsensor eingefangen wurden, Spannungsverläufe, die man an einem Bauteil abgreift oder die Empfangssignale einer Radarantenne. All diese Signale werden erst einmal in einer analogen Form erfasst und müssen anschließen mit einem Analog-Digital Wandler in ein digitales Signal transformiert werden. Der umgekehrte Weg ist natürlich ebenso möglich; z.B. digital gespeicherte Audiodaten werden erst mit einem passenden Algorithmus dekomprimiert, mit einen Digital-Analog-Wandler in ein analoges elektrisches Signal umgewandelt und zum Schluss durch eine Lautsprechermembran in ein für den Menschen hörbares analoges Schallsignal transformiert.
Die digitale Form von Signalen hat noch einige weitere Vorteile:

    − Digitale Signale lassen sich einfacher störungsfrei über große Entfernungen transportieren (Lichtwellenleiter)

    − Digitale Signale können beliebig oft exakt kopiert werden, analoge Signale werden von Generation zu Generation schlechter.

    − Zum Filtern von analogen Signalen müssen die Bauteile gut auf das jeweilige Signal angepasst sein, spätere Änderungen sind kaum noch möglich. Programme für DSPs können auch nachträglich einfach verändert werden.

Auch bei der Bearbeitung gibt es zahlreiche Möglichkeiten, angefangen vom simplen Verschieben des Signals, Stauchen oder Strecken, bis hin zur verlustfreien oder verlustbehafteten Kompression oder der Darstellung des Signalspektrums.

Dabei werden zwei eher simple mathematische Funktionen besonders häufig benötigt, die Addition/Subtraktion und Multiplikation/Division.

Ein Beispiel für einen oft benutzten Filter ist der Finite Impulse Response Filter (FIR):





Dabei wird eine bestimmte Menge [N] an Eingangssamples jeweils mit einem Koeffizenten multipliziert und alle Faktoren anschließend zum Ausgangssample addiert. Für die gesamte Berechnung wird hier nur die Multiplikation und Addition benötigt.


Will man nun ein konkretes Signal verarbeiten, muss man erst einmal schauen wie groß die anfallende Datenmenge pro Zeiteinheit ist und dann untersuchen wie viele Berechnungen mit jedem Sample/Datum durchgeführt werden müssen. Damit kann man jetzt entscheiden, wie hoch die Performance des DSPs mindestens sein muss.

Die Rechenrohleistung wird bei einem Prozessor zum großen Teil durch zwei Faktoren bestimmt, die Taktfrequenz und die Anzahl der parallel ausführbaren Operationen pro Takt. Bei digitalen Signaldaten handelt es sich um so genannte Streaming Daten, es ist ein kontinuierlicher Fluss von Daten, ohne Abhängigkeiten, Verzweigungen oder Sprüngen, wie man sie im Code von normalen Anwendungsprogrammen findet. Daher lässt sich die digitale Signalverarbeitung besonders einfach parallelisieren und digitale Signalprozessoren zeichnen sich durch viele parallele Rechenwerke aus.

Aber warum sollten solche Überlegungen vorher angestellt werden, man könnte doch auch einfach immer den schnellsten DSP nehmen, der am Markt erhältlich ist. Mehr Performance bedeutet auch gleichzeitig immer mehr Aufwand, sowohl bei der Entwicklung als auch bei der Herstellung und Aufwand ist gleich Kosten. Ein nicht optimal dimensionierter Prozessor arbeitet zudem ineffektiv, verbraucht also mehr Energie als eigentlich zur Bewältigung der Aufgaben benötigt wird. Gerade bei mobilen Geräten ist das sehr wichtig, so soll z.B. ein MP3-Player klein, leicht und günstig sein, aber der Akku darf nicht schon nach 5 Liedern leer sein, weil die Hardware zu viel verbraucht.



B.a)

Der C64x+ DSP Core


Als Beispiel möchte ich hier die C64x+ DSP Familie von Texas Instruments aufzeigen.
Der C64x+ ist ein 32-Bit „Fixed Point“ DSP mit VLIW (Very Long Instruction Word) Architektur. Was VLIW genau bedeutet, wird später klar. Der DSP hat zwei identische Datenpfade (Data Path A, B) mit jeweils 4 parallelen Funktions-/Recheneinheiten (Pipelines), aufgeteilt in einem Multiplizierer und drei arithmetischen Einheiten. Insgesamt können so 8 32-Bit Operationen gleichzeitig pro Takt ausgeführt werden.
Den C64x+ gibt es als einen richtigen Prozessorchip, TI hat das Design aber so modular gestaltet, dass sie den Core, also nur das eigentliche Rechenwerk, auch in andere Chips integrieren konnten. Dort arbeitet die Recheneinheit dann wie ein mathematischer Co-Prozessor, der über die Software gezielt angesteuert werden kann. Die Taktfrequenz reicht je nach Modell von 300 MHz bis 1000 MHz.


B.b)

Bei TI ist der C64x+ Core in mehreren Produktfamilien integriert:

    − OMAP Application Prozcessor: In der OMAP Serie sind eine ARM Cortex-A8 CPU als Hauptprozessor, ein SGX Core von PowerVR zur 3D Grafikbeschleunigung und der C64x+ DSP als Imagin- und Audio-Prozessor in einem Chip integriert.
    Die OMAPs werden z.B. tragbaren Spielekonsolen, wie der Pandora, PDAs, Navigationsgeräten, mobilen Videoplayern und ähnlichen Geräten eingesetzt.

    − DaVinci Digital Media Processor: Eine ARM9 CPU und ein C64x+ DSP mit zusätzlichen HD-Video Co-Prozessoren sind in den DaVinci Chips integriert. Eingesetzt werden diese Chips bei der Encodierung und Decodierung von HD-Videos (Video Player) und HD-Video Streaming (IP-TV).



TI Video and Imaging Solutions Guide 3Q2008




In dem Blockschaltbild kann man eine Anwendung der DaVinci Prozessoren und DSPs sehen. So könnte ein High−Definition-Video Decoder aufgebaut sein, mit dem der Anwender z.B. seine Aufnahmen aus einer Videokamera bei Bedarf digitalisieren, komprimieren und abspeichern, oder einen verschlüsselten und komprimierten IP-TV Stream aus dem Internet entschlüsseln, dekomprimieren und auf dem Flachbildschirm im Wohnzimmer ansehen kann.


Ganz oben links ist ein digitaler Audioausgang mit Sample Rate Converter, um auch Verstärker oder aktive Lautsprechersysteme anzuschließen, die nur zu bestimmten Sample Raten kompatibel sind. Darunter kann man zwei analoge Eingänge sehen, einer für das Audiosignal und einer für das Videosignal. Das analoge Signal wird zuerst mit einem Verstärker bzw. einem Filter behandelt und dann jeweils über einen Analog-Digital Konverter digitalisiert und in den DaVinci Prozessor eingespeist. Wahlweise kann das Videosignal auch direkt aus einer digitalen Quelle zugeführt werden. Zusätzlich steht für die Datenein- und Ausgabe auch noch ein Gigabit Netzwerkanschluss zur Verfügung und die Daten können von einer Festplatte eingelesen, oder dorthin abgespeichert werden. Die Ausgabe der Videodaten erfolgt ebenfalls wahlweise direkt in digitaler Form über einen HDMI Transmitter, oder über einen Digital-Analog Konverter als klassisches analoges Videosignal.


Um zwei HD−Kanäle gleichzeitig zu bearbeiten, ist ein zweiter DaVinci Prozessor in das System integriert. Die Rechenleistung der beiden DaVinci Chips reicht jedoch nicht für alle Aufgaben aus. Über einen PCI Bus sind nochmals drei weitere DSPs als Co-Prozessoren angebunden. Diese übernehmen exklusiv die Aufgabe des Color Subsampling bei der Videobearbeitung. Color Subsamling ist ein verlustbehaftetes Kompressionsverfahren und z.B. im MPEG4 Standard implementiert; 4:2:2 bedeutet, dass von den drei Farbkanälen RGB (Rot, Grün, Blau) die Farbinformation in zwei Kanälen halbiert wird, wodurch die gesamte Datenmenge um 1/3 reduziert wird.



C.a)

Der TMS320C6474 Multicore DSP

Der TMS320C6474 ist ein Multicore DSP und derzeit von Texas Instruments der schnellste Fixed Point Prozessor. In einem Chip sind gleich drei sogenannte C64x+ Megamodule integriert worden, die jeweils mit einer Taktfrequenz von 1000 MHz laufen. Die theoretisch maximale Rechenleistung liegt bei 24 Milliarden Instruktionen pro Sekunde;
(8 Instruktionen/(Core*Takt) * 3 Cores * 1.000.000.000 Takte/Sekunde).
Nach Angaben von TI werden zumindest 24 Milliarden 16-Bit MACs pro Sekunde auch in realen Anwendungen erreicht.
Der Prozessor wird von TI mit 7 Layern in einem 65 nm Kupfer-Metallisierungs-Prozess gefertigt. Die Betriebsspannung wird dynamisch zwischen 0,9 Volt und 1,2 Volt geregelt, damit die Leistungsaufnahme je nach Betriebszustand immer möglichst gering ist. Für einen DSP ist dieses Modell schon richtig teuer, der Listenpreis liegt bei rund 250 U.S. Dollar.



C.b)


Im nächsten Block Diagramm kann man sehen, aus welchen Bausteinen der Prozessor besteht. Die drei DSP Subsysteme 0 bis 2 enthalten jeweils die C64x+ Megamodule und jedes Megamodul ist im Grunde der C64x+ Core mit eigenem Level 1 Cache, Power Control Einheit, internen DMA Controller und Level 2 Cache Controller.
Alle Megamodule, der externe Arbeitsspeicher und die Ein-und Ausgabeschnittstellen sind über die SCR (Switched Central Resource) miteinander verschaltet. Die SCR selber ist nochmals in A und B unterteilt, beide sind mit 1/3 der Corefrequenz getaktet und schalten latenzfreie Master-Slave Verbindungen zwischen den einzelnen Komponenten. Die Datenpfade sind dabei, abhängig von der Richtung, 64 oder 128 Bit breit. Komponenten, die selber keinen 64 Bit oder 128 Bit Port haben, sind über eine zusätzliche Brücke angeschlossen, die den Pfad entsprechend anpasst.
Mit den beiden PLLs (Phase Lock Loop) wird der interne Takt für die Cores und dem Memory Controller aus einem extern eingespeisten geringeren Taktsignal generiert.



Functional Block Diagram, TMS320C6474 Multicore Digital Signal Processor (Rev. A)



C.c)

Ein- und Ausgabeschnittstellen (I/O Ports and Interfaces)

Der DSP hat mehrere verschiedene Ein- und Ausgabeschnittstellen integriert.
Zwei Serial RapidIO (SRIO) Links können Daten mit 1,25 Gbps, 2,5 Gbps oder 3,125 Gbps übertragen. Die Hochgeschwindigkeit Punkt-zu-Punkt Verbindung dient zum Anschluss an andere DSPs oder Switches auf der selben Platine.
Zwei Multichannel Buffered Serial Ports (McBSP) können Daten mit 100 Mbps übertragen.
Ein Gigabit Netzwerkanschluss wird über den Ethernet Media Access Controller (EMAC) realisiert. Über den I²C Bus (I2C; Inter-integrated circuit bus) können vom DSP aus andere Geräte gesteuert werden und mit einem Host Prozessor kommuniziert werden.
Die GPIO sind 16 programmierbare General-purpose input/output Ports, das FSYNC Modul dient zur Synchronisation von DMA Transaktionen. Im Antennen Interface sind 6 Links integriert, von denen jeder bis zu 3,072 Gbps übertragen kann. Die Links sind kompatibel zum OBSAI, RP3 und CPRI Standard.
6 General-purpose Timer mit 64 Bit Genauigkeit sind ebenfalls vorhanden und können wahlweise auch als zwölf 32 Bit Timer benutzt werden.


C.d)

Speichersystem (Memory Subsystem)

Der TMS320C6474 hat ein drei-stufiges Speichersystem. Die ersten beiden Stufen, der Level 1 und Level 2 Caches sind direkt im Chip integriert. Dafür wird schneller statischer RAM (SRAM) benutzt. Die dritte Stufe, der eigentliche Arbeitsspeicher, ist extern und aus dynamischen RAM (DRAM). Der externe Speicherbus ist 32 Bit breit und kann mit bis zu 333 MHz getaktet werden und versteht sich mit Chips nach Double Data Rate 2 Standard. DDR2 SDRAM überträgt pro Takt 2 Bit, was bei 32 Datenleitungen mit 333 MHz einer Speicherbandbreite von 2,66 GB/s entspricht.
Den 3 MiB großen SRAM teilen sich die 3 Cores, entweder symmetrisch, jeder Core bekommt 1 MiB, was die Bootkonfiguration ist, oder per Software einstellbar asymmetrisch 1,5 MiB, 1 MiB und 0,5 MiB. Bis zu 256 KiB können wahlweise als Level 2 Cache benutzt werden, der Rest ist jeweils nur schnellerer Arbeitspeicher. Im L2 Cache werden Daten und Instruktionen gemeinsam gespeichert.
Demhingegen ist der Level 1 Cache in Befehls- (Instruction) und Daten-Cache unterteilt. Jeder DSP Core hat seinen eigenen Level 1 Cache mit je 32 KiB Speicherplatz für Befehle und 32 KiB für Daten. Auch dieser Cache kann als Mapped-RAM, 2 Wege Cache oder einer Mischung aus beiden konfiguriert werden.
Um Daten aus dem Speicher in die Arbeitsregister zu Laden, gibt es 4 32-Bit Ladepfade und 4 32-Bit Speicherpfade. Beim Laden oder Speichern von Doublewords (64 Bit) werden jeweils zwei Pfade zusammen benutzt.



Megamodule Block Diagram, TMS320C6474 Multicore Digital Signal Processor (Rev. A)



C.e)

Ausführungseinheiten (Pipelines)

Wie bereits vorhin erwähnt, hat der digitale Signalprozessor eine so genannte „Very Long Instruction Word“ Architektur. Die Idee dahinter ist es, zwei sich eigentlich gegenseitig widersprechende Eigenschaften miteinander zu verbinden:

    − Die Architektur soll massiv parallel sein.
    − Die Hardware soll einfach sein.


Mehr parallele Ausführungseinheiten sind dabei nicht das Problem und relativ einfach zu realisieren, jedoch steigt die Komplexität der vor- und nachgeschalteten Logik (Instruction Buffer, Decoder, Out of Order Reorder Buffer, Sheduler, etc.) extrem an um die vielen Einheiten überhaupt noch alle gleichzeitig mit Arbeit versorgen zu können. Beim VLIW Ansatz wird genau das Gegenteil gemacht und diese zusätzliche Logik noch einfacher gestaltet oder teilweise sogar ganz weg gelassen. Die Aufgaben werden einfach in die Softwareebene verschoben, der Programmierer oder Compiler muss sich nun darum kümmern.


Da bei RISC oder CISC Prozessoren immer nur eine Instruktion pro Datenpaket (Fetch Packet) enthalten ist muss eine zusätzliche Hardwareeinheit mehrere Pakete nacheinander laden und dann selber entscheiden, wie diese möglichst effektiv gleichzeitig an die Pipelines weitergegeben werden können. Beim VLIW Prozessor hat jedes Datenpaket immer gleich 8 Instruktionen (8 * 32 Bit), bei kompakten Instruktionen können es sogar bis zu 14 sein, bei denen auch gleich dabei steht, zu welcher Pipeline sie zugeordnet werden müssen. Die dafür zuständige Hardware muss also nur ganz einfach den OpCode einlesen und so weiterschalten, wie es im Code steht.




Basic Format of a Fetch Packet, TMS320C64x/C64x+ DSP CPU and Instruction Set Reference Guide (Rev. H)





Add Instruction, TMS320C64x/C64x+ DSP CPU and Instruction Set Reference Guide (Rev. H)




Hier ist der Aufbau eines einzelnen 32-Bit Befehls zu sehen, es handelt sich hierbei um:

    ADD .L2 src1, src2, dst


In Bit 0 ist das Parrallel-Flag gesetzt. Damit wird angezeigt, ob dieser und der folgende Befehl später zu einem Ausführungspaket zusammengefasst werden kann. Bit 1 ist ebenfalls gesetzt, der Befehl geht somit an Daten Pfad 2. In Bit 2-4 wird wird die Unit, hier die L Unit, und die Adressierungsart codiert. Die eingentliche Instruktion ADD steht im Opcode von Bit 5 bis 11. Der Opcode hängt von der Art der Operaden ab. Ist scr1 ein SINT und src2 ein XSINT und soll das Ergebnis als SINT ausgegeben werden, wäre er z.B.
000 0011.
Für die beiden Operaden und das Ergebnis sind jeweils nur 5 Bit vorgesehen. Das reicht aus, da ja nur eines der 32 Register adressiert werden kann (2^5 = 32). Das Zero-Bit (28) zeigt an, ob das Ergebis 0 oder von 0 verschieden ist. In den creg Registern können noch zusätzliche Bedingungen stehen, die erst überprüft werden, trifft die Bedingung zu, wird die Operation ausgeführt und ansonsten wird sie verworfen.


Jeden der beiden Daten Pfade (Data Path) A und B sind jeweils 32 32-Bit Register (General Purpose Register) zugeordnet, die als Arbeitsregister sowohl die Operanden als auch die Ergebnisse aufnehmen und als Daten-Adress Zeiger oder Bedingungs-Register benutzt werden können. Die Operaden können 8-Bit, 16-Bit oder 32-Bit (Word) breit sein. Einige Operationen sind auch mit 40-Bit (Long) oder 64-Bit (Double Word) Operaden möglich, um die Genauigkeit deutlich zu erhöhen. In den Fällen werden dann jeweils 2 Register (Even und Odd) als Registerpaar genutzt. Über zwei Crossports können die Einheiten aus Pfad A auch ein Register aus Registersatz B lesen und umgekehrt, jeder Crossport kann aber nur von einer Einheit gleichzeitg benutzt werden. Die Pipelines sind teilweise für unterschiedliche Instruktionen gebaut, 2 Pipelines sind Multiplizierer (.M1, .M2), die restlichen 6 arithmetische Einheiten (.L1, .L2, .S1, .S2, .D1, .D2).



CPU Data Paths, TMS320C64x/C64x+ DSP CPU and Instruction Set Reference Guide (Rev. H)




Functional Unit

Fixed-Point Operations

.L unit (.L1, .L2)

32/40-bit arithmetic and compare operations

32-bit logical operations

Leftmost 1 or 0 counting for 32 bits

Normalization count for 32 and 40 bits

Byte shifts

Data packing/unpacking

5-bit constant generation

Dual 16-bit arithmetic operations

Quad 8-bit arithmetic operations

Dual 16-bit minimum/maximum operations

Quad 8-bit minimum/maximum operations

.S unit (.S1, .S2)

32-bit arithmetic operations

32/40-bit shifts and 32-bit bit-field operations

32-bit logical operations

Branches

Constant generation

Register transfers to/from control register file (.S2 only)

Byte shifts

Data packing/unpacking

Dual 16-bit compare operations

Quad 8-bit compare operations

Dual 16-bit shift operations

Dual 16-bit saturated arithmetic operations

Quad 8-bit saturated arithmetic operations

.M unit (.M1, .M2)

32 × 32-bit multiply operations

16 × 16-bit multiply operations

16 × 32-bit multiply operations

Quad 8 × 8-bit multiply operations

Dual 16 × 16-bit multiply operations

Dual 16 × 16-bit multiply with add/subtract operations

Quad 8 × 8-bit multiply with add operation

Bit expansion

Bit interleaving/de-interleaving

Variable shift operations

Rotation

Galois Field Multiply

.D unit (.D1, .D2)

32-bit add, subtract, linear and circular address calculation

Loads and stores with 5-bit constant offset

Loads and stores with 15-bit constant offset (.D2 only)

Load and store doublewords with 5-bit constant

Load and store nonaligned words and doublewords

5-bit constant generation

32-bit logical operations



Der C64x+ Core kann pro Takt acht 16 x 16-Bit Multiply-Accumulate (MAC) (a ← a + b * c) Operationen durchführen oder alternativ zwei 32 x 32-Bit MACs. Mit den drei Core und 1000 MHz Takt kommt man somit auf die vorhin genannten 24 Milliarden 16 x 16-Bit MACs.



Pipeline Phases Block Diagram, TMS320C64x/C64x+ DSP CPU and Instruction Set Reference Guide (Rev. H)



Die Arbeitsweise des Rechenwerkes lässt sich in drei Schritte unterteilen:

    − Fetch
    − Decode
    − Execute

Fetch und Decode sind immer gleich lang, Fetch dauert 4 Phasen, Decode 2 Phasen und Execute kann zwischen 1 und 5 Phasen dauern.
In der Fetch Phase werden nacheinander 4 Schritte abgearbeitet:

    * PG (Program address generate): die CPU berechnet die Speicheradresse des Programmcodes

    * PS (Program address send): die berechnete Speicheradresse wird an den Arbeitsspeicher gesendet

    * PW (Program access ready wait): die Speicheradresse bzw. der Inhalt wird eingelesen

    * PR (Program fetch packet receive): das Datenpaket ist in die CPU geladen

Die beiden Schritte in der Decode Phase sind:

    * DP (Instruction dispatch): das Datenpaket (fetch packet) wird in Ausführungspakete (Execute packets) unterteilt. In einem Ausführungspaket sind jeweils alle Instruktionen des Datenpakets enthalten, die parallel bearbeitet werden können. Die Instruktionen werden der jeweiligen Pipeline zugeordnet.

    * DC (Instruction decode): das Quell- und Zielregister für die Instruktionen wird berechnet und zugeordnet.

Je nach Instruktion dauert die Execute Phase 1 bis 5 Schritte. Allen Instruktionen gemeinsam ist der erste Schritt, bei dem die Operanden gelesen und die Bedingungen der Instruktion überprüft werden. Single-Cycle Instruktionen sind jetzt bereits fertig und schreiben das Ergebnis direkt ins Zielregister. Am längsten dauern die Ladebefehle, sie schreiben die Daten erst im 5. Schritt in das Zielregister, schließlich müssen die Daten auch erst aus dem Cache oder Arbeitsspeicher geholt werden.



D.a)

Programmierung

Da es sich auch um eine Load-Store Architektur handelt, kann man jede Berechnung ebenfalls in 3 Schritte unterteilen. Zuerst nutzt man einen Ladebefehl, um z.B. zwei Operaden aus dem Arbeitsspeicher in die Register A1 und A2 zu laden. Im zweiten Schritt wird die eigentliche Rechenoperation ausgeführt, also z.B. eine Multiplikation der beiden Operanden. Das Ergebnis lassen wir in Register A1 schreiben. Wird das Ergebnis jetzt erstmal nicht weiter benötigt, muss der Inhalt des Register A1 mit einem Store Befehl wieder in den Arbeitsspeicher zurück geschrieben werden, ansonsten kann A1 nicht mehr benutzt werden und die wenigen Register wären schnell alle belegt.
Der Code könnte z.B. so aussehen:

    ...
    LDNW .D1 *A4, A1
    ; Lädt den Inhalt (32 Bit Word) der ; Speicheradresse, die in Register A4 steht, ; in das Register A1
    LDNW .D1 *A5, A2
    MPY32 .M1 A1, A2, A3 ; Multipliziert (32 Bit SINT) Inhalt von ; Register A1 mit A2 und schreibt ; Ergebnis in Register A3
    STNW .D1 A3, *A4 ; Schreibt den Inhalt von A3 in die ; Speicheradresse, die in A4 steht
    ...

In der Programmierung unterscheidet sich ein DSP nicht von anderen Mikroprozessoren oder Mikrocontrollern. Programme können direkt in Assembler geschrieben werden, oder auch in einer Hochsprache wie C, passende Compiler sind beim Hersteller erhältlich.
Auf den C6000 DSPs läuft als Betriebssystem entweder ein DSP/BIOS Kernel von TI oder Firmware von Drittanbietern, wie VLX von VirtualLogix, OSE von Enea oder LEOs von Empower. Die OMAP und DaVinci Prozessoren können auch mit Linux und anderen ARM kompatiblen Betriebssystemen laufen.



E.a)

Quellenverzeichnis

DaVinci™, OMAP™ , C64x+, TMS320C6474 sind eigentragene Markenzeichen der Texas Instruments Incorporated. Dieser Text steht unter der GNU Free Documentation License Version 1.3, 3 November 2008. Zitate und zitierte Ausschnitte stehen unter der jeweiligen Lizenz der Quelle.