Článek ve formátu PDF je možné stáhnout
zde.
Při navrhování řetězce filtrů hardwarového audiokodeku je třeba pečlivě vyvážit výkon, spotřebu a rozměry zařízení. Vývojáři firmy MediaTek potřebují vždy najít takové uspořádání, které splňuje přísné požadavky na odstup signálu od šumu a celkové harmonické zkreslení při nejmenší možné spotřebě energie i celkové velikosti výsledného čipu.
Kodek (kodér a dekodér) je zařízení nebo počítačový program, které dokážou transformovat signál nebo datový tok. Kodeky mohou převádět data do zakódované podoby, většinou za účelem přenosu, uchovávání nebo šifrování. Častěji se však používají naopak, pro převod kódovaných dat do původní podoby vhodné k reprodukci.
Společnost MediaTek je předním výrobcem bezdrátových komunikačních systémů a digitální multimediální techniky. V minulosti zde byly čipy pro audiokodeky navrhovány při použití ručně psaného kódu RTL (Register Transfer Level).
Výsledek byl sice úsporný, co se týče rozměrů čipu, avšak proces návrhu byl časově velmi náročný a jakákoliv změna v požadavcích znamenala rozsáhlou předělávku již vytvořeného systému.
Ve společnost MediaTek byl tudíž zaveden zcela nový přístup, založený na návrhu systému ve výpočetním prostředí Matlab, které mimo jiné umožňuje z připravených algoritmů automaticky generovat kód RTL. Díky přímému propojení návrhu systému s jeho realizací lze snadno ověřit vlastnosti navržené struktury filtrů a optimalizovat celou komponentu z hlediska rozměrů výsledného čipu. Doba potřebná na přípravu kódu RTL se zkrátila ze tří měsíců na dva týdny a změny v systému, které dříve představovaly měsíc práce, je nyní možné provést v několika dnech.
Návrh struktury
Audiokodek má dvě základní části. Audiokodér poskytuje rozhraní mezi mikrofonem a signálovým procesorem (DSP), zatímco audiodekodér pracuje opačným směrem a převádí signál z DSP do podoby výstupu pro reproduktory (obr. 1). Jedním z klíčových problémů zde je skutečnost, že A/D převodník za předzesilovačem i D/A převodník předcházející výstupnímu zesilovači musí pracovat na relativně vysoké frekvenci 6,5 MHz. Naproti tomu DSP zpracovává data s frekvencí 48 kHz. Převod mezi těmito frekvencemi obstarává digitální část audiokodeku s použitím řetězce digitálních filtrů. Například stereokanál kodéru využívá pro decimaci signálu osm filtrů, zatímco dekodéru je přiřazeno devět filtrů provádějících interpolaci.
Při navrhování struktury kodeku byly v prostředí Matlab modelovány kanály kodéru i dekodéru. Parametry vnější analogové části obvodu byly uplatněny jak v modelech D/A a A/D převodníků, tak při konstrukci řetězce digitálních filtrů. Zpracování výstupu z modelů zahrnovalo výpočet FFT, odhad odstupu signálu od šumu (SNR) a určení celkového harmonického zkreslení (THD). Uvedeným způsobem lze navrhnout optimalizovanou strukturu čipu ještě před tím, než se přejde k jeho realizaci.
Automatická realizace
U dřívějších konstrukcí byl řetězec prozpracování signálů realizován jako jediný multiplier-accumulator (MAC) a řadič založený na konečném stavovém automatu. Kód RTL byl sestavován i zapisován ručně, což bylo zdlouhavé a navíc málo flexibilní. Někdy byl kód RTL tak rozsáhlý (2 000 stavů konečného automatu řadiče), že vznikaly velké potíže s vkládáním jeho logiky do paměti ROM.
V nově pojatém procesu vývoje je komplexní řadič nahrazen sérií digitálních filtrů navržených v programu Matlab a jeho nadstavbě Filter Design Toolbox. Každý blok digitálního filtru pracuje nezávisle, takže je snadné jej změnit, odstranit nebo naopak přidat k celému řetězci nový filtr (obr. 2). Filtrovací řetězec dekodéru obsahoval v daném případě čtyři filtry s konečnou impulzní odezvou pracující s poloviční šíří pásma (halfband FIR) a měnič vzorkovací frekvence. Řetězec kodéru obsahoval dva decimátory CIC (Cascaded Integrator and Comb) a dva filtry typu half-band FIR.
Generování kódu RTL a optimalizace rozměrů čipu
Po návrhu kompletního řetězce kodéru a dekodéru byl s použitím nadstavby Filter Design HDL Coder z každého filtru automaticky vygenerován kód Verilog (obr. 3). V této fázi bylo možné začít s optimalizací řetězce za účelem úspory místa na čipu.
Snadné posouzení variant
Nástroj Filter Design HDL Coder nabízí při generování kódu RTL několik možností optimalizace a také výběr výsledné struktury. Například při optimalizaci filtrů FIR byla nejprve zvolena úplná paralelní struktura, při které je taktovací frekvence filtru shodná s frekvencí dat. Kód byl syntetizován pomocí překladače Synopsis Design Compiler s následným vyhodnocením potřebné plochy čipu. Zaškrtnutím volby distribuované aritmetiky, která vyžaduje taktovací frekvenci šestnáctkrát až dvacetkrát větší, než je frekvence dat, byla plocha čipu zmenšena na 25 % oproti úplné paralelní struktuře. Protože na čipu již byla dostupná dostatečně vysoká taktovací frekvence, ukázala se druhá varianta jako nejlepší řešení.
Ing. Jaroslav Jirkovský,
Obr. 1. Blokové schéma audiokodeku (ADC, DAC – A/D, popř. D/A převodník; L, P – levý a pravý stereokanál; PGA – Programmable Gain Amplifier)
Obr. 2. Řetězec pro zpracování signálu tvoří nezávislé filtry (R1, R2 a Rn představují změnu frekvence)
Obr. 3. Rozhraní nástroje Filter Design Toolbox při návrhu decimátoru CIC a vygenerovaný kód Verilog