firmzn.jpg (12242 bytes)

 

 

 

 

 

Signálový procesor DSP32c

 

 

Základní vlastnosti

DSP32C od firmy Lucent Technologies je 32-bitový signálový procesor s plovoucí řádovou čárkou, který byl poprvé představen v roce 1988. Je druhou generací procesorů DSP32 představených v roce 1985. Nízkopříkonová CMOS technologie s šířkou čáry 0,75 µm (405 000 transistorů na ploše 88 mm2) umožňuje provozovat procesor na frekvenci 80 MHz při 20 MIPS (milion instrukcí za sekundu) a 40 MFLOPS (milion operací s řádovou čárkou za sekundu) a nebo 20 milionů operací s 24-bitovými celočíselnými operandy. Také se vyrábí levnější verze na frekvenci 50 MHz s 25 MFLOPS. Teto procesoru je dostupný pouze s 5 voltovým napájením.


Minimální čas instrukčního cyklu (ns)   Maximální hodinová freknvece (MHz)
50   80.000
60   66.666
80   50.000

Tabulka 1. Přehled taktovacích frekvencí procesoru.

 

Základní charakteristiky

 

tabulka.jpg (30602 bytes)
Obr.1 Základní provedení procesoru DSP32C.

 

Architektura

DSP32C využívá dvě oddělené datové cesty: datovou cestu s plovoucí řádovou čárkou (nazývanou Datová Aritmetická Jednotka nebo DAU) a celočíselnou datovou cestu/jednotku generující adresy (nazývanou Kontrolní Aritmetická Jednotka nebo CAU). Každá jednotka má svůj vlastní instrukční soubor. Na rozdíl od jiných signálových procesorů s plovoucí řádovou čárkou, datová cesta DSP32 pro plovoucí řádovou čárku není schopna vykonávat vypočty s celočíselnými čísli. Místo toho, se celočíselné výpočty provádějí v CAU. Procesor DSP36 nepoužívá standar IEEE P754 pro stukturu čísel s plovoucí řádovou čárkou nebo pro počítání, ale obstarává jednocyklovou konverzi mezi vlastním formátem řádové čárky a IEEE formátem v obou směrech.

blokdiagram.jpg (60983 bytes)
Obr.2 Vnitřní struktura signálového procesoru DSP32c s vnější paměťovou sběrnicí.

 

popisky.jpg (56681 bytes)
Tabulka 2. Popis jednotlivých označení.

 

Kontrolní Aritmetická Jednotka CAU

CAU provádí vypočty adres, řízení větvení, a 16- nebo 24-bitové celočíselné aritmetické a logické operace (podobající se instrukcím RISC mikroprocesorů) s rychlostí 20 milionů instrukcí za sekundu. CAU obsahuje 24-bitovou Aritmeticko Logickou Jednotku (ALU), která vykonává celočíselné aritmetické a logické operace, 24-bitový Programový čítač (PC) , a dvacetdva 24-bitových registrů pro obecné použití. Všech dvacetdva registrů může být použito při provádění 16- nebo 24-bitových celočíselných operací; avšak několi z těchto registrů také slouží speciálním účelům.
    Registry r1-r14 slouží jako univerzální registry pro CAU instrukce a jako paměťové ukazatele (rP) pro DAU instrukce. Když je použijeme jako ukazatele paměti tak budou obsahovat 24-bitové adresy. Registry r15-r19 se používají jako univerzální registry pro CAU instrukce a jako inkrementující registry (rI) pro DAU instrukce. Když je použijeme jako intrement registry, budou obsahovat 24-bitové hodnoty, kterými se mohou modifikovat adresy v ukazatelých paměti. Register r20 (pin) se používá jako sérivoý DMA vstupní ukazatel a register r21 (pout) se používá jako sérivoý DMA výstupní ukazatel. Register r22 (ukazatel na tabulku vektorů přerušení ivtp) obsahuje bázovou adresu tabulky vektorů přerušení.

cau.jpg (53305 bytes)
Obr.2(a) Blokové schéma jednotky CAU.

 

popisky3.jpg (40224 bytes)
Tabulak 3. Popis jednotlivých označení - CAU.

 

Datová Aritmetická Jednotka DAU

DAU je určena pro násobící/sčítací operace a je základní výpočetní jednotka pro algoritmy zpracování signálu. DAU obsahuje 32-bitovou násobičku a 40-bitovou sčítačku pro operace s plovoucí řádovou čárkou, a čtyři 40-bitové akumulátory (a0-a3). Násobička a sčítačka pracují paralelně, aby prováděli 20 milionů instrukci za sekundu ve tvaru a=b+c*d. Operandy při násobení (c a d) jsou 32-bitová čísla s plovoucí řádovou čárkou (8-bitový exponent a 24-bitová mantisa) z paměti nebo z akumulátoru. Násobička vždy poskytuje jeden 40-bitový vstup do sčítačky. Druhý vstup může pocházet z paměti, I/O portů, nebo akumulátoru. Operandy pro tento druhý vstup sčítačky může být 8-, 16-, 24-, 32-, nebo 40-bitové číslo. 40-bitové operandy (8-bitový exponent, 24-bitový mantisa, a osm ochraných bitů) přichází z akumulátoru (a0-a3). 8-, 16-, a 24-bitové operandy se používají ve speciálních funkčních instrukcích, jejichž účel je konverze datového typu. Pro buď konverze nebo sčítací operandy, 32-bitový operandy mohou přijít z paměti nebo I/O registrů. Přípustné konverze jsou mezi DSP32C floating-point formátem a následujícími: 8-, 16-, a 24-bitovými celými čísli ve dvoujkovém doplňku, µ-law, A-law, a single-precision IEEE floating-point formátem.

dau.jpg (69401 bytes)
Obr.2(b) Blokové schéma jednotky DAU.

 

popisky2.jpg (24741 bytes)
Tabulak 4. Popis jednotlivých označení - DAU.

 

    DSP32C má instrukční cyklus dlouhý 80 nanosekund při hodinové frekvenci 50 MHz. Každý instrukční cyklus je rozdělen na čtyři stavy, číslované od 0 do 3; každy stav trvá jeden hodinový tak (20 ns při 50 MHz hodinové frekvence). Každá DAU násobící/sčítací instrukce vyžaduje až čtyři paměťové přístupy: čtení z pamětí (I instrukce), čtení z pamětí (X operand), čtení z paměti (Y operand), a zápis do paměti (Z operand). V jednom cyklu DSP32C může provést připravení instrukce, připravení dvou operandů, a zapsaní do pamětí nebo na I/O. Pro danou instrukci, protože dochází v DAU k pipeliningu, tyto čtyři přístupy nenastanou ve stejném instrukčním cyklu (obr.I).

pipeline1.jpg (8744 bytes)
Obr I. Ukázka pipeliningu DAU.

    Při provádění více instrukcí typu násobení/sčítání po sobě DAU připravuje a provádí instukce postupně (obr. II).

pipeline2.jpg (17992 bytes)
Obr I. Ukázka úplného-pipeliningu při provádění více instrukcí DAU.

 

Sériová I/O jednotka SIO

SIO se používá pro sério-paralelní převod vstupních dat a paralel-sériový převod výstupních dat s maximální rychlostí 16 Mbitů/s. Tato jednotka se skládá z sériového vstupního portu, sérivého výstupního portu, a z hodinového generátoru na čípu. Vstupní data jsou ukládána do vstupního posuvného registru (ISR) a potom do vstupního bufferu (ibuf). Podobně, ale obráceně jsou zpracována výstupní data (obuf,OSR). Toto dvojí vyrovnávání dovoluje, aby následující přesun začal předtím než byl první dokončen. šířka dat může být 8, 16, 24, nebo 32 bitů. I/O kontrolní registr (ioc) vybírá délku slov, vnitřní nebo vnější hodiny, a interní nebo externí synchornizaci.
     Vnější vývody na DSP32C dovolují přímý připojení k časově/dělenémé/multiplexní (TDM) lince a přímý DSP32C-s-DSP32C přenos pro multiprocesorové aplikace.

sio.jpg (17689 bytes)
Obr.2(c) Blokové schéma jednotky SIO.

 

Paralelní I/O jednotka PIO

PIO je registrové pole a obousměrná datová sběrnice která může být použita pro komunikaci mezi DSP32c a externím zařízením. Externí PIO datová sběrnice může být šířky 8 nebo 16 bitů. Přesun dat je prováděn programem nebo DMA řízením (auto-increment direct memory access). Použitím DMA, externí zařízení může přijímat program nebo data bez přerušování probíhajícího programu.
    PIO obsahuje tři 16-bitové registry (pdr,pdr2 a pir), 24-bitový adresový register (par/pare), 16-bitový procesorem řízené slovo (pcw), 8-bitový I/O port register (piop), 10-bitový řídící register (pcr), 16-bitový error mask register (emr), a 8-bitový error source regiter (esr). Tyto registry řídí přenos PIO a nastavují správu chyb a příznaky přerušení.

pio.jpg (24074 bytes)
Obr.2(d) Blokové schéma jednotky PIO.

 

Vnitřní a vnější paměť

DSP32c používá modifikovanou Von Neumannovu paměťovou architekturu s jediným paměťovým prostorem a jedinou adresovou a datovou sběrnicí. Paměťový prostor obsahuje až čtyři fyzicky oddělené paměťové banky: tři paměti RAM na čipu o velikosti 512*32, a jednu vnější paměťovou banku tvořenou pamětí ROM a/nebo RAM připojenou na vnější paměťové rozhraní. Všechny paměti mohou být adresovány jako 8-, 16-, 24-, nebo 32-bitové slova, s 32-bitovým datovým přístupem se stejnou rychlostí jako 8-bitová data. Instrukce, tabulky, a data mohou být libovolně umístěny v RAM na čipu nebo externí paměti. Adresy různých bloků paměti mohou být konfigurovány v osmi různých paměťových módech (módy (0-3) 16-bitový a módy (4-7) 24-bitový adresový prostor). Nehledě na konfiguraci, první instrukce prováděná po resetu je na adrese 0x000000. Procesor dokáže vícenásobný přístup do paměti během jednoho instukčního cyklu. Čtyři přístupy mohou být provedeny během insturkčního cyklu, za předpokladu, že následný paměťový přístup používá jinou paměťovou banku. Kdyby se program pokusil vícekrát vstoupit do paměti něž je dovoleno, procesor by automaticky zařadil čekací stav. Celá vnitřní a vnější paměť je bytově adresovatelná.

mapspace.jpg (36251 bytes)
Obr.3 DSP32c konfigurace paměti.

    Vnitřní paměť RAM uvnitř procesoru obsahuje 1.536 slov, které jsou dostupné při všech konfiguracích. Paměť RAM na čipu je statická a nepotřebuje být obnovována. Externí paměťové rozhraní může přímo adresovat až do 16 Mbytů přídavné paměti. Externí paměť je rozdělena do dvou sekcí: dolní část (A) a horní část (B). Počet čekacích stavů pro každou část je nezávisle konfigurovatelná. Proto, mohou být kombinovány pomalé a rychlé paměti.

 

Instukční soubor

Syntaxe asembleru používaného v instrukční sadě DSP32C je podobná prorgamovacímu jazyku C. Oddělené soubory instrukcí a adresovacích módů jsou k dispozici pro celočíselné instrukce a instrukce s plovoucí řádovou čárkou. DAU instrukce využívají kombinaci přímo adresovatelných registrů a nepřímo adresovatelných registrů. CAU aritmetické instrukce v první řadě využívají přímo adresované registry, ale přímé data, přímo adresovaná paměť, a nepřímo adresované registry s volitelným post-incremetem jsou používány ostatními CAU instukcemi. Bitověreverzní adresování je podporováno s použitím reverse-carry v CAU. Protože CAU zdvojuje jak jednotku generující adresy a celočíselnou datovou cestu, programátor může snadno vykonat určitou adresovou vypočet v CAU, aby vykonala další adresovací módy, které nejsou přímo podporovány DSP32c.

 

Přerušení

DSP32c poskytuje jednourovňový přerušovací prostředek s šesti zdrojů (čtyř interních a dvou externích). Přerušení jsou prioritizována a jsou individuálně maskovatelné přes pcw register. Před obsloužením přerušení, DSP32c uloží stav procesoru, který je neviditelný programátorovy, stejně jako akumulátory a0-a3 a dauc registr. Vnitřní stavy, které programátor vidí a potřebují aby se uložily, mimo a0-a3 a dauc, musí být uloženy a obnoveny pomocí rutiny obsluhy přerušení.
     V závislosti na daném přerušení, DSP32C odskočí na odpovídající adresu podle tabulky vektorů přerušení (obr.4). Tato tabulka obsahuje osum párů 32-bitových slov, začínající na pozici dané v ivtp registru r22.

preruseni.jpg (29037 bytes)
Obr.4 Tabulka vektorů přerušení.

 


program.jpg (34080 bytes)
Ukázka jednoduchého programu pro DSP32C.


Závěr

Při vybírání tématu na zpracování semestrální práce jsem si vybral procesory od firmy Lucent. Bohužel firma se ke své mikroelektronické produkci chová poněkud macešsky a tak nebylo možné sehnat dostatek informací o jejich nových procesorech. Vybral jsem si tedy ten, co se mi zdál nejzajímavější. Byl to signálový procesor s plovoucí řádovou čárkou DSP32C vyráběný od roku 1985.
    Vzhledem k výrobě procesoru v období devadesátých let, procesor již není možné koupit u renomovaných prodejců elektroniky. I přesno, že se jedná o takto starý signálový procesor, na jeho poměrně ¨jednoduché¨ architektuře je možné pochopit základní principy používané v signálových procesorech.

 

Literatura

[1] IEEE Micro - The DSP32C: AT&T's Second-Generation Floating-Point Digital Signal Processor, Fuccio, R.N., Garen, C.J., Huser, J.M., Ng, B., Pekarich, S.P. - AT&T Bell Laboratories, Ulery, K.D - AT&T Microelectronics, December 1988.
[2] Communication Automation Corporation - Digital Signal Processing and Telecom Solutions.
[3] http://www.bdti.com/procsum/att32xx.htm
[-] http://www.lucent.com/micro