D.S. P

Digital signal processing snadno, rychle a vykonne. 

O tom, ze ATARI chysta novy pocitac se vedelo jiz delsi dobu. Jen
byla  otazka, cim bude pocitac zajimavy. Bude tam 68040, transputer nebo nejake paralelni procesory

Uz v roce 1985 byl totiz pocitac ST bombou na pocitacovem trhu diky svemuSokol
vykoneho HW (tenkrat, bohuzel) a vyvazene kvalitnimu systemu (ano, GEM). Tim,  ze navrhali Falcona do nej vlozili krome vykonneho procesoru 68030 i cip DSP 56001, se objevil na trhu stroj s obrovskymi moznostmi.

DSP

Nejprve si ale musime vysvetlit zkratku DSP. Znamena Digital Signal Processor
(digitalni signalovy procesor). Signalove procesory jsou urceny predevsim na
vypocty v realnem case souvisejici se zpracovanim signalu. Napr. rychla Fourierova transformace (FFT), autokorelace ci rekurzivni cislicove filtry. Tyto vsechny cinnosti samozrejme muze provadet i normalni mikroprocesor, ovsem trva mu to dele a  vetsinu cinnosti potrebuje skutecne v realnem case, tj. tak rychle jak data prichazeji napr. z A/D prevodniku. DSP  jsou na tyto ukony specializovane.  Maji tzv. Hardwardskou architekturu (hlavne oddeleny pamet’ovy prostor a ridici signaly pro program a data) na rozdil od mikroprocesoru s architekturou Neumannovou (jedna pamet’ova
oblast
pro vsechno). Dale maji standardni mikroprocesory pestrou paletu ruznych prikazu  a operaci, ktera ovsem trvaji urcitou dobu. DSP vsak maji povelu mene , jsou vsak maximalne casove optimalizavane, aby probehly vetsinou v jednom instrukcnim  cyklu DSP. Navic bezne procesory pocitaji s 16 – nebo 32 – bitovou presnosti. Pokud chceme odstranit zaokrouhlovaci chyby pri vypoctech, je nutne provadet  radu pocetnich operaci navic. Operace s realnymi cisly (fioat’s) stoji casu jeste vice. Naproti tomu DSP maji registry vicebitove a pri vypoctu se tak neztraci presnost. Navic ty  lepsi obsahuji Fioating – Point jednotku.

Seznamte se: DSP 56001

Motorolacky cip DSP 56001 je je den z jednodussich signalnich procesoru tohoto vyrobce. Nema totiz jednotku pro vypocty s realnymi cisly, pocita tedy jen celociselne. Je ovsem znacne levnejsi, nez jeho ’floatovy’ kolega 96001 a to pravdepodobne pri navrhu Falcona prevazilo. Navic pro uvazovane aplikace jeho vykon plne postacuje. DSP 56001 je v 88-pinovem PGA (resp, 100 – pinovem SLAM) pouzdre. Ma nasledujici I/O funkcni skupiny: Port A, ktery ma 24 – bitovou datovou a 16 – bitovou adresovou sbernici. Rizeni umoznuje pripojit i vice DSP nebo MPU (jednotky rizeni pameti) v rezimu Master – Slave (nadrizeny a podrizeny). Dale muze toto rozhrani slouzit k  pripojeni procesoru a ostatnimu pocitacovemu hardware. Druhou I/O branou je Port B,  tzv. Host – Interface. Je urcen pro rychle prenosy pres MPU, DSP ci DMA. Datova sbernice je 8 – bitova + ridici vodice. K tomuto rozhrani je mozno pripojit
napr. ex- terni 8 – bitovou EPROM a po RESETu DSP je mozno z ni bootovat.
Poslednim portem je Port C, ktery krome 9 vstupne – vystupnich signalu ve dvou   skupinach nabizi take po jednom synchronnim a asynchron- nim seriovem rozhrani. To asynchronni (SCI) je v podstate vysokorychlostmi modemove rozhrani s 8  datovymi bity a plne duplexnim provozem. Sklada se z ridicich signalu
RxD, TxD a hodin tak, aby bylo mozno pripojit snadna dalsi DSP nebo s prevodnikem urovni vytvorit RS – 232 rozhrani. Maximalni prenosova rychlost tohoto rozhrani je dana taktovaci frekvenci DSP a je pri 20.5 MHz okolo 320 kBd (udaje z katalogu  Motorola). Synchronni seriove rozhrani (SSI) je velmi flexibilni rozhrani. Flexibilita  spociva v tom, ze uzivatel muze programovat pocet bitu, komunikacni protokol,  frekvenci a synchronizaci. Jak jiz bylo receno, pouzivaji DSP Hardwardskou architekturu. Proto uvnitr najdeme 4 obousmerne sber nice o 24 – bitech, na ktere je mozny paraleni pristup: Global data bus, Y – data bus, X – data bus a Prog. data bus. 24 bitu je take zakladni presnost vypoctu, dale DSP podporuje datove typy 4B a 56 bitu, coz souvisi s dvema 56 – bitovymi registry pro nasobeni. Nektere instruke mohou byt zpracova  programova RAM s max. 64 kslov externi pameti

– X – RAM s 64 kslov externi

– Y – RAM take s 64 kslov externi

(slovem se mysli 24 – bitu, vnitrne maji vsechny 3 pameti 512 slov) Pokud se
tyce rychlosti, zde jsou nektere hodnoty Benchmark testu podle kataiogovych udaju Motoroly:

  • 10.25 milionu instrukci za vterinu (MIPS) a FFT v 1024 bodech (komplexni]
    za 3.23 ms pri taktu 20.5 MHz; pri taktu 27 MHz 13.5 MIPS a FFT za 2.45 ms

  • – 67 Tap FIR – Filtr za 5.4 s pri 27 MHz A ostatni informace z katalogu:

  • – taktovaci frekvence 20.5/27/33 MHz

  • – 62 povelu s 12 miliony modifikaci

Aplikace

No a kde se da vysoky vykon DSP ve Falconu vyuzit ? Kazdopadne v hudbe,
protoze pri uvazeni signalu samplovanych v CD kvalite (44.1 kHz) pripada na kazdy   vzorek okolo 232 jednocyklovych instrukci (a takovych ma DSP vetsinu). To cislo vzniklo z taktovaci frekvence DSP 20.5 MHz deleno 44.1 kHz a 2 (jsou2 takty hodin na jeden instrukcni cyklus). V pripade 32 MHz ve Falconu je to pak 363 cyklu. S tim uz Ize delat ruzna kouzla bud’ upravou signalu, tj. filtry, efekty echo, hall, harmonizer...,   nebo Ize signaly primo generovat. A nezapominejme, ze to vse je v CD kvalite a navic to krome prenosu DMA vubec neobtezuje hlavni procesor. Dalsi aplikaci  DSP je napr. vysokorychlostni modem, staci jen zvenci pripojit neco malo hardware k pripojeni k telefonni siti a o zbytek se postaraji programy bezici v DSP a CPU (paralelne (!)). Ale DSP se muze uplatnit i ve zpracovani obrazu pri ruznych transformacich, protoze ty jsou slozeny nejcasteji z jednoduchych instrukci nad daty v pameti.
A prave v tom je DSP mistr. Pri komunikacich se vyuziva i ruznych komprimacnich algoritmu, napr pri plne duplxni ADPCM (adaptivni diferencialni pulsne – kodova modulace) koduje rec podle CCITT standartu. DSP pak je schopen komprimovat v realnem case tok dat 32 kBit/s na 64 kBit/s, coz vyzaduji prenosy po telefonnich linkach. Takze nyni nam uz
zbyva jen cekat, jak softwarovy firmy vylepsi moznosti svych programu zapojeni sil DSP. Aby jim to navrhari Falcona ulehcili, XBIOSU rozhrani pro komunikaci programu s DSP, zde uvedu pouze prehled funkci ( bez naroku na uplnost):

 

Dsp _DoBlock(a,b,c,d)

Dsp_ BlkHandShake(a,b,c,d)

Dsp_ BlkUnpacked(a,b,c,d)

Dsp_ InStream(a,b,c,d)

Dsp_ OutStrearn(a,b,c,d)

Dsp_ lOStream(a,b,c,d,e,f)

Dsp_ Removelnterrupts(a)

Dsp_ GetWordSizep

Dsp_ Lockp

Dsp_ Unlock()

Dsp_ Available(a,b)

Dsp_ Reserve(a,b)

Dsp_LoadProg(a,b,c)

Dsp_ ExecProg(a,b,c)

Dsp_ ExecBoot(a,b,c)

Dsp_ LodToBinary(a,b)

Dsp_ TriggerHC(a)

Dsp_ RequestUniqueAbilityp

Dsp_ GetProgAbilityp

Dsp_FlushSubroutines()

Dsp_LoadSu:t routine(a,b,c)

Dsp_InqSubrAbility(a)

Dsp_RunSubroutine(a)

Dsp_HfO(a)

Dsp_Hf1(a)

Dsp_Hf20

Dsp_Hf30

Dsp_BlkWords(a,b,c,d)

(void) xbios(500,a,b,c,d)

(voidl xbios(501,a,b,c,d)

(void) xbios(502,a,b,c,d)

(void) xbios(503.a,b,c,d)

(void) xbios(504,a,b,c,d)

(void) xbios(505,a,b,c,d,e;f)

(void) xbios(506,a)

(int) xbios(507)

(int) xbios(508)

(void) xbiosl509)

(void) xbios(510,a,b)

(int) xbios(511,a,b)

(int) xbios(512,a,b,c)

(void) xbios(513,s,b,c)

(void) xbios(514,a,b,c)

(long) xbios(515,a,b)

(void) xbios(516,a)

(int) xbios(517)

(int) xbios(51B)

(void) xbios(519)

(int) xbios(520,a,b,e)

(int) xbios(521,a)

(int) xbios(522,a)

(int) xbios(523,a)

(int) xbios(524,a)

(int) xbios(525)

(int) xbios(526)

(void) xbios(527,a,b,c,d)