Börja med DSP. Tips ?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Börja med DSP. Tips ?

Inlägg av JimmyAndersson »

För lite tyngre ljudprojekt har jag insett att jag behöver lära mig programmera DSP.

Säkerligen finns det några bra test/lära/utveckligs-paket, men var hittar man dem?
Finns det någon här som pysslar med DSP? Det vore intressant att se lite kod, så man vet vad man har att vänta sig.
Hur är det att programmera DSP jämfört med PIC? Är det stor skillnad?

Ja, ni ser nog åt vilket håll jag funderar. :)


När jag blivit tillräckligt varm i kläderna har jag tänkt försöka göra lite synthar i stil med wavetable, subtraktiv synthes och liknande. Hm, typiskt mig att gå direkt från traktor (PIC + Basic) till månraket (DSP). :D
Användarvisningsbild
björn
EF Sponsor
Inlägg: 2570
Blev medlem: 29 mars 2004, 23:09:55

Inlägg av björn »

Jimmy, du har PM

DU kan även kolla CYR's bygge HÄR
Senast redigerad av björn 23 september 2006, 11:15:02, redigerad totalt 1 gång.
Seven11
Inlägg: 547
Blev medlem: 13 maj 2004, 23:43:33

Inlägg av Seven11 »

ja det är stor skillnad att programmera DSP jämnfört mot vanlig mikrokontrollant etc. Den stora skillnaden är att DSP:er har en harvard arkitektur (eller någon variant av ovan) som gör att program och data inte delar samma buss, dessutom kan flera delar av processorn instrueras samtidigt då en DSP oftast har flera shiftnings motorer, MAC:ar (Multiply-and-Ackumelate) och en hel drös andra beräkningsdelar... tex kan en assembler kod för DSP se ut så här:

Kod: Markera allt

start:		m1=1;
		m9=1;
		b0=input;
		l0=@input;		{ Input buffer is circular }
		i1=imag;
		l1=0;
		call dft (db);		{ Example delayed call instruction }
		  i2=real;		{ In delay field of call }
		  l2=0;			{           ''		  }
end:		idle;

{___________________________DFT Subroutine___________________________}
dft:		b8=sine;		{ Sine pointer }
		l8=@sine;
		b9=sine;		{ Derive cosine from sine by }
		i9=sine+N/4; 		{ shifting pointer over 2pi/4 }
		l9=@sine;		{ and using a circular buffer.}
		i10=0;			{ I10 is used to increment the }
		l10=0;			{ frequency of sine lookup.}
		f15=0;			{ Zero to clear accumulators }
		lcntr=N, do outer until lce;
		  f8=pass f15, m8=i10;		{ Update frequency }
		  f9=pass f15, f0=dm(i0,m1), f5=pm(i9,m8);
		  f12=f0*f5, f4=pm(i8,m8);
		  lcntr=N-1, do inner until lce;
		    f13=f0*f4, f9=f9+f12, f0=dm(i0,m1), f5=pm(i9,m8);
inner:		    f12=f0*f5, f8=f8-f13, f4=pm(i8,m8);
		  f13=f0*f4, f9=f9+f12;
		  f8=f8-f13, dm(i2,m1)=f9;	{ Write real result }
		  modify(i10,m9);		{ Increment frequency }
outer:		  dm(i1,m1)=f8;			{ Write imaginary result }
		rts;
detta var ett exmepel på hur man kan göra en N punkts reell DFT till en Analog Devices 21020 DSP. Som du ser i loopen så används flera kommandon för att instruera flera delar av enheten.

Om du vill ha tips på bra bok kan jag rekommendera "Digital Signal Processing: A practical guide for Engineers and Scientists", den finns gratis att ladda ner men jag tyckte den var så jävla bra så jag köpte den i bokform :lol:
Sen finns det en uppsjö av böcker som behandlar filter, image- / audio- processing, ANN eller vad du nu tänker hålla på...

Att få tag på utvecklingkort är aldrig lätt... men först bör du nog läsa den bok jag listade för där i står det en del om DSP processorer. Efter det för då kolla runt efter den DSP du vill ha.
BDTi brukar dessutom ha bra benchmarks tabeller för olika processorer:
http://www.bdti.com/procsum/index.htm och http://www.bdti.com/bdtimark/benchmarks.htm
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Börja med Digital Signal Processing först, innan du funderar så mycket på Digital Signal Processors.

Börja med att förstå algoritmerna och skriv lite saker på datorn. Matlab kan man använda för att labba lite, och sen kan man skriva saker "på riktigt" i C.

Boken som finns på http://www.dspguide.com/ kan även jag rekommendera.

Sen när du ska överföra grejerna till hårdvara så behöver du sätta dig in i arkitekturen, kanske optimera algoritmerna för att passa den och skriva vissa kritiska saker i assembler osv, men jag tror det är fel ände att börja i.
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Med andra ord jag har ganska mycket att läsa nu. :)

Tack för alla bra tips!
Återkommer säkert med lite mer specifika frågor senare.
pheer
EF Sponsor
Inlägg: 1283
Blev medlem: 16 januari 2005, 18:05:21

Inlägg av pheer »

Om du vill ta ett billigt mellansteg så ligger dsPIC nära till hands då du använt vanliga PIC innan...

Länkar:
dsPIC
C30 - C kompilator
libs
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Inlägg av $tiff »

Och på andra sidan Atmel-Microchip-slagfältet har vi AVR32:
http://www.atmel.com/products/AVR32/
http://en.wikipedia.org/wiki/AVR32
IAR-C
Acte säljer t.ex. i sverige

Fast jag vet inte om den har varit ute länge nog för att det ska vara lönt att satas på. dsPIC har definitivt försprång här.
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

dsPIC var en bra idé. Det kanske är bättre att mellanlanda där istället för att kliva direkt till de "stora DSP'erna".
Det roliga är att många dsPIC'ar även finns som PDIF-kapslingar.

edit: Har kollat igenom datablad på en dsPIC (30F3010) och det ser väldigt roligt ut. Mer kapacitet och fler bitar men ändå en välbekant grund. Riktigt trevligt! Dessutom är de ganska billiga.

Nästa fråga blir då programmeraren. Wisp628 stödjer inte dsPIC (om jag inte missat något.) Hm, det känns som om det är läge att anropa Sodjan. :)
Seven11
Inlägg: 547
Blev medlem: 13 maj 2004, 23:43:33

Inlägg av Seven11 »

kommer inte cyr:s ICSP programmerare fungera med dsPIC tror du da?
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Det kan den nog göra. Tänkte inte på det.
Men nu hittar jag inte tråden. Länk?
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Det bör den göra, ihop med rätt mjukvara.

Senaste betaversionen av mjukvaran till EPIC (www.melabs.com) stöder dsPIC, dock så är det *inte* freeware (vilket står på sidan där man kan ladda ner).

:vissla:

Jag har inte testat, men jag har några dsPIC30F2010 nånstans...
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Wisp628 stödjer inte dsPIC (om jag inte missat något.)

Nej, det har du inte... :-)

Jag har en annan programmerare liggandes som stöder många dsPIC
som du skulle kunna "låna" ett tag. Det ser ut så här :
http://www.embedinc.com/easyprog/index.htm.

Den har inte senaste firmware laddad, men den kan du plocka ner
och flasha i en extra 16F628A med din Wisp628.

Det finns även en modifierad variant av EasyProg's firmware som använder
Wisp628 hårdvaran, men den gjordes innan EasyProg fick dsPIC stöd.
Jag har haft lite ideer (men ingen tid) att göra om samma sak med dagens
version av EasyProg firmware för att få en Wisp628 hårdvaran att även
flasha dsPIC...
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Det vore bra. Jag kanske skulle kunna hyra den? :)

En annan tanke är att bygga en sådan programmerare. Såg att det fanns schema i länken. Det ena jag inte hittade på Elfa var transistorerna (2N4401 och 2N4403). Sedan behövs förstås lite mjukvara i datorn...

Jag skulle kunna fixa en kretslayout och löda programmeraren ganska snabbt, men vore det onödigt jobb? Tänker på ifall dsPIC-firmwaren för Wisp628 väntar "runt hörnet" inom någon månad.. :) Själva arbetet med att bygga programmeraren gör mig inget.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

"Hyra" ?? Det går väl att ordna. :-)

> En annan tanke är att bygga en sådan programmerare.

Kolla BOM'en en gång till. Olin (som för övrigt är jäkligt duktig)
har gjort en liten tabbe i designen, alla motståndsvärden är valda
ur E96 serien, och de stämmer inte riktigt överens med de värden
som de flesta har i sina E12/24/48 satser. En del värden är lite
kritiska eftersom de påverkar t.ex spänningen på Vpp.

Detta med en del "udda" värden i designen var huvudkritiken mot
programmeraren när Olin presenterade den för något år sedan. Det
gör den lite strulig för hemma-pulare...

Jag har även en liggandes som jag har byggt utifrån ett blank PCB (original
från Olin) men som jag aldrig fick riktigt igång. Jag gjorde aldrig
någon riktig felsökning, utan Olin skickade en komplett komp.sats till
en komplett EasyProg. Den fungerade direkt efter montering och den första
blev liggandes. Den kan du få mot för ett par hundra mot att du felsöker
den själv. Den är komplett förrutom en 648A med senaste firmware (inkl
ZIF sockeln). En 648A med senaste firmware kan du bränna själv med din
Wisp628...

Jag tror att det i alla fall blir enklare en att bygga upp en helt från "scratch".

/Janne.
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

"Jag har även en liggandes som jag har byggt utifrån ett blank PCB" ... "Den kan du få mot för ett par hundra mot att du felsöker den själv."

Det låter bra. Blir som sagt enklare än att bygga en från grunden.
Ska bara inventera min PIC-hylla, (den börjar bli tom), sedan får du ett PM. :)
Skriv svar