• No results found

Algoritmy číslicového zpracování signálu implementované v signálovém procesoru

N/A
N/A
Protected

Academic year: 2022

Share "Algoritmy číslicového zpracování signálu implementované v signálovém procesoru"

Copied!
57
0
0

Loading.... (view fulltext now)

Full text

(1)

1

TECHNICKÁ UNIVERZITA V LIBERCI

Fakulta mechatroniky a mezioborových inţenýrských studií

Studijní program: B2612 – Elektrotechnika a informatika

Studijní obor: 2612R011 – Elektronické a informační řídicí systémy

Algoritmy číslicového zpracování signálu implementované v signálovém procesoru

Bakalářská práce

Autor: Milan Slapnička

Vedoucí práce: Ing. Miroslav Holada, Ph.D.

Konzultant: Ing. Milan Kolář, CSc.

V Liberci 18. 5. 2007

(2)

2

TECHNICKÁ UNIVERZITA V LIBERCI

Fakulta mechatroniky a mezioborových inženýrských studií

Katedra elektroniky a zpracování signálů Akademický rok: 2006/2007

ZADÁNÍ BAKALÁŘSKÉ PRÁCE

Jméno a příjmení: Milan SLAPNIČKA

studijní program: B 2612 – Elektrotechnika a informatika

obor: 2612R011 – Elektronické informační a řídicí systémy

Vedoucí katedry Vám ve smyslu zákona o vysokých školách č.111/1998 Sb.

určuje tuto bakalářskou práci:

Název tématu:

Algoritmy číslicového zpracování signálu implementované v signálovém procesoru

Zásady pro vypracování:

1. Seznamte se s problematikou praktického vyuţití signálových procesorů. Zaměřte se na procesory od firmy Texas Instruments a seznamte se s jejich architekturou, způsoby programování a technickými moţnostmi.

2. Prostudujte problematiku číslicového zpracování signálu. Zaměřte se na principy výpočtu spektra pomocí FFT, filtraci signálů pomocí FIR a IIR filtrů, potlačování šumu, způsoby detekce a rozpoznávání řeči.

3. Proveďte návrh systému, který by prezentoval implementaci algoritmů číslicového zpracování signálu pomocí signálového procesoru.

4. Realizujte vybrané algoritmy na přípravku se signálovým procesorem (TMS320C6416 1GHZ-DSP Starter Kit - V3.0). Zaměřte se na zpracování akustického signálu, především řeči.

5. Proveďte ověřovací experimenty s reálným vstupním jednorozměrným signálem a vyhodnoťte výpočetní moţnosti daného signálového procesoru.

(3)

3

Rozsah grafických prací: dle potřeby dokumentace Rozsah průvodní zprávy: cca 40 stran

Seznam odborné literatury:

[1] Ambardar A.: Analog and digital signal processing. PWS Publishing Company, Boston, 1995

[2] McClellan J. H.: DSP FIRST: A MULTIMEDIA APPROACH. Prentice Hall, New Yourk, 1999

[3] Nouza J. (editor): Počítačové zpracování řeči. Sborník článků, Liberec, 2001 [4] Psutka J.: Komunikace s počítačem mluvenou řečí. Academia, Praha, 1995 [5] technická dokumentace od firmy Texas Instruments (www.ti.com)

Vedoucí bakalářské práce: Ing. Miroslav HOLADA, Ph.D.

Konzultant: Ing. Milan Kolář, CSc.

Zadání bakalářské práce: 27.10.2006

Termín odevzdání bakalářské práce: 18. 5. 2007

L.S.

... ...

Vedoucí katedry Děkan

V Liberci dne 27.10.2006

(4)

4 Prohlášení

Byl(a) jsem seznámen(a) s tím, ţe na mou bakalářskou práci se plně vztahuje zákon č. 121/2000 o právu autorském, zejména § 60 (školní dílo).

Beru na vědomí, ţe TUL má právo na uzavření licenční smlouvy o uţití mé DP a prohlašuji, ţe souhlasím s případným uţitím mé bakalářské práce (prodej, zapůjčení apod.).

Jsem si vědom(a) toho, ţe uţít své bakalářské práce či poskytnout licenci k jejímu vyuţití mohu jen se souhlasem TUL, která má právo ode mne poţadovat přiměřený příspěvek na úhradu nákladů, vynaloţených univerzitou na vytvoření díla (aţ do jejich skutečné výše).

Bakalářskou práci jsem vypracoval(a) samostatně s pouţitím uvedené literatury a na základě konzultací s vedoucím diplomové práce a konzultantem.

Datum

Podpis

(5)

5

Abstrakt

V posledních letech stále rychleji narůstá počet aplikací vyuţívající signálové procesory v průmyslu. Hlavním úkolem této bakalářské práce je seznámení se se signálovými procesory, především od firmy Texas Instruments, která je světovou jedničkou ve vývoji a výrobě digitálních signálových procesorů.

První část zprávy uvádí čtenáře do problematiky vyuţití digitálních signálových procesorů. Další část popisuje vývoj a porovnání architektur pouţívaných při výrobě signálových procesorů. Tato část je i podrobně zaměřena na architekturu vývojové (starter kit) desky s procesorem TMS320C6414, která je vyuţívána pro aplikaci navrţených algoritmů.

Zpráva dále seznamuje se způsobem programování digitálních signálových procesorů a s programovacím prostředím CODE COMPOSER STUDIO vyuţívajícím programovací jazyk C.

V práci jsou popsány pouţívané metody pro zpracování signálů, návrh samotných aplikací a jejich vyhodnocení.

Klíčová slova: digitální signálový procesor, filtr, signál, detekce, zvuk Abstract

During last years we have noticed fast increasing number of applications that are using the signal processors within the industry. The main target of this bachelors work is to get to know the signal processors, mainly the processors made by firm: Texas Instrument, which is the world number one in development and production of signal processors. First part of this work introduces the area of usage of the signal processors.

The next part describes development and comparison of different architectures used in production of the signal processors. This part is also in detail heeding the architecture of (starter kit) desk with TMS320C6414 processor, which is used for application of proposed algorithms. This work is than also introducing the way of programming the digital signal processors and the programming tool “CODE COMPOSER STUDIO”

which uses the programming language “C”. Within this work are also described the used methods for processing of the signal, design of applications and its evaluation.

Keywords: digital signal processor,filter, signal, detection, voice

(6)

6 Obsah

1. Úvod ... 10

2. Vývoj a seznámení se s architekturami DSP ... 12

2.1. Přehled architektur ... 15

2.1.1. Von Neumannova architektura ... 15

2.1.2. Harvardská architektura ... 16

2.1.3. Architektura typu VLIW ... 17

2.1.4. Superskalární architektura ... 19

2.2. Architektura signálového procesoru TMS320C6416... 20

2.3. Programování signálového procesoru TMS320C6416 ... 25

2.4. Vývojové prostředí Code Composer Studio ... 29

2.5. Práce s Code Composer Studiem ... 32

3. Zpracování signálu ... 35

3.1. Fourierovy řady a transformace ... 36

3.2. Rychlá Fourierova transformace FFT ... 38

3.3. Filtry FIR a IIR... 39

3.4. Základní způsoby detekce a rozpoznávání řeči ... 40

3.4.1. Segmentace ... 41

3.4.2. Parametrizace ... 41

3.4.3. Klasifikace ... 42

3.4.4. Lineární časová transformace ... 42

3.4.5. Nelineární časová transformace-Metoda DTW ... 43

4. Návrh systémů implementovaných do DSP ... 45

4.1. Návrh systému ECHO1 ... 45

4.2. Návrh systému ECHO2 ... 46

4.3. Návrh systému ENERGIE ... 48

4.4. Návrh systému AUDIO ... 49

4.5. Návrh systému GENERUJ SIGNÁL ... 49

4.6. Návrh systému DETEKCE ... 52

5. Závěr ... 56

(7)

7

Seznam použitých zkratek

ALU (Arithmetic-Logic Unit) aritmeticko-logická jednotka

ANSI (American National Standards Institute) americký národní standardizační úřad API (Application Program Interface)

aplikační rozhraní programu CCS (Code Composer Studio)

vývojové prostředí pro práci se signálovými procesory firmy Texas Instruments

COFF (Common Object File Format)

formát pro uloţení binárního strojového kódu CPU (Central Processor Unit)

centrální řídící jednotka DFT (Discrete Fourier Transform)

diskrétní Fouriérova transformace DMA (Direct Memory Access)

přímý přístup do paměti

DSP/BIOS (Digital Signal Processor/Basic Input Output System)

základní operační systém signálových procesorů Texas Instruments pro zpracování signálu v reálném čase

DTW (Dynamic Time Wraping)

dynamické borcení časové základny EMIF (External Memory Interface )

rozhraní pro připojení vnější paměti EVM (Evaluation Module)

vývojový modul, stavebnice

(8)

8 FFT (Fast Fourier Transform)

rychlá Fourierova transformace FT Fourierova transformace

FŘ Fourierova řada

FIR (Finite Impulse Response) konečná impulsní charakteristika GEL (General Extension Language)

obecný jazyk pro rozšíření moţností prostředí CCS IIR (Infinite Impulse Response)

nekonečná impulsní charakteristika IDFT inverzní Fourierova transformace

ISO (International Organization for Standardization) mezinárodní standardizační úřad

JTAG (Join Test Action Group)

rozhraní pro testování signálů na vývodech integrovaného obvodu LIW (Long Instruction Word)

dlouhé instrukční slovo MAC (Multiply And Accumulate)

násobení s akumulací

RISC (Reducet Instruction Set Computer) redukovaný instrukční soubor RTDX (Real Time Data eXchange).

systém pro výměnu dat v reálném čase, který pouţívá prostředí CCS SIMD (Single Instruction Multiple Data)

jeden programový tok a více datových toků

(9)

9 USB (Universal Serial Bus)

univerzální sériová sběrnice VLIW (Very Long Instruction Word)

velmi dlouhé instrukční slovo VSLI (Very Large-Scale Integration)

velký stupeň integrace

(10)

10

1. Úvod

Digitální signálové procesory (dále jiţ jen DSP) jsou mikroprocesorové obvody, které slouţí ke zpracování signálu s co nejmenšími finančními náklady. Stručně lze říci, ţe signálový procesor je přizpůsoben pro efektivní realizaci algoritmů číslicového zpracování signálu v reálném čase. Typické algoritmy, které se často aplikují v signálových procesorech, jsou například různé druhy číslicových filtrů (FIR,IIR) nebo rychlá Fourierova transformace (FFT) a podobné algoritmy náročné na výpočetní výkon procesoru.

Kritérií, podle kterých vybíráme DSP, aby byl dostatečně výkonný v reálném čase, je několik. Např.

Vyuţití vysokých hodnot kmitočtu hodinových impulzů procesoru a vhodného paralelizmu v architektuře (pipelining, více datových a adresových sběrnic atd.).

Dalšími důleţitými parametry jsou například cena a velikost. Výrobci se snaţí zmenšovat rozměry a sniţovat náklady. To vede k omezování velikosti pamětí a to jak programových, tak i datových. Procesory potom nevyuţívají úplnou instrukční sadu, ale jen omezenou. Například do jedné instrukce můţe být zakódováno několik operací.

Čím více jsou však operace zhuštěné, tím více jsou sloţitější kompilační programy (např. z jazyka C do asembleru). Vývojová prostředí jsou poté velmi drahá. Signálové procesory s architekturou VLIW mají velký stupeň paralelizmu a v asembleru by se daly jen velmi těţko programovat, natoţ optimalizovat.

Způsob pouţití signálového procesoru pro danou aplikaci. Dále aplikační listy, které výrobci nabízejí. Výběr DSP v mnoha různých typech a od mnoha různých výrobců.

Jeden z problémů, který můţe nastat, je pokud se přenáší jiţ odladěný program na nějakém DSP na vyšší řadu. Můţe se stát, ţe v nové řadě jsou pouţity zcela jiné CODECY a nebo jiné prvky, které se neslučují se starší řadou a program se musí předělat.

(11)

11

V průmyslu se vyuţívají DSP např. v následujících přístrojích:

Jako detektory mechanických vibrací, kde DSP řeší algoritmus FFT.

Jako snímače polohy, Linear Encoders Microsyn firmy Newall, kde DSP řeší časovou synchronizaci měřícího ústrojí a přepočítává digitalizovaný signál na digitální fázově modulovaný signál, známý z inkrementálních senzorů natočení, jednotka pro řízení motorů, kde DSP tvoří jádro celého zařízení.

Kamerové systémy pro řízení procesů Legend XE firmy DVT, kde účast DSP zvýšila rychlost zpracování dat aţ osmkrát v porovnání s předchozími modely.

Tlačítka Zero-Force 800Z firmy Rockwell Automation, kde DSP provádí algoritmus rozpoznání přítomnosti lidské ruky či prstu ze signálu kapacitního senzoru.

Časté je pouţití DSP pro zpracování dat ze senzorů, kde úloha procesoru nespočívá pouze ve snímání údajů, např. z A/D převodníku a odesílání na standardní komunikační rozhraní, ale téţ v korekci snímaných hodnot vůči podmínkám okolí, včetně rušivých vlivů.

Ke zpracování akustického signálu.

Ke zpracování elektronických signálů v medicínském odvětví (EKG, EEG).

Produkty nemusejí mít jen výrobcem definovanou funkci, ale existují řešení, v nichţ pracuje jeden i více DSP (2, 4, 8 apod.) společně na jedné úloze. V principu si jsou karty a nabízený software všech firem podobné.

Produkty, jeţ nabízejí větší počet výkonných DSP, jsou zpravidla vhodné pro aplikace zpracování obrazu, vícekanálovou komunikaci, pro stanice zpracování dat včetně jejich uloţení na médium apod. Produkty s jedním DSP mají své pole aplikací závislé na výpočetním výkonu procesoru a výbavě periferií. Můţe jimi být analýza jednoduchého signálu, stejně jako výše uvedené aplikace víceprocesorových systémů.

(12)

12

2. Vývoj a seznámení se s architekturami DSP

Od začátku pouţívání DSP (1979) se vyvinulo několik způsobů architektury. Byly to tyto typy architektury von Neumannova, Harvardská, typu VLIW (Very Long Instruction Word) a architektura superskalární. Výrobci mají snahu se přiblíţit k paralelním systémům. Signálový procesor s čistě paralelní architekturou zatím neexistuje, ale v architektuře signálových procesů jsou pouţívány principy, které jsou vlastní paralelním systémům (pipelining). Zvětšení podílu paralelního zpracování je základní metodou zvyšování výpočetního výkonu digitálních signálových procesorů.

Paralelním zpracováním se rozumí rozdělení dané úlohy na větší počet dílčích úloh, které je moţné provádět současně na několika mikroprocesorech nebo dílčích jednotkách při řízení několika programy. Typy paralelního zpracování vyuţívané v architektuře dnešních signálových procesorů jsou paralelní zpracování instrukcí a paralelní zpracování dat.

Moţností pro porovnání různých architektur signálových procesorů je mnoţství instrukcí, které lze provést během jednoho hodinového cyklu. Počet instrukcí provedených paralelně a mnoţství provedených operací v kaţdé instrukci přímo ovlivňuje úroveň paralelismu signálového procesoru, která pak zase ovlivňuje jeho rychlost. Dříve signálové procesory přečetly pouze jednu instrukci během jednoho hodinového cyklu a paralelismus byl realizován sdruţením několika operací do jedné instrukce, tak tomu bylo u harvardské architektury. Takovou typickou instrukcí byla instrukce MAC (Multiply And Accumulate) pro provedení násobení s akumulací a se současným uloţením nových datových operandů do registrů a zvýšením hodnot adresových ukazatelů. Jinou moţností, neţ sdruţování více operací do jedné instrukce, je pouţití přístupu běţně pouţívaného u mikroprocesorů pro všeobecné pouţití, tj. provedení jedné operace v jednom instrukčním cyklu a přitom čtení skupiny těchto instrukcí současně (paralelně). Tato metoda vyuţívá paralelní zpracování instrukcí a občas se označuje také jako metoda čtení s více přístupy (Multi-Issue Processing).

Jedna instrukce je sloţena z několika částí, které současně ovládají skupinu funkčních jednotek. Instrukce pro dílčí funkční jednotky jsou jednoduché a jednoznačné, a proto kompilační programy z vyšších programovacích jazyků (jako je například jazyk C) nejsou tak komplikované, jako byly kompilační programy pro Harvardskou architekturu.

(13)

13

Paralelní čtení více programových instrukcí během jednoho hodinového cyklu je jednou z moţností, jak zvýšit stupeň paralelismu signálového procesoru. Vyšší výpočetní výkon je moţné získat také pomocí koncepce typu SIMD (Single-Instruction, Multiple-Data), neboli zavedením paralelního zpracování dat. Tento přístup umoţňuje signálovému procesoru provádět stejnou operaci pomocí jedné instrukce pro skupinu nezávislých dat. Signálový procesor, vyuţívající SIMD, můţe pracovat s dlouhými registry (např. 32 b), jako násobky menších datových slov (čtyřikrát 8 b), pro něţ provádí stejné operace a vytváří více nezávislých výstupů. Princip SIMD se stal populární před 20 lety jako prostředek pro zvýšení výkonu tehdy existujících architektur CPU pro vektorové operace. Tento přístup významně zvyšuje rychlost procesorů pro algoritmy pracující s vektory, kde jsou operace přizpůsobené pro paralelní zpracování.

Architektura typu SIMD má ovšem i svá úskalí. Efektivnost vyuţití principu SIMD záleţí na skutečnosti, zda vstupní data lze zpracovat paralelně (nezávisle na sobě).

U algoritmů, které jsou svou podstatou zpracovatelné sériově, například operace, které vyuţívají výsledky jedné operace jako vstup pro následující operaci, není vhodné princip SIMD obecně pouţít. Z tohoto důvodu je základní otázka pro zákazníky, zda koupit či nekoupit procesor s principem SIMD, zda je princip SIMD vyuţitelný pro jeho uvaţovanou aplikaci.

Pro zvýšení rychlosti byla také do architektury signálových procesorů přidána paměť typu cache. Je to rychlá paměť umístěná blízko jádra signálového procesoru, nebo skupina těchto pamětí, které jsou dynamicky plněny programovými instrukcemi nebo daty. Jejich základní přínos je v tom, ţe sniţují poţadavky na rychlost, a tím i cenu paměti, která je v procesoru umístěna. Paměť typu cache je určena k uloţení a čtení často pouţívaných dat a instrukcí, slouţí jako prostředník mezi procesorem a pomalejší velkou vnitřní nebo vnější pamětí procesoru. Velká hodinová rychlost řady procesorů vyţaduje pouţití extrémně rychlé skupiny pamětí k tomu, aby zpracování algoritmu probíhalo s plným výkonem. Paměti typu cache jsou typicky vyuţívány u mikroprocesorů pro všeobecné pouţití (PC). U signálových procesorů se zatím objevovaly zřídka kvůli neurčitému odhadu času nutného k provedení programu.

Po zjištění výhodných vlastností, které paměť cache přináší, se výrobci snaţí najít způsob, jak přizpůsobit tuto paměť pro aplikace číslicového zpracování signálů.

Procesor s pamětí cache v ní má uloţena potřebná data a instrukce, ke kterým se musí rychle dostat. Jestliţe však potřebná data nebo instrukce nejsou v této paměti, procesor

(14)

14

musí čekat, neţ se paměť cache naplní. Časová náročnost provedení programu se můţe měnit v závislosti na obsahu této paměti. Donedávna vyráběné signálové procesory, které pouţívaly paměť typu cache, ji vyuţívaly pouze pro uloţení instrukcí, ale nikoliv pro uloţení dat. Paměti cache pro uloţení instrukcí byly tak jednoduché, ţe programátoři mohli celkem snadno odhadnout prováděcí čas. Nyní se pro několik nových architektur signálových procesorů, jako je např. řada TMS320C64xx od firmy Texas Instruments, začala pouţívat paměť cache podobným způsobem, jako je vyuţívána v mikroprocesorech pro všeobecné pouţití (například dvou úrovňová struktura v Pentiu III). Signálový procesor vyuţívá také dvou úrovní ve struktuře paměti typu cache, a to pro instrukce a pro data. Firmě Texas Instruments se tak podařilo zvýšit výkon signálového procesoru TMS320C64xx tak, ţe je nyní nejvýkonnějším procesorem na světě vůbec (pro kmitočet hodinových impulzů 600 MHz má výpočetní výkon 4800 MIPS).

(15)

15

2.1. Přehled architektur

2.1.1. Von Neumannova architektura

Obr. č. 1. Von Neumannova koncepce architektury počítačů

Architektonické koncepce mikroprocesorových obvodů vycházely z architektury klasických počítačů. Základem této architektury byly myšlenky, které vznikly při vývoji prvních počítačů, které formuloval v padesátých letech minulého století matematik John von Neumann. Některé z jeho myšlenek (tzv. postuláty) jsou, ţe počítač (mikroprocesor) se skládá ze čtyř funkčních bloků viz obr. 1 – paměti, řadiče, aritmeticko-logické jednotky (ALU) a vstupních a výstupních jednotek [4]. Struktura počítače je nezávislá na typu řešení úlohy a je řízena obsahem paměti. Instrukce a operandy jsou uloţeny ve stejné paměti a paměť je rozdělena do buněk o stejné velikosti, jejichţ pořadová čísla se pouţívají jako adresy. Program je tvořen posloupností elementárních příkazů (instrukcí), v nichţ zpravidla není obsaţena hodnota operandu (uvádí se pouze jeho adresa), takţe program se při změně dat nemění;

instrukce se provádějí jednotlivě v pořadí, v němţ jsou zapsány do paměti. Změna provádění instrukcí se vyvolá instrukcí podmíněného a nepodmíněného skoku.

Pro reprezentaci instrukcí a čísel (operandů, výsledků, adres apod.) se pouţívají dvojkové signály a dvojková číselná soustava.

Typ této architektury se udrţel velmi dlouho, aţ do osmdesátých let minulého století, kdy se objevily první procesory s harvardskou architekturou.

(16)

16 2.1.2. Harvardská architektura

Tuto architekturu navrhl Howard Aiken v třicátých letech minulého století na Harvardské univerzitě ve Spojených státech při vývoji reléového počítače HARVARD MARK 1 (1944). Dále byla vyuţita na Pensylvánské univerzitě pro elektronkový počítač ENIAC (Electronic Numerical Integrator and Calculator) [8].

Jiţ tenkrát byla tato architektura velmi moderní koncepcí, ale technické prostředky v té době neumoţnily její realizaci, a proto byla zavrţena a pouţívala se opět koncepce von Neumannova. Později asi po čtyřiceti letech dosáhla technologie výroby integrovaných obvodů takové vyspělosti, ţe mohla být tato koncepce realizována.

Základní principy harvardské architektury jsou znázorněny na obr.č.2.

Obr. č. 2. Harvardská architektura signálového procesoru

Paměť je rozdělena na tři části. Paměť programu a dvě paměti dat tak, aby současně mohly dva operandy vstupovat do ALU. Součin dvou operandů v jednom instrukčním cyklu provede hardwarová násobička a výsledek součinu je přičten k akumulátoru (A, ACC). Pro zvýšení výpočetního výkonu se vyuţívá zřetězené zpracování instrukcí (pipelining). U této architektury je zvýšen počet samostatných datových a adresových sběrnic a přímý přístup do paměti je prováděn vícenásobným kanálem DMA (Direct Memory Access). Řízení jádra procesoru je odděleno od řízení vstupních a výstupních jednotek a architektura typu 1X a 2X znamená, ţe jedna instrukce je provedena v jednom nebo ve dvou hodinových cyklech (taktech) [4].

(17)

17

Harvardská architektura se dnes běţně pouţívá v DSP pro pouţívání v telekomunikačním odvětví. Při zpracování hudby, řeči a obrázků, v medicíně, v průmyslu pro řízení a regulaci v reálném čase a pro různé druhy měření [7]. Typickým představitelem této architektury od firmy Texas Instruments je řada DSP s označením TMS320C50XX. Pro zvýšení výkonu těchto procesorů se v některých aplikacích ke klasickému jádru přidává ještě koprocesor, který pracuje nezávisle na základním jádře. Tím se vlastně DSP stává vícejádrovým.

2.1.3. Architektura typu VLIW

Dalším způsobem, jak zvýšit výpočetní výkon DSP, byla snaha vloţit do architektury více funkčních jednotek, které dokáţou současně více operací spojených do jedné programové instrukce. Tím se prodlouţí instrukční slovo. Tato architektura se v počátku označovala jako LIW (dlouhé instrukční slovo). Poté se ještě zvětšil počet funkčních jednotek a architektuře se začalo říkat VLIW (Very Long InstructionWord , velmi dlouhé instrukční slovo). První vyuţití této architektury bylo roku 1975 na numerických koprocesorech FPS 120 B. U signálových procesorů se tato architektura začala vyuţívat firmou Texas Instruments ještě jako LIW u řady TMS320C30XX. Tento procesor měl pohyblivou řádovou čárku. Vývoj v technologii VSLI (Very Large-Scale Integration) způsobil, ţe se mohlo pouţívat daleko více funkčních jednotek. Proto se vyvinuly nové signálové procesory s velmi dlouhou programovou instrukcí typu VLIW. Pro tuto architekturu je typický velký počet vzájemně propojených funkčních bloků, jako jsou například násobičky, jednotky přístupu do paměti, ALU, jednotky pro manipulaci s bity a další [4].

Instrukce architektury VLIW se zpracovávají stejně jako u von Neumannovy architektury (po jedné). Architektury se však liší v tom, ţe u architektury typu VLIW se programová instrukce rozloţí na skupiny polí instrukcí. V těchto polích jsou zapsány operační znaky, které ovládají kaţdou funkční jednotku samostatně. Toto dělení je však pevně definováno. Všechny operace, které jsou předepsány v jednom instrukčním paketu, se provádějí paralelně. Názorné blokové schéma je na obr. č. 3.

(18)

18

Hlavní výhody této architektury jsou tyto: mají vysoký výpočetní výkon s relativně jednoduchou architekturou mikroprocesorů ve srovnání s architekturou paralelních mikroprocesorů. U této architektury je snadné přizpůsobit výpočet dané aplikaci.

Při návrhu této architektury se výrobci snaţí dosáhnout co největší ortogonality.

To znamená, ţe jakýkoli registr ze souboru registrů muţe být operandem v libovolné instrukci. Úplné ortogonality však dnes a v této architektuře nelze dosáhnout. Existují mnohá omezení, která stanovují, jaké registry lze v dané instrukci pouţít a s kterými přenosovými cestami lze pracovat. Např., ţe se v jeden okamţik nesmí zapisovat dvě instrukce na jedno místo v registrech. Rozbor a plánování paralelního zpracování se provádí během překladu zdrojového kódu programu. Tím se velmi zjednoduší struktura čipu a poţadavky na něj. U těchto čipů se vyuţívají především procesory typu RISC (tedy čipy s omezenou instrukční sadou). Překlad z vyšších programovacích jazyků je u této architektury snazší neţ u architektury Harvardské.

Obr. č.3. Blokové schéma mikroprocesoru s architekturou typu VLIW

(19)

19 2.1.4. Superskalární architektura

Tato architektura se u signálových mikroprocesorů skoro nevyuţívá. Je aplikována pouze firmou LSI Logic Inc u jedné řady procesorů (LSI40XX).

Superskalární architektura je spíše uţívána u mikroprocesorů pro všeobecné vyuţívání.

Tato architektura je hlavně vyuţívána firmou Intel při vývoji mikroprocesorů Pentium.

Tato architektura se liší od architektury typu VLIW hlavě tím, ţe u architektury VLIW musí uţivatel, nebo překladač nastavit (přesně definovat) paralelizmus, kdeţto u superskalární architektury je navrţen speciální hardware uvnitř mikroprocesoru (Schedule Unit), který sdruţuje operace vykonávané paralelně do jedné instrukce. Sdruţování závisí na několika podmínkách. Podmínky se řeší za běhu a superskalární procesor přejímá odpovědnost za paralelní sdruţování namísto programátora nebo kompilátoru. Superskalární architektura umoţňuje binární kompatibilitu mezi generacemi mikroprocesoru. Tato vlastnost je velké plus oproti architektuře VLIW, u které není zaručena kompatibilita s novějšími typy. Velkým nedostatkem této koncepce je to, ţe programátor neví, které instrukce procesor sdruţí a tím pádem kolik instrukčních cyklů bude třeba pouţít pro zpracování dané části.

Programátor také neví, jak dlouho bude program trvat [4].

(20)

20

2.2. Architektura signálového procesoru TMS320C6416

Tuto desku jsem vybral pro realizaci mé bakalářské práce z mnoha signálových procesorů. V tabulce č. 1. je uveden seznam signálových procesorů a celých kitů od firmy Texas Instruments.

Typ Cena ($)

TMS320C6713 395 TMS320C6414 495 TMS320C5416 395 TMS320C5912 295 TMS320C5510 395 TMS320C5509 495

Tab. č. 1. Seznam z vybíraných kitů od firmy TI

Desky vyrábí firma Texas Instruments ve spolupráci s firmou Spectrum Digital.

Deska mnou vybraná není nejvýkonnější, jelikoţ jsem musel splnit i finanční poţadavky. Nicméně tento „starterkit“ je nejvýkonnější deskou s procesorem, který vyuţívá pevnou řádovou čárku a vychází nejlépe na poměr cena/výkon.

Na obrázku č. 4. je deska znázorněna s popisem. Foto bylo převzato z [6].

Obr. č. 4. Foto desky DSK320C6414 s popisem.

(21)

21

Tato deska vyuţívá architekturu typu VLIW (popsanou v kapitole 2.1.3).

U firmy TI se čipy s touto architekturou označují jako VelociTI popřípadě VelociTI.2.

První řadou DSP s takto označovaným jádrem byla řada TMS32062XX. V návaznosti na tuto řadu se vyvíjely nové generace desek aţ do dnešní poslední řady TMS320C64XX vyuţívající jádro s označením VelociTI.2 (zjednodušené blokové schéma je na obr. č. 5). Tato řada je plně kompatibilní mezi různými typy řad a softwarově kompatibilní s předchozí řadou. Procesor vyuţívá vysokou míru paralelního zpracování instrukcí pro zvýšení výkonu. Do jednoho paketu mohu sdruţit aţ 8 instrukcí, které zpracovávají samostatné funkční jednotky DSP. Datové registry jsou 32 bitové. Jádro procesoru je spojeno s okolím pomocí dvojice adresových a datových sběrnic. Všechny mají šířku 32 bitů. Vnitřní paměť čipu lze nastavit jako paměť typu RAM anebo CACHE. V tabulce č.2 je znázorněno porovnání výkonnosti některých čipů od firmy TI. Významy zkratek pouţitých v tabulce jsou MIPS- (million instruction per sekond) milion instrukcí za sekundu. MFLOPS - (million floating point instruction per sekond) milion operací v pohyblivé řádové čárce za sekundu.

MMACS(million multiply and acumulations per second) počet provedení milionů operací násobení s akumulací za sekundu.fclock[MHz]

Srovnání výpočetní výkonosti DSP typuVLIW od firmy TI

řada

TMS320C62XX

řada

TMS320C64XX

řada

TMS320C67XX

f clock [MHz] 150-300 300-600 100-225

rychlost 1200-2400 MIPS 2400-4800 MIPS 600-1350 MFLOPS 16 bitové operace 300-600 MMACS 1200-2400 MMACS 200-550 MMACS 8 bitové operace 300-600 MMACS 2400-4800 MMACS 200-550 MMACS Tab. č. 2. Srovnání výpočetní výkonosti DSP typuVLIW od firmy TI

U tohoto DSP došlo k velkému pokroku v míře paralelizmu a zdvojování. Došlo k zdvojnásobení velikosti registrů a k rozšíření sběrnic na dvojnásobek. To znamená, ţe procesor je nezávislý na konkrétních funkčních jednotkách, ale instrukci můţe provést jakákoliv funkční jednotka [6].

Obvod TMS320C6414 je vyroben technologií CMOS, pouzdro je typu BGA a má 532 vývodů. Na čipu je integrováno 16KB programové paměti L1P a 16 KB datové paměti L1D paměti typu cache a 1024 KB paměti druhé úrovně (L2).

Tato paměť je však sdílená pro data i program. K desce je moţné připojit externí paměť přes sběrnice EMIF. EMIFA má 64 bitovou datovou sběrnici a EMIFB má 16 bitovou

(22)

22

datovou sběrnici. Celková paměť, kterou je moţné k desce připojit je o kapacitě 1GB.

K další periferii tohoto zařízení patří 64 kanálový řadič přímého přístupu do paměti (DMA). DMA má propustnost 2GB/s. K zařízení je moţné připojit také externí zařízení pomocí na HOST portu s datovou šířkou sběrnic 16 nebo 32 bitů. Deska dále obsahuje aţ tři sériové rozhraní s vyrovnávací pamětí a trojicí časovačů. Na desce je také integrován oscilátor s fázovým závěsem PLL a rozhraní typu JTAG pro připojení emulátoru.

Jádro DSP této desky je rozděleno na dvě datové cesty A a B viz obr.č.5. Cesty mají k dispozici 64 datových registrů (kaţdá cesta 32), coţ je zdvojnásobení oproti předchozím řadám. Dvakrát se zvětšila i šířka datových sběrnic na 32 bitů. Šířka adresových sběrnic je zachována na 32 bitů. Zapisování dat se můţe provádět pouze do příslušné části A nebo B, ovšem čtení dat můţe být i z registrů druhých, coţ je zařízeno pomocí kříţové sběrnice. Kaţdá datová cesta obsahuje čtveřici funkčních jednotek: jednotku pro realizaci aritmetických operací L, jednotku pro bitové operace S, jednotku pro přístup do paměti D a hardwarovou násobičku M. Vylepšení funkčních jednotek spočívá ve zvětšení počtu operací, které mohou jednotky provádět.

Obr. č. 5. Blokové schéma jádra VEloci2 signálového procesoru řady TMS320C64XX .

(23)

23

Generování adres v jádře Veloci2 zařizuje jednotka D a to jak pro čtení, tak i pro zápis. Tato jednotka umoţňuje také lineární a modulo adresování a přenos dat typu (byte, half word, word). Adresa je generována jednou ze dvou jednotek D na jednu z adresových sběrnic DA. U jádra Veloci2 bylo uděláno několik vylepšení na jednotce D a to tyto: moţnost pouţívat logické operace, zapsat pětibitovou konstantu a přenos hodnot typu double word.

Obr. č. 6. Blokové schéma desky se signálovým procesorem řady TMS320C6414 [6]

Starterkit se skládá z mnoha částí, které jsou popsány na obr.č. 6. Nyní je jednotlivě popíšeme.

PWR je konektor pro napájení desky + 5 volty.

USB je konektor pro komunikaci s počítačem pomocí USB kabelu.

Ext. JTAG je příprava na externí vyvedení JTAG, pomocí tohoto rozhraní se testují tištěné spoje.

LED jsou 4 led diody. Diody nám mohou slouţit jako kontrolní diody v programu a nebo můţou být logickým výstupem nějaké operace nebo programu.

DIP jsou dvoupolohová tlačítka (pomocí těchto tlačítek lze přepínat např. části programu atd.)

(24)

24

Config Sw. jsou přepínače (dvoupolohové), které nám slouţí pro nastavení desky, například jaký je pouţíván způsob zápisu a čtení dat (big Endian, littl endian) a odkud budeme procesor bootovat.

Voltage reg. je regulátor napětí (spíše dělič napětí).

Embedded JTAG pomocí tohoto bloku je moţné aplikací Code Composer studio testovat desku přes USB kabel. Testování se provádí při kaţdém spojení DSP a studia nebo ho lze provést v Diagnostics Utility.

MUX je multiplexor (přepínač).

Preripheral Exp je rozhraní pro moţnost připojení periferií, např. další dceřiné karty.

Host Port int. je port hostitelského rozhraní 80 pinový.

Memory Exp. je rozhraní, pomocí kterého lze připojit externí pomocnou paměť.

SDRAM je paměť typu RAM.

FLASH je paměť typu Flash.

CPLD komplexní programovatelný logický modul kontroluje registry a spolupráci s dceřinými deskami.

DSP6416 je signálový procesor od firmy TI TMS320C6414.

EMIF (A,B) je rozhraní propojující bloky s externí pamětí.

McBSPs je mnoho kanálové seriové rozhraní s vyrovnávací pamětí Mic in je vstup z mikrofónu.

Line in je vstup audio signálu.

Line out je výstup audio signálu.

HP out je výstup do sluchátek.

AIC23 CODEC jsou kodeky, které nám kodují či dekodují analogový signál na digitální. Tato deska vyuţívá kodeky řady AIC23.

(25)

25

Parametry této desky jsou: procesor o frekvenci 1 GHz, flash paměť o velikosti 512KB, SDRAM o velikosti 16 MB, 4 tlačítka a diody, USB rozhraní, stereo kodeky [6].

2.3. Programování signálového procesoru TMS320C6416

Algoritmy, které mají být implementovány do DSP, jsou většinou zadávány pomocí diferenčních rovnic nebo pomocí signálových toků. Tyto rovnice je vhodné optimalizovat pro pouţití do DSP, aby byly co nelépe vyuţity procesory a míra jejich paralelizmu. Dále je dobré otestovat dané algoritmy v jiném simulačním prostředí, například v Matlabu, kde je moţné otestovat správnost a funkčnost algoritmů.

Úkolem programátora při programování nového algoritmu do DSP je nalézt rozdělení datové a programové paměti, uloţení dat v paměti a v registrech, pouţití funkčních jednotek a pouţití speciálních instrukcí pro DSP. Tuto práci programátorům usnadňují programové a technické vývojové prostředky, které dodávají výrobci nebo konkurenční firmy.

Programové vývojové prostředky umoţňují psaní zdrojových programů v jazyce signálových procesorů, jejich ladění a překlad do strojového kódu. Tyto odladěné programy se poté ukládají do operační paměti signálového procesoru. V době, kdy se začaly signálové procesory objevovat (Intel i2920, TI TMS320C10 roku 1982), se programovaly v asembleru. Architektura těchto procesorů nebyla příliš sloţitá a programy měly většinou pouze několik set řádků a dobrý programátor se v programu vyznal.

V dnešní době se ovšem vyskytují DSP s architekturou typu VLIW a nebo se superskalární architekturou a programování se stalo obtíţnější díky míře pouţívaného paralelizmu. Programování celého kódu v asembleru se u těchto architektur nepouţívá, jelikoţ by to bylo velmi obtíţné a téměř nikdo by se v daném kódu nevyznal. Proto se vyuţívají vyšší programovací jazyky a pak pomocí překladače a linkeru se kód přeloţí a získá se přímo (obejct code). Nejvíce pouţívaným vyšším programovacím jazykem pro programování DSP je jazyk C a nebo C++ (vyuţívající objektové programování). Jazyk C umoţňuje pouţití polí, funkcí, přímý přístup k hardwarovým prostředkům a obsluhu přerušení. Při vyuţívání jazyka C je psaní a ladění chyb programu daleko rychlejší a přehlednější neţ v asembleru. Strojový kód, který se vygeneruje z překladu z jazyka C, je větší a výpočetně daleko náročnější

(26)

26

neţ optimalizovaný kód psaný v asembleru. Optimálním způsobem jak implementovat kód do DSP je napsat v jazyce C algoritmus pouţívající funkce optimalizované v asembleru. Vývojová prostředí většinou podporují propojení jazyka C a asembleru.

Na obr.č.7. je znázorněno blokové schéma programových prostředků, které se vyuţívají při programování a ladění programů [4].

Obr. č. 7.Přehled programových vývojových prostředků pro DSP

Programové prostředky pro získání strojového kódu jsou: překladač jazyka C, překladač jazyka signálového procesoru (asembelru) a sestavení programu (linker).

Překladač jazyka C doplňuje standardní knihovny jazyka C, které programátor pouţívá, sestaví program v jazyce C a optimalizovaný ho přeloţí do asembleru signálového procesoru. Podle toho jaký DSP je pouţíván, lze nastavit stupeň optimalizace, paralelizmu a zřetězovaní zpracovávaného kódu. Většina překladačů umoţňuje vkládat do zdrojového kódu příkazy z asembleru, to zrychlí zpracování kódu, ovšem kód se stává pro uţivatele nepřehledným a většinou je nepřenositelný na jiný typ DSK.

Proto se doporučuje vyuţívat místo těchto příkazů speciální vnitřní funkce překladače, které jsou ekvivalentní konkrétním příkazům v asembleru signálového procesoru.

Překladač asembleru většinou vytváří dva výstupní soubory. V prvním je výpis překladu, upozornění na chyby, varování, výpis provedených operací, přiřazení adres v paměti, přiřazení hodnot konstantám a podobné věci (má koncovku *.lst). Ve druhém souboru (*.obj) je přeloţený zdrojový kód do asembleru. Tento soubor je uloţen na počítači a je moţné ho dále upravovat nebo se nahraje do DSP do paměti typu RAM.

Pro překlad je moţné vytvořit různé druhy nastavení podle toho, jaký DSP je pouţíván

(27)

27

a s tím je spojená i míra paralelizmu. Správné přiřazení adres pouţívaných symbolů zajišťuje linker.

Linker sdruţuje jiţ přeloţené části (moduly) programu do jednoho kódu v asembleru. Linker musí řešit problematiku adresování jednotlivých proměnných to jak globálních, tak i v jednotlivých modulech. Výstupem linkeru je jeden samostatně běţící soubor (*.out, *.exe) ve strojovém kódu.

Všechny potřebné části znázorněné na obr.č.7 v sobě zahrnují integrované vývojové prostředí. U firmy Texas Instruments se jedná o prostředí, které je označeno jako CODE COMPOSER STUDIO. Integrované vývojové prostředí (studio) je programový prostředek, který obsahuje všechny potřebné dílčí programy, jako např. překladač jazyka C, překladač asembleru a linker. Navíc poskytuje rozmanitý výběr nástrojů usnadňující programátorovu práci při psaní a odlaďování kódu. Je to například grafické zobrazení vstupních a výstupních signálů, umoţňuje sledování dat v různých částech programu při jeho zpracování (probes), nastavování skoků, nastavování breakpoints (zastavení programu v daném bodě), opakování zvolené části programu a sledování výpočetní náročnosti (profile). Po odladění, přeloţení a optimalizaci lze program ještě simulovat. To se provádí před nahráním programu do signálového procesoru. K této simulaci slouţí buď simulátor, nebo emulátor.

Simulátor je program spuštěný na počítači. Umoţňuje plně simulovat činnost signálového procesoru, ne však v reálném čase. Tento program bývá součástí integrovaných vývojových prostředí. Programátor můţe řídit zpracování programu, můţe číst a měnit obsah pamětí a registrů, nastavovat breakpoints, krokovat programy a mnoho dalších věcí. Toto simulování usnadňuje vývoj nových algoritmů před jejich nasazením do praxe. Simulátor však nepracuje v reálném čase a tím vzniká velká nevýhoda, ţe nemůţeme ověřit, zda je program vyřešen dostatečně rychle. Doba řešení kódu jde jen odhadovat podle počtu instrukcí a doby na jejich zpracování. Také nelze otestovat hardwarové nároky na časovou návaznost periferních zařízení, ošetření hazardních stavů apod.

Obvodové vývojové prostředí se vyuţívá k ověření plné funkčnosti programu v signálovém procesoru, který má pracovat v reálném čase a při plné rychlosti zpracování kódu. Po připojení DSP do cílového systému a nahrání programu je ještě nutné nastavit komunikaci procesoru s periferiemi, připojení generátoru časových

(28)

28

impulzů nebo krystalu a nastavení vnitřního fázového závěsu pro řízení činnosti jádra DSP, nastavit dobu pro obsluhu vnější paměti a vstupních a výstupních obvodů. Dále je ještě potřeba nastavit vzorkovací frekvenci, přenosovou rychlost, velikost vstupních a výstupních vyrovnávacích pamětí a DMA kanál. Veškeré toto nastavování je uloţeno v části kódu, který je označován jako firmware a je uloţen v desce. K testování firmwaru a jeho spolupráci s uţivatelským kódem slouţí emulátor.

Emulátor je hardwarové zařízení. Buď je implementován přímo na čipu, nebo to je hardwarový obvod umoţňující plně simulovat programové i obvodové vlastnosti DSP na desce. Tímto zařízením se testuje, zda obvod bude dobře fungovat při plné zátěţi v reálném čase. Uţivatel můţe nastavovat podobné věci jako v simulátoru (breakpoints, číst nebo měnit hodnoty proměnných). Typů emulátorů je mnoho druhů. Výrobci je prodávají v různých variantách. Například jako samostatnou desku, která je připojena kabelem k PC, nebo jako desku umístěnou přímo v počítači.

Jednoduchým emulačním prostředím jsou vývojové desky DSK (Starter kit).

Tato deska je připojena k počítači pomocí paralelní brány nebo pomocí kabelu obvodů JTAG. Tento prostředek je levný, ale neobsahuje veškeré periferie, nebo jen v omezené velikosti. Tato zařízení jsou vhodná pro menší programy. Pro náročnější úlohy jsou vhodnější desky EVM (EValuation Module). Tyto desky mají více periferií a jsou výkonnější.

(29)

29

2.4. Vývojové prostředí Code Composer Studio

Vývoj a implementaci nového programu lze rozdělit do několika částí podle obr.č.8.

Obr. č. 8. Zjednodušené blokové schéma vytváření a ladění zdrojového kódu ve vývojovém prostředí CCS

První krok se většinou provádí na personálním počítači v nějakém jiném simulačním prostřední, například v Matlabu. To nám umoţňuje rychlou analýzu toho, co a jakým způsobem to budeme dělat. V Matlabu se také snadno a rychle ověří správnost námi navrţeného algoritmu. Další tři kroky z obr.č. 8 lze provádět v CCS (Code Composer Studio). Prostředí CCS obsahuje prostředky: překladač jazyka C, překladač asembleru, optimalizaci překladu do asembleru (assembly optimizer), linker, archivy souborů (archiver), standardní knihovny jazyka C (run time support library), převod mezi formáty binárních souborů (hex conversion utility), zpětný výpis ze souboru formátu COFF (cros referenc lister) a výpis výsledného souboru s absolutními adresami.

Překladač jazyka C splňuje standard ISO a překládá zdrojový kód do strojového kódu asembleru. Kromě klasických funkcí překladač umí přeloţit i řadu vnitřních funkcí označovaných jako INTRINSIC FUNKCE. Tyto funkce usnadňují zápis kódu.

V jazyce C se tyto funkce píší většinou s podtrţítkem (_add2, _sub a jiné). Tyto funkce odpovídají přímo funkcím asembleru ADD2, SUB a jiné. Řada 64XX má přes sto instrukcí itrinsic.

(30)

30

Překladač asembleru překládá kód asembleru do formátu COFF (Common Object File Format). Zdrojové soubory totiţ můţou obsahovat mimo instrukcí signálového procesoru ještě makra nebo příkazy překladače. Soubory formátu COFF jsou přenositelné a rozdělují se na několik částí, které je moţné uloţit odděleně do různých pamětí. Například v části text jsou uloţené instrukce kódu a text bývá uloţený v paměti ROM nebo FLASH. Část data obsahuje hodnoty konstant, koeficienty filtrů a bývá uloţena v paměti EPROM nebo Flash. Část označovaná jako BSS obsahuje neinicializované proměnné a je ukládána do paměti RAM.

Obr. č. 9.Základní okno CCS

Optimalizace překladače asembleru. Vstupním souborem do optimalizátoru je program přeloţený do lineárního asembleru. Tento soubor není nijak optimalizován.

Není zde uvaţováno zřetězení instrukcí a instrukčních paketů, přiřazení instrukcí funkčním jednotkám. Instrukce jsou zapsány postupně tak, jak mají být prováděny.

Během optimalizace se program snaţí vyuţít co nejvíce paralelizmus a výhody architektury, aby byl procesor optimálně vytíţen a kód dostatečně rychle zpracován.

Program se snaţí najít nejvhodnější přiřazení instrukcí funkčním jednotkám a sdruţuje

(31)

31

instrukce do instrukčních paketů. Existuje několik stupňů optimalizace. První dva stupně mají za úkol co nejvíce zjednodušit kód a maximálně vyuţít funkčních bloků.

Další stupně optimalizace provádějí softwarovou úpravu. Právě v těchto úrovních jsou sdruţovány instrukce do instrukčních paketů. To znamená, ţe instrukce nezávislé na sobě se provádějí současně, například čtení dat a jejich zpracování. Nejvíce se toto projeví u cyklů. Dále je vyhledáváno vhodné pořadí instrukcí, aby se mohlo provádět co nejvíce operací paralelně. Při nastavené nejvyšší optimalizační úrovně se veškeré zdrojové soubory sloţí do jediného pomocného souboru vstupujícího do procesoru optimalizace. Velkou výhodou je informovanost překladače o všech vlastnostech programu (v jaké části paměti jsou uloţené proměnné, které funkce jsou pouţívány a volány).

Linker je sestavovací program. Má za úkol spojit jiţ přeloţené moduly v asembleru do jediného spustitelného souboru ve formátu COFF. Tyto moduly jsou programy nebo části programů, které byly vytvořeny a přeloţeny samostatně.

Toto dělení programu na moduly velmi usnadňuje tvorbu programů. Na kaţdém modulu můţe pracovat jeden programátor, coţ velmi urychlí vývoj programu. Po napsání a přeloţení se moduly spojí dohromady. Výhodou těchto modulů je i to, ţe některé moduly se dají pouţít v úplně jiných aplikacích. Všechny moduly pouţívají v asembleru relativní adresy, mají definovány své symboly a sekce a pouţívají vnější odkazy na symboly jejich modulů. Linker umísťuje části jednotlivých modulů do paměti cílového zařízení, přemisťuje symboly a sekce, vytváří vazby na vnější symboly, řeší nedefinované odkazy na vnější symboly a nahrazuje relativní adresy za konečné adresy.

Archivování souborů je šikovný prostředek. Umoţňuje nám sdruţovat všechny dílčí soubory, které spolu logicky souvisí do jednoho souboru neboli knihovny.

Do jedné knihovny lze sdruţovat jakékoliv soubory (např. zdrojové soubory nebo soubory COFF). Vloţíme-li knihovnu mezi vstupní soubory překladače asembleru nebo linkeru, je moţné pouţívat v ostatních modulech jakoukoliv část v ní obsaţenou.

Velkou výhodou je spojení souvisejících částí do jednoho souboru a jeho snadná správa.

Standardní knihovna jazyka C. V jazyce C nejsou obsaţeny veškeré funkce, a přesto jsou pouţívané, např. trigonometrické funkce, vstupní a výstupní operace, dynamické obsazování paměti a jiné. Tyto funkce jsou implementovány ve standardní knihově jazyka C podle standardu ISO.

(32)

32

Převod mezi formáty binárních souborů. Pro tento převod se v CCS vyuţívá Hex Conversion Utility. CCS podporuje ASCII-HEX formát s podporou 16 bitového adresování.

Zpětný výpis symbolů ze souboru formátu COFF. Při vývoji programu je často nutné zpětně zjistit symboly, jejich definice a místa, kde se pouţívají z jiţ hotového souboru ve formátu COFF. Po odladění programu se tato volba většinou vypíná.

Výpis výsledného souboru s absolutními adresami (Absolut Lister). Je to v podstatě výpis adres v paměti uloţených symbolů.

Celý postup sestavení programu je vidět na obr.č.10.

2.5. Práce s Code Composer Studiem

Po nainstalování softwaru CCS se na disku vytvoří adresář s několika podadresáři. V těchto podadresářích jsou uloţené nápovědy, technická dokumentace o desce, příklady, výukové materiály, soubory potřebné pro podporu té dané desky, nastavení BIOSU a mnoho dalších parametrů a souborů. Dále se na ploše vytvoří asi tři ikony. První ikona je setup.exe. Po spuštění tohoto souboru se otevře okno, ve kterém zvolíme námi pouţívanou desku. Druhá ikona je Diagnostics Utility. Po spuštění této ikony je moţné zapnout test desky a to buď rychlý, nebo pomalý (podrobný).

Po dokončení testu se nám zobrazí zpráva a její vyhodnocení. Třetí ikona je spouštěcí soubor CCS. Po jeho spuštění nám naběhne základní okno studia viz obr.č.9.

Vytvoření nového projektu se dělá tímto způsobem. V horní části obrazovky se zvolí záloţka Project => New. V otevřeném dialogu Project Creation se zadává název, typ a cesta projektu. Dále se v tomto dialogu ještě nastavuje cílové zařízení, ke kterému bude program připojen. Vytvořený projekt lze uloţit přes záloţku Project=>Save. Takto uloţený projekt se uloţí s příponou *.pjt. V tomto souboru je definováno nastavení daného projektu a přidané soubory. Jiţ uloţený projekt lze otevřít přes záloţku Project=>Open. V levé části dialogu se nachází okno s názvem Project View. V tomto okně jsou stromovou strukturou znázorněny programy a všechny připojené soubory k projektu. Prvky se do projektu přidávají pomocí záloţky Project=> Add Files to Project. V dialogu Add Files to Project se vybere typ přidávaného souboru (zdrojový soubor, knihovna nebo konfigurační soubor).

(33)

33

*.c,*.cpp

*,sa

*.asm

é *.lib *.asm

*.obj

*.lib *.lib

*.out

PC

*.hex *.abs

Obr. č. 10.Blokové schéma tvorby a ladění programu v prostředí CCS Zdrojové

soubory v jazyce C

Zdrojové soubory maker

Soubor v nelineárním

asembleru Kompilátor

jazyka C

Program v Asembleru

Optimalizace překladače asembleru Archivování

souborů

Překladač asembleru Knihovna

maker

Soubory v optimalizovaném

asembleru

Strojové soubory ve formátu COFF Archivování

souborů

Standardní knihovna v jazyce C

Knihovny přeložených

souborů

Linker Strojové

soubory

Výstupní soubor Převod mezi

.hex kódy

Programátor paměti EPROM

Výpis s absolutními

adresami

Zpětný výpis symbolů

Vývojová deska

(34)

34

Chceme-li vytvořit nový soubor, postupujeme přes File=>New. V editoru se vytvoří kód a uloţí se poloţkou File Save As do adresáře projektu s patřičnou příponou.

Takto vytvořený soubor se přidá do projektu výše popsaným způsobem. Hlavičkové soubory se přidávat nemusejí. CCS je přidá automaticky při překladu. Přidané soubory lze otevřít a znovu editovat dvojklikem na daný soubor v Project View. Do projektu musí být přidán soubor *.cmd, který obsahuje konfiguraci a soubor standardní knihovny jazyka C *.lib [6].

Poloţkou Project Build Options se otevře dialog, kde lze nastavit linker a kompiler. Nastavení lze buď rovnou zapisovat, nebo zaškrtávat pomocí komponent Cheb box. Moţnosti nastavování jsou rozděleny do několika skupin podle významu.

Toto nastavení je uloţeno do souboru *.pjt a znamená, ţe při opětovném otevření projektu toto nastavení zůstane nastavené. Překlad souboru se spouští poloţkou Project build nebo build all. Toto je zdlouhavé, a proto jsou na liště umístěny speed buttony, které jsou ekvivalentní k této volbě. Při překladu se v dolní části vypisují chybové hlášky a varování. Okno s výpisem těchto chyb se nazývá build window. Po dvojitém kliknutí na zprávu o chybě se kurzor objeví na řádku s chybou. Chybu opravíme a program znovu přeloţíme.

Tento přeloţený projekt poté nahrajeme do paměti desky nebo do emulátoru.

Dělá se to přes hlavní menu poloţky file=> load program. Po nahrání programu se objeví na obrazovce okno s výpisem instrukcí asembleru. Na aktuální instrukci ukazuje zelená šipka. Program lze krokovat klasicky po krocích, vnořené funkce a cykly, nebo naopak lze nějaké části přeskočit. CCS nám umoţňuje prohlíţet a přepisovat obsah registrů a pamětí. CCS umoţňuje spoustu dalších moţností, které urychlují práci programátora, jako např. programovací jazyk GEL (General Extension Language), zásuvné moduly Plains, systém DSP BIOS a systém RTDX (Real Time Data Xchange).

(35)

35

3. Zpracování signálu

Do desky vstupuje a z desky vystupuje analogový mono nebo stereo signál.

Tento signál je upraven pomocí kodeků na digitální. V tomto starterkitu se pouţívají kodeky AIC23. Kodeky jsou sloţeny z mnoha součástek např. zesilovače, multiplexory, DA a AD převodníky, jak je vidět na obr.č.11.

Obr. č. 11. Sschéma kodeků

(36)

36

(2) (1)

3.1. Fourierovy řady a transformace

Jak bylo jiţ zmíněno, v signálových procesorech se často vyuţívá Fourierova transformace, která je vyjádřením časově závislého signálu pomocí harmonických signálů, tj. funkcí sin a cos, obecně tedy funkce komplexní exponenciály a slouţí pro převod signálů z časové oblasti do oblasti frekvenční. Převáděný signál můţe být buď ve spojité časové oblasti, nebo v diskrétní časové oblasti. Dále platí, ţe jakýkoli periodický signál lze rozloţit na jednotlivé harmonické sloţky. Druhů Fourierových řad je několik. Řady jsou popsány následujícími vztahy: trigonometrický vztah (1), polární vztah (2) a exponenciální vztah (3) [8].

Trigonometrický způsob výpočtu je nevýhodný v tom, ţe se musejí počítat tři koeficienty. Stejnosměrná sloţka je znázorněna koeficientem a0. Počet vypočítaných sloţek je v obecném tvaru nekonečný.

Polární výpočet umoţňuje spočítat jednostranné spektrum. Výpočet je však zdlouhavý, jelikoţ se zde počítají dva koeficienty, které vycházejí z koeficientů A, B.

(37)

37

(3)

(4)

(5) Exponenciální tvar Fourierových řad vede na výpočet oboustranného spektra (pro kladné i záporné frekvence). Xk je komplexní koeficient a je definován i pro záporná čísla „k“. Záporné znaménko u frekvencí znamená, ţe se jedná o tutéţ frekvenci jako s kladným znaménkem, ale s opačnou fází. Velkou výhodou tohoto tvaru je snazší výpočet.

Fourierova transformace byla zavedena na výpočet obecného neperiodického signálu. Obecná funkce má periodu rovnou nekonečnu, a proto se signál bere jako jedna perioda. Spektrum určené pomocí FT u neperiodických signálů je spojité. FT pouţitá na periodický signál vypočítá stejný výsledek jako FŘ. Zobecněný vztah Fourierovy transformace je vidět na vztahu 4.

Na diskrétní periodické signály lze aplikovat diskrétní Fourierovy řady.

Výsledné spektrum by mělo být jako u nevzorkovaných signálů. Při výpočtu DFŘ stačí spočítat pouze první polovinu N hodnot spektra. Druhá polovina hodnot jsou pouze čísla komplexně sdruţená. Výpočtem podle vztahu 5 získáme diskrétní spektrum.

(38)

38

(6) Diskrétní Fourierova transformace je popsána stejným vztahem jako diskrétní Fourierova řada (vztah 5). Vstupem této transformace je N hodnot číslicového signálu.

Většinou hodnota N odpovídá počtu hodnot jedné periody. Výstupem této transformace je N komplexních koeficientů. Při analýze neznámých signálu pomocí DFT dochází k rozmazání frekvenčního spektra. Toto se snaţíme potlačit pouţitím vhodné okénkovací metody. Tyto metody řeší problém vyříznutí vhodné části signálu.

Nejvhodnější okénkovací metodou je zřejmě Hammingovo okénko.

3.2. Rychlá Fourierova transformace FFT

FFT (Fast Fourier transform) objevili J. W. Cooley a J. W. Tukey v roce 1965.

Jedná se o metodu výpočtu Fourierovy transformace s výpočetní sloţitostí (nlog2n).

Princip tohoto urychlení spočívá v rozkladu posloupnosti na podposloupnosti s lichými a sudými prvky. Koeficienty Fourierovy transformace se vypočtou z Fourierových transformací vzniklých podposloupností. Rozklad posloupností na podposloupnosti lze provádět rekurzivně, dokud nezískáme podposloupnost obsahující pouze jeden prvek.

Koeficient Fourierovy transformace podposloupnosti je přímo tento prvek. Abychom bez problémů mohli rekurzivně rozkládat posloupnosti, je třeba, aby signál, který chceme transformovat, měl právě 2N prvků. Tato metoda je velmi rychlá přibliţně aţ 200 krát rychlejší neţ DFT.

Pro zpětný převod z frekvenční oblasti do časové se vyuţívá inverzní diskrétní Fourierova transformace (IDFT). Tato transformace je popsána vztahem 6. Vstupem do IDFT je N komplexních hodnot. Pouţijeme - li na signál DFT a poté IDFT, měli bychom dostat výsledný signál stejný jako původní signál [3].

(39)

39

3.3. Filtry FIR a IIR

FIR filtry (Finite impulse Response) jsou číslicové filtry pro zpracování libovolných digitálních signálů. Tyto filtry se realizují pomocí DSP, speciální výkonné hradlové logiky nebo přímo algoritmem v počítači. Filtrace se provádí softwarově vykonáváním programu. Tyto filtry jsou v překladu filtry s konečnou impulsní odezvou.

To znamená, ţe mají konečný počet nenulových výstupních hodnot po vybuzení filtru jednotkovým impulsem. Pomocí FIR filtrů se provádějí horní propusti, dolní propusti, pásmové propusti, pásmové zádrţe a zpoţďovače. Tyto filtry zasahují vţdy do frekvenčního i časového průběhu.

FIR filtry slouţí k úpravě frekvenčního spektra hudby, pro sníţení či eliminaci neţádoucího rušení obsaţeného například v signálech pro měření a regulaci, nebo zvýšení decimace a interpolace bez ztráty informace (tzv. perfektní rekonstrukce).

FIR filtry zastávají úlohy ve sloţitějších systémech pro zpracování signálu, jakými jsou samočinné adaptivní filtry, banky filtrů nebo algoritmy pro sníţení obsahu šumu (hluku) smíchaného například s řečí (například řeč a hluk v jedoucím automobilu).

Tyto filtry se popisují čtyřmi základními činnostmi filtru. Je to časový popis pomocí diferenční rovnice, popis pomocí impulzní odezvy, systémový popis pomocí přenosové funkce a frekvenční přenosová charakteristika.

FIR filtry jsou velmi dobrým prostředkem pro filtraci libovolných digitálních signálů v reálném čase, jakými jsou hudba, řeč, datové signály z měření a senzorů apod.

FIR filtry se vyuţívají spíše v aplikacích, kde není potřeba velmi strmých přechodů propustného a nepropustného pásma a velkého útlumu v nepropustném pásmu. Téměř pokaţdé se pouţívají ve sloţitějších systémech (banky filtrů, adaptivní filtry) z důvodu jejich implementační robustnosti a zajištěné stability. Hlavní důvody pro pouţití FIR filtrů jsou tyto: jednoduchost filtru samotného, jednoduchost návrhu filtru a jeho stabilita. Jeho nevýhodou je však pomalá strmost přechodu propustného a nepropustného pásma. Pro strmé přechody je třeba navrhovat filtry vyšších řádů.

References

Related documents

Po detailní analýze vlivu eroze a zvětrávání jsem se rozhodla prohloubit vnímání pískovce nejen na pouhé a pevné horniny, které jsou nyní přítomny ale vnímat

navržená hmota galerie je poměrně nízká, zcela nevyužitá je možnost zpřístupnit veřejnosti další úroveň městského prostoru – střechu galerie pro pobytovou terasu

Plocha náměstí je perforována venkovním amfiteátrem a světlíky – toto řešení umožňuje vnímat z veřejného prostoru dění pod úrovní terénu a vizuálně tak

Vrátím-li se zpět k netradičnímu zobrazování mapy, jako tomu bylo u výše zmíněné Katie Lewis, jsou to mapy, ve většině případů, neopakovatelné, které již není

Vodorovné konstrukce jsou tvořeny železobetonovými deskami, které jsou obousměrně pnuté a v některých místech vykonzolované.. Stropní desky jsou pro daný

Technická Univerzita v Liberci Fakulta umění a architektury vedoucí práce: Ing.. Radek

Splňuje práce požadavky na udělení odpovídajícího akademického titulu4. DP splňuje požadavky na udělení

Na tuto práci jsem navázal volnými experimenty s emulzí a snažil se vytvořit médium, ze kterého by mohl být obraz jednoduše odstraněn a snadno přenesen na