Eine CPU kann rechnen, 
aber ein DSP kann zaubern 
Harald Kipp 
HaSi-Talk am 21.08.2014 
21.08.2014 HaSi-Talk: Ein DSP kan...
Wer ist der Typ da vorne? 
Harald Kipp 
Geschäftsführer der egnite GmbH 
● Entwicklung, Produktion und Vertrieb von 
Mikro...
Wer sitzt im Publikum? 
● Hardwarekenntnisse 
– Erfahrung mit Spannung und Strom 
– Allgemeine Struktur einer CPU ist beka...
Worum es geht hier eigentlich? 
21.08.2014 HaSi-Talk: Ein DSP kann zaubern 
D igitaler 
S ignal- 
P rozessor 
Eine CPU kan...
Signal 
Ein Signal ist eine sich kontinuierlich ändernde 
physikalische Größe, die Information enthält. 
Gesäusel (Luftdru...
Verstärken 
● Ein elektrisches Signal wird verstärkt, um es über eine 
große Entfernung übertragen zu können. 
21.08.2014 ...
Modulieren 
● Das Signal wird auf einen Träger aufmoduliert. 
Signal 
Träger 
Modulierter Träger 
21.08.2014 HaSi-Talk: Ei...
Mischen und Filtern 
● Modulierte Trägerwel-len 
zusammenfassen 
um mehrere Signale 
über eine Leitung zu 
transportieren....
Analog und digital 
● Analog 
– Kontinuierliche 
Funktionen 
– Realisierung mit 
Hardware 
● Digital 
– Diskrete Werte 
– ...
Digitalisierung 
Durch Digitalisierung erhält man zu konkreten Zeiten 
konkrete Werte 
21.08.2014 HaSi-Talk: Ein DSP kann ...
Mathematische Methoden 
Hardware Mathematik 
Verstärken 
UOUT = 2 * UIN 
Modulieren 
UOUT = US * UT 
Summieren 
UOUT = U1I...
Anforderungen an digitale 
Signalverarbeitung 
● Kontinuierliche Verarbeitung von Datenströmen... 
– Hauptsächlich Multipl...
Programmschleifen 
Compiler C-Programm Assemblerprogramm 
/* Verstärker */ 
for (i = 0; i < 100; i++) { 
u_out[i] = u_in[i...
Kontinuierliche Multiplikation und 
Addition 
● Filter sind die typische Anwendung bei der digitalen 
Signalverarbeitung 
...
21.08.2014 HaSi-Talk: Ein DSP kann zaubern 
Überlauf 
Alarm 
Sättigungsarithmetik 
Beispiel: Zweifache Verstärkung von 128...
Überlauf anschaulich gemacht 
A + B = Sättigungsarithmetik 
21.08.2014 HaSi-Talk: Ein DSP kann zaubern 
Standardarithmetik...
Aktueller Leistungsvergleich 
● High-End DSPs ● High-End PC 
Texas Instruments C6000 
32-Bit CPU 
1,2Ghz Taktfrequenz 
8MB...
Historischer Leistungsvergleich 
1995 
● WinPlay3, der erste real-time 
MP3-Decoder für 
PCs, benötigte 
● 32-Bit 468DX2 6...
MP3 Hardware-Decoder 
Moderne Miniatur-Audioplayer 
– z.B. mit VS10XX von VLSI Solution Oy 
USB-Schnittstelle 
21.08.2014 ...
Audiocodec-Architektur 
Theorie... ...und Praxis 
ADC 
DSP 
DAC 
21.08.2014 HaSi-Talk: Ein DSP kann zaubern 
Wichtig! 2 Bu...
VSDSP4 Register 
● Spezialregister 
– Programmzähler PC 
– 2 Page Register IPR0 und IPR1 
– IPR0 wird beim Interrupt nach ...
Pipeline 
* 
* 
AND A0,A0,A0 
NOP 
JZS OUT 
NOP 
* 
* 
Takt Laden Dekodieren Ausführen Ergebnis 
1 AND * * 
2 NOP AND * 
3...
Pipeline Beispiel 
Auswirkungen der Pipeline sind verwirrend und 
erfordern Kreativität. 
ldx (i0),b0 
add c0,b0,b0 
and a...
Das blanke Entsetzen 
Das war eine abschreckende Eigenschaft. 
Jetzt kommen die Bonbons 
...endlich! 
Charles Darwin's The...
MAC 
● MAC ist eine Abkürzung für Multiply and Accumulate 
– Eigentliche Reihenfolge: Erst ADD, dann MUL 
● Mächtiges Komm...
Schleifen 
LOOP A1,LOOPEND-1 
NOP 
LOOPSTART: 
* 
LOOPEND: 
* 
● LOOP-Befehl 
Reg. Inhalt 
LS Startadresse der Schleife 
L...
Modulo Adressierung 
● Implementierung von Ringpuffern 
– 0x8000: I1 wird jeweils um 1 
inkrementiert und nach 47 wieder 
...
Parallele Verarbeitung 
● Viele Operationen können parallel ausgeführt werden 
– Arithmetische Operation, z.B. macss a0,a1...
Intentionally blank slide 
21.08.2014 HaSi-Talk: Ein DSP kann zaubern
Tiefpass Assemblerroutine 
Reale Implementierung der FIR Assemblerroutine 
Finite Impulse Response 
Filter mit endlicher I...
Tiefpass Assemblerroutine 
loop lc, firloop1end-1 // start looping 
// Delay slot, perform first multiply, load next coef....
Tiefpass C-Programmaufruf 
Aufruf der FIR Assemblerroutine 
__y s_int16 *delayLinePtr = lineInPtr; 
s_int16 *sp = audioOut...
Filterkoeffizienten berechnen 
Filterkoeffizienten können bequem mit GNU Octave, MATLAB 
oder SciLab berechnet werden 
pkg...
Frequenz- und Phasengang 
Anweisung für GNU Octave 
freqz(b); 
Durchlassbereich 
Übergangsbereich 
Sperrbereich 
Welligkei...
Filterkoeffizienten einbauen 
b2=round(b'*32768); 
save 'coeff.txt' b2 
16-Bit-Werte erzeugen 
Anweisungen für GNU Octave ...
Frequenzweiche 
DSP 
Verstärker 
Verstärker Tieftöner 
21.08.2014 HaSi-Talk: Ein DSP kann zaubern 
Hochtöner 
Audiosignal ...
DSP-Board Schaltplan 
21.08.2014 HaSi-Talk: Ein DSP kann zaubern 
Wichtig! 
Tiefpass nicht 
vergessen! 
Serieller 
Speiche...
VSDSP Toolchain 
● VSIDE 
– Vollständige Entwicklungs-umgebung 
für VSDSP Signal-prozessoren 
– Unterstützt Debugging auf ...
Hello World 
main() { 
// show text in console 
puts("Hello, world."); 
// setup button and led 
CONFIGURE_LED_1; 
CONFIGU...
Zaubermaschine 
21.08.2014 HaSi-Talk: Ein DSP kann zaubern 
Evan P. Cordes: EP-2
Vielen Dank 
We're cool, right? 
You are allowed to 
applaude by clapping the 
hands or knocking on the 
tables. 
21.08.20...
Questions ? 
Thank you for 
your attention. 
Any questions? 
www.twitter.com/egniteEmbedded www.facebook.de/egniteDe 
www....
Nächste SlideShare
Wird geladen in …5
×

“Eine CPU kann rechnen, aber ein DSP kann zaubern”

990 Aufrufe

Veröffentlicht am

Nach einer kurzen Einführung in die Signalverarbeitung werden DSP-spezifische Eigenschaften und Möglichkeiten am Beispiel des VS1063 Audiocodecs dargestellt.

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
990
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2
Aktionen
Geteilt
0
Downloads
4
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

“Eine CPU kann rechnen, aber ein DSP kann zaubern”

  1. 1. Eine CPU kann rechnen, aber ein DSP kann zaubern Harald Kipp HaSi-Talk am 21.08.2014 21.08.2014 HaSi-Talk: Ein DSP kann zaubern
  2. 2. Wer ist der Typ da vorne? Harald Kipp Geschäftsführer der egnite GmbH ● Entwicklung, Produktion und Vertrieb von Mikrocontroller Boards ● Distribution von Ethernet-Sensoren, Audio-Codecs etc. ● www.egnite.de Gründer und Admin des Ethernut Projekts ● Open Source Hardware und Software ● www.ethernut.de 21.08.2014 HaSi-Talk: Ein DSP kann zaubern
  3. 3. Wer sitzt im Publikum? ● Hardwarekenntnisse – Erfahrung mit Spannung und Strom – Allgemeine Struktur einer CPU ist bekannt (Register, Bus) ● Softwarekenntnisse – Erste Erfahrungen mit C-Programmierung – Erste Erfahrungen mit Assemblerprogrammierung ● Mathematikkenntnisse – Grundrechenarten – Lesen von Diagrammen 21.08.2014 HaSi-Talk: Ein DSP kann zaubern
  4. 4. Worum es geht hier eigentlich? 21.08.2014 HaSi-Talk: Ein DSP kann zaubern D igitaler S ignal- P rozessor Eine CPU kann rechnen, aber ein DSP kann zaubern – Signalverarbeitung im Schnelldurchgang (0:10) – Nachteile von universellen Prozessoren (0:05) – Hacking eines MP3-Decoders (0:15) – Kurze Pause (0:05) – Anleitung zum Bau eines Filters (0:15) – Demonstration eines Audioeffekts (0:10)
  5. 5. Signal Ein Signal ist eine sich kontinuierlich ändernde physikalische Größe, die Information enthält. Gesäusel (Luftdruck ändert sich kontinuierlich) Telefondraht (Elektrische Spannung ändert sich Bundesarchiv, Bild 183-57339-0018 Mr. Dagger Complex kontinuierlich) „prüft“ kontinuierlich 21.08.2014 HaSi-Talk: Ein DSP kann zaubern
  6. 6. Verstärken ● Ein elektrisches Signal wird verstärkt, um es über eine große Entfernung übertragen zu können. 21.08.2014 HaSi-Talk: Ein DSP kann zaubern Graphics made by SciLab
  7. 7. Modulieren ● Das Signal wird auf einen Träger aufmoduliert. Signal Träger Modulierter Träger 21.08.2014 HaSi-Talk: Ein DSP kann zaubern
  8. 8. Mischen und Filtern ● Modulierte Trägerwel-len zusammenfassen um mehrere Signale über eine Leitung zu transportieren. ● Am Leitungsende ein-zelne Träger durch Filter trennen und das Ursprungssignal mit Demodulator zurück-gewinnen. ● Das ist Signalverarbei-tung. Signal 1 Träger 1 AM 1 Signal 2 Träger 2 21.08.2014 HaSi-Talk: Ein DSP kann zaubern AM 2 Summe
  9. 9. Analog und digital ● Analog – Kontinuierliche Funktionen – Realisierung mit Hardware ● Digital – Diskrete Werte – Realisierung überwiegend in Software 21.08.2014 HaSi-Talk: Ein DSP kann zaubern Roger McLassus Creative Commons Attribution-Share Alike 3.0 Unported
  10. 10. Digitalisierung Durch Digitalisierung erhält man zu konkreten Zeiten konkrete Werte 21.08.2014 HaSi-Talk: Ein DSP kann zaubern
  11. 11. Mathematische Methoden Hardware Mathematik Verstärken UOUT = 2 * UIN Modulieren UOUT = US * UT Summieren UOUT = U1IN + U2IN + ... Filtern UOUT = Σ coeff[i] * UIN[n-i] 21.08.2014 HaSi-Talk: Ein DSP kann zaubern
  12. 12. Anforderungen an digitale Signalverarbeitung ● Kontinuierliche Verarbeitung von Datenströmen... – Hauptsächlich Multiplikation und Addition von Vektoren – Behandlung von Überläufen ● ...in Echtzeit – Effektive Speicherzugriffe – Effektive Schleifen 21.08.2014 HaSi-Talk: Ein DSP kann zaubern
  13. 13. Programmschleifen Compiler C-Programm Assemblerprogramm /* Verstärker */ for (i = 0; i < 100; i++) { u_out[i] = u_in[i] * amp; } ● Universeller Prozessor – Die meisten Befehle werden für die Schleifensteuerung benötigt – Daher hohe Taktrate für Echtzeitverarbeitung erforderlich – Viele MIPS, wenig GRIPS LDI R1, 0 LDI R2, 100 LD R3, AMP LOOP: CMP R1, R2 JGE END LDX R4, U_IN, [R1] MUL R4, R3 STX R4, U_OUT, [R1] INC R1 JMP LOOP END: 21.08.2014 HaSi-Talk: Ein DSP kann zaubern
  14. 14. Kontinuierliche Multiplikation und Addition ● Filter sind die typische Anwendung bei der digitalen Signalverarbeitung z.B. C-Programm /* Filter */ for (k = 0; k <= bufsiz; k++) { for (i = 0; i <= m; i++) { y[k] = y[k] + h[i] * u[k - i]; } } Schleifen sind nicht gut für universelle CPUs. Viel Rechnerei, aber es kommt noch dicker. 21.08.2014 HaSi-Talk: Ein DSP kann zaubern
  15. 15. 21.08.2014 HaSi-Talk: Ein DSP kann zaubern Überlauf Alarm Sättigungsarithmetik Beispiel: Zweifache Verstärkung von 128V am Eingang und maximal 255V Ausgangsspannung (Wertebereich) Hardware: 128V * 2 = 255V 8-Bit Software: 128V * 2 = 0V /* Handle overflow using 16-bit math */ u_out[i] = u_in[i] * 2; if (u_out[i] > 255) u_out[i] = 255; Einfache Lösung funktioniert mit Einschränkungen. Vorzeichen? Nachkommastellen?
  16. 16. Überlauf anschaulich gemacht A + B = Sättigungsarithmetik 21.08.2014 HaSi-Talk: Ein DSP kann zaubern Standardarithmetik ● Bildhelligkeit erhöhen Original + Offset Screenshot of Blender 2.41
  17. 17. Aktueller Leistungsvergleich ● High-End DSPs ● High-End PC Texas Instruments C6000 32-Bit CPU 1,2Ghz Taktfrequenz 8MB 2nd-Level Cache Optionale Fließkomma-Einheit Analog Devices SHARC / (Blackfin) 400MHz Taktfrequenz Offizielle GNU Toolchain (für Blackfin) Intel Haswell 64-Bit CPU mit FPU 3,9Ghz Taktfrequenz (Turbo) 84 Watt Und was ist mit Cortex-M4? Freescale StarCore Multi-Core 1Ghz Taktfrequenz Theodor Fontane schreibt: Ein fester Kessel, ein doppelter Dampf, die bleiben Sieger in solchem Kampf. 21.08.2014 HaSi-Talk: Ein DSP kann zaubern
  18. 18. Historischer Leistungsvergleich 1995 ● WinPlay3, der erste real-time MP3-Decoder für PCs, benötigte ● 32-Bit 468DX2 66MHz ● FPU ● 8kB Cache ● 6W Stromverbrauch (nur CPU) 1999 ● Single-Chip MP3 De-coder 21.08.2014 HaSi-Talk: Ein DSP kann zaubern auf DSP-Basis benötigte ● 16-Bit mit 25MHz ● Keine FPU ● Kein Cache ● 50mW Stromver-brauch (CPU ohne Analogteil)
  19. 19. MP3 Hardware-Decoder Moderne Miniatur-Audioplayer – z.B. mit VS10XX von VLSI Solution Oy USB-Schnittstelle 21.08.2014 HaSi-Talk: Ein DSP kann zaubern Bist du meine Mami? GPIO-Taster DSP-Chip Streichholz? Audio-Ausgang Serielles Flash Steckergehäuse! Directmedia DVD-ROM 10.000 Meisterwerke der Malerei
  20. 20. Audiocodec-Architektur Theorie... ...und Praxis ADC DSP DAC 21.08.2014 HaSi-Talk: Ein DSP kann zaubern Wichtig! 2 Busse! Programmier-schnittstelle Analogsignal Analogsignal
  21. 21. VSDSP4 Register ● Spezialregister – Programmzähler PC – 2 Page Register IPR0 und IPR1 – IPR0 wird beim Interrupt nach IPR1 kopiert – 32-Bit Produktregister P – 3 16-Bit Loop Register LS, LC und LE – 2 16-Bit Link Register LR0 und LR1 – LR0 für Unterprogramme – LR1 für Interrupts – Pseudoregister NULL (alle Bits 0) und ONES (alle Bits 1) – 16-Bit Mode Register MR0 21.08.2014 HaSi-Talk: Ein DSP kann zaubern
  22. 22. Pipeline * * AND A0,A0,A0 NOP JZS OUT NOP * * Takt Laden Dekodieren Ausführen Ergebnis 1 AND * * 2 NOP AND * 3 JZS NOP AND Z-Flag gesetzt 4 NOP JZS NOP 5 ? NOP JZS Sprung ausgeführt ● Nach einer arithmetischen Operation können die Flags erst nach einem Delay als Sprungentscheidung verwendet werden. ● Sprünge werden mit einem Delay ausgeführt. ● Statt NOP können wir etwas sinnvolleres tun. 21.08.2014 HaSi-Talk: Ein DSP kann zaubern
  23. 23. Pipeline Beispiel Auswirkungen der Pipeline sind verwirrend und erfordern Kreativität. ldx (i0),b0 add c0,b0,b0 and a0,a0,a0 nop jzs out nop and a0,a0,a0 ldx (i0),b0 jzs out add c0,b0,b0 Delay Slots ausnutzen Modifiziert die Flags. Darf keine Operation sein, die das Z-Flag wieder verändern könnte. Sprung kann jetzt entschieden werden. Da auch der Sprung einen Delay hat, wird dieser Befehl immer ausgeführt. Hier dürfen die Flags wieder modifiziert werden. 21.08.2014 HaSi-Talk: Ein DSP kann zaubern
  24. 24. Das blanke Entsetzen Das war eine abschreckende Eigenschaft. Jetzt kommen die Bonbons ...endlich! Charles Darwin's The Expression of the Emotions in Man and Animals 21.08.2014 HaSi-Talk: Ein DSP kann zaubern
  25. 25. MAC ● MAC ist eine Abkürzung für Multiply and Accumulate – Eigentliche Reihenfolge: Erst ADD, dann MUL ● Mächtiges Kommando für Filter-Implementierung c += a[i] * b[n-i] DSP PC 21.08.2014 HaSi-Talk: Ein DSP kann zaubern c += p; p = a0*b0; mac a0,b0,c 1 Takt Viele Takte
  26. 26. Schleifen LOOP A1,LOOPEND-1 NOP LOOPSTART: * LOOPEND: * ● LOOP-Befehl Reg. Inhalt LS Startadresse der Schleife LC Schleifenzähler LE Endadresse der Schleife – Kopiere PC+1 nach LS – Kopiere Register in Parameter 1 nach LC – Kopiere Adresse in Parameter 2 nach LE ● Bearbeite Befehle bis PC gleich LE, dann – Prüfe, ob LC gleich Null – Wenn ungleich Null, dekrementiere LC um 1 und kopiere LS nach PC 21.08.2014 HaSi-Talk: Ein DSP kann zaubern
  27. 27. Modulo Adressierung ● Implementierung von Ringpuffern – 0x8000: I1 wird jeweils um 1 inkrementiert und nach 47 wieder auf 0 gesetzt – 0xA000: I1 wird jeweils um 1 dekrementiert und nach 0 wieder auf 47 gesetzt – Puffer muss auf Adresse liegen, die durch nächsthöhere Zweierpotenz der Pufferlänge teilbar ist. Bei einer Pufferlänge von 48 muss der Puffer also an einer Adresse liegen, die durch 64 teilbar ist. 21.08.2014 HaSi-Talk: Ein DSP kann zaubern ldc 0x8000+(48-1),i0 ldx (i1)*,a0 ldc 0xA000+(48-1),i0 ldx (i1)*,a0
  28. 28. Parallele Verarbeitung ● Viele Operationen können parallel ausgeführt werden – Arithmetische Operation, z.B. macss a0,a1,d – Zugriff auf X-Memory, z.B. ldx (i0)*,a0 – Zugriff auf Y-Memory, z.B. ldy (i2)*,a1 – Loop and a0,null,a0 mulss a0,a0 loop a1,END-1 and d,null,d; ldx (i1)*,a0; ldy (i2)*,a1 mac a0,a1,d; ldx (i1)*,a0; ldy (i2)*,a1 END: 21.08.2014 HaSi-Talk: Ein DSP kann zaubern Initialisierung Schleife (1 Taktzyklus) Realisierung eines Filters: f a Tiefpass
  29. 29. Intentionally blank slide 21.08.2014 HaSi-Talk: Ein DSP kann zaubern
  30. 30. Tiefpass Assemblerroutine Reale Implementierung der FIR Assemblerroutine Finite Impulse Response Filter mit endlicher Impulsantwort //void FirAsm(register __i0 s_int16 *d, __y register __i2 s_int16 *s); .sect code, FirAsm .export _FirAsm _FirAsm: // Store register values stx i1, (i6)+1 stx i3, (i6); sty ls, (i6)+1 stx le, (i6); sty lc, (i6)+1 stx a0, (i6); sty a1, (i6)+1 stx b0, (i6); sty b1, (i6) Filterkoeffiziententabelle bestimmt die Filterfunktion ldc MAKEMOD64(-2,LINE_IN_BUF_LEN), i3 //-2 step mv i0, i5 ldc _firCoeffs, i0 // coefficient vector ldc 1, i1 // linear forwards +1 (No modulo) ldc 0x0000, mr0 // fract mode and a,NULL,a; ldx (i0)*,b1; ldy (i2)*,b0 // clear a-reg., load first coef./sample -pair ldc FIR_LEN-2, lc // loop count 21.08.2014 HaSi-Talk: Ein DSP kann zaubern
  31. 31. Tiefpass Assemblerroutine loop lc, firloop1end-1 // start looping // Delay slot, perform first multiply, load next coef./sample -pair mul b1, b0; ldx (i0)*,b1; ldy (i2)*,b0 firloop1: mac b1, b0, a; ldx (i0)*,b1; ldy (i2)*,b0 // use pipelined MAC to implement FIR firloop1end: add a, p, a ldc FIR_SCALE, b0 ashl a, b0, a rnd a, a1 stx a1, (i5) // Restore registers ldx (i6), b0; ldy (i6)-1, b1 ldx (i6), a0; ldy (i6)-1, a1 ldx (i6), le; ldy (i6)-1, lc ldx (i6), i3; ldy (i6)-1, ls ldx (i6)-1, i1 jr ldc 0x200, mr0 // Delay slot, restore integer mode 21.08.2014 HaSi-Talk: Ein DSP kann zaubern
  32. 32. Tiefpass C-Programmaufruf Aufruf der FIR Assemblerroutine __y s_int16 *delayLinePtr = lineInPtr; s_int16 *sp = audioOut; int i; for (i=0; i<BLOCKSIZE; i++) { // apply the filter FirAsm(sp++,delayLinePtr++); // left channel FirAsm(sp++,delayLinePtr++); // right channel } 21.08.2014 HaSi-Talk: Ein DSP kann zaubern
  33. 33. Filterkoeffizienten berechnen Filterkoeffizienten können bequem mit GNU Octave, MATLAB oder SciLab berechnet werden pkg load all Anweisungen für GNU Octave fs=48000; fsp2=fs/2; f1=3100; f2=4300; deg=62; b=firls(deg, [0 f1/fsp2 f2/fsp2 1], [1 1 0 0]); Filterkoeffizienten nach der Methode der kleinsten Quadrate berechnen Normalisierungsfaktor Übergangsbereich des Filters Ordnung des Filters 21.08.2014 HaSi-Talk: Ein DSP kann zaubern Frequenzen und Amplituden sind normalisiert Samplerate Normalisierte Frequenzwerte: So umrechnen, dass der Wert 1 der halben Abtastrate entspricht (Nyquist-Grenze).
  34. 34. Frequenz- und Phasengang Anweisung für GNU Octave freqz(b); Durchlassbereich Übergangsbereich Sperrbereich Welligkeit f a Tiefpass Quizfrage: Frequenz von 0 bis 1? 21.08.2014 HaSi-Talk: Ein DSP kann zaubern
  35. 35. Filterkoeffizienten einbauen b2=round(b'*32768); save 'coeff.txt' b2 16-Bit-Werte erzeugen Anweisungen für GNU Octave # Created by Octave 3.6.2, Thu Oct 17 18:27:38 2013 W. Europe Daylight Time # name: b2 # type: matrix # rows: 1 # columns: 63 63 101 121 113 71 -2 -93 -181 -242 -252 -197 -77 89 268 416 487 446 278... _firCoeffs: .word 63, 101, 121, 113, 71, -2, -93, -181 .word -242, -252, -197, -77, 89, 268, 416, 487 .word 446, 278, -1, -347, -685, -930, -993, -807 .word -338, 401, 1348, 2397, 3419, 4274, 4842, 5041 .word 4842, 4274, 3419, 2397, 1348, 401, -338, -807 .word -993, -930, -685, -347, -1, 278, 446, 487 .word 416, 268, 89, -77, -197, -252, -242, -181 .word -93, -2, 71, 113, 121, 101, 63 Inhalt der Datei coeff.txt Umgeschrieben für Assemblerprogramm 21.08.2014 HaSi-Talk: Ein DSP kann zaubern
  36. 36. Frequenzweiche DSP Verstärker Verstärker Tieftöner 21.08.2014 HaSi-Talk: Ein DSP kann zaubern Hochtöner Audiosignal Gestern Heute Morgen? Günther Nubert (Nubert Speaker Factory)
  37. 37. DSP-Board Schaltplan 21.08.2014 HaSi-Talk: Ein DSP kann zaubern Wichtig! Tiefpass nicht vergessen! Serieller Speicher
  38. 38. VSDSP Toolchain ● VSIDE – Vollständige Entwicklungs-umgebung für VSDSP Signal-prozessoren – Unterstützt Debugging auf realer Hardware über RS232 (USB-Bridge) ● Kommandozeile – ANSI-C Compiler, Assembler, Linker, Profiler etc. ● Windows only! ● Kostenlos lcc -g -hhw_desc -O6 -fsmall-code -DDEBUG -DVS1063 -IC:/VSIDE optimizing (452): 299 281 274 273.273.271.271.271 C 271 CF 0 X 6 Y 8198 F 0 Successfully compiled 2012 lines (244 in source) with 0 warni vsa -c hw_desc -D ASM -D VS1063 -I C:/VSIDE/libvs1063 -o Deb vslink -k -m user_vs1063-extra.mem C:/VSIDE/libvs1063/rom1063 coff -L. -LC:/VSIDE/libvs1063 -lc vssym -Q Debug/effect.coff Debug/effect.coff: C 429 CF 0 X 6 Y 8198 F 0 total code memory size 0x01ad 429 words total X memory size 0x0006 6 words total Y memory size 0x2006 8198 words const_x 0x0006 6 words 21.08.2014 HaSi-Talk: Ein DSP kann zaubern bss_y 0x2000 8192 words const_y 0x0006 6 words SORRY!
  39. 39. Hello World main() { // show text in console puts("Hello, world."); // setup button and led CONFIGURE_LED_1; CONFIGURE_OPTO_1; // // enter busy loop, detect button press // while (1) { if (OPTO_1_ACTIVE) { SET_LED_1_ON; } else { SET_LED_1_OFF; } } return 0; } 21.08.2014 HaSi-Talk: Ein DSP kann zaubern www.usda.gov/oc/photo/opclibra.htm
  40. 40. Zaubermaschine 21.08.2014 HaSi-Talk: Ein DSP kann zaubern Evan P. Cordes: EP-2
  41. 41. Vielen Dank We're cool, right? You are allowed to applaude by clapping the hands or knocking on the tables. 21.08.2014 HaSi-Talk: Ein DSP kann zaubern Kibadunno: Mega_awesome_super_cool_amazing_sunglasses
  42. 42. Questions ? Thank you for your attention. Any questions? www.twitter.com/egniteEmbedded www.facebook.de/egniteDe www.youtube.com/user/egniteGmbH plus.google.com/+EgniteDe 21.08.2014 HaSi-Talk: Ein DSP kann zaubern

×