Fußnoten
Die gleiche Entwicklung kann man natürlich auch bei den universellen Mikroprozessoren und den Mikrocontrollern beobachten.
vgl. Abschnitt 6.2.1 in KE6.
vgl. K1705, KE7, A5.8
Zum DMA-Verfahren vgl. K1705, KE4, A3.7.
Z.B. Texas Instruments TMS320C4x, Analog Devices ADSP-2106x SHARC.
TPERIOD entspricht den Latches der Zähler im MC6840, s. KE5.
Dies unterscheidet ihn von vielen Zeitgeber-Modulen anderer Prozessoren, die als freilaufende Zähler realisiert sind.
Z.B der Baustein AD1847 (SoundPort) von Analog Devices mit einer Abtastrate von 5,5-48 Mhz, Verstärker- und Mikrophoneingang sowie einem Verstärkerausgang.
Es sind natürlich auch Anwendungen denkbar, in denen die Richtungen - gesteuert durch eine Absprache der Partner - wechseln können.
Zur synchronen Übertragung vgl. K1705, KE7, A5.7.
Dennoch soll darauf hingewiesen werden, daß die SPORTs keine universellen, synchronen/asynchronen seriellen Schnittstellen (USART - Universal Synchronous/Asynchronous Receiver/Transmitter) darstellen. Die Übertragung wird insbesondere nicht durch ein Start-Stop-Protokoll - wie bei der V.24-Schnittstelle - gesichert. Sofern Sie solch ein Protokoll benötigen, müssen Sie es selbst durch Software nachbilden.
Ihre Bezeichnungen sind im Assembler bekannte und "geschützte" Namen.
Für Kenner: Umwandlung nach der CCITT-Empfehlung G.711 (µ-law, A-law).
Diese Register werden wir weiter unten im Detail besprechen.
IF (NOT) FLAG_IN bzw. SET/RESET/TOGGLE FLAG_OUT.
Beide Algorithmen komprimieren vor dem Senden 13-bit-Werte in 8-bit-Zahlen und dekomprimieren beim Empfangen diese 8-bit-Zahlen wiederum zu 13-bit-Zahlen.
Nicht eingerechnet sind hier Wartezyklen, die u.U. beim Zugriff auf einen Puffer im externen Speicher benötigt werden.
Sie können in speziellen Anwendungen für das Senden und Empfangen auch identisch sein.
Insbesondere darf jedes Steuersignal zur Vermeidung von Kurzschlüssen nur von einem der Partner erzeugt, von allen anderen jedoch nur ausgewertet werden.
Dieses Signal kann von externen Bausteinen ausgewertet werden.
Bei der Dateieingabe muß der richtige Pfad mit angegeben werden.
Vor einem eventuellen Neustart müssen Sie den Prozessor durch den Befehl RE im Befehls-Eingabefenster zurücksetzen.
U.U müssen Sie dazu leider den Simulator verlassen (Fehlermeldung: File empty).
Wie bereits gesagt, spricht man hier vom Mikrorechner-Modus.
Hier liegt der sog. Mikroprozessor-Modus vor.
Im Unterschied dazu besitzt der MC6809 ein kombiniertes Lese-/Schreibsignal R/W.
Während dieser Zeit arbeiten die seriellen Schnittstellen jedoch weiter.
Wir sprechen im weiteren vom Booten in Ermangelung eines besseren deutschen Begriffs.
Dies können mehrere Speicherbausteine, aber auch ein einziger 64-kbyte-Baustein sein.
Diese sind in den Registerdarstellungen der Anhänge zu KE6 und KE7 nachzulesen.
Diese Adresse ist (nach Tabelle 6.3-10 in KE6) die Anfangsadresse des RESET-Interruptvektors (Reset/Restart Vector). Spätestens in der Speicherzelle 0x003 muß ein Sprungbefehl zum Beginn des auszuführenden Programms stehen. Die unteren Wörter der Boot-Seite enthalten i.d.R. die Interrupt-Vektortabelle.
Die Seitenlänge 0 bedeutet einen Boot-Bereich von 32 Bytes, von denen 24 übertragen werden.
Verändern Sie vorher zur Kontrolle einige Wörter im Programmspeicher.
Die folgenden Ausführungen gelten weitgehend für alle Mitglieder der ADSP-21xx-Familie.
Das ist das Hardware-System, auf dem das Programm als Anwendung laufen soll.
Natürlich bieten auch die anderen DSP-Hersteller vergleichbare Systeme für ihre Prozessoren an.
Zur Erinnerung: Die eckigen Klammern bezeichnen optional angebbare Befehlsteile.
Sofern Sie diese Fehlermeldungen speichern wollen, müssen Sie sie durch einen DOS-Befehl in eine Datei umleiten.
Neben den hier aufgeführten Direktiven gibt es noch einige weitere, auf die wir nicht eingehen wollen.
Achtung: Hier kennzeichnen die eckigen Klammern keinen optionalen Parameter, sondern - wie in vielen höheren Programmiersprachen - die Feldlänge.
Legen Sie sich zunächst eine Sicherungskopie der Originaldatei an.
Den Fall, daß das Assembler-Modul vom C-Compiler erzeugt wird, wollen wir hier nicht weiter betrachten.
Die ausgegebenen Objektcode-Module werden vom Linker (s. Abschnitt 7.2.4) zu einem ausführbaren Programm zusammengefügt.
verkürzend oft mit 'OpCodes' bezeichnet.
Das Programmlisting ist auch die einfachste Form der Programm-Dokumentation.
Korrekt heißt es wohl Präprozessor.
Dadurch wird die gemischte Programmierung einer Anwendung in Assembler und C sehr erleichtert.
Einige Direktiven existieren sowohl in C- wie in Assembler-Notation (s.u.).
Zur Wirkung eines Macro-Aufrufes s. KE2.
Der Schrägstrich - Backslash - zeigt an, das die Macro-Definition in der nächsten Zeile fortgesetzt wird.
Assemblerbefehle werden durch ein Semikolon abgeschlossen; Kommentare in diesen Zeilen durch '{....}' geklammert.
Korrekt muß es wohl 'Präprozessor' heißen.
Das Segment muß in der Systemspezifikations-Datei zum System Builder beschrieben worden sein.
Dies liefert eine Alternative zur Angabe mehrerer Boot-Seiten über BOOT=0 ... 7.
Beachten Sie, daß hier die spitzen Klammern gesetzt werden müssen und nicht nur zur Beschreibung der Befehlssyntax dienen.
Dies kann auch eine Bibliothek von Macros sein.
Beachten Sie, daß die spitzen Klammern um den Dateinamen gesetzt werden müssen.
vgl. auch die C-Prozessor-Direktive #DEFINE.
Die Regeln zum Aufbau von symbolischen Konstanten werden wir im Abschnitt 7.2.3.4 beschreiben.
Dieser Switch sollte immer gesetzt werden, wenn der C-Compiler benutzt wird, da dieser stets kontext-sensitiv ist.
Dieser Switch ist daher mit der #DEFINE-Direktive vergleichbar.
Der Assembler erzeugt dennoch stets den richtigen OpCode, solange die Teiloperation korrekt angegeben wurden.
Zwischen Groß- und Kleinbuchstaben wird nur unterschieden, wenn beim Assembleraufruf der Switch '-c' gesetzt wird.
im Unterschied zum Simulator
Sie werden merken, daß diese Meldungen leider nicht sehr aussagekräftig sind.
vgl. die Assembler-Direktiven .EXTERNAL, .ENTRY, .GLOBAL.
RAM oder ROM, Daten- oder Programmspeicher, interner oder externer Speicher
vgl. die Assembler-Direktive .INIT.
bzw. Emulator
bzw. Emulator
Eine Reihe anderer Switches wird nur im Zusammenhang mit dem C-Compiler benötigt.
d.h. wenn sie nicht im gleichen Unterverzeichnis wie LD21 liegen,
Hierauf wollen wir nicht weiter eingehen.
Das Booten von Datenpuffern in den externen Speicher geschieht sinngemäß.
Auf eine genaue Erklärung der einzelnen Einträge wollen wir hier verzichten, da der Linker im Rahmen des Praktikums nur "Mittel zum Zweck" ist.
Genau betrachtet, erzeugt er stets alle drei Dateien, von denen aber jeweils nur die im Bild dargestellten von Bedeutung sind.
In dieser Datei '.BNM' sind - wie beschrieben - Programm- und Daten-Bytes gemeinsam gespeichert.
.BNM enthält das höherwertige, .BNL das niederwertige Byte.
Die Endung '.EXE' muß nicht angegeben werden, da sie vom PROM-Splitter als Voreinstellung genommen wird.
Der Simulator SIM2101 unterstützt keine Boot-Seiten mit weniger als 2048 Wörtern.
nur sinnvoll für Boot-Seiten mit weniger als 2048 Wörtern.
Dies ist für Prozessoren der ADSP-21xx-Familie unerläßlich, die über einen internen Programmspeicher geringerer Kapazität verfügen.
8 Boot-Seiten der Länge 512 (=2048 byte) passen in ein 16-kbyte-EPROM.
Natürlich kann sie der Benutzer auch selbst schreiben.
Jede Boot-Seite besteht aus 2048 32-bit-Wörtern, vgl. Abschnitt 7.1.4.
vgl. Abschnitt 7.1.4
vgl. die Direktive '.PORT'.
eine sog. I/O-Page, vgl. K1705, A1.10
s. Abschnitt 7.2.6.5.
Die Simulatoren SIM21xx für die anderen Mitglieder der DSP-Familie ADSP-21xx unterscheiden sich nur in den Funktionen für die jeweils implementierten Komponenten und Speichermodule.
Dies ist leider während der Präsenzphase des Praktikums der Fall.
Diese Dateien werden beim normalen Beenden des Simulators gelöscht, können aber nach einem Programmabbruch im Fehlerfall bestehen bleiben und sollten dann gelöscht werden.
gegeben durch den Zustand aller Register und Speicherbereiche, durch die Symbole und festgelegten Unterbrechungspunkte (Breakpoints). S. Befehl 'STATE'
Beenden des Programms mit 'Quit' unterdrückt die Abspeicherung der Fensterkonfiguration.
Dieser Switch sollte immer gesetzt werden, wenn der C-Compiler benutzt wird, da dieser stets kontext-sensitiv ist.
Es handelt sich um die vollständige Menge der C-Operatoren.
im Unterschied zum Assembler
Menü:Register, Eintrag: Control Register
Selbstverständlich kann anstelle des symbolischen Ausdrucks auch die absolute Adresse angegeben werden.
und der Einsendeaufgaben zu KE6
mit der Ausnahme, daß der Simulator nicht gerade ein Programm ausführen darf (Running).
vgl. auch Anhang C dieser KE
Wenn Sie einige oder alle der beschriebenen Befehle ausprobieren wollen, sollten Sie beide Fenster (Command Window, Command Output Window) öffnen.
Im Rahmen dieses Praktikums werden Sie nur eine kleine Anzahl von Befehlen benötigen. Den Rest beschreiben wir hier nur der Vollständigkeit halber.
Die Auswertung von Ausdrücken mit dem '?'-Operator bietet dem Benutzer die Möglichkeit, den Simulator wie einen "Taschenrechner" zu benutzen.
Das Suchen nach Marken geschieht aber besser durch den Befehl '? Symbol'
Diese Möglichkeiten funktionieren leider nur für Zahlen in dezimaler und hexadezimaler Darstellung.
vgl. Tabelle in Anhang C.
Für die Angabe des Bereichs stehen die beiden Möglichkeiten aus Abschnitt 7.2.6.3 zur Verfügung.
Auf einfache Weise können dadurch insbesondere Abtast- und Ausgabewerte eines Algorithmus der digitalen Signalverarbeitung in Form eines analogen Signals gezeigt werden.
vgl. die Assembler-Direktive '.INIT'.
Der durch den Breakpoint bezeichnete Befehl selbst wird nicht mehr ausgeführt.
Dies ist insbesondere bei Vergleichsausdr¨cken der Fall.
Der einfachste Ausdruck besteht aus der Angabe eines einzigen Registers. Eine Unterbrechung wird bei jeder Änderung des Registerwertes erzeugt.
vgl. die Tabelle im Anhang C.
Beim ADSP-2101 können als Interruptquellen die Signale IRQ0-2 sowie die SPORT-Signale SCLKi, RFSi, TFSi gewählt werden.
Insbesondere muß in SPORT#1 die Festlegung zwischen der Nutzung als serielle Schnittstelle (mit ihren Rahmen-Synchronisiersignalen) und der alternativen Nutzung (mit den Interrupteingängen IRQ0, IRQ1) getroffen werden. Das selektierte Rahmensignal muß außerdem als extern erzeugt definiert sein.
vgl. Tabelle im Anhang C.
Wenn Sie im Defaults Menu (Menu: MISC, Eintrag: Defaults) die Wahl Echo enabled getroffen haben, wird im Befehls-Ausgabefenster (Command Output Window) der jeweils als nächster auszuführende Befehl dargestellt.
Diese Angaben können zur Laufzeit-Optimierung des Programms herangezogen werden.
d.h. solchen mit vielen Verzweigungen im Flußdiagramm,
als ASCII-Zeichen '0' und '1' getrennt durch Leerzeichen oder Wagenrücklauf.
nicht das Schließen !
Start Keystroke Recording, Stop Keystroke Recording, Playback Keystroke File
Dies sollte kein Anwenderprogramm-Aufruf sein, da der Simulator selbst sehr viel Speicherplatz benötigt. Wenn Ihr PC keinen Erweiterungsspeicher (Extended Memory) besitzt, ist auch die Ausführung aller MS-Dos Kommandos nicht sichergestellt.
genauer eigentlich der Auffrischabstand.
Die folgenden NOPs dienen lediglich dazu, die vier Wörter für jeden Interruptvektor zu belegen. Sie werden nicht ausgeführt und können daher durch jeden anderen Befehl ersetzt werden.
das bereits in KE7, Abschnitt 7.2.1, kurz erwähnt wurde
eine Art minimales Betriebssystem
Darüber hinaus steht Im EPROM noch jede Menge Platz für eigene Anwendungsprogramme zu Verfügung.
oder auch Converter/Deconverter
Dies entspricht einer Abtastrate von max. 48 kHz.
Auf die Kopplung der Komponenten untereinander gehen wir in Abschnitt 7.3.2.3 ausführlicher ein.
Die Signale werden jeweils mit L für linker Kanal und R für rechter Kanal bezeichnet.
Die ausgewählten Kanäle müssen nicht aus dem selben Signalpaar stammen.
vgl. K1705, KE7
Sie sind paarweise vorhanden und wandeln die 16-bit-Zahlen nach dem bereits in KE7, Abschnitt 7.1.3, beschriebenen (logarithmischen) Verfahren A-Law bzw. m-Law in 8-bit-Zahlen um.
Auf die möglichen Datenformate gehen wir im nächsten Abschnitt genauer ein.
Dies ist einfach eine Summation der digitalen Werte.
Die Richtung 'Ein'- bzw. 'Aus'-ist hier vom AD1847 aus gesehen.
Darauf werden wir im Abschnitt 7.3.2.3 noch eingehen.
d.h. daß der zulässige Spannungsbereich an diesen Eingängen über- oder unterschritten wird.
Es werden nur vier Bereiche unterschieden und in 2 Bits codiert.
Genauere Informationen finden Sie im Datenblatt zum AD1847.
XX steht fürden Inhalt des adressierten 8-bit-Steuerregisters
Line 1, Line 2, AUX 1 und Line 1 gemischt mit Line Out
VdB = 20 log10V.
1,5 dB entsprechen einer Verstärkung von 1,1885; 22,5 dB einer Verstärkung von 13,335.
Beim Monobetrieb wird nur der linke Kanal gelesen und ein Wert auf beiden Kanälen ausgegeben.
s. Bild 7.3-2 und Datenblatt im Anhang.
16-bit-Zahlen werden vor der Kompression durch Abschneiden (Truncation)der unteren Bits auf 13 bzw. 14 Bits gekürzt, nach der Dekompression durch Auffüllen der unteren Bits mit 0 erweitert.
s. Abschnitt 7.3.2.3.
Ausnahme: Kettenschaltung von mehreren Codecs AD1847.
Beim DSP: 24 oder 32 Kanäle.
48 kHz
für den linken und den rechten Kanal
vgl. dazu Bild 6.3-14 in KE6
Wie beim ADSP-2101 ist die Startadresse beim Reset wiederum 0x0000.
Im Systemsteuer-Register gibt es für den gesamten externen Programmspeicher eine gemeinsame Festlegung der Wartezyklen.
vgl. Bild 7.1-13 in KE7.
Beispiele: AR=IO(0x0000), IO(0x0000)=MR
Interrupt Force and Clear, vgl. Abschnitt 6.3.4.2 in KE6.