Posts tagged TMS320

shusha-4-ch

Vorwort

0

Es gibt auf dem Markt eine enorme Auswahl an sehr kleinen Musikwiedergabegeräten. Alle sind jedoch auf Stereo, also zweikanalige Tonausgabe ausgelegt.

Für eine Spezialanfertigung – ein Helm mit 4 Lautsprechern – wurde ich angefragt, einen möglichst kleines, 4-kanaliges Musikwiedergabegerät zu entwerfen. Der Vorschlag vom Auftraggeber war, zwei bestehende Geräte zu kaufen und diese so zu modifizieren, dass sie über die “Play-Buttons” elektromechanisch synchronisiert werden können.

Mein Vorschlag war, ein eigenes Gerät zu bauen. Da ich jedoch noch nichts Ähnliches in der Hand hatte, einigte ich mich mit dem Auftraggeber darauf, einen Versuch zu starten und je nach Resultat die eine oder andere Variante zu realisieren.

Erste Versuche mit einem ATmega168/16MHz zeigten (Arduino Board), dass eine schnellere CPU benötigt wird, denn die 16MHz waren schnell ausgeschöpft, alleine mit dem Hin- und Herladen von Daten. Auf Empfehlung meines Mentors Georg Brügger arbeitete ich mich in die TMS320-Signalprozessortechnologie ein. Ich verwendete eine vorgefertigte Hardware. Hier wurde schnell klar, dass die Herstellung einer eigenen (sechs-schichtigen) Leiterplatte sehr anspruchsvoll ist und im gegebenen Zeitrahmen nicht möglich ist. Daher entschieden wir uns dafür, für den Auftrag die doch etwas weniger elegante Variante mit der elektromechanischen Synchronisation zu realisieren. Ich wollte aber für mich selbst und für zukünftige Anfragen die angefangene Arbeit doch weiterentwickeln.

Es dauerte nicht lange, da bekam ich die Anfrage, im Rahmen der Berner Musikfestwochen mehrere interaktive Klanginstallationen zu realisieren. Diese habe ich termingerecht mit der TMS320-Technologie realisiert und im Folgenden dokumentiert. Ich kann dazu noch sagen, dass diese Installationen zwar nicht über vier, sondern nur über zwei Audiokanäle verfügen, jedoch Funktionalitäten aufweisen, die mit einem regulär käuflichen Gerät beiweitem nicht möglich sind und wo normalerweise ein völlig überdimensionierter Universalcomputer zum Einsatz kommt. Es war zudem eine Anforderung der Auftraggeberin, die Installationen nicht mit einem handelsüblichen Universalcomputer zu realisieren, da dieser zu teuer und zu gross sei.

Ich habe während der ganzen Arbeit sämtliche Notizen in einem “Blog” unter mobile4ch.x21.ch geführt. Das hat den Vorteil, dass ich nicht abhängig von einer Datei auf einer Festplatte bin und meine Notizen immer dabei habe, sofern ein Webbrowser vorhanden ist, z.B. auch auf einem Smartphone. Die Daten habe ich noch etwas überarbeitet, mit CSS3 einige druckspezifische Modifikationen gemacht. Sie, werter Leser, haben das Resultat nun vor sich. Es verfügt teilweise über notizartigen Charakter. Es macht für mich jedoch keinen Sinn, alle Details zu formulieren. Sollten Sie jedoch Fragen dazu haben, können sie mich gerne kontaktieren unter z1@x21.ch.

Zu sehen ist hier die erwähnte Arbeit der Auftraggeber Joris Stemmle (Studierender Medienkunst) und Damian Fopp (Studierender Industrial Design)

m4ch-block-hardware

Präsentation 4 Kanal SD-Karten Audioplayer

0

Am 3.4.2011 habe ich folgendes Projektkonzept präsentiert:

Vorgaben

  • Spezialangefertigter Audioplayer mit 4 Ausgängen
  • 16-Bit Audio-Dateien abspielbar ab SD-Karte
  • Kleine Abmessungen
  • Sparsam im Stromverbrauch

Auftraggeber

  • Zürcher Hochschule der Künste, Vertiefungsrichtung Mediale Künste, Joris Stemmle
  • c1Audio.com
  • Iris Rennert

Mentor

G. Brügger, HSZ-T

Block-Diagramm Hardware

Block-Diagramm Software

Design Entscheide

Folgende Entscheide haben wir gefällt:

  • CPU: TMS-320
  • DAC: extern
  • Interface: SPI
  • MP3/Vorbis-Decoder bei verbleibender Zeit
20110922-154417.jpg

SampleMachine

0

Diese Anwendung habe ich für eine Ausstellung im Auftrag von Iris Rennert erstellt. Es handelt sich dabei um einen “Teppich” mit Kontaktschaltern/Sensoren, die Audio-Samples ab einer SD-Karte mehrstimmig (polyphon) abspielen.

20110922-154510.jpg

Die Anlage besteht aus einer mehrschichtigen Kunststoffmatte, einer Steuerung und einem Verstärker- / Lautsprechersystem.

20110922-154441.jpg

Mit einem Laptop werden die letzten Programmupdates über USB auf die Steuerung übertragen.

20110922-154603.jpg

Die Steuerung besteht aus einem TMS320C5515 eZdsp USB Stick und dem Prototypen eines I/O Boards.

20110922-154637.jpg

Das I/O-Board ist bestückt mit 3 8-Kanal-CMOS-Multiplexern (4051) und hat 22 Eingänge für Sensoren.

20110922-154714.jpg

Eine Vorgängerversion des I/O-Boards arbeitete mit 4 Analogeingängen und “Analog-DACs” aus Widerstandreihen. Diese Idee habe ich nicht weiter verfolgt, weil die gemessenen Spannungwerte zu ungenau waren um die einzelnen Tastendrucke auseinanderzuhalten.

20110922-153636.jpg

Elektromechanische Probleme beim Tastatur-Decoder

0

Bei der Inbetriebnahme des Tastaturdecoders (TDC) stellt sich heraus, dass dieser sehr empfindlich ist auf äussere elektromagnetische Störungen, z.B. einen eingeschalteten Lötkolben. Diese Empfindlichkeit wird enorm verstärkt, wenn die Leiterplatte auf einem ungeeignetem Material aufliegt.

Das äussert sich darin, dass die Tasten als gedrückt erscheinen, bzw. der GPIO/Input des TMS320 als “High” erkannt wird, obwohl die Taste nicht gedrückt ist. Das kommt sogar vor, wenn man den Eingang auf dem TDC-Board direkt auf Masse schliesst. Ich vermute, dass Potentialschwankungen auf der Masse des TDC-Boardes vorhanden sind.

Diverse Versuche u.a. mit RC-Filtern am Input und Verlegen weiterer Masse-Leitungen brachten nicht den gewünschten Erfolg.

Etwas Stabilität brachte es, die Leiterplatte auf eine Sichtmappe aus Plastik zu legen.

Es stellte sich schlussendlich heraus, dass die Lötaugen auf der Leiterplatte (PCB) zu fein waren und durch die geringe mechanische Belastung beim Einbau ins Gehäuse abgerissen sind. Auf den unteren Bildern ist zu sehen, wie ich die Übergänge zu der Steckerleiste notbehelfsmässig repariert haben. Für einen Prototypen ist dieses Verfahren akzeptabel, doch für einen produktiven Einsatz muss die PCB verbessert und neu hergestellt werden.

20110922-153636.jpg

20110922-153655.jpg

 

libsndfile auf TMS320 portieren

0

Die Idee, libsndfile (www.mega-nerd.com/libsndfile/, eine bestehende Bibliothek für das Lesen von Audio-Dateiformaten) auf den TMS320 zu portieren, verwarf ich. Eine Portierung würde den Zeitrahmen sprengen.

Die Bibliothek ist zu umfangreich und abhängig von anderen Bibliotheken, die ebenfalls portiert werden müssten.

Compiler output:

Too many unsatisfiable dependencies for the moment, eg.
 could not open source file "byteswap.h"    MP3DecWithHI/libsndfile    sfendian.h    line 44    1314180429309    1408
 could not open source file "sys/time.h"    MP3DecWithHI/libsndfile    common.c    line 26    1314180429286    1374
 *
 identifier "int64_t" is undefined    MP3DecWithHI/libsndfile    sndfile.h    line 318    1314180429308    1406

Ein freies TMS320 MP3-Player Project

0

Ein weiteres, sehr spannendes, (GNU/GPL) freies MP3-Player Projekt für den TMS320C55x  liefert auch den Quellcode für den MP3-Decoder, sowie eine Hardwareanleitung mit PCB-Layout für die CPU TMS320 VC5507.

Das Schöne daran ist, dass der VC5507 über ein LQPF Gehäuse mit 114 Pins verfügt, was die Herstellung wesentlich vereinfacht im Gegensatz zum C5515, der sich in einem NFBGA/196-Pin (ball grid array) Gehäuse befindet. Auch sind die Anschaffungskosten der CPU (ca. CHF 20, im Gegensatz dazu C5515:  ca. CHF 40) und Herstellungskosten der PCB (weniger Schichten) geringer.

sourceforge.net/projects/dspdap/

dspdap.git.sourceforge.net/gitroot/dspdap/dspdap

Testboard Evaluation

0

Bei der Evaluation des Testhardware standen folgende Kandidaten in der engeren Auswahl. Es ergab sich eine Rangliste:

  1. eZDSP TMS320C5515: erste Wahl, verfügt über vielfältige Möglichkeiten, insbesondere programmierbare USB-Schnittstelle und Micro-SD Slot.
  2. eZDSP TMS320VC5505: Geeignet, aber ohne USB und SD-Karten Unterstützung.
  3. Beagleboard: wenig Informationen vorhanden, Linux-basiert daher tendenzieller Universalrechner mit hohem Software-Overhead
  4. Arduino:  viel zu langsam

Portierung der SD-Card/FAT Software auf TMS320

0

Ich bin bereits im Besitz einer unter Arduino laufenden Programmbibliothek (SDFATLIB) für den Zugriff auf ein FAT32-Dateisystem auf einer SD-Karte über SPI. Diese besteht im Grunde aus zwei Komponenten:

  • Zugriff auf SD-Karte via SPI-Schnittstelle
  • Zugriff auf ein FAT-Dateisystem

Davon gibt es eine vereinfachte Version (FAT16LIB). Diese werde ich zuerst portieren, um die Aufgabe etwas zu vereinfachen.

Auf der Seite des TMS320 finde ich einen Beispielcode für den Zugriff auf ein über SPI angeschlossenes ROM (SPIROM).

Es gibt zwei Ansätze, diese auf dem TMS320 zum laufen zu bringen:

  • Die SDFATLIB Bibliothek als Gesamtes mit möglichst wenig Codeänderungen für den TMS320 kompilieren.
  • Aufbauend auf den Code SPIROM die Bibliothek SDIFAT nachbauen

SDFATLIB als Gesamtes portieren

Um die Bibliothek für den TMS320 zu importieren, müssen folgende Schritte unternommen werden:

  • Besorgen und hinzufügen der AVR und Arduino include Dateien. Diese sind in der Arduino IDE beinhaltet.
  • Definieren des Types uint8_t in diversen Header-Dateien.

Die darauf folgende Fehlermeldung, es würden keine Arrays von Funktionen unterstützt, konnte ich nicht mehr beheben. Daher habe ich diesen Ansatz vorerst beiseite gelegt und verfolge nun den zweiten Ansatz.

Schlussendlich verwende ich nun die im Elektor-Beispiel bereit implementierte Portierung der FATLIB, die über die Treiber von DSP/BIOS auf die SD-Karte zugreift.

Einarbeitung TMS320 / eZdsp board

0

Datasheet

TMS320VC5505 Fixed-Point Digital Signal Processor (Rev. B) (PDF 856 KB)

eZdsp Stick

focus.ti.com/docs/toolsw/folders/print/tmdx5505ezdsp.html

support.spectrumdigital.com/boards/usbstk5505/revb/

Schematics
Board schematics. PDF – 08/06/09

Test Code
Test code and board support library (CCS 4.0) for the TMS320VC5505 DSP USB STICK . ZIP – 09/01/10

- SPIROM test

SD Card Controller

focus.ti.com/lit/ug/sprufm2b/sprufm2b.pdf

- TMS320C674x/OMAP-L1x Processor
Multimedia Card (MMC)/
Secure Digital (SD) Card Controller

Interrupts

blog.21ic.com/uploadfile-/2008-1/51217.78775422.pdf

- “avoid calling other functions from within
the ISR.”

Demo Code

code.google.com/p/sdfatlib/

- läuft unter arduino

code.google.com/p/c5505-ezdsp/

- fft filter demo läuft auf eZdsp

Schätzung Grössenordnung

Min. clock f spi = samplerate * n kanäle * 16 = 44100 * 4 * 16 = 2.8224 MHz

Clock Arduino: 16 Mhz

Clock TMS320: 100MHz

Resultate

FFT-Filter läuft auf TMS320 Testplatform “eZdsp”

Nächste Schritte

  • 4h SD-Karte hardwaremässig an eZdsp-Board anschliessen
  • 8h sdfatlib auf TMS320 portieren
  • 2h DAC Baustein evaluieren
  • 8h DAC Board layouten
  • 8h DAC Software für TMS320/Arduino schreiben
Go to Top