www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Pseudo Kunstkopf Stereo mit DSP56002, alte Motorola Applikation


Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Vier 80-Tap-FIR-Filter mit 44,1 kHz Samplerate simulieren aus einem 
normalen Stereosignal ein Kunstkopfsignal.
Eine Beschreibung dazu und drei Quelltexte für das kurze Hauptprogramm, 
die Koeffiziententabelle und die Initialisierung des AD/DA-Wandlers, für 
das DSP56002 Evaluationsboard. Die Filter sollten sich aber auch auf 
andere DSPs oder vielleicht ARM7 umschreiben lassen.

Diese Applikation von 1995 habe ich damals aus der Telefonmailbox von 
Motorola geholt.

Anscheinend hat sie noch niemand ins Internet herübergerettet. Ein Grund 
könnte das seltsame Textformat sein, damals wohl eine Alternative zu 
PDF, "No Hands Software", später "Common Grounds Software" -mini-viewer. 
Der Dateibetrachter war mit dem Text in einer EXE-Datei verpackt - 
leider sind die Bilder etwas stark komprimiert und die Beschriftung kaum 
lesbar.

Ich habe alles in ein PDF gedruckt, die Sourcecodes mit dem 
Crimson-Editor, zu dem hier http://www.unidsp56.de/ ein Syntax-File für 
DPS56k existiert.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch die Koeffizienten umgerechnet auf eine Skala von -1...+1.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
und als Tabelle, mit diesen Werten könnte man mit Matlab/Scilab/Octave 
den Frequenzgang berechnen lassen

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube, da ist ein Schreibfehler im Quelltext: vorne wird "ir_length 
EQU 60" definiert, die Tabellen haben aber je 80 Koeffizienten.

Die Verzögerung von 0,4 Millisekunden ist anscheinend schon im Filter 
eingebaut, sie ist im Quelltext nirgends explizit erwähnt. Das folgere 
ich aus der Ähnlichkeit von Impulsantworten und Koeffizientendiagramm, 
beide haben diesen Versatz zwischen beiden Kurven. Zufällig hat 
OpenOfficeCalc dieselben Farben für die Kurven gewählt.

Die Umrechnung Hex-Zweierkomplement in vorzeichenbehaftete Dezimalzahl 
habe ich wenig elegant in drei Schritten mit:
=DEZIMAL(A1;16) (Umrechnung Hex in positive Dezimalzahl)
=((2^24)-B1)*(B1>(2^23))*(-1)+B1*(B1<(2^23)) (Zweierkomplement 
umrechnen)
=D1/(2^23) (Dezimalbruch innerhalb -1...1)
ausgeführt das geht sicher eleganter - womöglich liegt es noch um 1 
daneben ?

Autor: T. H. (pumpkin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Christoph,

das ließt sich interessant (wenn auch teilweise nicht in Prosa ;^) ). 
Hast du das schonmal ausprobiert, wie sind die Resultate?

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, noch nicht probiert, aber das EVM habe ich seit Jahren rumliegen, 
ein Flash-ROM steckt auch drin.

Nach einem anderen Thread hier :
Beitrag "Suche RS232-Karte für PCIe"
scheint für die Motorola-Software ein alter PC nötig zu sein, bei dem 
die serielle Schnittstelle noch nicht virtuell ist. Auf der Platine 
sitzt allerdings ein 68HC irgendwas, der sollte eine normgerechte 
Schnittstelle anbieten. Es gibt auch noch den OnChipEmulator OnCE, der 
muß an eine zweite serielle Schnittstelle angeschlossen werden, 
vielleicht ist der gemeint.

Autor: T. H. (pumpkin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christoph Kessler wrote:
> ...scheint für die Motorola-Software ein alter PC nötig zu sein, bei dem
> die serielle Schnittstelle noch nicht virtuell ist.

Das lohnt den Aufwand wahrscheinlich nicht. Die Sache ist ja nicht so 
dick, das mal schnell in C zum probieren auf einen aktuellen DSP/ARM 
runterfrickeln sollte schneller gehen.

Autor: T. H. (pumpkin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christoph Kessler wrote:
> und als Tabelle, mit diesen Werten könnte man mit Matlab/Scilab/Octave
> den Frequenzgang berechnen lassen

Das Format ist sehr unglücklich. Stelle doch bitte die einzelnen Spalten 
(untereinander) als .txt hier rein. Ich wollte das gerade mal 
antesten...

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Anscheinend waren 80 Koeffizienten zuviel, der DSP läuft mit 40 MHz, 
also stehen für 44,1 kHz Samplerate etwa 1000 Takte zur Verfügung. 4*80 
MACs haben also je drei Takte Zeit, inclusive der AD/DA-Wandlung, dem 
Schleifenzähler usw. Deshalb die Beschränkung auf die ersten 60.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab mal gegoogled wegen des Frequenzgang-Plots. Die Funktion in Matlab 
heißt "freqz"
http://www.mathworks.com/access/helpdesk/help/tool...

denselben Befehl gibt es in Octave
https://staff.hti.bfh.ch/sha1/Octave/index/f/freqz.html
http://ccrma.stanford.edu/~jos/filters/Example_LPF...

und in Scilab ist es "frmag", magnitude of FIR and IIR filters:
http://www.scilab.org/product/man/index.php?module...

Autor: TommyZ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier gibt es noch mehr Impulsantworten für solche Filter:

http://recherche.ircam.fr/equipes/salles/listen/index.html


ciao, TommyZ

Autor: Strubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tach Gemeinde,

es sollte eigentlich noch irgendwo eine komplette Entwicklungsumgebung 
zum  56k fuer Linux geben (a56 von Quinn Jensen)..zumindest gammelt auf 
irgend einer CD in meinem Archiv sowas rum, allerdings angepasst fuer ne 
Turtle Beach DSP-Soundkarte (ISA Bus, lang ist's her...)
Ich erinnere mich allerdings nicht mehr, wie man den Code auf den DSP 
bekam.. und wie das mit dem EVM ging, ist mir komplett entfallen.
Finde es aber prima, dass jemand noch ein bisschen Retro-DSP macht :-)

Gruss,

- Strubi

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wollte nicht unbedingt "Retro-DSP" damit machen, sondern eher 
dasselbe auf heutigen Prozessoren versuchen, ein ARM7 um die 5 Euro hat 
soweit ich weiß ebenfalls 32 Bit MAC-Befehle,
http://www.mikrocontroller.net/articles/LPC2000
mit 60 oder 70 MHz Takt sollte der auch dieses Filter rechnen können.

Wenn man das Prinzip stark vereinfacht, die Verzögerung von 0,4 ms nicht 
in das Filter packt und IIR verwendet, könnte ein 8 Bit AVR vielleicht 
auch noch einen ähnlichen Effekt rechnen.

Autor: E-techniker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dummerweise finde ich erst jetzt diesen thread. Sehr interessant. Ich 
habe da noch eine 56003 Plattform mit 120Hz rumliegen. Dafür gibt es 
eine komplette GNU toolchain.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.