Digital Signal Processor

Innen: HamWiki

A DSP kettős jelentésű szó, egyrészt a Digital Signal Processing (digitális jelfeldolgozás - mint témakör), másrészt a Digital Signal Processor (digitális jelfeldolgozó processzor - mint eszköz) rövidítése. Az alábbiakban az utóbbiról lesz szó.

Digital Signal Processor

A digitális jelfeldolgozó processzor igen sok közös vonást mutat a mikrovezérlőkkel, azonban a számítási feladatokra erőteljesen ki van hegyezve.

A mikrovezérlővel közös tulajdonságai

  • Program fut benne
  • Ráadásul hasonlóképp, mint a mikrovezérlőben
  • RAM, ROM terület van, mint a RISC mikrovezérlőkben
  • Perifériák (A/D, D/A, I/O portok, SPI, I2C, Ethernet kontroller, stb.) találhatók rajta
  • Órajel vezérelt sorrendi utasításvégrehajtó.
  • RISC mikrovezérlőkhöz hasonlóan 1 órajel kell utasításonként.

Miben tér el a mikrovezérlőtől?

  • Sokkal magasabb belső órajel, néha GHz-ek; a mikrovezérlők általában 100 MHz alatt járnak.
  • Erős párhuzamosítás. Például C+=A*B; D=E+F; G=H*I három független operandusú műveletet egyetlen igen összetett utasításként adhatunk oda, ezáltal valójában 3 független műveletet végrehajt, 3 párhuzamos szálon.
  • Komplex aritmetikai lépés, például a fenti C+=A*B egy szorzás majd a végeredménynek a C regiszterhez adása egyetlen komplex utasítás.
  • Pileline feldolgozó: nem feltétlen 1 órajel alatt végzi el a szorzást, de 100 órajel alatt 100 szorzást tényleg rá lehet bízni. Ezt a tényt azonban a programozás során figyelembe kell venni.
  • Sok RAM: jelfeldolgozáshoz jól jön.
  • A szokásos regisztereknél sokkal több bites akkumulátor: dedikált eredményösszegző regiszterek még hosszabbak, mint azok, amely eredményeit szeretnénk itt összegezni. Ezáltal a pontosság növekszik, mivel nem kell összegzés előtt jobbra tolva néhány bitet elhagynunk. A sok-sok összegzés mégsem vezet túlcsorduláshoz.
  • Hardveres ciklikus puffer, automatikus növeléssel, csökkentéssel. Ez azért kellemes, mert a szűrési algoritmusok a bejövő adatokat szorozzák össze egy súlyfüggvény elemeivel. Gyakorlatilag ez két azonos hosszúságú memóriaterület keresztbeszorzása, amely ciklussal valósítható meg. A mikrovezérlők esetén ez a két indexelt cím szorzásán kívül tartalmaz inkrementáló és dekrementáló utasításokból 1-1 darabot, összehasonlító utasítást és feltételes elágazó utasítást. Ezáltal a 4-5 utasítás ismételgetése helyett egyetlen utasítás ismétlésébe belefér ez a művelet, ezáltal a DSP 5-ször hatékonyabban gazdálkodik ilyen műveleteknél az órajelével.
  • Speciális vektorműveletekre hardvertámogatás.

Példa: Egy adott DSP 16 független szálat képes kezelni, 1 GHz-en jár és FIR szűrőket szeretnénk megvalósítani. Hányszor gyorsabb egy 32 bites 100 MHz-es RISC mikrovezérlőnél?

Látható, hogy a 16 szál miatt és a 10-szeres órajel és az 5-ször hatékonyabb órajelfelhasználás miatt 800-szor gyorsabb. És ebben még nincsenek beleszámolva a vektoros hardvergyorsító céláramkörök.


Digital Signal Controller

A Microchip cég dsPIC egycsipes számítógépei kapcsán találkozhattunk ezzel a kifejezéssel. A cég a szóhasználattal utal arra, hogy ez az integrált áramkör azt az alkalmazási szegmenst hivatott betölteni, amely mikrovezérlőt igényel, de egy picivel több számítási feladat akadna. Ezáltal jól hasznosítható pehelysúlyú DSP-s feladatokhoz is, ugyanakkor nem rossz választás olyan helyre sem, ahol a számítások mellé mikrovezérlő feladat is szükséges.

Miért DSC?
  • Csak 40 MHz-en jár (miközben a számtalan gyártó által gyártott 32 bites ARM-ok, MIPS-ek 100 MHz körül)
  • csak egyetlen szálon képes utasítást végrehajtani
  • 16 bites argumentumokat képes szorozni, 32 bites eredményét két, egyenként 40 bites akkumulátor egyikéhez hozzáadni.
  • hardveres ciklikus puffert csak autoinkrementált indexregiszterrel támogat, egyébként nem.
  • hardveres CRC generátora azonban van - mint speciális, gyakran használt célhardver.


Összességében a dsPIC-ről elmondható, a digitális jelfeldolgozást tényleg támogatja, de közel sem kerültek bele a DSP jó áramköri trükkjeinek lényeges részei.

Szubjektív vélemény: napjainkban igen meggondolandó, hogy egy mindössze DSC teljesítményt igénylő feladatra 32 bites ARM vagy MIPS mellett vagy pedig egy 16 bites dsPIC mellett dönt a fejlesztő.