Digitální signálový procesor nebo také digitální signální procesor (zkratka DSP) je mikroprocesor, jehož návrh je optimalizován pro algoritmy používané při zpracování digitálně reprezentovaných signálů. Hlavním nárokem na systém bývá průběžné zpracování velkého množství dat „protékajících“ procesorem.
Typická aplikace DSP
Jedním ze základních důvodů k vytvoření DSP byl fakt, že klasické analogové obvody sloužící pro zpracování signálu bývají náročné z hlediska návrhu, nastavení, provedení a reprodukovatelnosti, přičemž jakmile jsou vyrobeny, nelze jejich funkci téměř modifikovat. Ve srovnání s tím cena „digitálního“ křemíku stále klesá a výkon roste.
Na obrázku je typické blokové schéma zařízení využívajícího DSP. Analogový signál je nejprve převeden A/D převodníkem na digitální a v této podobě je průběžně zpracováván digitálním signálovým procesorem. Zpracovaný digitální signál je D/A převodníkem zpět převeden na analogový. V mnoha zařízeních prochází signál tímto řetězcem v reálném čase, ale na některých signálech je potřeba provést tak složité a výpočetně náročné algoritmy, že to ani velmi rychlý DSP procesor v reálném čase nestihne a digitalizovaná data musí být nejprve zaznamenána do paměti a odtamtud teprve postupně zpracovávána.
V některých zařízeních je ovšem použita jen polovina tohoto typického řetězce nebo jsou sice použity obě poloviny, ale v samostatných oddělených řetězcích zpracovávaných samostatnými procesory. Užití části řetězce nastává například v CD přehrávači, kdy je signál z kompaktního disku čten v digitální podobě, zpracován digitálním signálovým procesorem a nakonec převeden na analogový. Příkladem odděleného zpracování je mobilní telefon, ve kterém se obvykle zpracovává vysílaný a přijímaný signál odděleně v samostatných procesorech.
Architektura DSP
Typický digitální signálový procesor je vystavěn na harvardské architektuře. Tato architektura má oproti von Neumannovu modelu počítače oddělenou paměť pro program od paměti pro data. V praxi to znamená, že data a kód programu využívají vlastní sběrnice, což zvyšuje propustnost systému.
Dalšího zrychlení výpočtů se dosahuje pomocí specializovaných výpočetních jednotek procesoru, které dokážou pracovat paralelně. Typický DSP má kromě aritmeticko-logické jednotky (ALU) navíc rychlou násobičku, která dokáže operaci násobení s přičítáním A ← A + B.k. Tato operace je základní operací většiny algoritmů digitálního zpracování signálu. DSP zpravidla obsahuje dvě nebo více nezávislých adresních jednotek, tzv. DAG (Data Address Generator), adresujících data v lineárních nebo kruhových bufferech. Typický DSP tak umožňuje během jednoho taktu provést jeden krok skalárního násobení dvou vektorů (vynásobení hodnot ze dvou bufferů, přičtení do akumulátoru, posun na další index v bufferech). Procesor s klasickou architekturou by na stejnou operaci potřeboval několik taktů (např. 1. načtení hodnoty z prvního bufferu, 2. vynásobení hodnotou z druhého bufferu, 3. přičtení výsledku do akumulátoru, 4. posun adresy prvního bufferu, 5. posun adresy druhého bufferu).
Oproti univerzálním procesorům mohou (ale nemusí) být v DSP zjednodušeny některé funkce, například nemusí být možné adresovat paměť po bajtech. Taková zjednodušení mohou vést k problémům s přenositelností kódu psaného ve vyšších programovacích jazycích, nebo k větší spotřebě paměti a strojového času při jiných úlohách, než je zpracování signálu.
Rozdělení DSP
Základním dělením digitálních signálových procesorů je dělení podle použité aritmetiky. Existují DSP pracující:
v celočíselné aritmetice
v aritmetice s pevnou řádovou čárkou
v aritmetice s plovoucí řádovou čárkou
Procesory s celočíselnou aritmetikou jsou sice levné, ale algoritmy výpočtů stále narážejí na nutnost převádět reálná čísla na celá a mezivýsledky výpočtů se musí neustále upravovat tzv. normalizacemi. Proto je vývoj algoritmů v těchto typech procesorů výrazně náročnější. Hodí se proto zejména pro masovou produkci výrobků, kde nevadí poněkud vyšší cena vývoje, ale důležitá je zejména cena samotné součástky.
Procesory s plovoucí řádovou čárkou jsou sice složitější a dražší, ale vývoj softwaru je pro ně výrazně jednodušší. Nevýhodou zde může být rovněž vyšší spotřeba energie.
Procesory s pevnou řádovou čárkou mohou sice být určitým kompromisem, ale prakticky je nelze jasně odlišit od procesorů pracujících v celočíselné aritmetice.
Dalším kritériem pro dělení digitálních signálových procesorů je šířka jejich datové sběrnice. Ta bývá od 16 bitů výše.
Další dělení může být na jednojádrové nebo vícejádrové DSP.
Vývoj a výroba DSP
Algoritmy zpracování digitálních signálů jsou často velmi složité a často se celé nebo alespoň jejich podstatné části v různých aplikacích opakují. Proto je často výhodné vyvíjet specializované procesory obsahující již potřebné algoritmy. Firmy zabývající se vývojem DSP se proto dělí na firmy vyvíjející hardware procesorů a firmy vyvíjející algoritmy. Hardwarový návrh DSP je pak často prodáván jako tzv. DSP core (jádro). Toto jádro je použito k výrobě specializovaných integrovaných obvodů, které ho doplňují o další potřebné součástky – například A/D a D/A převodníky a paměť ROM obsahující patřičné algoritmy.
Například typický DSP pro mobilní telefony obsahuje 2–4 samostatná DSP jádra a veškeré algoritmy potřebné pro zpracování hovorového signálu na GSM a naopak.
Často se můžeme setkat také s tím, že některá větší hradlová pole obsahují funkční bloky určené k vytváření DSP (rychlé násobičky, blokové paměti, atp.), nebo také celá DSP jádra. Vývoj DSP tak může v dnešní době sestávat např. pouze z jeho „napsání“ ve VHDL nebo v jiném jazyce pro definici hardware a implementaci v hradlovém poli.
Nejčastěji používané algoritmy DSP
Nejčastějšími algoritmy zpracování digitálních signálů jsou algoritmy filtrů. Rozdělujeme je do dvou kategorií na filtry: