Um auf eine erfolgreiche Diplomarbeit sehr gut vorbereitet zu sein, bedarf es nicht nur 7 Studiensemester, sondern auch genügend praktischer Übung im Erstellen umfassender Projekte. Diese Möglichkeit erhalten Studierende an der praxisbezogenen Fachhochschule Wismar. Das Multimediaprojekt hat einen besonderen Stellenwert. Während des Studienverlaufs bietet es die einmalige Gelegenheit, eine "Diplomarbeit auf Probe" zu erstellen.
Das Thema "Programmierung eines Soundprozessors (DSP) zur Speicherung von digitalisierten Abtastwerten" spiegelt eine Vertiefung des vermittelten Wissens passend zu meinem Interessenbereich wieder. Es geht hierbei primär um das Verstehen und Anwenden von hardwarenaher Programmierung.
Die 3,5 Monate umfassende Arbeit besteht aus der Einarbeitung in das DSP-Konzept einer Soundkarte, dem Entwurf von verschieden Algorithmen zur DSP-Steuerung und der Realisierung der Software.
Inhalt
1. Einleitung
1.1 Motivation
1.2 Digital statt Analog
1.3 Was sind DSPs?
1.3.1 DSP-Einsatzgebiete
1.3.2 DSP-Eigenschaften auf einen Blick
1.3.3 DSP auf der Soundkarte
1.4 Warum Assembler
2. Vor dem Programmstart
2.1 Systemdokumentationen
2.2 Übersetzung des Programms
3. Die Umsetzung des Programms
3.1 Mehr Komfort beim Umgang mit Parametern und Registern
3.2 High-Level-Call
3.3 Anlegen der Datensegmente
3.4 Das Hauptprogramm
3.5 Die Unterprogramme
3.5.1 up_dspinit
3.5.2 up_speakeraus
3.5.3 up_begruessung
3.5.4 up_aufnahmedauer
3.5.5 up_samplefrequenz
3.5.6 up_bestaetigung
3.5.6 up_bestaetigung
3.5.7 up_setpit
3.5.8 up_umlenklese
3.5.9 up_warteschleife
3.5.10 up_umlenkrestaurieren
3.5.11 up_bestaetigung
3.5.12 up_speakerein
3.5.13 up_umlenkschreibe
3.5.14 up_nochmal
3.5.15 up_resetpit
3.5.16 up_bildschirmausgabe
3.5.17 up_bildschirmausgabe
3.5.18 up_bcd und up_sample_bcd
3.6 Die eigenen Service-Interrupt-Routinen
3.6.1 isr_ein
3.6.2 isr_aus
4. Zusammenfassung und Ausblick
1. Einleitung
1.1 Motivation
Um auf eine erfolgreiche Diplomarbeit sehr gut vorbereitet zu sein, bedarf es nicht nur 7 Studiensemester, sondern auch genügend praktischer Übung im Erstellen umfassender Projekte. Diese Möglichkeit erhalten Studierende an der praxisbezogenen Fachhochschule Wismar. Das Multimediaprojekt hat einen besonderen Stellenwert. Während des Studienverlaufs bietet es die einmalige Gelegenheit, eine "Diplomarbeit auf Probe" zu erstellen.
Das Thema "Programmierung eines Soundprozessors (DSP) zur Speicherung von digitalisierten Abtastwerten" spiegelt eine Vertiefung des vermittelten Wissens passend zu meinem Interessenbereich wieder. Es geht hierbei primär um das Verstehen und Anwenden von hardwarenaher Programmierung.
Die 3,5 Monate umfassende Arbeit besteht aus der Einarbeitung in das DSP-Konzept einer Soundkarte, dem Entwurf von verschieden Algorithmen zur DSP-Steuerung und der Realisierung der Software.
1.2 Digital statt Analog
Mit der "Compact Disc", der CD, begann vor rund 25 Jahren die Digitalisierung der Medien. Nicht mehr der magnetisierbare Tonträger auf Spule oder Kassette, auch nicht die ins Vinyl geritzte Rille waren für die Zukunft geschaffen, nein, die nach "Null" und "Eins" aufgelösten Signale der Digitalwelt haben bei Konsumenten wie Produzenten die eigentliche Faszination ausgelöst.
Auf der neutralen Ebene ist Sound (Sprache, Musik) eine einzige Luftschwingung. Eine CD oder LP etc. ist lediglich eine digitale oder analoge Spur dieser einen Schwingung.
Bild 1, vgl. S. 3, zeigt das Prinzip der Digitalisierung. Es wird von einer Originalschwingung (a) links oben ausgegangen. Diese Schwingung wird in kurzen Zeitabständen abgetastet, die Zeit wird damit quantisiert. Bei CDs wird 44'100 mal pro Sekunde abgetastet.
Zugleich wird auch der Wertebereich der Schwingungsauslenkungen quantisiert. Rechts im Bild ist eine solche Quantisierung zu sehen. Die 1-Bit-Quantisierung gibt uns lediglich zwei approximierte Werte: 0 oder 1, je nachdem, ob der Schwingungswert Null oder nicht Null ist. Die darunter abgebildete 4-Bit-Quantisierung hat 2^4 = 16 Werte zwischen 0 und 15, wobei die Bezeichnung mit den Bits daher kommt, dass man hier mit vier Angaben von Null oder Eins 16 Möglichkeiten hat zu wählen: (0,0,0,0), (0,0,0,1), ..., (1,1,1,1).
Die für dieses Programm benutzte Quantisierung beträgt 1 Byte (8 Bit), was eine Feinheit von 2^8 = 256 Werten ergibt.
Zum Vergleich wird bei einer Audio-CD mit 16 Bit Quantisierung gearbeitet, was eine Feinheit von 2^16 = 65'536 Werten ergibt.
Abbildung in dieser Leseprobe nicht enthalten
Bild1: Prinzip der Digitalisierung
1.3 Was sind DSPs?
Ein DSP (digitaler Signalprozessor) ist ein Prozessor, der im Gegensatz etwa zur CPU eines PCs durch spezielle Eigenschaften in Architektur und Befehlssatz besonders zur Signalverarbeitung geeignet ist.
Der Befehlssatz umfasst beispielsweise Operationen, die in besonders effizienter Weise die Umsetzung einer digitalen Filterung ermöglichen. Im DSP ist weiterhin in der Regel ein schneller RAM-Speicher vorhanden, auf dem die zeitkritischen Algorithmen effizient ablaufen können. Für den Datenaustausch mit den (in der Regel langsameren) externen Speicherbausteinen sorgen programmierbare DMA-Controller, die die CPU von zeitaufwendigen Datentransfers entlasten.
DSPs verfügen über einen sehr kleinen Befehlssatz, können diesen aber auf einen fortlaufenden Datenstrom in Echtzeit anwenden. Sie werden unter anderem zur Echtzeit-Manipulation von Audio- und Videodaten eingesetzt.
1.3.1 DSP-Einsatzgebiete
Consumerbereich Digitales Fernsehen, Pagers (Scall, Quix), Digitale Kameras, DVD, Videokonferenzen und Videoverarbeitung, Satellitenkommunikation, Drahtlose Telefone (Handys), Musikbearbeitung, -erzeugung und -effekte, Motorkontrolle und Servosysteme (Festplatten, CD-Player oder ähnliches), PC-Soundkarten, Fax, Spielzeuge, Festplatten (Kopfsteuerung), Waschmaschinen
Telekommunikation
Voicemail, Modems (ISDN,...), Echokompensation, Abhörsichere Kommunikation
Automobilbereich
Kollisionsvermeidung, Antiblockiersystem, Aktive Geräuschreduzierung, Elektrische Sitze und Spiegel, Motorlaufkontrolle, Parkhilfe, Navigationshilfen, Systemdiagnose, Digitales Radio, Automobiltelefon, Sprachsteuerung, Klimaanlage, Airbag, Global Positioning System
Industrie
Motorkontrolle, Robotik, Computersehen, Servokontrollsysteme, Barcode-Leser, Forschung, Sonar- oder Radarsysteme, Seismische Analyse, Medizinische Ultraschallanwendungen
1.3.2 DSP-Eigenschaften auf einen Blick
- Prozessor für numerisch anspruchsvolle, sich wiederholende Berechnungen, die hohe Rechenleistung verlangen;
- MAC Multiplikation und Addition in einem einzigen Instruktionszyklus;
- Multiplizierer und Addierer im internen Datenpfad;
- Akkumulator hat zusätzliche Bits für Überlaufschutz;
- Fähigkeit mehrere Speicherzugriffe in einem einzigen Instruktionszyklus durchzuführen;
- Mehr als ein chip-interner Instruktions- und Datenpfad;
- Mehrfachzugang (multiported) von On-Chip-Speicher, voneinander unabhängige Speicherbereiche;
- Spezielle Adressierungseinheiten erlauben
- Register-Indirekte Adressierung mit nachträglicher Inkrementierung für sich wiederholende Berechnung mit Operanden, die hintereinander im Speicher liegen.
- Modulo-Adressierung für einfache Realisierung von Ringspeichern.
- Bit-Reverse-Addressing für elegante Berechnung einer Fast Fourier Transformation (FFT).
- Effiziente Möglichkeit der Schleifenverwaltung; Kein Zeitverlust durch Schleifenzählung bzw. -abfrage durch intelligente Loop- oder Repeat-Instruktionen;
- Parallele und serielle Ein- und Ausgabeschnittstellen, so dass Daten zwischen den einzelnen Chips ausreichend schnell ausgetauscht werden können. Ein- und Ausgabemechanismen mit reaktionsschneller Interruptverarbeitung oder DMA-Fähigkeit (Direct Memory Access);
1.3.3 DSP auf der Soundkarte
Der DSP auf Soundkarten kümmert sich um sämtliche Soundein- und -ausgaben. Wie fast jede zusätzliche Peripherie wird auch der DSP über bestimmte I/O-Adressen programmiert. Die Basisadresse ist freiwählbar und muss meist direkt auf der Soundkarte eingestellt werden. Man kann sich für eine der folgenden Basisadressen entscheiden:
210h, 220h, 230h, 240h, 250h oder 260h,
wobei standardmäßig die 220h als Basisadresse eingestellt ist.
1.4 Warum Assembler
In der Ausbildung ist die Programmierung auf Maschinenebene in Assembler immer noch ein wichtiger Themenkomplex, denn nur hier können die Low-Level-Vorgänge im Computersystem hautnah nachvollzogen werden.
Viele Vorgänge auf System- und Treiberebene können in Assembler auf Grund der Maschinennähe effektiver gestaltet werden. Zeitkritische Teile eines Systems oder die Portprogrammierung sind geradezu prädestinierte Felder für Assembler.
Viele Abläufe im System – egal ob im Real, V86- oder im Protected-Mode – lassen sich durch eine maschinennahe Betrachtung erst verstehen. Assembler bietet hierfür die ideale Plattform.
Die Assembler-Programmierung ist ein interessantes und fesselndes Gebiet. Ein näheres Beschäftigen kann nicht nur Know-how vermitteln, sondern auch einige neue Denkansätze anstoßen.
2. Vor dem Programmstart
2.1 Systemdokumentationen
Das Programm “sound.asm” dient der Digitalisierung und Wiedergabe von analogen Soundsignalen. Weiterhin besteht die Möglichkeit, die digitalisierten Samples in einem vom Benutzer ausgewählten Bereich auf dem Bildschirm dezimal darstellen zu lassen.
Systemanforderungen:
- Intel 286 oder höher
- Soundkarte mit DSP
- Betriebsystem MS DOS 6.22
- Assembler TASM 3.0 oder höher
- Linker
Ein spezieller Treiber für die Soundkarte ist nicht nötig, da direkt auf die Hardware zugegriffen wird.
2.2 Übersetzung des Programms
Der Assembler-Quellcode liegt in der Datei SOUND.ASM vor, welcher in Maschinencode übersetzt werden muss, damit ein lauffähiges Programm entsteht. Prinzipiell erfolgt das Übersetzen in zwei Schritten:
- Assemblierung zu Objektcode und
- Linken des Objektcodes zum ausführbaren Programm.
Hierfür werden 2 Programme benötigt, der eigentliche Assembler TASM.EXE und der entsprechende Linker TLINK.EXE.
Entweder befinden sich die beiden Dateien im gleichen Verzeichnis wie die SOUND.EXE oder das Verzeichnis, in dem sie sich befinden, ist in der AUTOEXEC.BAT unter PATH eingetragen.
Mit dem Aufruf TASM SOUND.ASM wird die Datei SOUND.ASM zu SOUND.OBJ übersetzt. Das Linken wird durch TLINK SOUND.OBJ bewerkstelligt. Es entsteht die ausführbare Datei SOUND.EXE.
Durch das Eingeben von SOUND.EXE wird das Programm gestartet.
3. Die Umsetzung des Programms
3.1 Mehr Komfort beim Umgang mit Parametern und Registern
Die Übergabe von Parametern und das Sichern von Registern beim Aufruf eines Unterprogramms laufen immer nach dem gleichen Schema ab. Die nötigen Operationen sind stets identisch. Um diese aufwendigen und lästigen „Schreibarbeiten“ zu automatisieren bzw. einfacher zu gestalten, bieten moderne Assembler entsprechende Anweisungen. Die Schlüsselwörter hierfür sind die Anweisungen arg und uses bei der Definition des Unterprogramms.
[...]
- Arbeit zitieren
- Tino Werth (Autor:in), 2004, Programmierung eines Soundprozessors (DSP) zur Speicherung von digitalisierten Abtastwerten, München, GRIN Verlag, https://www.grin.com/document/32452
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen.