Programové vybavení pro testování AD převodníků

Rozměr: px
Začít zobrazení ze stránky:

Download "Programové vybavení pro testování AD převodníků"

Transkript

1 ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA ELEKTROTECHNICKÁ Katedra měření Programové vybavení pro testování AD převodníků Diplomová práce Obor studia: Kybernetika a měření Studijní program: Měřicí a přístrojové systémy Vedoucí práce: doc. Ing. Jaroslav Roztočil, CSc. Autor: Bc. Jakub Sára Praha 2010

2 ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA ELEKTROTECHNICKÁ Katedra měření Čestné prohlášení autora práce Prohlašuji, že jsem předloženou práci vypracoval samostatně a že jsem uvedl veškeré použité informační zdroje v souladu s Metodickým pokynem o dodržování etických principů při přípravě vysokoškolských závěrečných prací. V Praze dne Podpis autora práce Praha 2010

3

4 ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA ELEKTROTECHNICKÁ Katedra měření Poděkování Tímto bych rád poděkoval vedoucímu mé diplomové práce panu doc. Ing. Jaroslavu Roztočilovi, CSc. za cenné rady, odborné vedení a věcné připomínky k této diplomové práci. Děkuji panům z katedry měření Ing. Davidu Slepičkovi, Ph.D. za uvedení do problematiky testování AD převodníků a za odborné rady při vytváření tohoto softwaru a doc. Ing. Miloši Sedláčkovi, CSc. za odbornou konzultaci a poskytnutí aplikace pro návrh kosinových oken. Dále bych rád poděkoval společnosti STMicroelectronics za spolupráci s katedrou měření a zadávání projektů z praxe pro studenty. Z této firmy děkuji pánům Ing. Milanovi Andrlemu, Ph.D. a Ing. Ivanu Doušovi za odborné konzultace, cenné rady a připomínky při vytváření softwaru pro testování AD převodníků. Děkuji také rodičům za podporu během studia. Praha 2010

5 ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA ELEKTROTECHNICKÁ Katedra měření Abstrakt Cílem této diplomové práce je naprogramovat software, knihovnu funkcí v jazyce ANSI C, pro testování analogově číslicových (AD) převodníků. Při testování jsou stanoveny statické a dynamické parametry AD převodníků. Abstract The goal of this diploma thesis is to develop software library of functions for analog to digital converters (ADC). Software is written in ANSI C programming language. There are determined both static and dynamic parameters in ADC testing. Zusammenfassung Das Ziel dieser Diplomarbeit ist die Gestaltung einiger Software Funktionsbibliothek die Analog- Digital Umsetzer (ADU) zu testen. Die Software ist in der ANSI C Programmiersprache geschrieben. Bei dem ADU Test sind statische und dynamische Parameter festgestellt. Praha 2010

6 Obsah Obsah 1. Úvod Statické parametry AD převodníků Chyba nuly (offset) Definice Hlavička, parametry, podmínky Popis algoritmu Příklad funkce v C Příklad funkce v konzolové aplikaci Korekce chyby nuly Definice Hlavička, parametry, podmínky Popis algoritmu Příklad funkce v C Příklad funkce v konzolové aplikaci Chyba zesílení Definice Hlavička, parametry, podmínky Popis algoritmu Příklad funkce v C Příklad funkce v konzolové aplikaci Korekce chyby zesílení Definice Hlavička, parametry, podmínky Popis algoritmu Příklad funkce v C Příklad funkce v konzolové aplikaci Diferenciální nelinearita Definice Hlavička, parametry, podmínky Popis algoritmu Příklad funkce v C

7 Obsah Příklad funkce v konzolové aplikaci Integrální nelinearita (výpočet z DNL) Definice Hlavička, parametry, podmínky Popis algoritmu Příklad funkce v C Příklad funkce v konzolové aplikaci Integrální nelinearita 2 (výpočet ze středu kódového slova) Definice Hlavička, parametry, podmínky Popis algoritmu Příklad funkce v C Příklad funkce v konzolové aplikaci DNL a INL z histogramu Definice Hlavička, parametry, podmínky Popis algoritmu Příklad funkce v C Příklad funkce v konzolové aplikaci Test monotónnosti Definice Hlavička, parametry, podmínky Popis algoritmu Příklad funkce v C Příklad funkce v konzolové aplikaci Doplňující funkce statické parametry, vstup/výstup Řazení polí Uin a ADcode Hlavička, parametry Popis algoritmu Příklad funkce v C Vstupy/výstupy z/do csv souboru Hlavička, parametry Příklad funkce v C

8 Obsah 3.3. Kvantizátor s definovatelnými statickými parametry Hlavička, parametry Popis algoritmu Příklad funkce v C Generátor vzorků vstupních napětí průběh rampa Příklad funkce v konzolové aplikaci Testování ve frekvenční oblasti Diskrétní Fourierova transformace DFT Normalizované DFT spektrum Hlavička, parametry DFT funkce Popis algoritmu DFT funkce Okénkování Hlavička, parametry Popis algoritmu Určení pozice a efektivní hodnoty harmonických složek v DFT spektru Hlavička, parametry Popis algoritmu Dynamické parametry AD převodníků Šumový práh NFL Definice Hlavička, parametry funkce Popis algoritmu Příklad funkce v C Příklad funkce v konzolové aplikaci Celkové harmonické zkreslení THD Definice Hlavička, parametry funkce Popis algoritmu Příklad funkce v C Příklad funkce v konzolové aplikaci Poměr signálu k falešné složce SFDR Definice Hlavička, parametry funkce

9 Obsah Popis algoritmu Příklad funkce v C Příklad funkce v konzolové aplikaci Poměr signálu k šumu SNHR Definice Hlavička, parametry funkce Popis algoritmu Příklad funkce v C Příklad funkce v konzolové aplikaci Poměr signálu k šumu a zkreslení SINAD a efektivní počet bitů ENOB Definice Hlavička, parametry funkce Popis algoritmu Příklad funkce v C Příklad funkce v konzolové aplikaci Naměřené výsledky Statické parametry AD převodníku Dynamické parametry AD převodníku Závěr

10 1 Úvod 1. Úvod Analogově-číslicové (AD) převodníky hrají důležitou roli nejen v elektrotechnickém průmyslu. AD převodníky slouží pro převod analogových signálů do digitální podoby, aby bylo možné tyto signály zpracovat číslicovou technikou. AD převodníky jsou používány v nejrůznějších aplikacích jako např.: měřící technika, telekomunikace, spotřební audio-video technika atd. Pro široké nasazení AD převodníků jsou na ně kladeny různé požadavky. Cílem této diplomové práce je vytvoření programového vybavení pro testování AD převodníků. Přehled důležitých parametrů AD převodníků podle aplikace je shrnut v následující tabulce [2]: Aplikace použití Kritické parametry Požadavky na AD převodníky Automatizace, DNL, INL, monotónnost, Lineární přenosová funkce. senzory doba ustálení, Tepelná stabilita. Číslicové osciloskopy dlouhodobá stabilita SINAD, ENOB, NFL, šířka pásma, rychlá obnova ze saturace Plné využití rozsahu (fullscale). SINAD pro široké pásmo. Nízký tepelný šum. Geofyzika THD, SINAD dlouhodobá stabilita Odezva na velmi nízké frekvence (mhz). Radary a sonary SINAD, IMD, ENOB, SFDR, rychlá obnova ze saturace SINAD a IMD kvůli detekci Dopplerova jevu. Spektrální analyzátory SINAD, ENOB, SFDR SINAD a SFDR pro dynamický rozsah. Linearita v širokém pásmu. Širokopásmové přijímače SFDR, IMD, SINAD Linearita v dynamickém pásmu pro detekci velmi slabých signálů v zarušeném prostředí. Rychlé vzorkování. Telekomunikace SINAD, NFL, SFDR, IMD, kódová chybovost Mezikanálový přeslech. Nízká spotřeba energie. Video DNL, SINAD, SFDR Chyba zesílení, chyba fáze. Zpracování obrazu DNL, INL, SINAD, ENOB, rychlá obnova ze saturace DNL pro detekci hran. Rychlá obnova proti rozkvětu (blooming). Zpracování zvuku SINAD, THD Nízká spotřeba energie. Plné využití rozsahu (fullscale). Tabulka 1 Kritické parametry AD převodníků [2] kde DNL je diferenciální nelinearita INL je integrální nelinearita SINAD je poměr signálu k šumu a harmonickému zkreslení ENOB je efektivní počet bitů (efektivní rozlišitelnost) NFL je šumový práh THD je celkové harmonické zkreslení IMD je intermodulační zkreslení SFDR je poměr signálu k falešné složce Práce je rozdělena na stanovení statických a dynamických parametrů. Každý parametr je definován, názorně vysvětlen na příkladech a implementován do funkce v programovém jazyce ANSI C. Ke každé 5

11 1 Úvod funkci, stanovující požadovaný parametr, je ukázán příklad jejího použití v jednoduchém C programu a příklad použití v konzolové aplikaci. Statické parametry popisují chování AD převodníků při převodu stejnosměrných signálů a určují jejich chybu nuly (offset), chybu zesílení, nelinearitu převodní charakteristiky diferenciální a integrální nelinearita) a monotónnost převodní charakteristiky. Toto jsou důležité parametry např. pro aplikace zpracování obrazů nebo v automatizaci při zpracování signálů z různých senzorů. Statické parametry jsou testovány při vstupním stejnosměrném signálu typu rampa, který využívá celý rozsah AD převodníku. Dynamické parametry určují šumové vlastnosti AD převodníků a jejich zkreslení ve frekvenční oblasti. Z celkového šumu a zkreslení je také určena efektivní rozlišitelnost převodníků počet bitů. Tyto parametry jsou důležité např. při zpracování zvuku. Tato práce se zabývá stanovením dynamických parametrů při vstupním sinusovém signálu. Ke knihovnám, obsahující funkce pro testování AD převodníků, je také vytvořena konzolová aplikace. Tato aplikace umožňuje jednoduše stanovit z naměřených dat všechny parametry AD převodníku uvedené v této práci. 6

12 2 Statické parametry AD převodníků 2. Statické parametry AD převodníků V této kapitole budou definovány základní statické parametry AD převodníků [16], které obsahuje knihovna funkcí adstatic: - chyba nuly a její korekce - chyba zesílení a její korekce - diferenciální nelinearita - integrální nelinearita (výpočet z diferenciální nelinearity) - integrální nelinearita 2 (výpočet ze středů kódových slov) - histogram kódových slov a z něho statistické určení diferenciální a integrální nelinearity - test monotónnosti Každá definice funkce je vysvětlena na konkrétním příkladě. Poté je ukázána hlavička funkce v C knihovně a příklad použití v kódu. Uvedeno je také použití funkce v konzolové aplikaci Chyba nuly (offset) Chyba nuly AD převodníku určuje citlivost první přechodové kódové úrovně na vstupní napětí Definice Chyba nuly je rozdíl první přechodové úrovně od ideální. První přechodová úroveň je přechod výstupního kódového slova AD převodníku z na Ideální poloha první přechodové úrovně je při vstupním napětí AD převodníku přesně 1 LSB (GND + LSB). Příklad: Chyba nuly je ukázána na následujícím příkladu (Obrázek 1) černý průběh (3 bitový AD převodník; referenční napětí UREF = 8 V; chyba nuly = 0,5 LSB; chyba zesílení = 3 LSB; DNL = [x; 0; 0,6; 1,6; 1; 0; 0; x] LSB; INL = [x; 0; 0,6; 1; 0; 0; 0; x] LSB): Obrázek 1 Příklad chyby nuly kde ADcode je výstup AD převodníku kódové slovo Uin je vstupní napětí AD převodníku ideal je průběh ideálního AD převodníku zelený průběh je chyba nuly ve Voltech rozdíl polohy první přechodové úrovně oproti ideální U ze 7

13 2.1 Chyba nuly (offset) Chyba nuly je však udávána v LSB proto je nutno vydělit šířkou LSB: Rovnice 1 Výpočet chyby nuly kde zeroerr je chyba nuly v LSB U LSB je šířka LSB ve Voltech U ref je referenční napětí AD převodníku bits je počet bitů AD převodníku Hlavička, parametry, podmínky Hlavička funkce pro stanovení chyby nuly AD převodníku: int zeroerror(unsigned char bits, double Uref, double * Uin, unsigned long * ADcode, unsigned long length, double * zeroerr); Blokové schéma funkce chyby nuly pro znázornění vstupních a výstupních parametrů funkce: Obrázek 2 Blok funkce chyby nuly Vstupní parametry: bits počet bitů AD převodníku Uref referenční napětí AD převodníku [V] Uin pole vstupních napětí AD převodníku ADcode pole výstupních kódových slov AD převodníku, odpovídající nastavenému napětí Uin length délka polí Uin a ADcode Výstupní parametry: zeroerr chyba nuly AD převodníku [LSB] Výsledek funkce: 0 výpočet proběhl v pořádku 1 chyba ve vstupních parametrech 2 nenalezeno první kódové slovo (ADcode = ) 8

14 2.1 Chyba nuly (offset) Podmínky funkce: Pole Uin a ADcode musí být seřazeny dle kapitoly Popis algoritmu Pro stanovení chyby nuly se musí najít první přechodová úroveň AD převodníku. Protože ADcode musí být seřazené, je použito vyhledávání ADcode 1 od začátku pole. Po nalezení první přechodové úrovně je stanoven rozdíl od ideální polohy první přechodové úrovně (1 LSB) a tento rozdíl je vydělen šířkou LSB ve Voltech, aby byl výsledek v LSB (viz 2.1.1) Příklad funkce v C Použití funkce chyby nuly je v následujícím příkladu: #include "adstatic.h" int main() { unsigned char bits = 3; double Uref = 8; double Uin[8] = {0, 1.5, 2, 2.2, 3.5, 4, 4.5, 5}; unsigned long ADcode[8] = {0, 1, 2, 3, 5, 6, 7, 7}; unsigned long length = 8; double zeroerr; adstaticsort(bits,uin,adcode,length); zeroerror(bits, Uref, Uin, ADcode, length, &zeroerr); printf("zero error of this ADC is %f LSB.", zeroerr); } return (0); Vstupní proměnné jsou naplněny daty z příkladu AD převodníku (viz 2.1.1). Pro jednoduchost a názornost je průběh vzorkován nepravidelně jen v přechodových úrovních, v praxi je nastavováno vstupní napětí ADC po pevném kroku. Funkce adstaticsort() seřadí pole Uin a ADcode dle podmínky (viz 2.1.2). (pro úplnost v tomto případě není řazení nutné, vstupní hodnoty jsou zadány seřazeně dle požadavku). Funkce zeroerror() vypočte chybu nuly a uloží do proměnné zeroerr. Nakonec je vypsán výsledek. Výsledek: Zero error of this ADC is 0, LSB. Pozn. Pro jednoduchost nejsou v tomto příkladě testovány funkce adstaticsort() a zeroerror() na výsledek. V praktickém použití je doporučeno testovat funkce na nulovost (viz 2.1.2), jen tehdy je zaručeno, že funkce proběhla v pořádku Příklad funkce v konzolové aplikaci Parametr z určuje funkci aplikace pro výpočet chyby nuly. Data AD převodníku jsou uloženy v souboru ADC_test.csv (první sloupec Uin, druhý ADcode), bits = 3; Uref = 8 V. 9

15 2.1 Chyba nuly (offset) adstatic.exe z ADC_test.csv 3 8 adstatic.exe z ADC_test.csv 3 8 file zeroerr.csv V prvním příkladě bude výsledek vypsán na obrazovku, ve druhém uložen do souboru zeroerr.csv. Pro zobrazení nápovědy v konzole je potřeba spustit program bez parametrů nebo s parametrem?. adstatic.exe -? 2.2. Korekce chyby nuly Korekce chyby nuly je nutná pro stanovení dalších statických parametrů. Z definice korekci chyby nuly požadují funkce pro výpočet chyby zesílení, diferenciální a integrální nelinearity Definice Korekce chyby nuly přesune závislost AD převodníku o konstantu (hodnota chyby nuly), tak aby byla první přechodová úroveň na místě ideální úrovně. První přechodová úroveň je přechod výstupního kódového slova AD převodníku z na Ideální poloha první přechodové úrovně je při vstupním napětí AD převodníku přesně 1 LSB (GND + LSB). Příklad: Korekce chyby nuly (zero error correction) je ukázána na následujícím příkladu Obrázek 3 černý, čárkovaný průběh (3 bitový AD převodník; referenční napětí UREF = 8 V; chyba nuly = 0,5 LSB; chyba zesílení = 3 LSB; DNL = [x; 0; 0,6; 1,6; 1; 0; 0; x] LSB; INL = [x; 0; 0,6; 1; 0; 0; 0; x] LSB), černý, silný průběh je po korekci chyby nuly, červené šipky znázorňují posun průběhu o hodnotu chyby nuly ve Voltech: Obrázek 3 Příklad korekce chyby nuly kde ADcode je výstup AD převodníku kódové slovo Uin je vstupní napětí AD převodníku ideal je průběh ideálního AD převodníku zelený průběh Hlavička, parametry, podmínky Hlavička funkce pro korekci chyby nuly AD převodníku: int zerocorrection(unsigned char bits, double Uref, double zeroerr, unsigned long length, double * Uin); 10

16 2.2 Korekce chyby nuly Blokové schéma funkce korekce chyby nuly pro znázornění vstupních a výstupních parametrů funkce: Obrázek 4 Blok funkce korekce chyby nuly Vstupní parametry: bits počet bitů AD převodníku Uref referenční napětí AD převodníku [V] length délka polí Uin a ADcode zeroerr chyba nuly AD převodníku [LSB], stanovená např. funkcí zeroerror() (viz 2.1) Vstupně/Výstupní parametry: Uin pole vstupních napětí AD převodníku, toto pole je upraveno korekcí! Výsledek funkce: 0 korekce proběhla v pořádku 1 chyba ve vstupních parametrech Podmínky funkce: N/A Popis algoritmu Nejdříve je chyba nuly v LSB převedena na Volty. Tím je získána korekční konstanta, o kterou je korigováno vstupní napětí pole Uin: Rovnice 2 Korekce chyby nuly kde Uin zc je pole vstupních napětí AD převodníku po korekci chyby nuly Uin je pole vstupních napětí AD převodníku i je index polí Uin a Uin zc, i ϵ <0; length) zeroerr je chyba nuly AD převodníku v LSB U LSB je šířka LSB ve Voltech U ref je referenční napětí AD převodníku bits je počet bitů AD převodníku 11

17 2.2 Korekce chyby nuly Příklad funkce v C Použití funkce korekce chyby nuly je v následujícím příkladu: #include "adstatic.h" int main() { unsigned char bits = 3; double Uref = 8; double Uin[8] = {0, 1.5, 2, 2.2, 3.5, 4, 4.5, 5}; unsigned long ADcode[8] = {0, 1, 2, 3, 5, 6, 7, 7}; unsigned long length = 8; double zeroerr; adstaticsort(bits,uin,adcode,length); zeroerror(bits, Uref, Uin, ADcode, length, &zeroerr); printf("zero error of this ADC is %f LSB.\n", zeroerr); zerocorrection(bits, Uref, zeroerr, length, Uin); zeroerror(bits, Uref, Uin, ADcode, length, &zeroerr); printf("zero error after correction is %f LSB.\n", zeroerr); return (0); } Vstupní proměnné jsou naplněny daty z příkladu AD převodníku (viz 2.2.1). Pro jednoduchost a názornost je průběh vzorkován nepravidelně jen v přechodových úrovních, v praxi je nastavováno vstupní napětí ADC po pevném kroku. Funkce adstaticsort() seřadí pole Uin a ADcode dle podmínky (viz 2.2.2). (pro úplnost v tomto případě není řazení nutné, vstupní hodnoty jsou zadány seřazeně dle požadavku). Funkce zeroerror() vypočte chybu nuly a uloží do proměnné zeroerr, ta slouží jako vstupní parametr pro funkci zerocorrection() a je provedena korekce. Pro kontrolu je funkcí zeroerror() stanovena znovu chyba nuly. Výsledek: Zero error of this ADC is 0, LSB. Zero error after correction is 0, LSB. Pozn. Pro jednoduchost nejsou v tomto příkladě testovány funkce adstaticsort(), zeroerror() a zerocorrection() na výsledek. V praktickém použití je doporučeno testovat funkce na nulovost (viz 2.1.2, 2.2.2), jen tehdy je zaručeno, že funkce proběhly v pořádku Příklad funkce v konzolové aplikaci Parametr zc určuje funkci aplikace pro korekci chyby nuly. Aplikace si stanoví chyby nuly a poté provede korekci. Data AD převodníku jsou uloženy v souboru ADC_test.csv (první sloupec Uin, druhý ADcode), bits = 3; Uref = 8 V. adstatic.exe zc ADC_test.csv 3 8 adstatic.exe zc ADC_test.csv 3 8 file ADC_zc.csv 12

18 2.2 Korekce chyby nuly V prvním příkladě bude korigované pole Uin vypsané na obrazovku, ve druhém bude korigovaný průběh Uin včetně ADcode uložen do souboru ADC_zc.csv (první sloupec korigované Uin, druhý ADcode). Pro zobrazení nápovědy v konzole je potřeba spustit program bez parametrů nebo s parametrem?. adstatic.exe -? 2.3. Chyba zesílení Chyba zesílení AD převodníků určuje rozdíl směrnice zesílení výstupního průběhu od ideální Definice Chyba zesílení je rozdíl poslední přechodové úrovně od ideální po korekci chyby nuly! Poslední přechodová úroveň je přechod výstupního z předposledního kódového slova AD převodníku na poslední, tj. z na Ideální poloha poslední přechodové úrovně je při referenčním vstupním napětí AD převodníku 1 LSB (Uref 1 LSB). Příklad: Chyba zesílení je ukázána na následujícím příkladu Obrázek 5 černý průběh po korekci chyby nuly (3 bitový AD převodník; referenční napětí UREF = 8 V; chyba nuly = 0 LSB (korigována); chyba zesílení = 3 LSB; DNL = [x; 0; 0,6; 1,6; 1; 0; 0; x] LSB; INL = [x; 0; 0,6; 1; 0; 0; 0; x] LSB): Obrázek 5 Příklad chyby zesílení kde ADcode je výstup AD převodníku kódové slovo Uin je vstupní napětí AD převodníku ideal je průběh ideálního AD převodníku zelený průběh U ge je chyba zesílení ve Voltech rozdíl polohy poslední přechodové úrovně oproti ideální Chyba zesílení je však udávána v LSB proto je nutno vydělit šířkou LSB: Rovnice 3 Výpočet chyby zesílení 13

19 2.3 Chyba zesílení kde gainerr je chyba zesílení v LSB U LSB je šířka LSB ve Voltech U ref je referenční napětí AD převodníku bits je počet bitů AD převodníku Hlavička, parametry, podmínky Hlavička funkce pro stanovení chyby zesílení AD převodníku: int gainerror(unsigned char bits, double Uref, double * Uin, unsigned long * ADcode, unsigned long length, double * gainerr); Blokové schéma funkce chyby zesílení pro znázornění vstupních a výstupních parametrů funkce: Obrázek 6 Blok funkce chyby zesílení Vstupní parametry: bits počet bitů AD převodníku Uref referenční napětí AD převodníku [V] Uin pole vstupních napětí AD převodníku (po korekci chyby nuly) ADcode pole výstupních kódových slov AD převodníku, odpovídající nastavenému napětí Uin length délka polí Uin a ADcode Výstupní parametry: gainerr chyba zesílení AD převodníku [LSB] Výsledek funkce: 0 výpočet proběhl v pořádku 1 chyba ve vstupních parametrech 2 nenalezeno předposlední kódové slovo (ADcode = ) Podmínky funkce: Pole Uin a ADcode musí být seřazeny dle kapitoly Popis algoritmu Pro stanovení chyby zesílení se musí najít poslední přechodová úroveň AD převodníku. Protože ADcode musí být seřazené, je použito vyhledávání od konce pole. Hledá se výskyt předposlední kódové úroveň ADcode Po nalezení prvního výskytu předposlední úrovně je zřejmé, že na 14

20 2.3 Chyba zesílení následujícím indexu pole Uin je poslední přechodová úroveň. Z ní je stanoven rozdíl od ideální polohy poslední přechodové úrovně (Uref 1 LSB) a tento rozdíl je vydělen šířkou LSB ve Voltech, aby byl výsledek v LSB (viz 2.3.1) Příklad funkce v C Použití funkce chyby zesílení je v následujícím příkladu: #include "adstatic.h" int main() { unsigned char bits = 3; double Uref = 8; double Uin[8] = {0, 1.5, 2, 2.2, 3.5, 4, 4.5, 5}; unsigned long ADcode[8] = {0, 1, 2, 3, 5, 6, 7, 7}; unsigned long length = 8; double zeroerr; double gainerr; adstaticsort(bits,uin,adcode,length); zeroerror(bits, Uref, Uin, ADcode, length, &zeroerr); zerocorrection(bits, Uref, zeroerr, length, Uin); gainerror(bits, Uref, Uin, ADcode, length, &gainerr); printf("gain error of this ADC is %f LSB.\n", gainerr); } return (0); Vstupní proměnné jsou naplněny daty z příkladu AD převodníku (viz 2.3.1). Pro jednoduchost a názornost je průběh vzorkován nepravidelně jen v přechodových úrovních, v praxi je nastavováno vstupní napětí ADC po pevném kroku. Funkce adstaticsort() seřadí pole Uin a ADcode dle podmínky (viz 2.3.2). (pro úplnost v tomto případě není řazení nutné, vstupní hodnoty jsou zadány seřazeně dle požadavku). Funkce zeroerror() vypočte chybu nuly a uloží do proměnné zeroerr, ta slouží jako vstupní parametr pro funkci zerocorrection() a je provedena korekce chyby nuly, která je požadována pro stanovení chyby zesílení. Funkce gainerror () vypočte chybu zesílení a uloží do proměnné gainerr. Nakonec je vypsán výsledek. Výsledek: Gain error of this ADC is -3, LSB. Pozn. Pro jednoduchost nejsou v tomto příkladě testovány funkce adstaticsort(), zeroerror(), zerocorrection() a gainerror() na výsledek. V praktickém použití je doporučeno testovat funkce na nulovost (viz 2.3.2), jen tehdy je zaručeno, že funkce proběhly v pořádku. 15

21 2.3 Chyba zesílení Příklad funkce v konzolové aplikaci Parametr g určuje funkci aplikace pro výpočet chyby zesílení. Aplikace si sama z průběhu určí chybu nuly a provede požadovanou korekci. Data AD převodníku jsou uloženy v souboru ADC_test.csv (první sloupec Uin, druhý ADcode), bits = 3; Uref = 8 V. adstatic.exe g ADC_test.csv 3 8 adstatic.exe g ADC_test.csv 3 8 file gainerr.csv V prvním příkladě bude výsledek vypsán na obrazovku, ve druhém uložen do souboru zeroerr.csv. Pro zobrazení nápovědy v konzole je potřeba spustit program bez parametrů nebo s parametrem?. adstatic.exe -? 2.4. Korekce chyby zesílení Korekce chyby zesílení je nutná pro stanovení dalších statických parametrů. Z definice korekci chyby zesílení požadují funkce pro výpočet diferenciální a integrální nelinearity Definice Korekce chyby zesílení koriguje směrnici závislosti AD převodníku na vstupním napětí, tak aby první přechodová úroveň zůstala na ideální úrovni (po korekci chyby nuly viz 2.2) a poslední přechodová úroveň byla posunuta na polohu ideální poslední přechodové úrovně. První přechodová úroveň je přechod výstupního kódového slova AD převodníku z na Ideální poloha první přechodové úrovně je při vstupním napětí AD převodníku přesně 1 LSB (GND + LSB). Poslední přechodová úroveň je přechod výstupního z předposledního kódového slova AD převodníku na poslední, tj. z na Ideální poloha poslední přechodové úrovně je při referenčním vstupním napětí AD převodníku 1 LSB (Uref 1 LSB). Příklad: Korekce chyby zesílení (gain error correction) je ukázána na následujícím příkladu Obrázek 7 černý, čárkovaný průběh po korekci chyby nuly (3 bitový AD převodník; referenční napětí UREF = 8 V; chyba nuly = 0 LSB (po korekci); chyba zesílení = 3 LSB; DNL = [x; 0; 0,6; 1,6; 1; 0; 0; x] LSB; INL = [x; 0; 0,6; 1; 0; 0; 0; x] LSB), černý, silný průběh je po korekci chyby zesílení, červené šipky a červená výseč znázorňují změnu směrnice zesílení průběhu: Obrázek 7 Příklad korekce chyby zesílení 16

22 2.4 Korekce chyby zesílení kde ADcode je výstup AD převodníku kódové slovo Uin je vstupní napětí AD převodníku ideal je průběh ideálního AD převodníku zelený průběh k je směrnice zesílení průběhu AD převodníku z příkladu je směrnice zesílení ideálního (zeleného) průběhu k ideal Důležité: směrnice zesílení mají počátek na první přechodové úrovni, to je proto, že po korekci chyby zesílení nesmí být ovlivněna chyba nuly Hlavička, parametry, podmínky Hlavička funkce pro korekci chyby zesílení AD převodníku: int gaincorrection(unsigned char bits, double Uref, double gainerr, unsigned long length, double * Uin); Blokové schéma funkce korekce chyby zesílení pro znázornění vstupních a výstupních parametrů funkce: Obrázek 8 Blok funkce korekce chyby zesílení Vstupní parametry: bits počet bitů AD převodníku Uref referenční napětí AD převodníku [V] length délka polí Uin a ADcode gainerr chyba zesílení AD převodníku [LSB], stanovená např. funkcí gainerror() (viz 2.3) Vstupně/Výstupní parametry: Uin pole vstupních napětí AD převodníku, toto pole je upraveno korekcí! Výsledek funkce: 0 korekce proběhla v pořádku 1 chyba ve vstupních parametrech Podmínky funkce: N/A 17

23 2.4 Korekce chyby zesílení Popis algoritmu Chyba zesílení je lineárně dělena na podíly dle následujícího vztahu tak, aby poslední přechodová úroveň byla korigována o celou hodnotu chyby zesílení a první přechodová úroveň (U LSB ) korigována nebyla (pozn. hodnoty Uin před první přechodovou úrovní jsou touto korekcí ovlivněny): Rovnice 4 Korekce chyby zesílení kde Uin gc je pole vstupních napětí AD převodníku po korekci chyby zesílení Uin je pole vstupních napětí AD převodníku i je index polí Uin a Uin gc, i ϵ <0; length) gainerr je chyba zesílení AD převodníku v LSB U LSB je šířka LSB ve Voltech U ref je referenční napětí AD převodníku bits je počet bitů AD převodníku Příklad funkce v C Použití funkce korekce chyby zesílení je v následujícím příkladu: #include "adstatic.h" int main() { unsigned char bits = 3; double Uref = 8; double Uin[8] = {0, 1.5, 2, 2.2, 3.5, 4, 4.5, 5}; unsigned long ADcode[8] = {0, 1, 2, 3, 5, 6, 7, 7}; unsigned long length = 8; double zeroerr; double gainerr; adstaticsort(bits,uin,adcode,length); zeroerror(bits, Uref, Uin, ADcode, length, &zeroerr); zerocorrection(bits, Uref, zeroerr, length, Uin); gainerror(bits, Uref, Uin, ADcode, length, &gainerr); printf("gain error of this ADC is %f LSB.\n", gainerr); gaincorrection(bits, Uref, gainerr, length, Uin); gainerror(bits, Uref, Uin, ADcode, length, &gainerr); printf("gain error after correction is %f LSB.\n", gainerr); return (0); } Vstupní proměnné jsou naplněny daty z příkladu AD převodníku (viz 2.4.1). Pro jednoduchost a názornost je průběh vzorkován nepravidelně jen v přechodových úrovních, v praxi je nastavováno vstupní napětí ADC po pevném kroku. Funkce adstaticsort() seřadí pole Uin a ADcode dle podmínky (viz 2.4.2) (pro úplnost v tomto případě není řazení nutné, vstupní hodnoty jsou zadány seřazeně 18

24 2.4 Korekce chyby zesílení dle požadavku). Funkce zeroerror() vypočte chybu nuly a uloží do proměnné zeroerr, ta slouží jako vstupní parametr pro funkci zerocorrection() a je provedena korekce. Po korekci chyby nuly je vypočtena funkcí gainerror() chyba zesílení a vypsána. Ta je poté použita jako vstupní parametr u funkce gaincorrection(). Po korekci chyby zesílení je pro kontrolu je funkcí gainerror() stanovena znovu chyba zesílení a je vypsána. Výsledek: Gain error of this ADC is -3, LSB. Gain error after correction is 0, LSB. Pozn. Pro jednoduchost nejsou v tomto příkladě testovány funkce adstaticsort(), zeroerror(), zerocorrection(), gainerror() a gaincorrection() na výsledek. V praktickém použití je doporučeno testovat funkce na nulovost (viz 2.1.2, 2.2.2, 2.3.2, 2.4.2), jen tehdy je zaručeno, že funkce proběhly v pořádku Příklad funkce v konzolové aplikaci Parametr c určuje funkci aplikace pro korekci obou chyb (nuly i zesílení). Aplikace si stanoví chybu nuly a provede její korekci. Poté je vypočtena chyba zesílení a provedena korekce chyby zesílení. Data AD převodníku jsou uloženy v souboru ADC_test.csv (první sloupec Uin, druhý ADcode), bits = 3; Uref = 8 V. adstatic.exe c ADC_test.csv 3 8 adstatic.exe c ADC_test.csv 3 8 file ADC_c.csv V prvním příkladě bude korigované pole Uin vypsané na obrazovku, ve druhém bude korigovaný průběh Uin včetně ADcode uložen do souboru ADC_c.csv (první sloupec korigované Uin, druhý ADcode). Pro zobrazení nápovědy v konzole je potřeba spustit program bez parametrů nebo s parametrem?. adstatic.exe -? 2.5. Diferenciální nelinearita Diferenciální nelinearita AD převodníků (DNL) zkoumá napěťovou šířku jednotlivých kódových úrovní a chybějící kódová slova Definice Diferenciální nelinearita je rozdíl šířky kódového slovo oproti šířce ideálního kódového slova v LSB. Šířka kódového slova se určuje rozdílem minimálního a maximálního vstupního napětí, kdy AD převodník generuje toto kódové slovo na výstup. Ideální šířka kódového slova je 1 LSB. Diferenciální nelinearita není definovaná pro první a poslední kódové slovo ( a )! Pokud k-té kódové slovo chybí potom je šířka kódového slova nula a DNL[k] = 1 LSB. Pro stanovení diferenciální nelinearity je nutno provést korekci chyby nuly a chyby zesílení. Příklad: Diferenciální nelinearita je ukázána na následujícím příkladu Obrázek 9 černý průběh po korekci chyby nuly a chyby zesílení (3 bitový AD převodník; referenční napětí UREF = 8 V; chyba nuly = 0 LSB 19

25 2.5 Diferenciální nelinearita (korigováno); chyba zesílení = 0 LSB (korigováno); DNL = [x; 0; 0,6; 1,6; 1; 0; 0; x] LSB; INL = [x; 0; 0,6; 1; 0; 0; 0; x] LSB): Obrázek 9 Příklad diferenciální nelinearity kde ADcode je výstup AD převodníku kódové slovo Uin je vstupní napětí AD převodníku ideal je průběh ideálního AD převodníku zelený průběh je šířka k-tého kódového slova ve Voltech U DNL[k] Diferenciální nelinearita je udávána jako rozdíl oproti šířce ideálního slova v LSB: Rovnice 5 Výpočet diferenciální nelinearity kde DNL[k] je diferenciální nelinearita k-tého kódového slova v LSB U DNL[k] je šířka k-tého kódového slova ve Voltech U LSB je šířka LSB ve Voltech U ref je referenční napětí AD převodníku bits je počet bitů AD převodníku Hlavička, parametry, podmínky Hlavička funkce pro stanovení diferenciální nelinearity AD převodníku: int difnonlin(unsigned char bits, double Uref, double * Uin, unsigned long * ADcode, unsigned long length, unsigned long ** ADcode_s, double ** DNL); 20

26 2.5 Diferenciální nelinearita Blokové schéma funkce diferenciální nelinearity pro znázornění vstupních a výstupních parametrů funkce: Obrázek 10 Blok funkce diferenciální nelinearity Vstupní parametry: bits počet bitů AD převodníku Uref referenční napětí AD převodníku [V] Uin pole vstupních napětí AD převodníku (po korekci chyby nuly a chyby zesílení) ADcode pole výstupních kódových slov AD převodníku, odpovídající nastavenému napětí Uin length délka polí Uin a ADcode Výstupní parametry: ADcode_s pole kódových slov, které odpovídají poli DNL, délka tohoto pole je 2 bits DNL pole diferenciální nelinearity, délka tohoto pole je 2 bits Výsledek funkce: 0 výpočet proběhl v pořádku 1 chyba ve vstupních parametrech Podmínky funkce: Pole Uin a ADcode musí být seřazeny dle kapitoly 3.1. Výsledek DNL prvního a posledního kódového slova je vždy 0 LSB (DNL[0] = DNL[2 bits 1] = 0 LSB) Popis algoritmu Předpokládá se seřazené pole Uin a ADcode pro každé kódové slovo (viz 3.1). Algoritmus, v cyklu přes každé ADcode, hledá poslední výskyt aktuálního kódového slova. Tímto se zjistí konec a počátek (z předchozího cyklu) každého kódového slova. Z počátku a konce se vypočte délka kódového slova ve Voltech a stanoví se diferenciální nelinearita jako rozdíl oproti ideální délce kódového slova v LSB Příklad funkce v C Použití funkce diferenciální nelinearity je v následujícím příkladu: #include "adstatic.h" int main() { unsigned char bits = 3; 21

27 2.5 Diferenciální nelinearita double Uref = 8; double Uin[8] = {0, 1.5, 2, 2.2, 3.5, 4, 4.5, 5}; unsigned long ADcode[8] = {0, 1, 2, 3, 5, 6, 7, 7}; unsigned long length = 8; double zeroerr; double gainerr; unsigned long * ADcode_s; double * DNL; adstaticsort(bits,uin,adcode,length); zeroerror(bits, Uref, Uin, ADcode, length, &zeroerr); zerocorrection(bits, Uref, zeroerr, length, Uin); gainerror(bits, Uref, Uin, ADcode, length, &gainerr); gaincorrection(bits, Uref, gainerr, length, Uin); difnonlin(bits, Uref, Uin, ADcode, length, &ADcode_s, &DNL); printf("dnl of this ADC is:\n"); printf("adcode [%d; %d; %d; %d; %d; %d; %d; %d]\n",adcode_s[0], ADcode_s[1],ADcode_s[2],ADcode_s[3],ADcode_s[4],ADcode_s[5],ADcode_s[6], ADcode_s[7]); printf("dnl [%f; %f; %f; %f; %f; %f; %f; %f] LSB\n",DNL[0],DNL[1], DNL[2],DNL[3],DNL[4],DNL[5],DNL[6],DNL[7]); free(adcode_s); free(dnl); return (0); } Vstupní proměnné jsou naplněny daty z příkladu AD převodníku (viz 2.5.1). Pro jednoduchost a názornost je průběh vzorkován nepravidelně jen v přechodových úrovních, v praxi je nastavováno vstupní napětí ADC po pevném kroku. Funkce adstaticsort() seřadí pole Uin a ADcode dle podmínky (viz 2.5.2(. (pro úplnost v tomto případě není řazení nutné, vstupní hodnoty jsou zadány seřazeně dle požadavku). Funkce zeroerror() vypočte chybu nuly a uloží do proměnné zeroerr, ta slouží jako vstupní parametr pro funkci zerocorrection() a je provedena korekce chyby nuly. Funkce gainerror () vypočte chybu zesílení a uloží do proměnné gainerr, ta slouží jako vstupní parametr pro funkci gaincorrection() a je provedena korekce chyby zesílení. Tyto korekce jsou nutné dle definice DNL. Funkcí difnonlin() je stanovena diferenciální nelinearita. Výsledek je formě dvojice: kódové slovo v poli ADcode_s a k tomu odpovídající diferenciální nelinearita v poli DNL. Nakonec jsou výsledky vypsány. Výsledek: DNL of this ADC is: ADcode [0; 1; 2; 3; 4; 5; 6; 7] DNL [ ; ; ; ; ; ; ; ] LSB Pozn. Pro jednoduchost nejsou v tomto příkladě testovány funkce adstaticsort(), zeroerror(), zerocorrection(), gainerror(), gaincorrection() a difnonlin() na výsledek. V praktickém použití je 22

28 2.5 Diferenciální nelinearita doporučeno testovat funkce na nulovost (viz 2.1.2, 2.2.2, 2.3.2, 2.4.2, 2.5.2), jen tehdy je zaručeno, že funkce proběhly v pořádku Příklad funkce v konzolové aplikaci Parametr dc určuje funkci aplikace pro výpočet diferenciální nelinearity, zahrnuje korekci chyby nuly a chyby zesílení. Data AD převodníku jsou uloženy v souboru ADC_test.csv (první sloupec Uin, druhý ADcode), bits = 3; Uref = 8 V. adstatic.exe dc ADC_test.csv 3 8 adstatic.exe dc ADC_test.csv 3 8 file dnl.csv V prvním příkladě bude výsledek vypsán na obrazovku (AD code s odpovídající DNL), ve druhém uložen do souboru dnl.csv, ve formátu (AD code, DNL). Pro zobrazení nápovědy v konzole je potřeba spustit program bez parametrů nebo s parametrem?. adstatic.exe -? 2.6. Integrální nelinearita (výpočet z DNL) Integrální nelinearita AD převodníků (INL) určuje napěťovou pozici kódového slova. Využívá se definice DNL (pomocí šířky kódových slov lze dopočítat pozici) Definice Integrální nelinearita je rozdíl pozice kódového slova (přechodné hrany) oproti pozici ideálního kódového slova (přechodné hrany) v LSB. Pozice kódového slova je určena minimálním vstupním napětí, kdy AD převodník generuje toto kódové slovo na výstup. Ideální pozice k-tého kódového slova je k LSB. Integrální nelinearita není definovaná pro první a poslední kódové slovo ( a )! Pro stanovení integrální nelinearity je nutno provést korekci chyby nuly a chyby zesílení. Při výpočtu pozice je využita funkce diferenciální nelinearity (viz 2.5). Dle definice, DNL určuje šířku kódových slov. Pro stanovení INL k-tého kódového slova stačí znát záporný součet všech předcházejících DNL: Rovnice 6 Definice integrální nelinearity (výpočet z DNL) Příklad: Integrální nelinearita je ukázána na následujícím příkladu Obrázek 11 černý průběh po korekci chyby nuly a chyby zesílení (3 bitový AD převodník; referenční napětí UREF = 8 V; chyba nuly = 0 LSB (po korekci); chyba zesílení = 0 LSB (po korekci); DNL = [x; 0; 0,6; 1,6; 1; 0; 0; x] LSB; INL = [x; 0; 0,6; 1; 0; 0; 0; x] LSB). Černé tečky znázorňují pozici kódového slova AD převodníku z příkladu a zelené tečky znázorňují ideální pozici kódového slova: 23

29 2.6 Integrální nelinearita (výpočet z DNL) Obrázek 11 Příklad integrální nelinearity (výpočet z DNL) kde ADcode je výstup AD převodníku kódové slovo Uin je vstupní napětí AD převodníku ideal je průběh ideálního AD převodníku zelený průběh U INL[k] je vzdálenost pozice k-tého kódového slova oproti ideálnímu ve Voltech Integrální nelinearita je udávána jako v LSB: Rovnice 7 Výpočet integrální nelinearity kde INL[k] je integrální nelinearita k-tého kódového slova v LSB U INL[k] je vzdálenost pozice k-tého kódového slova oproti ideálnímu ve Voltech U LSB je šířka LSB ve Voltech U ref je referenční napětí AD převodníku bits je počet bitů AD převodníku Příklad výpočtu integrální nelinearity z DNL, z příkladu DNL = [x; 0; 0,6; 1,6; 1; 0; 0; x]: Rovnice 8 Příklad výpočtu integrální nelinearity z DNL Hlavička, parametry, podmínky Hlavička funkce pro stanovení integrální nelinearity AD převodníku: int intnonlin(unsigned char bits, double Uref, double * Uin, unsigned long * ADcode, unsigned long length, unsigned long ** ADcode_s, double ** INL); 24

30 2.6 Integrální nelinearita (výpočet z DNL) Blokové schéma funkce integrální nelinearity pro znázornění vstupních a výstupních parametrů funkce: Obrázek 12 Blok funkce integrální nelinearity (výpočet z DNL) Vstupní parametry: bits počet bitů AD převodníku Uref referenční napětí AD převodníku [V] Uin pole vstupních napětí AD převodníku (po korekci chyby nuly a chyby zesílení) ADcode pole výstupních kódových slov AD převodníku, odpovídající nastavenému napětí Uin length délka polí Uin a ADcode Výstupní parametry: ADcode_s pole kódových slov, které odpovídají poli INL, délka tohoto pole je 2 bits INL pole integrální nelinearity, délka tohoto pole je 2 bits Výsledek funkce: 0 výpočet proběhl v pořádku 1 chyba ve vstupních parametrech 2 chyba při výpočtu DNL Podmínky funkce: Pole Uin a ADcode musí být seřazeny dle kapitoly 3.1. Výsledek INL prvního a posledního kódového slova je vždy 0 LSB (INL[0] = INL[2 bits 1] = 0 LSB) Popis algoritmu Ve funkci intnonlin() se využívá funkce difnonlin() pro výpočet diferenciální nelinearity (viz 2.5). Po výpočtu DNL se stanoví INL ze záporného součtu DNL dle definice (viz 2.6.1). Funkce potřebuje pro svou činnost funkci difnonlin() Příklad funkce v C Použití funkce integrální nelinearity je v následujícím příkladu: #include "adstatic.h" int main() { unsigned char bits = 3; 25

31 2.6 Integrální nelinearita (výpočet z DNL) double Uref = 8; double Uin[8] = {0, 1.5, 2, 2.2, 3.5, 4, 4.5, 5}; unsigned long ADcode[8] = {0, 1, 2, 3, 5, 6, 7, 7}; unsigned long length = 8; double zeroerr; double gainerr; unsigned long * ADcode_s; double * INL; adstaticsort(bits,uin,adcode,length); zeroerror(bits, Uref, Uin, ADcode, length, &zeroerr); zerocorrection(bits, Uref, zeroerr, length, Uin); gainerror(bits, Uref, Uin, ADcode, length, &gainerr); gaincorrection(bits, Uref, gainerr, length, Uin); intnonlin(bits, Uref, Uin, ADcode, length, &ADcode_s, &INL); printf("inl of this ADC is:\n"); printf("adcode [%d; %d; %d; %d; %d; %d; %d; %d]\n",adcode_s[0], ADcode_s[1],ADcode_s[2],ADcode_s[3],ADcode_s[4],ADcode_s[5],ADcode_s[6], ADcode_s[7]); printf("inl [%f; %f; %f; %f; %f; %f; %f; %f] LSB\n",INL[0],INL[1], INL[2],INL[3],INL[4],INL[5],INL[6],INL[7]); free(adcode_s); free(inl); } return (0); Vstupní proměnné jsou naplněny daty z příkladu AD převodníku (viz 2.6.1). Pro jednoduchost a názornost je průběh vzorkován nepravidelně jen v přechodových úrovních, v praxi je nastavováno vstupní napětí ADC po pevném kroku. Funkce adstaticsort() seřadí pole Uin a ADcode dle podmínky (viz 2.6.2). (pro úplnost v tomto případě není řazení nutné, vstupní hodnoty jsou zadány seřazeně dle požadavku). Funkce zeroerror() vypočte chybu nuly a uloží do proměnné zeroerr, ta slouží jako vstupní parametr pro funkci zerocorrection() a je provedena korekce chyby nuly. Funkce gainerror () vypočte chybu zesílení a uloží do proměnné gainerr, ta slouží jako vstupní parametr pro funkci gaincorrection() a je provedena korekce chyby zesílení. Tyto korekce jsou nutné dle definice INL. Funkcí intnonlin() je stanovena integrální nelinearita. Výsledek je formě dvojice: kódové slovo v poli ADcode_s a k tomu odpovídající integrální nelinearita v poli INL. Nakonec jsou výsledky vypsány. Výsledek: INL of this ADC is: ADcode [0; 1; 2; 3; 4; 5; 6; 7] INL [ ; ; ; ; ; ; ; ] LSB Pozn. Pro jednoduchost nejsou v tomto příkladě testovány funkce adstaticsort(), zeroerror(), zerocorrection(), gainerror(), gaincorrection() a intnonlin() na výsledek. V praktickém použití je 26

32 2.6 Integrální nelinearita (výpočet z DNL) doporučeno testovat funkce na nulovost (viz 2.1.2, 2.2.2, 2.3.2, 2.4.2, 2.6.2), jen tehdy je zaručeno, že funkce proběhly v pořádku Příklad funkce v konzolové aplikaci Parametr ic určuje funkci aplikace pro výpočet integrální nelinearity, zahrnuje korekci chyby nuly a chyby zesílení. Data AD převodníku jsou uloženy v souboru ADC_test.csv (první sloupec Uin, druhý ADcode), bits = 3; Uref = 8 V. adstatic.exe ic ADC_test.csv 3 8 adstatic.exe ic ADC_test.csv 3 8 file inl.csv V prvním příkladě bude výsledek vypsán na obrazovku (ADcode s odpovídající INL), ve druhém uložen do souboru inl.csv, ve formátu (ADcode, INL). Pro zobrazení nápovědy v konzole je potřeba spustit program bez parametrů nebo s parametrem?. adstatic.exe -? 2.7. Integrální nelinearita 2 (výpočet ze středu kódového slova) Integrální nelinearita 2 AD převodníků (INL2) určuje napěťovou pozici středu kódového slova Definice Integrální nelinearita 2 je rozdíl pozice středu kódového slova oproti pozici středu ideálního kódového slova v LSB. Střed kódového slova je aritmetický střed minimálního a maximálního vstupního napětí, kdy AD převodník generuje toto kódové slovo na výstup. Ideální pozice středu k- tého kódového slova je k LSB + 0,5 LSB. Integrální nelinearita 2 není definovaná pro první a poslední kódové slovo ( a )! Pro stanovení integrální nelinearity 2 je nutno provést korekci chyby nuly a chyby zesílení. Příklad: Integrální nelinearita 2 je ukázána na následujícím příkladu Obrázek 11 černý průběh po korekci chyby nuly a chyby zesílení (3 bitový AD převodník; referenční napětí UREF = 8 V; chyba nuly = 0 LSB (po korekci); chyba zesílení = 0 LSB (po korekci); DNL = [x; 0; 0,6; 1,6; 1; 0; 0; x] LSB; INL2 = [x; 0; 0,3; 0,2; 0,5; 0; 0; x] LSB). Černé tečky znázorňují střed kódového slova AD převodníku z příkladu a zelené tečky znázorňují ideální střed kódového slova: Obrázek 13 Příklad integrální nelinearity 2 (výpočet ze středu kódového slova) 27

33 2.7 Integrální nelinearita 2 (výpočet ze středu kódového slova) kde ADcode je výstup AD převodníku kódové slovo Uin je vstupní napětí AD převodníku ideal je průběh ideálního AD převodníku zelený průběh U INL2[k] je vzdálenost středu k-tého kódového slova oproti ideálnímu středu ve Voltech Integrální nelinearita 2 je udávána v LSB: Rovnice 9 Výpočet integrální nelinearity 2 kde INL2[k] je integrální nelinearita 2 k-tého kódového slova v LSB U INL2[k] je vzdálenost středu k-tého kódového slova oproti ideálnímu středu ve Voltech U LSB je šířka LSB ve Voltech U ref je referenční napětí AD převodníku bits je počet bitů AD převodníku Hlavička, parametry, podmínky Hlavička funkce pro stanovení integrální nelinearity 2 AD převodníku: int intnonlin2(unsigned char bits, double Uref, double * Uin, unsigned long * ADcode, unsigned long length, unsigned long ** ADcode_s, double ** INL2); Blokové schéma funkce INL2 pro znázornění vstupních a výstupních parametrů funkce: Obrázek 14 Blok funkce integrální nelinearity 2 (výpočet ze středu kódového slova) Vstupní parametry: bits počet bitů AD převodníku Uref referenční napětí AD převodníku [V] Uin pole vstupních napětí AD převodníku (po korekci chyby nuly a chyby zesílení) ADcode pole výstupních kódových slov AD převodníku, odpovídající nastavenému napětí Uin length délka polí Uin a ADcode Výstupní parametry: ADcode_s pole kódových slov, které odpovídají poli INL, délka tohoto pole je 2 bits INL2 pole integrální nelinearity 2, délka tohoto pole je 2 bits 28

34 2.7 Integrální nelinearita 2 (výpočet ze středu kódového slova) Výsledek funkce: 0 výpočet proběhl v pořádku 1 chyba ve vstupních parametrech Podmínky funkce: Pole Uin a ADcode musí být seřazeny dle kapitoly 3.1. Výsledek INL2 prvního a posledního kódového slova je vždy 0 LSB (INL2[0] = INL2[2 bits 1] = 0 LSB) Popis algoritmu Algoritmus pro výpočet předpokládá seřazené pole dle podmínky (viz 2.7.2). Pro každé kódové slovo hledá počáteční přechodovou úroveň (minimální vstupní napětí generující toto kódové slovo). Polovina rozdílu aktuální přechodové úrovně a přechodové úrovně následujícího kódového slova pozice určuje střed aktuálního kódového slova. Rozdíl od ideální pozice středu k-tého kódového slova, která se určí jako k LSB + 0,5 LSB, je integrální nelinearita Příklad funkce v C Použití funkce integrální nelinearity 2 je v následujícím příkladu: #include "adstatic.h" int main() { unsigned char bits = 3; double Uref = 8; double Uin[8] = {0, 1.5, 2, 2.2, 3.5, 4, 4.5, 5}; unsigned long ADcode[8] = {0, 1, 2, 3, 5, 6, 7, 7}; unsigned long length = 8; double zeroerr; double gainerr; unsigned long * ADcode_s; double * INL2; adstaticsort(bits,uin,adcode,length); zeroerror(bits, Uref, Uin, ADcode, length, &zeroerr); zerocorrection(bits, Uref, zeroerr, length, Uin); gainerror(bits, Uref, Uin, ADcode, length, &gainerr); gaincorrection(bits, Uref, gainerr, length, Uin); intnonlin2(bits, Uref, Uin, ADcode, length, &ADcode_s, &INL2); printf("inl2 of this ADC is:\n"); printf("adcode [%d; %d; %d; %d; %d; %d; %d; %d]\n",adcode_s[0], ADcode_s[1],ADcode_s[2],ADcode_s[3],ADcode_s[4],ADcode_s[5],ADcode_s[6], ADcode_s[7]); printf("inl2 [%f; %f; %f; %f; %f; %f; %f; %f] LSB\n",INL2[0],INL2[1], INL2[2],INL2[3],INL2[4],INL2[5],INL2[6],INL2[7]); free(adcode_s); free(inl2); 29

35 2.7 Integrální nelinearita 2 (výpočet ze středu kódového slova) } return (0); Vstupní proměnné jsou naplněny daty z příkladu AD převodníku Pro jednoduchost a názornost je průběh vzorkován nepravidelně jen v přechodových úrovních, v praxi je nastavováno vstupní napětí ADC po pevném kroku. Funkce adstaticsort() seřadí pole Uin a ADcode dle podmínky viz (pro úplnost v tomto případě není řazení nutné, vstupní hodnoty jsou zadány seřazeně dle požadavku). Funkce zeroerror() vypočte chybu nuly a uloží do proměnné zeroerr, ta slouží jako vstupní parametr pro funkci zerocorrection() a je provedena korekce chyby nuly. Funkce gainerror () vypočte chybu zesílení a uloží do proměnné gainerr, ta slouží jako vstupní parametr pro funkci gaincorrection() a je provedena korekce chyby zesílení. Tyto korekce jsou nutné dle definice INL2. Funkcí intnonlin2() je stanovena integrální nelinearita 2. Výsledek je formě dvojice: kódové slovo v poli ADcode_s a k tomu odpovídající integrální nelinearita v poli INL2. Nakonec jsou výsledky vypsány. Výsledek: INL2 of this ADC is: ADcode [0; 1; 2; 3; 4; 5; 6; 7] INL2 [ ; ; ; ; ; ; ; ] LSB Pozn. Pro jednoduchost nejsou v tomto příkladě testovány funkce adstaticsort(), zeroerror(), zerocorrection(), gainerror(), gaincorrection() a intnonlin2() na výsledek. V praktickém použití je doporučeno testovat funkce na nulovost (viz 2.1.2, 2.2.2, 2.3.2, 2.4.2, 2.7.2), jen tehdy je zaručeno, že funkce proběhly v pořádku Příklad funkce v konzolové aplikaci Parametr i2c určuje funkci aplikace pro výpočet integrální nelinearity 2, zahrnuje korekci chyby nuly a chyby zesílení. Data AD převodníku jsou uloženy v souboru ADC_test.csv (první sloupec Uin, druhý ADcode), bits = 3; Uref = 8 V. adstatic.exe i2c ADC_test.csv 3 8 adstatic.exe i2c ADC_test.csv 3 8 file inl2.csv V prvním příkladě bude výsledek vypsán na obrazovku (ADcode s odpovídající INL2), ve druhém uložen do souboru inl2.csv, ve formátu (ADcode, INL2). Pro zobrazení nápovědy v konzole je potřeba spustit program bez parametrů nebo s parametrem?. adstatic.exe -? 2.8. DNL a INL z histogramu Výpočet diferenciální a integrální nelinearity AD převodníků statistickou metodou výpočet z histogramu (DNLh a INLh). 30

36 2.8 DNL a INL z histogramu Definice Diferenciální nelinearita je rozdíl šířky kódového slovo oproti šířce ideálního kódového slova v LSB. Šířka kódového slova se určuje jako poměr počet výskytů kódových slov k ideálnímu počtu výskytů. Předpokládá se rovnoměrné rozložení histogramu pro každé kódové slovo, ideální počet výskytů je stanoven jako průměr výskytů ze všech kódových slov kromě prvního a posledního kódového slova ( a ). Ideální šířka kódového slova je 1 LSB. Rovnice 10 Diferenciální nelinearita z histogramu kde DNLh[k] je diferenciální nelinearita k-tého kódového slova vypočtená z histogramu k ϵ <1; 2 bits 2) occ k je počet výskytů k-tého kódového slova v histogramu je ideální počet výskytů kódového slova v histogramu occ ideal Rovnice 11 Ideální počet výskytů kódového slova v histogramu kde occ n je počet výskytů všech kódových slov v histogramu odpovídá délce pole ADcode occ 0 je počet výskytů prvního kódového slova (ADcode = 0) v histogramu occ 2bits 1 je počet výskytů posledního kódového slova (ADcode = 2 bits 1) v histogramu bits je počet bitů AD převodníku Integrální nelinearita je vypočtena jako záporný součet předchozích diferenciálních nelinearit (stejně jako v 2.6). Integrální nelinearita z histogramu pro k-té kódové slovo: Rovnice 12 Integrální nelinearita z histogramu Diferenciální a integrální nelinearita není definovaná pro první a poslední kódové slovo ( a )! Pokud k-té kódové slovo chybí potom DNLh[k] = 1 LSB. Pro stanovení diferenciální a integrální nelinearity není nutné provést korekci chyby nuly a chyby zesílení. Příklad: Výpočet DNLh a INLh bude ukázán na následujícím přikladu (3 bitový AD převodník; referenční napětí UREF = 8 V; chyba nuly = 0,5 LSB; chyba zesílení = 3 LSB; DNL = [x; 0; 0,6; 1,6; 1; 0; 0; x] LSB; INL = [x; 0; 0,6; 1; 0; 0; 0; x] LSB); DNLh = [x; 0; 0,6; 1,6; 1; 0; 0; x] LSB; INLh = [x; 0; 0,6; 1; 0; 0; 0; x] LSB. Vstupní signál: rampa 0 až 5 V; vzorky po kroku 0,1 V. Černé tečky (červené úrovně) znázorňují jednotlivé vzorky výstupu podle nastaveného vstupního napětí: 31

37 2.8 DNL a INL z histogramu Obrázek 15 Příklad průběhu pro stanovení DNL a INL z histogramu kde ADcode je výstup AD převodníku kódové slovo Uin je vstupní napětí AD převodníku Histogram (výskyt kódových slov) předcházejícího průběhu: Obrázek 16 Příklad histogramu pro stanovení DNL a INL kde ADcode je výstup AD převodníku kódové slovo occurence je počet vzorků na kódové slovo (počet výskytů kódového slova) ADcode width je šířka kódového slova v LSB (z počtu výskytů kódového slova) ideal occurence je ideální šířka kódového slova v LSB (ideální počet výskytů kódového slova) Horní osa (Obrázek 16) ADcode width znázorňuje vazbu mezi šířkou slova a počtem výskytů kódových slov. Stanovení ideální počtu výskytů kódového slova (Rovnice 11): Rovnice 13 Příklad výpočtu ideálního počtu výskytů kódového slova 32

38 2.8 DNL a INL z histogramu Výpočet diferenciální nelinearity z histogramu (Rovnice 10), DNLh = [x; 0; 0,6; 1,6; 1; 0; 0; x] LSB, příklad pro ADcode = 2: Rovnice 14 Příklad výpočtu diferenciální nelinearity z histogramu Výpočet integrální nelinearity z histogramu (Rovnice 12), INLh = [x; 0; 0,6; 1; 0; 0; 0; x] LSB, příklad pro ADcode = 3: Rovnice 15 Příklad výpočtu integrální nelinearity z histogramu Hlavička, parametry, podmínky Hlavička funkce pro stanovení histogramu výstupu, diferenciální nelinearity z histogramu a integrální nelinearity z histogramu AD převodníku: int histdinl(unsigned char bits, unsigned long * ADcode, unsigned long length, unsigned long ** ADcode_s, unsigned long ** hist, double ** DNLh, double ** INLh); Blokové schéma funkce DNL a INL z histogramu pro znázornění vstupních a výstupních parametrů funkce: Obrázek 17 Blok funkce DNL a INL z histogramu Vstupní parametry: bits počet bitů AD převodníku ADcode pole výstupních kódových slov AD převodníku, odpovídající nastavenému napětí Uin length délka polí Uin a ADcode Výstupní parametry: ADcode_s pole kódových slov, které pozicí odpovídají polím hist, DNLh a INLh, délka tohoto pole je 2 bits hist pole histogramu (počet výskytů ADcode), délka tohoto pole je 2 bits 33

39 2.8 DNL a INL z histogramu DNLh INLh pole diferenciální nelinearity vypočtené z histogramu, délka tohoto pole je 2 bits pole integrální nelinearity vypočtené z histogramu, délka tohoto pole je 2 bits Výsledek funkce: 0 výpočet proběhl v pořádku 1 chyba ve vstupních parametrech 2 chyba při stanovení histogramu 3 occideal (ideální počet výskytů ADcode) vyšlo menší než 1 (málo vzorků ADcode) 4 vstupní parametr bits je 1 Podmínky funkce: Pro stanovení diferenciální a integrální nelinearity z histogramu s vyšší přesností je doporučeno velké množství vstupních dat (např. pro deset vzorků na jedno kódové slovo lze stanovit DNL a INL nejlépe s přesností desetiny, 0,1 LSB). Vstupní data ADcode jsou předpokládány s rovnoměrným rozdělením (jako vstupní signál AD převodníku Uin např. rampa rozsah <0; Uref>, použijte vícero měření pro zajištění velkého množství vstupních dat) Popis algoritmu Algoritmus nepotřebuje informaci o vstupním napětí převodníků, protože vypočítá DNL a INL statistickou metodou. Proto je nejdříve z pole kódových slov ADcode stanoven histogram. Z celkového počtu vzorků bez prvního a posledního kódového slova a z počtu bitů převodníku je stanoven ideální počet výskytů kódového slova (viz Rovnice 11). Poté v cyklu přes všechna kódová slova je porovnáním počtu výskytů jednotlivých kódových slov a ideálního počtu výskytů stanovena diferenciální nelinearita DNLh (viz Rovnice 10). Zároveň je v cyklu držen záporný součet předchozích DNLh pro stanovení integrální nelinearity INLh (viz Rovnice 12) Příklad funkce v C Použití funkce DNL a INL z histogramu je v následujícím příkladu: #include "adstatic.h" int main() { unsigned char bits = 3; double Uref = 8; double Uin[51] = {0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1,1.1,1.2, 1.3,1.4,1.5,1.6,1.7,1.8,1.9,2,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3,3.1, 3.2,3.3,3.4,3.5,3.6,3.7,3.8,3.9,4,4.1,4.2,4.3,4.4,4.5,4.6,4.7,4.8,4.9,5}; unsigned long ADcode[51] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1, 2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,7}; unsigned long length = 51; unsigned long * ADcode_s; unsigned long * hist; double * DNLh; double * INLh; histdinl(bits, ADcode, length, &ADcode_s, &hist, &DNLh, &INLh); 34

40 2.8 DNL a INL z histogramu printf("histogram, DNLh and INLh of this ADC are:\n"); printf("adcode [%d; %d; %d; %d; %d; %d; %d; %d]\n",adcode_s[0],adcode_s[1],adcode_s[2],adcode_s[3],adcode_s[4],adcode_s [5],ADcode_s[6],ADcode_s[7]); printf("histogram [%dx; %dx; %dx; %dx; %dx; %dx; %dx; %dx]\n",hist[0],hist[1],hist[2],hist[3],hist[4],hist[5],hist[6],hist[7]); printf("dnlh [%f; %f; %f; %f; %f; %f; %f; %f] LSB\n",DNLh[0],DNLh[1],DNLh[2],DNLh[3],DNLh[4],DNLh[5],DNLh[6],DNLh[7]); printf("inlh [%f; %f; %f; %f; %f; %f; %f; %f] LSB\n",INLh[0],INLh[1],INLh[2],INLh[3],INLh[4],INLh[5],INLh[6],INLh[7]); free(adcode_s); free(hist); free(dnlh); free(inlh); } return (0); Vstupní proměnné jsou naplněny daty z příkladu AD převodníku (viz 2.8.1). Pole vstupních napětí Uin není potřeba jako vstupní parametr pro funkci histdinl(). Ta vypočte histogram výstupních kódových slov AD převodníku a z něho určí diferenciální a integrální nelinearitu statistickou metodou. Výsledek DNLh nebo INLh je formě páru s ADcode_s: kódové slovo v poli ADcode_s a k tomu odpovídající diferenciální nebo integrální nelinearita v polích DNLh nebo INLh. Nakonec jsou výsledky vypsány. Výsledek: Histogram, DNLh and INLh of this ADC are: ADcode [0; 1; 2; 3; 4; 5; 6; 7] Histogram [15x; 5x; 2x; 13x; 0x; 5x; 5x; 6x] DNLh [ ; ; ; ; ; ; ; ] LSB INLh [ ; ; ; ; ; ; ; ] LSB Pozn. Pro jednoduchost není v tomto příkladě testována funkce histdinl() na výsledek. V praktickém použití je doporučeno testovat funkci na nulovost (viz 2.8.2), jen tehdy je zaručeno, že funkce proběhla v pořádku Příklad funkce v konzolové aplikaci Parametry h, hd a hi určují funkci aplikace pro výpočty histogramu, diferenciální a integrální nelinearity z histogramu. Data AD převodníku jsou uloženy v souboru ADC_test.csv (první sloupec Uin, druhý ADcode), bits = 3; Uref = 8 V. adstatic.exe h ADC_test.csv 3 8 adstatic.exe hd ADC_test.csv 3 8 adstatic.exe hi ADC_test.csv

41 2.8 DNL a INL z histogramu adstatic.exe h ADC_test.csv 3 8 file hist.csv adstatic.exe hd ADC_test.csv 3 8 file dnlh.csv adstatic.exe hi ADC_test.csv 3 8 file inlh.csv V prvních třech příkladech budou výsledky (histogram, DNL z histogramu a INL z histogramu) vypsány na obrazovku spolu s ADcode, ve druhé trojici budou výsledky uloženy do souborů. Histogram do hist.csv, diferenciální nelinearita do dnlh.csv a integrální nelinearita do inlh.csv ve formátu (ADcode, hist nebo INLh nebo DNLh). Pro zobrazení nápovědy v konzole je potřeba spustit program bez parametrů nebo s parametrem?. adstatic.exe -? 2.9. Test monotónnosti Funkce pro ověření monotónnosti výstupu při rostoucím vstupním napětí AD převodníků Definice Test monotónnosti se vždy provádí při vstupním rostoucím signálu (typ rampa). Monotónní AD převodník má neklesající výstup při rostoucím vstupním napětí. Při testu monotónnosti se vyhodnocují dva parametry: počet chyb monotónnosti (poklesů) na aktuální kódové slovo a kvadratický průměr chyb monotónnosti (poklesů). Příklad: Test monotónnosti bude ukázán na následujícím přikladu (3 bitový AD převodník; referenční napětí UREF = 8 V; počet chyb monotónnosti mnterrn = [0; 1; 0; 0; 2; 1; 1; 0]; kvadratický průměr chyb mntsigma = [0; 1; 0; 0; 1,5811; 1; 1; 0]) LSB. Černé tečky znázorňují jednotlivé vzorky výstupu podle nastaveného vstupního napětí, červené šipky znázorňují jednotlivé chyby monotónnosti, délka červených šipek znázorňuje hodnotu chyby errv v LSB, zelený průběh znázorňuje ideální průběh 3 bitového AD převodníku: Obrázek 18 Příklad průběhu pro test monotónnosti kde ADcode je výstup AD převodníku kódové slovo Uin je vstupní napětí AD převodníku ideal je zelený ideální průběh 3 bitového AD převodníku 36

42 2.9 Test monotónnosti Výpočet kvadratického průměru chyb monotónnosti, příklad pro ADcode = 4: Rovnice 16 Příklad výpočtu kvadratického průměru chyb monotónnosti Kde mntsigma[k] je kvadratický průměr chyb monotónnosti k-tého kódového slova mnterrn[k] je počet chyb monotónnosti k-tého kódového slova mnterrv[i] je hodnota jednotlivých chyb monotónnosti aktuálního kódového slova (délka červených šipek Obrázek 18) Hlavička, parametry, podmínky Hlavička funkce pro test monotónnosti AD převodníku: int monotonicity(unsigned char bits, double * Uin, unsigned long * ADcode, unsigned long length, unsigned long ** ADcode_s, unsigned long ** mnterrn, double ** mntsigma); Blokové schéma funkce test monotónnosti pro znázornění vstupních a výstupních parametrů funkce: Obrázek 19 Blok funkce test monotónnosti Vstupní parametry: bits počet bitů AD převodníku Uin pole vstupních napětí AD převodníku (kvůli řazení ADcode) ADcode pole výstupních kódových slov AD převodníku, odpovídající nastavenému napětí Uin length délka polí Uin a ADcode Výstupní parametry: ADcode_s pole kódových slov, které pozicí odpovídají polím mnterrn a mntsigma, délka tohoto pole je 2 bits mnterrn pole počtů chyb monotónnosti u kódových slov, délka tohoto pole je 2 bits mntsigma pole kvadratických průměrů chyb monotónnosti u kódových slov, délka tohoto pole je 2 bits 37

43 2.9 Test monotónnosti Výsledek funkce: 0 výpočet proběhl v pořádku 1 chyba ve vstupních parametrech 2 chyba při duplikaci polí Uin a ADcode 3 chyba při seřazování pole Uin a jemu odpovídajícímu ADcode Podmínky funkce: Pro test monotónnosti je potřeba dvojici polí Uin (vstupní napětí) a ADcode (výstupní kódové slovo) seřadit vzestupně podle pole Uin (jako signál typu rampa). Funkce toto řazení obsahuje, tudíž není potřeba řazení předem. Pole předávána parametrem nebudou ovlivněny (uvnitř funkce se řadí kopie těchto polí) Popis algoritmu Algoritmus nejdříve vytvoří kopii polí Uin a ADcode a ty pak seřadí vzestupně podle pole Uin (viz definice a podmínka 2.9.2). Poté se průběh v cyklu kontroluje zda výstup ADcode neklesá. Během každého cyklu se ukládá poslední kódová úroveň ADcode, která se porovnává s následující zdali neklesla. Pokud se vyskytne chyba monotónnosti (ADcode oproti minulé úrovni poklesne), je zvýšen počet chyb monotónnosti tomu kódovému slovu ze kterého došlo k poklesu a zároveň je přičten kvadrát hodnoty poklesu. Po ukončení cyklu je součet kvadrátů chyb vydělen počtem chyb a odmocněn (viz Rovnice 16). Tím je stanoven kvadratický průměr chyb monotónnosti u jednotlivých kódových slov Příklad funkce v C Použití funkce test monotónnosti je v následujícím příkladu: #include "adstatic.h" int main() { unsigned char bits = 3; double Uref = 8; double Uin[81] = {0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1,1.1,1.2, 1.3,1.4,1.5,1.6,1.7,1.8,1.9,2,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3,3.1, 3.2,3.3,3.4,3.5,3.6,3.7,3.8,3.9,4,4.1,4.2,4.3,4.4,4.5,4.6,4.7,4.8,4.9,5, 5.1,5.2,5.3,5.4,5.5,5.6,5.7,5.8,5.9,6,6.1,6.2,6.3,6.4,6.5,6.6,6.7,6.8,6.9, 7,7.1,7.2,7.3,7.4,7.5,7.6,7.7,7.8,7.9,8}; unsigned long ADcode[81] = {0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1, 2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,4,4,3,3,4,4,2,2,4,4,6,6,6,5,5,5,5, 5,5,5,4,4,4,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7}; unsigned long length = 81; unsigned long * ADcode_s; unsigned long * mnterrn; double * mntsigma; monotonicity(bits,uin,adcode,length,&adcode_s,&mnterrn,&mntsigma); printf("monotonicity test of this ADC resulted:\n"); 38

44 2.9 Test monotónnosti printf("adcode [%d; %d; %d; %d; %d; %d; %d; %d]\n",adcode_s[0], ADcode_s[1],ADcode_s[2],ADcode_s[3],ADcode_s[4],ADcode_s[5],ADcode_s[6], ADcode_s[7]); printf("number of monotonicity errors [%d; %d; %d; %d; %d; %d; %d; %d]\n",mnterrn[0],mnterrn[1],mnterrn[2],mnterrn[3],mnterrn[4],mnterrn[5], mnterrn[6],mnterrn[7]); printf("square mean of monotonicity errors [%f; %f; %f; %f; %f; %f; %f; %f] LSB\n",mntsigma[0],mntsigma[1],mntsigma[2],mntsigma[3],mntsigma[4], mntsigma[5],mntsigma[6],mntsigma[7]); free(adcode_s); free(mnterrn); free(mntsigma); } return (0); Vstupní proměnné jsou naplněny daty z příkladu AD převodníku Pole Uin a ADcode jsou zadána již vzestupně seřazená podle Uin. Funkce monotonicity() provede test monotónnosti a uloží výsledky: počet chyb monotónnosti pole mnterrn, kvadratický průměr chyb monotónnosti pole mntsigma a kódová slova, která odpovídají pozicí poli chybám pole ADcode_s. Pro funkci monotonicity() není podmínkou, aby vstupní pole byla seřazená ta si pole seřadí sama. Nakonec jsou výsledky vypsány. Výsledek: Monotonicity test of this ADC resulted: ADcode [0; 1; 2; 3; 4; 5; 6; 7] Number of monotonicity errors [0; 1; 0; 0; 2; 1; 1; 0] Square mean of monotonicity errors [ ; ; ; ; ; ; ; ] LSB Pozn. Pro jednoduchost není v tomto příkladě testována funkce monotonicity() na výsledek. V praktickém použití je doporučeno testovat funkci na nulovost (viz 2.9.2), jen tehdy je zaručeno, že funkce proběhla v pořádku Příklad funkce v konzolové aplikaci Parametr m určuje funkci aplikace pro test monotónnosti. Data AD převodníku jsou uloženy v souboru ADC_test.csv (první sloupec Uin, druhý ADcode), bits = 3; Uref = 8 V. adstatic.exe m ADC_test.csv 3 8 adstatic.exe m ADC_test.csv 3 8 file mnt.csv V prvním příkladě bude výsledek testu monotónnosti (počet chyb a kvadratický průměr chyb monotónnosti) vypsány na obrazovku spolu s odpovídajícím ADcode. ve druhém příkladě bude výsledek uložen do souboru mnt.csv ve formátu: ADcode, počet chyb (mnterrn), kvadratický průměr chyb (mntsigma). Pro zobrazení nápovědy v konzole je potřeba spustit program bez parametrů nebo s parametrem?. adstatic.exe -? 39

45 3 Doplňující funkce statické parametry, vstup/výstup 3. Doplňující funkce statické parametry, vstup/výstup Další doplňující funkce pro použití k funkcím stanovující statické parametry AD převodníků Řazení polí Uin a ADcode Funkce, které vyžadují pro stanovení statických parametrů vstupy pole vstupních napětí i pole výstupních kódových slov AD převodníku, vyžadují z definice specificky seřazená vstupní data. Jsou to funkce zeroerror(), gainerror(), difnonlin(), intnonlin() a intnonlin2(). Pole musí být seřazena nejdříve podle kódových slov (pole ADcode) vzestupně a poté je potřeba seřadit pole vstupních napětí (pole Uin) vzestupně pro každé kódové slovo samostatně. Řazení je znázorněno na následujícím příkladu (2 bitové kódové slovo, UREF = 4 V): Obrázek 20 Příklad řazení polí Uin a ADcode adstaticsort() Pole vstupních napětí Uin a pole výstupních kódových slov ADcode jsou v kroku č. 1 neseřazeny. V kroku č. 2 se seřadí pole vzestupně podle ADcode. A v kroku č. 3 jsou seřazeny úseky jednotlivých kódových slov vzestupně podle Uin. Toto výsledné seřazení je požadováno pro výše uvedené funkce Hlavička, parametry Hlavička funkce pro seřazení vstupních polí (Uin, ADcode): int adstaticsort(unsigned char bits, double * Uin, unsigned long * ADcode, unsigned long length); 40

46 3.1 Řazení polí Uin a ADcode Blokové schéma funkce pro řazení polí Uin a ADcode: Obrázek 21 Blok funkce pro řazení vstupních polí Uin a ADcode Parametry: bits počet bitů AD převodníku Uin pole vstupních napětí AD převodníku, bude ovlivněno řazením ADcode pole výstupních kódových slov AD převodníku, bude ovlivněno řazením length délka polí Uin a ADcode Výsledek funkce: 0 řazení polí proběhlo v pořádku 1 chybné vstupní parametry, např. délka polí 2 chyba při řazení polí podle ADcode 3 chyba při stanovení histogramu kódových slov 4 chyba při řazení polí podle Uin Popis algoritmu Algoritmus pro řazení polí využívá metodu quicksort. Protože se předpokládá, že v praxi vstupní pole Uin a ADcode jsou částečně seřazena, je pivot (prvek k porovnání) zvolen ve středu řazeného pole. Pro pseudonáhodně neseřazená pole je výhodnější (z hlediska rychlosti) volit pivota náhodně [14] (viz komentáře v adstatic.c). Nejdříve jsou pole Uin a ADcode seřazena vzestupně podle pole Uin, vnořená funkce qsortadcode(). Pro seřazení polí v úsecích pro každé kódové slovo, je potřeba znát počet vzorků vstupního napětí Uin pro každé kódové slovo. Proto je vypočten histogram kódových slov pole ADcode, vnořená funkce ADcodefreqarray(). Informace o počtu vzorků je využita při posledním řazení polí Uin a ADcode pro stanovéní začátku a konce indexů jednotlivých kódových slov. Nyní je provedeno řazení vzestupně podle Uin samostatně pro každé kódové slovo, vnořená funkce qsortuinsep(). Tímto jsou pole seřazena dle požadavku Příklad funkce v C Použití funkce adstaticsort() je ukázáno v příkladech pro stanovení statických parametrů, které toto řazení požadují (viz 2.1.4, 2.3.4, 2.5.4, 2.6.4, 2.7.4) Vstupy/výstupy z/do csv souboru Knihovna io.c obsahuje funkce pro načítání a ukládání vstupních a výstupních dat pro statické testování AD převodníků. Při testování statických parametrů AD převodníku jsou ukládány jednotlivé vzorky vstupního napětí a odpovídající výstupní kódové slovo AD převodníku do csv souboru 41

47 3.2 Vstupy/výstupy z/do csv souboru v textovém tvaru. Funkce pro načtení používají vlastní funkci převodu textového řetězce na číselné hodnoty, tím je zaručena podpora reálních hodnot v exponenciálním tvaru (123e 4 nebo 123E 4) i v desetinném tvaru (0.0123). Předpokládána je desetinná tečka. Řádky v csv souboru jsou odděleny koncem řádku (\n). Hodnoty v řádku (sloupce) mohou být odděleny jakýmkoliv znakem, avšak pro oddělení se nedoporučuje použití tečky, písmene e nebo E a znaménka minus Hlavička, parametry Hlavička funkce pro načtení vstupních parametrů (Uin, ADcode) z csv souboru: int csv2adcst_in(const char * csvpath, double ** Uin, unsigned long ** ADcode, unsigned long * length); Hlavička funkce pro uložení výstupu statických funkcí do csv souboru. Výstup: pole kódových slov a pole reálných čísel, pro funkce difnonlin(), intnonlin(), intnonlin2() a histdinl() (uložení DNLh nebo INLh): int adcst_trnsfr2csv(const char * csvpath, unsigned long * ADcode_s, double * outd, unsigned long length); Bloková schémata funkcí pro načtení/uložení vstupních/výstupních parametrů: Obrázek 22 Blok funkce pro načtení vstupů z csv Obrázek 23 Blok funkce pro uložení výstupů do csv Parametry: csvpath cesta a název csv souboru Uin pole vstupních napětí AD převodníku ADcode pole výstupních kódových slov AD převodníku, odpovídající nastavenému napětí Uin 42

48 3.2 Vstupy/výstupy z/do csv souboru length outd délka polí Uin a ADcode výstupní pole typu double, které se uloží do csv souboru, např. výsledek DNL Výsledek funkce: 0 načtení/uložení proběhlo v pořádku 1 chyba při otevření/vytvoření souboru Výše jsou uvedeny jen dva příklady pro funkce z io knihovny. Zbylé funkce se liší jen typem a počtem parametrů, např. pro ukládání výsledku testu monotónnosti nebo pro načítání jen kódových slov pro statistické stanovení integrální a diferenciální nelinearity (INLh a DNLh). Kompletní výčet funkcí a jejich popis jsou k nalezení v knihovně io.c Příklad funkce v C Použití funkcí pro načtení/uložení vstupů/výstupů je ukázáno v následujícím příkladu: #include "adstatic.h" int main() { unsigned char bits = 3; double Uref = 8; double * Uin; unsigned long * ADcode; unsigned long length; double zeroerr; double gainerr; unsigned long * ADcode_s; double * DNL; if (csv2adcst_in("adc_test.csv", &Uin, &ADcode, &length)!= 0) { printf("error while opening input ADC file."); return (-1); } adstaticsort(bits, Uin, ADcode, length); zeroerror(bits,uref,uin,adcode,length,&zeroerr); zerocorrection(bits,uref,zeroerr,length,uin); gainerror(bits,uref,uin,adcode,length,&gainerr); gaincorrection(bits,uref,gainerr,length,uin); difnonlin(bits, Uref, Uin, ADcode, length, &ADcode_s, &DNL); if (adcst_trnsfr2csv("adc_dnl.csv", ADcode_s, DNL, pow(2,bits))!= 0) { printf("error while saving DNL file."); return (-2); } } return (0); 43

49 3.2 Vstupy/výstupy z/do csv souboru V tomto příkladě je ukázáno použití funkce načtení vstupních parametrů Uin a ADcode z csv souboru a použití funkce pro uložení výsledků diferenciální nelinearity. Nejdříve jsou pomocí funkce csv2adcst_in() načteny pole Uin a ADcode ze souboru ADC_test.csv. Funkce je testována na nulovost, zda proběhlo načtení v pořádku (viz 3.2.1). Ve vstupním souboru ADC_test.csv je uložen průběh z příkladu definice diferenciální nelinearity (viz 2.5.1) bez korekce chyby nuly a zesílení. Proto jsou nejdříve provedeny tyto korekce a až poté vypočtena diferenciální nelinearita funkcí difnonlin(). Výsledek DNL, seřazené pole kódových slov a k nim odpovídající diferenciální nelinearita, je uložen pomocí funkce adcst_trnsfr2csv() do csv souboru ADC_DNL.csv. Funkce je testována na nulovost, zda proběhlo uložení v pořádku (viz 3.2.1) Kvantizátor s definovatelnými statickými parametry Další doplňková funkce je model kvantizátoru. Jedná se o model AD převodníku, který převádí vzorky vstupních napětí (analogová) na výstupní kódová slova (digitální). U tohoto modelu lze definovat tyto statické parametry: chyba nuly, chyba zesílení a diferenciální nelinearita. Dále je možné vstupním parametrem zvolit zda vstupní průběh je monotónní (např. rampa) nebo nemonotónní. Volba monotónnosti ovlivňuje použití vyhledávacího algoritmu pro stanovení kódového slova. Pro monotónní průběh se použije vyhledávání pouze z následujících kódových slov (monotónní vyhledávání ideální výkon a jen pro vzestupně seřazené pole Uin) a pro nemonotónní průběh se použije binární vyhledávání (použitelné kdykoliv ideální výkon pro pseudonáhodně seřazené pole [15]) Hlavička, parametry Hlavička funkce kvantizátor s definovatelnými statickými parametry: int quantizer(unsigned char bits, double Uref, double * Uin, unsigned long length, double zeroerr, double gainerr, double * DNL, unsigned char mntnous, unsigned long ** ADcode); Blokové schéma funkce kvantizátoru s definovatelnými statickými parametry: Obrázek 24 Blokové schéma funkce kvantizátoru 44

50 3.3 Kvantizátor s definovatelnými statickými parametry Parametry: bits počet bitů AD převodníku/kvantizátoru Uref referenční napětí AD převodníku/kvantizátoru Uin pole vstupních napětí, které má být převedeno na kódová slova length délka pole Uin a také délka výstupního pole ADcode zeroerr požadovaná chyba nuly kvantizátoru v LSB gainerr požadovaná chyba zesílení kvantizátoru v LSB DNL pole požadované diferenciální nelinearity v LSB, pozice v poli odpovídá kódovému slovu, délka pole musí být 2 bits, bez diferenciální nelinearity zadejte ukazatel NULL mntnous typ vyhledávání: 0 pro binární vyhledávání, 1 pro monotónní, výchozí hodnota 0 ADcode pole výstupních převedených kódových slov, délka tohoto pole je length Výsledek funkce: 0 funkce proběhla v pořádku 1 chybné vstupní parametry, např. délka pole length 11 parametr bits je Popis algoritmu Algoritmus kvantizátoru je rozdělen do dvou částí. V první části je nutno vypočítat napěťové úrovně kódových slov pro převod s ohledem na zadané statické parametry. V druhé části se pro jednotlivé vzorky vstupního napětí hledají tyto úrovně a každému vzorku se přiřadí kódové slovo. Nejdříve je nutno vyšetřit několik variant kombinací statických parametrů. Pro převodník bez chyby nuly, bez chyby zesílení a bez diferenciální nelinearity se generují ideální napěťové úrovně (každá úroveň má šířku LSB Voltů). Chyba nuly posunuje všechny napěťové úrovně o její hodnotu (viz 2.1.1, 2.2.1, Rovnice 2). Při požadované diferenciální nelinearitě se nejdříve stanoví pozice první přechodové úrovně (ADcode = 1), kde je definována chyba nuly. Poté se musí šířka každé následující komparační napěťové úrovně vypočítat z pole DNL (viz 2.5.1). Chyba zesílení se aplikuje až nakonec (viz 2.3.1, 2.4.1, Rovnice 4), kdy se přepočte směrnice zesílení a podle ní upraví napěťové úrovně (první úroveň je nedotčena pro zachování chyby nuly). Následuje druhá část algoritmu. Podle vstupního parametru mntnous se vybere typ vyhledávání ve vytvořené převáděcí tabulce. Monotónní vyhledávání požaduje seřazené vstupní pole vzorků, a proto vyhledává jen z aktuální a následujících kódových úrovní. Binární vyhledávání využívá metodu půlení intervalů [15], pivota (prvek k porovnání) vybere v půlce převodní tabulky a zjistí, zda je vzorek menší, větší nebo to není náhodou vyhovující kódová úroveň. Podle toho rozdělí vyhovující interval na další půlky a pokračuje, dokud pro vzorek vybere kódovou úroveň Příklad funkce v C Použití funkce kvantizátoru s definovatelnými statickými parametry: #include "adstatic.h" int main() { unsigned char bits = 3; double Uref = 8; unsigned long ncode = 10; 45

51 3.3 Kvantizátor s definovatelnými statickými parametry double * Uin; unsigned long length; double zeroerr = 0.5; double gainerr = -3; double DNL[8] = {0,0,-0.6,1.6,-1,0,0,0}; unsigned long * ADcode1; unsigned long * ADcode2; Uinrampgen(bits,Uref,nCode,&Uin,&length); //example values of zeroerr, gainerr and DNL, monotonous search: quantizer(bits,uref,uin,length,zeroerr,gainerr,dnl,1,&adcode1); adcst_di2csv("uinad1.csv",uin,adcode1,length); //no zero error, no gain error, no DNL, binary search: quantizer(bits,uref,uin,length,0,0,null,0,&adcode2); adcst_di2csv("uinad2.csv",uin,adcode2,length); } return (0); V tomto příkladě je ukázáno použití funkce quantizer() dvakrát. V prvním použití (výstup ADcode1) jsou použity statické parametry z příkladu (viz 2.1.1). Pro vyhledávání úrovní je použito monotónní vyhledávání, protože průběh vstupních napětí pole Uin je rampa (je vzestupně seřazený). Pole Uin je generováno funkcí Uinrampgen() (popsána v následující kapitole). Funkcí adcst_di2csv() jsou uložena pole Uin a výsledné převedené pole ADcode1 do csv souboru UinAD1.csv. Ve druhém použití funkce quantizer() (výstup ADcode2) kvantizátor neobsahuje chybu nuly, chybu zesílení ani diferenciální nelinearitu a je použito binární vyhledávání úrovní, které by mělo být použito vždy, když jsou pochybnosti o řazení pole vstupních napětí Uin Generátor vzorků vstupních napětí průběh rampa Pro modelový kvantizátor byla vytvořena jednoduchá funkce Uinrampgen(), která generuje pole vstupních napětí Uin, průběhu typu rampa. Krok jednotlivých vzorků vstupních napětí pro kvantizátor se vypočte ze vstupních parametrů. Rampa je generována od nuly po referenční napětí. Parametry funkce jsou ukázány v následující hlavičce a blokovém schéma: Hlavička funkce generátor vstupu pro kvantizátor typu rampa: int Uinrampgen(unsigned char bits, double Uref, unsigned long ncode, double ** Uin, unsigned long * length); 46

52 3.3 Kvantizátor s definovatelnými statickými parametry Blokové schéma funkce generátor vstupu pro kvantizátor typu rampa: Obrázek 25 Blok funkce generátor vstupu pro kvantizátor typu rampa Parametry: bits Uref ncode Uin length počet bitů AD převodníku referenční napětí AD převodníku, do této úrovně jsou generovány vzorky požadovaný počet vzorků na jednu kódovou úroveň ideálního AD převodníku pole vstupních napětí délka pole Uin Výsledek funkce: 0 funkce proběhla v pořádku 1 chybné vstupní parametry Příklad: 3 bitový AD převodník bits = 3, referenční napětí UREF = 8 V, požadovaný počet vzorků na kódovou úroveň ncode = 10. Celkový počet vzorků bude (délka pole Uin) length = 2 bits ncode = 80. Pole Uin bude vygenerováno v intervalu <0;7,9> V po kroku 0,1 V Příklad funkce v konzolové aplikaci Parametr q určuje funkci aplikace pro kvantizátor. 3 bitový kvantizátor/ad převodník bits = 3; referenční napětí Uref = 8 V. adstatic.exe q noise.csv adstatic.exe q ramp.csv DNL.csv 1 -file ADramp.csv V prvním příkladě kvantizátor načte vstupní signál ze souboru noise.csv, statické parametry: bez chyby nuly (zeroerr = 0), bez chyby zesílení (gainerr = 0) a bez diferenciální nelinearity (DNL = 0), vyhledávání bude použito binární (mntnous = 0) a výsledek (vstupní napětí a výstupní kódová slova) bude vypsán na obrazovku. Ve druhém příkladě kvantizátor načte vstupní signál ze souboru ramp.csv, statické parametry: chyba nuly je 0,5 LSB (zeroerr = 0.5), chyba zesílení je 3 LSB (gainerr = 3) a diferenciální nelinearita je načtena ze souboru DNL.csv (bere se poslední sloupec v csv souboru, hodnoty DNL v LSB, pozice odpovídá kódovému slovu, délka musí být 2 bits ), vyhledávání bude použito monotónní (mntnous = 1) a výsledek (vstupní napětí a výstupní kódová slova) bude uložen do souboru ADramp.csv. 47

53 3.3 Kvantizátor s definovatelnými statickými parametry Pokud je potřeba vygenerovat pole vstupních napětí lze použít parametr ug, který určuje funkci aplikace jako generátor signálu rampa (viz 3.3.4). 3 bitový kvantizátor/ad převodník bits = 3; referenční napětí Uref = 8 V, požadovaný počet vzorků na kódové slovo ncode = 10. adstatic.exe ug file ramp.csv Vygenerovaný signál rampa 0 až 7,9 V po kroku 0,1 V bude uložen do souboru ramp.csv. Pro zobrazení nápovědy v konzole je potřeba spustit program bez parametrů nebo s parametrem?. adstatic.exe -? 48

54 4 Testování ve frekvenční oblasti 4. Testování ve frekvenční oblasti Pro konkrétní stanovení dynamických parametrů AD převodníku ve frekvenční oblasti je potřeba uvést a definovat několik funkcí, které jsou potřeba pro analýzu dat ve frekvenční oblasti Diskrétní Fourierova transformace DFT Diskrétní Fourierova transformace DFT je matematická operace, která převede vzorkované data z časové oblasti do frekvenční. DFT je definována [3]: Rovnice 17 Diskrétní Fourierova transformace DFT kde X[k] je obraz (amplituda, fáze) vstupního signálu ve spektru na k-tém frekvenčním binu k ϵ <0; M 1> x[n] je n-tý vzorek vstupního signálu, časová oblast M je počet vzorků vstupního signálu Dále je uveden rozklad DFT na amplitudu a fázi do polární formy, amplitudové spektrum se používá při stanovení dynamických parametrů (viz 5): Rovnice 18 Rozklad DFT na amplitudu a fázi kde X[k] je amplituda k-tého frekvenčního binu v DFT spektru φ[k] je fáze k-tého frekvenčním binu v DFT spektru M je počet vzorků vstupního signálu Pro výpočet DFT je v tomto softwaru pro testování AD převodníku použít algoritmus rychlé Fourierovy transformace (FFT), který zajišťuje externí knihovna FFTW. Knihovna FFTW je volně dostupná pod GNU licencí [11]. Pro testování dynamických parametrů AD převodníku doporučuje standard IEEE 1057 [1] provádět průměrování amplitudového DFT spektra z více náměrů. Tím se zvýší potlačení náhodného šumu a náhodně se vyskytujících falešných složek. Každý náměr výstupu AD převodníku při vstupním sinusovém signálu se vynásobí okénkovací funkcí v časové oblasti (viz 4.2) a pro každý náměr se provede zvlášť výpočet amplitudového DFT spektra, ty jsou poté zprůměrovány: Rovnice 19 Průměrování amplitudového DFT spektra 49

55 4.1 Diskrétní Fourierova transformace DFT kde Xavg[k] je průměrovaná amplituda k-tého frekvenčního binu v DFT spektru k ϵ <0; M 1> X kn [k] je amplituda k-tého frekvenčního binu v DFT spektru z kn-tého náměru kn ϵ <1; KN> Normalizované DFT spektrum Další užitečná úprava amplitudového DFT spektra, pro funkce stanovující dynamické parametry AD převodníku (viz 5), je vytvoření jednostranného, normalizovaného DFT spektra, které obsahuje kvadráty amplitud. Při této úpravě lze pak přímo spočítat efektivní hodnotu požadovaného binu pouze sumou binů z jeho hlavního laloku a to je výhodné zjednodušení. Při výpočtu DFT spektra (viz vztah Rovnice 17) je výsledné spektrum oboustranné, symetrické. Na následujícím obrázku je znázorněn příklad amplitudového DFT spektra: Obrázek 26 Příklad oboustaného amplitudového DFT spektra kde M je počet vzorků vstupního signálu = počet binů oboustranného DFT spektra Z obrázku lze vidět, že půlky spektra nejsou úplně symetrické, první půlka obsahuje bin s číslem 0 (tzv. DC bin) a druhá půlka obsahuje bin s číslem M/2 (tzv. DFThalf bin). Při vytváření jednostranného spektra je nutné, aby také obsahovalo navíc právě bin DFThalf. Při splnění této podmínky jsou při vytváření jednostranného spektra biny za DFThalf binem odřezány (šedé biny viz Obrázek 26). Při odřezání druhé poloviny spektra je nutné zdvojit amplitudy binů v jednostranném spektru, kromě DC binu a DFThalf binu (červené biny viz Obrázek 26), ty se v oboustranném spektru vyskytují pouze jednou a jejich energie tudíž není rozpůlena. Pro normalizaci amplitudového DFT spektra je nutno kvadrát amplitudy binů upravit ještě o koeficient NNPG (zeslabení použitého okna) [4] (viz 4.2). Nyní jsou uvedeny výsledné vztahy pro vytvoření jednostranného, normalizovaného, amplitudového DFT spektra a pro přehlednost je ještě definována jeho délka (počet binů): Rovnice 20 Výpočet jednostranného, normalizovaného, amplitudového DFT spektra 50

56 4.1 Diskrétní Fourierova transformace DFT Rovnice 21 Délka jednostranného, normalizovaného, amplitudového DFT spektra kde Xnrm[k h ] je amplituda k h -tého frekvenčního binu v normalizovaném DFT spektru k h ϵ <1; M/2 1> X[k h ] je amplituda k h -tého frekvenčního binu v DFT spektru NNPG je parametr NNPG (viz 4.2) použitého okna (bez okna = 1) M je počet vzorků vstupního signálu, délka oboustranného DFT spektra M C je délka jednostranného, normalizovaného, amplitudového DFT spektra Normalizované, jednostranné, amplitudové (kvadrát amplitud) DFT spektrum je hojně používáno při výpočtech dynamických parametrů v kapitole 0. Toto spektrum je v dalších kapitolách nazýváno zkráceně jen normalizované DFT spektrum a je značeno bez absolutní hodnoty, protože v této práci je využíváno jen amplitudové spektrum Hlavička, parametry DFT funkce Hlavička funkce pro výpočet DFT: int dft(double * x, unsigned long length, double ** Xabs, double ** Xphi); Blokové schéma funkce pro výpočet DFT: Hlavička funkce pro průměrování DFT: Obrázek 27 Blokové schéma funkce pro výpočet DFT int avgdft(double ** X, unsigned long K, unsigned long length, double ** Xavg); 51

57 4.1 Diskrétní Fourierova transformace DFT Blokové schéma funkce pro průměrování DFT: Obrázek 28 Blokové schéma funkce pro průměrování DFT Hlavička funkce pro výpočet jednostranného normalizovaného amplitudového DFT spektra: int avgdft(double ** X, unsigned long K, unsigned long length, double ** Xavg); Blokové schéma funkce pro výpočet normalizovaného DFT spektra: Obrázek 29 Blokové schéma funkce pro výpočet normalizovaného DFT spektra Parametry: x length Xabs Xphi X K Xavg NNPG nxa2h lhalfc pole vzorků vstupního signálu počet vzorků vstupního signálu, délka vstupních polí x, * X a Xabs amplitudové DFT, délka tohoto pole je length (volitelný výstup) fázové DFT, délka tohoto pole je length (volitelný výstup) obsahuje K amplitudových (fázových) DFT polí počet náměrů, délka pole X průměrované DFT spektrum, podle vstupu amplitudové nebo fázové, délka tohoto pole je length parametr NNPG (viz 4.2) použitého okna amplitudové jednostranné normalizované DFT, délka tohoto pole je lhalfc! délka pole nxa2h Výsledek funkcí: 0 funkce proběhla v pořádku 1 chybné vstupní parametry, např. délka pole length 52

58 4.1 Diskrétní Fourierova transformace DFT chyba při alokaci paměti není vyžadován žádný výstup, všechny výstupní parametry jsou NULL chyba při alokaci paměti Popis algoritmu DFT funkce Výpočet DFT dft(): Nejdříve jsou alokována požadovaná pole pro funkce z knihovny FFTW [11] a nachystán plán pro výpočet jedno-rozměrného DFT FFT algoritmem. Po vypočítání DFT je z komplexního spektra vypočítáno amplitudové a fázové DFT spektrum (viz Rovnice 18). Průměrování DFT avgdft(): V prvním kroku je alokováno pole Xavg po výsledné zprůměrované DFT. Pro každý index pole Xavg je ze vzorků v cyklu přes druhý rozměr pole (počet náměrů) vstupního pole X stanovena suma. Ze sumy je stanoven výsledný aritmetický průměr aktuálního prvku DFT (viz. Rovnice 19). Normalizované DFT spektrum nrmxabs2halfcalc() Na začátku je důležité ověřit délku zadaného DFT, zda je korektní a je sudá, aby bylo možné vytvořit jednostranné spektrum. Poté je vypočtena délka výstupního pole lhalfc a alokováno místo pro výstupní pole nxa2h. Poté je v cyklu provedena kopie poloviny oboustranného DFT spektra a přitom provedena úprava amplitud (viz Rovnice 20) Okénkování Při volbě vstupního signálu není jednoduché zajistit jeho koherentní vzorkování, tudíž dochází ve spektru k prosakování energie do okolních binů. Při koherentním vzorkování je hodnota k-tého binu právě hodnota jeho amplitudy. Při nekoherentním vzorkování je nutno počítat amplitudu i z postranních binů, kam energie prosákla. Výhoda okénkování: při použití konkrétního typu okna se známým řádem, je přesně definováno, do kolika postraních binů energie prosákla (šířka hlavního laloku použitého okna) a další biny jsou potlačeny definovaným útlumem okna (odstup hlavního laloku od postranních) s definovanou rychlostí útlumu (útlum postranních laloků na oktávu). Proto je nutno při nekoherentním vzorkování použít okénkování. Nekoherentní vzorkování je definováno [3]: Rovnice 22 Nekoherentní vzorkování kde fi je frekvence vstupního signálu (základní harmonické sinusovky) fs je vzorkovací frekvence M je počet vzorků vstupního signálu J je celé číslo, počet period vstupního signálu v záznamu εj je nepřesnost počtu period vstupního signálu v záznamu, εj ϵ <0; 0,5>, pro koherentní vzorkování platí εj = 0 (ideální, celistvý počet period je v záznamu). Volba typu okna závisí na aplikaci. Např. pro testování AD převodníků závisí volba okna také na jeho rozlišení. Čím vyšší rozlišení ADC, tím vyšší řád okna je nutno použít, protože je vyšší potřeba odstupu hlavního laloku od postranních. Např. pro testování více tónovým signálem je zase důležitější rychlost 53

59 4.2 Okénkování útlumu postranních laloků, pro správné stanovení SNHR (poměr signál šum) AD převodníku je nutné použít okno s malými postraními laloky, aby se potlačilo prosakování. V následující tabulce jsou uvedeny použité okna a jejich vlastnosti [3] [6] [7] [9]: Typ okna lmax [bin] SLA [db] SLFO [db/oct] ΔSNHR [db], ADC [bit] Hann 2-31, db při 6 bit ADC Hamming db při 4 bit ADC Blackman 3-58, ,4 db při 6 bit ADC Exact Blackman 3-68,24 6 2,5 db při 6 bit ADC Nuttall 4-98,17 6 5,3 db při 14 bit ADC Blackman-Harris 4-term 4-92,01 6,33 Blackman-Harris 7-term ,13 db při 24 bit ADC Tabulka 2 Okna a jejich vlastnosti kde lmax je šířka půlky hlavního laloku SLA je odstup hlavního laloku k postranním (k nejvyššímu postrannímu laloku) SLFO je útlum postranních laloků na oktávu ΔSNHR je maximální chyba výpočtu SNHR při uvedeném rozlišení ADC [3] Z výše uvedené tabulky je patrné, že pro testování AD převodníků jsou vhodná okna vyšších řádů, která mají vysoký odstup hlavního laloku od postranních. Použité okna jsou definovány koeficienty kosinových členů v následující sumě, ze které jsou vypočteny výsledné vzorky okénkovací funkce (počet kosinových členů, tedy počet koeficientů 1 udává řád okna): Rovnice 23 Výpočet okénkovací funkce kde w[n] je n-tý vzorek okénkovací funkce lmax je šířka půlky hlavního laloku okna (řád okna + 1), l ϵ <0; lmax> a k je k-tý koeficient použitého okna, suma těchto koeficientů je rovna 1 M je počet vzorků okénkovací funkce, (počet vzorků vstupního signálu) Aplikace okénkovací funkce na signál se provádí v časové oblasti vynásobením vzorků vstupního signálu odpovídajícím vzorkem použitého okna: Rovnice 24 Aplikace okénkovací funkce na signál kde xw[n] je n-tý vzorek oknénkovaného signálu x Použitím okénkovací funkce dochází k útlumu celkové energie vstupního signálu, proto je důležité stanovit parametry korigující toto zeslabení okna. Tím se zaručí správné stanovení efektivní hodnoty 54

60 4.2 Okénkování příp. amplitudy požadovaného binu v DFT spektru. Parametr okna NNPG (normalized noise power gain) [1]: Rovnice 25 Výpočet parametru NNPG použitého okna kde w[n] je n-tý vzorek okénkovací funkce M je počet vzorků okénkovací funkce, (počet vzorků vstupního signálu) Parametr NNPG používá standard IEEE 1057 [1] pro výpočet efektivní hodnoty z hlavního laloku požadovaného binu v DFT spektru. Naproti tomu standard DYNAD [3] využívá pro výpočet amplitudy konkrétního jednoho binu parametr ENBW (equivalent noise bandwidth), který je definován takto: Rovnice 26 Výpočet parametru ENBW použitého okna kde w[n] je n-tý vzorek okénkovací funkce M je počet vzorků okénkovací funkce, (počet vzorků vstupního signálu) Hlavička, parametry Hlavička funkce pro výpočet požadované okénkovací funkce: int window(unsigned char wtype, unsigned long length, double ** w, unsigned char * lmax, double * ENBW, double * NNPG); Blokové schéma pro výpočet okénkovací funkce: Obrázek 30 Blokové schéma pro výpočet okénkovací funkce Hlavička funkce pro aplikaci okénkovací funkce na vstupní signál: int windowsignal(double *x, double *w, unsigned long length, double ** xw); 55

61 4.2 Okénkování Blokové schéma pro aplikaci okénkovací funkce na vstupní signál: Obrázek 31 Blokové schéma pro aplikaci okénkovací funkce na vstupní signál Parametry: x w wtype length lmax ENBW NNPG xw pole vzorků vstupního signálu pole vzorků okénkovací funkce číslo požadovaného okna 1 okno obdélník (bez okna) 2 okno Hann 3 okno Hamming 4 okno Blackman 5 okno Exact Blackman 6 okno Nuttall 7 okno Blackman Harris 4-term 8 okno Blackman Harris 7-term počet vzorků vstupního signálu, délka pole x a pole w polovina šířky hlavního laloku použitého okna (volitelný výstup) parametr ENBW (viz Rovnice 26) použitého okna (volitelný výstup) parametr NNPG (viz Rovnice 25) použitého okna (volitelný výstup) pole vzorku vstupního oknovaného signálu, délka tohoto pole je length Výsledek funkce: 0 funkce proběhla v pořádku 1 chybné vstupní parametry, např. délka pole length 2 chyba při alokaci paměti 8 chybné číslo typu okna Popis algoritmu Vytvoření okénkovací funkce window(): Nejdříve je alokováno výstupní pole w, které bude obsahovat vzorky okénkovací funkce. Podle požadovaného typu okna se vybere odpovídající cyklus a v něm jsou vypočteny (viz Rovnice 23) podle jeho koeficientů jednotlivé vzorky okna. Zároveň je v cyklu počítána i suma vzorků okna a suma kvadrátu vzorků okna. Sumy jsou využity na konci funkce k výpočtu parametrů okna ENBW a NNPG (viz Rovnice 25 a Rovnice 26). Do výstupního parametru lmax je uložena polovina délka hlavního laloku okna, jehož hodnota odpovídá počtu koeficientů požadovaného okna. 56

62 4.2 Okénkování Aplikace okénkovací funkce na signál windowsignal() Zde jsou jednoduše vzorky signálu vynásobeny vzorky okénkovací funkce v časové oblasti (viz Rovnice 24). Pro výstupní pole xw je alokováno nové místo Určení pozice a efektivní hodnoty harmonických složek v DFT spektru Pro stanovení dynamických parametrů z frekvenční oblasti při nekoherentním vzorkování je nutno ukázat, jak identifikovat základní harmonickou složku v DFT spektru a její vyšší harmonické složky. Při určení pozice vyšších harmonických složek je nutno brát také v úvahu, že může dojít k aliasingu. Hlavní bin základní harmonické složky J je nalezen jako nejvyšší spektrální čára v normalizovaném DFT spektru (viz 4.1.1) po zamítnutí binů DC složky a jejího hlavního laloku. Po nalezení základní harmonické složky je z jejího hlavního laloku vypočítána její frekvence metodou FFT, popsanou v [5]. Frekvence základní harmonické složky se vypočítá váženým průměrem z binů hlavního laloku [5]: Rovnice 27 Výpočet frekvence základní harmonické složky v normalizovaném DFT spektru kde f f je vypočtená frekvence základní harmonické složky v binech X nrm je normalizované DFT spektrum definované (viz 4.1.1) lmax je šířka půlky hlavního laloku použitého okna (viz 4.2) l je index binu hlavního laloku, l ϵ < lmax; lmax> J je číslo binu základní harmonické, maximum v X nrm po zamítnutí DC může být v intervalu J ϵ <0 + lmax + 1; M C lmax 1> M C je délka normalizovaného DFT spektra (viz 4.1.1) Nyní po stanovení frekvence základní harmonické složky jsou stanoveny pozice binů všech harmonických složek. Výpočet je nutno rozdělit na dvě části, protože frekvence vyšší harmonické složky může překročit polovinu vzorkovací frekvence. Proto je nutno vyšetřit, zda vyšší harmonická složka je zrcadlena od počátku nebo od konce normalizovaného DFT spektra: Rovnice 28 Výpočet pozice (čísla binů) harmonických složek v normalizovaném DFT spektru kde fh bin [0] je číslo binu základní harmonické složky fh bin [h] je číslo binu (h + 1)-té vyšší harmonické složky h ϵ <1; hmax 1> f f je vypočtená frekvence základní harmonické složky (viz Rovnice 27) M je počet vzorků, délka oboustranného DFT spektra, M = 2 (M C 1) round je funkce: zaokrouhlení mod je funkce: zbytek po dělení 57

63 4.3 Určení pozice a efektivní hodnoty harmonických složek v DFT spektru Určení kvadrátu efektivní hodnoty požadované složky na konkrétním binu je dáno pouhým součtem amplitud normalizovaného DFT spektra (viz 4.1.1) ve hlavním laloku požadované složky: Rovnice 29 Výpočet efektivní hodnoty požadované složky v normalizovaném DFT spektru kde U RMS [k] je efektivní hodnota požadované složky na k-tém binu X nrm je normalizované DFT spektrum definované (viz 4.1.1) lmax je šířka půlky hlavního laloku použitého okna (viz 4.2) l je index binu hlavního laloku, l ϵ < lmax; lmax> Pozn. množina binů při výpočtu efektivní hodnoty složky, která leží nebo přesahuje hlavním lalokem bin č. 0 nebo bin č. (M C 1), musí být zkrácena. Např. efektivní hodnota DC binu se počítá jen z binů <0; lmax + 1> Hlavička, parametry Hlavička funkce pro charakterizaci (frekvence, číslo binu) základní harmonické složky: int fundchar(double * nrmxabs2half, unsigned long lhalfc, unsigned char lmax, unsigned long * fundbin, double * fundfreq, double * epsilonj); Blokové schéma funkce pro charakterizaci (frekvence, číslo binu) základní harmonické složky: Obrázek 32 Blokové schéma funkce pro charakterizaci základní harmonické složky Hlavička funkce pro lokalizaci harmonických složek v normalizovaném DFT spektru: int harmlocator(unsigned long length, double fundfreq, unsigned char hmax, unsigned char lmax, unsigned long ** fundharmbin, double ** fundharmfreq); 58

64 4.3 Určení pozice a efektivní hodnoty harmonických složek v DFT spektru Blokové schéma funkce pro lokalizaci harmonických složek v normalizovaném DFT spektru: Obrázek 33 Blokové schéma funkce lokalizace harmonických složek v normalizovaném DFT spektru Hlavička funkce pro výpočet jednostranného normalizovaného amplitudového DFT spektra: int ARMS2calc(double * nrmxabs2half, unsigned long lhalfc, unsigned char lmax, unsigned long bin, double * AMPL2, double * RMS2); Blokové schéma funkce pro výpočet efektivní hodnoty (amplitudy) požadované složky: Obrázek 34 Blokové schéma funkce pro výpočet efektivní hodnoty (amplitudy) požadované složky Parametry: nxa2h (nrmxabs2half) normalizované DFT spektrum (viz 4.1.1) lhalfc počet binů normalizovaného DFT spektra, délka pole nxa2h lmax šířka poloviny hlavního laloku v binech použitého okna (viz 4.2) hmax počet harmonických včetně základní, délka pole fhbin fundbin pozice (číslo) binu základní harmonické složky (volitelný výstup) fundfreq odhadnutá frekvence základní harmonické složky (volitelný výstup) epsilonj desetinná část rozdílu odhadnuté frekvence od čísla binu základní harmonické složky (volitelný výstup) lhalfc počet vzorků, počet binů oboustranného DFT spektra fhbin (fundharmbin) pole čísel binů harmonických složek, toto pole má délku hmax fhfreq (fundharmfreq) pole frekvencí harmonických složek, toto pole má délku hmax bin číslo binu požadované složky AMPL2 kvadrát amplitudy požadované složky RMS2 kvadrát efektivní hodnoty požadované složky 59

65 4.3 Určení pozice a efektivní hodnoty harmonických složek v DFT spektru Výsledek funkcí: 0 funkce proběhla v pořádku 1 chybné vstupní parametry, např. délka pole length 2 chyba při alokaci paměti 3 není vyžadován žádný výstup, všechny výstupní parametry jsou NULL 4 chyba, délka oboustranného DFT spektra je lichá 5 chyba, bin základní harmonické je větší jak polovina vzorkovací frekvence 0x01 varování (číslo bitu): došlo k aliasingu vyšší harmonické složky 0x02 varování (číslo bitu): některá harmonická složka leží na stejném binu jako jiná 0x04 varování (číslo bitu): některá harmonická složka překrývá svým hl. lalokem jinou 0x08 varování (číslo bitu): některá harmonická složka leží nebo se dotýká DC binu 0x10 varování (číslo bitu): některá harmonická složka leží nebo se dotýká DFThalf binu Popis algoritmu Identifikace základní harmonické složky fundchar(): V normalizovaném DFT spektru (pole nrmxabs2half) je provedeno vyhledání binu s maximální amplitudou. Cyklus hledání začíná za DC binem a jejím hlavním lalokem a končí na binu DFThalf 1. Poté je stanovena frekvence v binech základní harmonické složky váženým průměrem amplitud binů v hlavním laloku (viz 4.3). Na výstup je uložena vypočtená frekvence (fundfreq) a číslo binu (fundbin) základní harmonické složky. Lokátor harmonických složek harmlocator(): Algoritmus pro stanovení čísla binů harmonických složek využívá vypočtenou frekvenci základní harmonické z funkce fundchar(). Podle vzorce (viz Rovnice 28) jsou vypočteny pozice harmonických složek a čísla binů jsou uloženy v poli fundharmbin. Do pole fundharmfreq jsou uloženy odhadnuté frekvence (v binech) harmonických složek. Na konec je zkontrolováno, zda se některé harmonické složky nepřekrývají nebo zda nezasahují do binů DC nebo DFThalf, pokud ano, je nastaven příznak varování (výsledek funkce viz 4.3.1). Výpočet efektivní hodnoty požadované složky ARMS2calc(): Kvadrát efektivní hodnoty je stanoven jako suma hodnot binů v normalizovaném DFT spektru v hlavním laloku požadované složky. Pokud hlavní lalok požadované složky zasahuje do DC nebo DFThalf binu (nebo je požadován vypočet efektivní hodnoty DC nebo DFT half binu) je rozsah vypočtu zkrácen a je nastaven varovný příznak. Na výstup je uložen kvadrát efektivní hodnoty požadované složky (RMS2) a kvadrát amplitudy požadované složky (AMPL2). 60

66 5 Dynamické parametry AD převodníků 5. Dynamické parametry AD převodníků V této práci je pro stanovení dynamických parametrů použito testování se vstupním sinusovým signálem. Dynamické parametry lze stanovit v časové oblasti a ve frekvenční oblasti. V časové oblasti se používá metoda prokladu sinusovkou, ve frekvenční se pracuje s DFT spektrem. V této kapitole budou definovány základní dynamické parametry AD převodníků, které obsahuje knihovna addynam: - šumový práh NFL (noise floor) - celkové harmonické zkreslení THD (total harmonic distortion) - poměr signálu k falešné složce SFDR (spurious free dynamic range) - poměr signálu k šumu SNHR (signal nonharmonic ratio) - poměr signálu k šumu a zkreslení SINAD (signal, noise and distortion) - efektivní počet bitů ENOB (effective number of bits) Při stanovení dynamických parametrů z frekvenční oblasti se rovnou předpokládá nekoherentní vzorkování (viz 4.2)! Každá definice funkce je vysvětlena na konkrétním příkladě. Poté je ukázána hlavička funkce v C knihovně a příklad použití v kódu. Uvedeno je také použití funkce v konzolové aplikaci Šumový práh NFL Šumový práh je parametr určený při testování AD převodníku ve frekvenční oblasti, je to průměrná efektivní hodnota šumu, vypočtena po zamítnutí binů DC složky, základní harmonické a vyšších harmonických Definice Šumový práh NFL (Noise FLoor) je vypočítán z normalizovaného DFT spektra (viz 4.1.1) jako aritmetický průměr z množiny frekvenční binů, která neobsahuje biny DC složky a jejího hlavního laloku, biny základní harmonické složky a jejího hlavního laloku a biny vyšších harmonických složek a jejich hlavních laloků. Šumový práh je stanoven jako efektivní hodnota v jednotkách Voltů (nebo odvozené dbc, dbm apod.). Výpočet šumového prahu vystihuje následující rovnice: Rovnice 30 Výpočet šumového prahu NFL kde NFL 2 je kvadrát efektivní hodnoty šumového prahu X nrm je normalizované DFT spektrum definované (viz 4.1.1) M C je délka normalizované DFT spektra (viz 4.1.1) k je index frekvenčního binu v X nrm lmax je šířka půlky hlavního laloku použitého okna (viz 4.2) l je index binu hlavního laloku, při výpočtu NFL l ϵ <0; lmax> hmax je počet harmonických složek včetně základní h je index harmonické složky, při výpočtu NFL h ϵ <2; hmax> J je číslo binu základní harmonické v X nrm 61

67 5.1 Šumový práh NFL εj je odchylka binu základní harmonické od skutečné frekvence (viz 4.2), εj ϵ (-0,5; 0,5> round je funkce zaokrouhlení Pozor, pokud dochází k aliasingu, požadovaná vyšší harmonická složka má vyšší frekvenci než polovina vzorkovací frekvence, je nutno detekovat biny (viz. 4.3), na kterých se vyskytuje a tyto také vyřadit z výpočtu NFL namísto hj ± l. Tento vztah je odvozen ze standardu DYNAD [3]. Porovnání: zde definovaný vztah pro výpočet šumového prahu zamítá navíc biny celého DC laloku (DYNAD zamítá jen DC bin), je upraven počet vyřazených binů a ve výpočtu je používáno normalizované DFT spektrum. Příklad: Zde je uveden příklad pro výpočet šumového prahu z normalizovaného DFT spektra. V časové oblasti je použit sinusový signál o těchto parametrech: amplituda U = 51,4 mv; frekvence f = 7,6953 khz. Vstupní signál je vzorkován frekvencí fs = 100 khz, referenční napětí (amplituda) převodníku je Uref = 100 mv (fullscale = 200 mv). Vzorkovaný signál obsahuje M = 128 (M C = 65 viz Rovnice 21) vzorků a v časové oblasti je prohnán oknem prvního řádu (např. Hann), tudíž šířka půlky hlavního laloku je lmax = 2. Ve zmíněném normalizovaném DFT spektru je přítomno celkem hmax = 6 harmonických složek (včetně základní), jejichž hlavní spektrální čáry jsou na binech číslo [10; 20; 30; 39; 49; 59] (detekce viz 4.3). Obrázek 35 Příklad výpočtu šumového prahu NFL V uvedeném spektru (viz Obrázek 35) je uvedeno, ze kterých binů je šumový práh počítán, jsou to ty červené. Šedé biny jsou z výpočtu vyřazeny a jsou to biny DC složky a jejího laloku a biny všech harmonických včetně jejich laloků. Horní vynášecí čára kóty NFL znázorňuje průměrnou hodnotu šumu na jednom binu. Nyní jsou hodnoty z příkladu doplněny do vzorce (viz Rovnice 30): Rovnice 31 Příklad výpočtu šumového prahu NFL 62

68 5.1 Šumový práh NFL Číselné hodnoty normalizovaného spektra v tomto příkladě jsou k nalezení v příloze (viz Příloha č. 1), kde je spektrum podrobněji okótováno Hlavička, parametry funkce Hlavička funkce pro výpočet šumového prahu NFL: int NFLcalc(double * nrmxabs2half, unsigned long lhalfc, unsigned char lmax, unsigned char hmax, unsigned long * fundharmbin, double * NFL, double * NFL2); Blokové schéma funkce pro výpočet šumového prahu NFL: Obrázek 36 Blok funkce pro výpočet šumového prahu NFL Vstupní parametry: nxa2h (nrmxabs2half) normalizované DFT spektrum (viz 4.1.1) lhalfc počet binů normalizovaného DFT spektra, délka pole nxa2h lmax šířka poloviny hlavního laloku v binech použitého okna (viz 4.2) hmax počet harmonických včetně základní, délka pole fhbin fhbin (fundharmbin) pozice (čísla) binů harmonických Výstupní parametry: NFL šumový práh [V] (volitelný výstup) NFL2 kvadrát hodnoty šumového prahu [V 2 ] (volitelný výstup) Výsledek funkce: 0 funkce proběhla v pořádku 1 chyba ve vstupních parametrech 2 chyba při alokaci paměti 3 chyba, není požadován žádný výstup (všechny výstupy jsou NULL) 4 chyba, délka oboustranného DFT spektra je lichá 5 chyba při adresaci v poli, chybné indexy v poli fundharmbin 0x01 varování (číslo bitu): některá harmonická složka leží nebo se dotýká DC binu 0x02 varování (číslo bitu): některá harmonická složka leží nebo se dotýká DFThalf binu Popis algoritmu Výpočet šumového prahu NFL je proveden dle definice (viz Rovnice 30). Nejdříve je alokována paměť pro kopii pole nrmxabs2half o délce lhalfc normalizovaného DFT spektra, které již obsahuje 63

69 5.1 Šumový práh NFL kvadráty amplitud (viz 4.1.1) a provedena jeho kopie nrmxabs2half_, protože při výpočtu šumového prahu se bude toto pole upravovat. Nyní nastává část vyřazení binů v poli nrmxabs2half_, ze kterých se neprovádí výpočet šumového prahu. Vyřazení binů se provádí nulováním jejich amplitudy. V prvním kroku vyřazení se nuluje amplituda binu DC složky a v cyklu se nulují amplitudy binů hlavního laloku DC složky délky lmax. V druhém kroku vyřazení se v cyklu nulují amplitudy binů hmax harmonických složek (včetně základní) a ve vnořeném cyklu se nulují amplitudy binů hlavního laloku všech harmonických složek o délce ± lmax. Pozice harmonických složek (čísla binů) jsou předány ve vstupním poli fundharmbin o délce hmax. Po vyřazení všech požadovaných binů z pole nrmxabs2half_ je pole vzestupně seřazeno a provedena jeho suma (pole je seřazeno vzestupně pro lepší číselnou stabilitu při sumování). Z této sumy je aritmetickým průměrem vypočten kvadrát šumového prahu tempnfl2, v děliteli aritmetického průměru je celkový počet binů pole nrmxabs2half_ ponížen o počet všech vyřazených (nulovaných) binů. Hodnota tempnfl2 je uložena na výstup NFL2 a hodnota šumového prahu (odmocnina z tempnfl2) je uložena na výstup NFL Příklad funkce v C Použití funkce pro výpočet šumového prahu je v následujícím příkladu: #include "addynam.h" #include "io.h" int main() { unsigned char bits = 16; double Uref = 2.5; unsigned char hmax = 5; unsigned long ** ADcode; unsigned long length; unsigned long K; double * w; unsigned char lmax; double NNPG; double ** ADU; double ** xw; double ** Xabs; double * Xabsavg; double * nrmxabs2half; unsigned long lhalfc; double fundfreq; unsigned long * fundharmbin; double fundampl2; double NFL; unsigned long i; csv2adcdyn_in("adoutdyn.csv", &ADcode, &length, &K); ADU = (double **) malloc (K * sizeof(**adu)); xw = (double **) malloc (K * sizeof(**xw)); Xabs = (double **) malloc (K * sizeof(**xabs)); window(w_nuttall, length, &w, &lmax, NULL, &NNPG); for (i = 0; i!= K; i++) { AD2sig(bits, Uref, ADcode[i], length, &ADU[i]); windowsignal(adu[i], w, length, &xw[i]); dft(xw[i], length, &Xabs[i], NULL); } avgdft(xabs, K, length, &Xabsavg); nrmxabs2halfcalc(xabsavg, length, NNPG, &nrmxabs2half, &lhalfc); fundchar(nrmxabs2half, lhalfc, lmax, NULL, &fundfreq, NULL); harmlocator(length, fundfreq, hmax, lmax, &fundharmbin, NULL); ARMS2calc(nrmXabs2half,lhalfc,lmax,fundharmbin[0],&fundAMPL2, NULL); NFLcalc(nrmXabs2half, lhalfc, lmax, hmax, fundharmbin, &NFL, NULL); 64

70 5.1 Šumový práh NFL printf("noise floor NFL of this ADC is: NFL = %e [V]\n",NFL); printf("nfl = %f [dbv]\n",20*log10(nfl)); printf("nfl = %f [dbc]\n",20*log10(nfl/sqrt(fundampl2))); printf("nfl = %f [dbm (50 Ohm)]\n",20*log10((NFL*NFL/50)*1000)); alldyninonecalc(bits, Uref, ADcode, length, K, W_NUTTALL, hmax, NULL, NULL, NULL, &NFL, NULL, NULL, NULL, NULL, NULL, NULL); for (i = 0; i!= K; i++) { free(adu[i]);free(xw[i]);free(xabs[i]); } free(adu);free(xw);free(xabs); free(w);free(xabsavg);free(nrmxabs2half);free(fundharmbin); } return (0); Výstupní data 16 bitového AD převodníku (fullscale Uref = 2,5 V) jsou načteny funkcí csv2adcdyn_in() ze souboru ADoutdyn.csv (viz Příloha CD), který obsahuje 4 náměry po 2048 vzorcích. Poté je alokován první rozměr polí ADU, xw a Xabs podle počtu náměrů K. Funkcí window() (viz 4.2.1) je vypočtena okénkovací funkce okna NUTTALL a parametry NNPG ( zeslabení okna ) a lmax (polovina šířky hlavního laloku) tohoto okna. Každý náměr je v cyklu převeden funkcí AD2sig() z hodnoty kódového slova na hodnotu napětí (podle Uref), oknován funkcí windowsignal() (viz 4.2.1) a jsou vypočteny amplitudové DFT spektra. Funkce avgdft() (viz 4.1.2) vytvoří průměrované DFT spektrum a funkce nrmxabs2halfcalc() (viz 4.1.2) vypočte normalizované DFT spektrum. Poté je funkcí fundchar() nalezena v normalizovaném DFT spektru nrmxabs2half základní harmonická a její odhadnutá frekvence v binech fundfreq. Čísla binů všech harmonických složek jsou vypočteny funkcí harmlocator() a uloženy do pole fundharmbin. Kvadrát amplitudy základní harmonické na binu číslo fundharmbin[0] je vypočtena funkcí ARMS2calc(). Nyní je stanoven požadovaný šumový práh NFL AD převodníku funkcí NFLcalc() (viz 5.1.2) a výsledky jsou vypsány. Celý postup určení šumového prahu NFL od načtení vstupního souboru lze provést jedinou funkcí alldyninonecalc(). Nakonec jsou řádně uvolněna všechna dynamicky alokována pole. Výsledek: noise floor NFL of this ADC is: NFL = e-07 [V] NFL = [dbv] NFL = [dbc] NFL = [dbm (50 Ohm)] Pozn. Pro jednoduchost nejsou v tomto příkladě testovány použité funkce na výsledek. V praktickém použití je doporučeno testovat funkce na nulovost, jen tehdy je zaručeno, že funkce proběhly v pořádku. Všechny použité funkce jsou také podrobně popsány v knihovnách addynam.c a io.c Příklad funkce v konzolové aplikaci Parametr NFL určuje funkci aplikace pro výpočet šumového prahu. Výstupní kódová slova AD převodníku jsou uloženy v csv souboru ADoutdyn.csv, počet sloupců určuje počet náměrů a počet 65

71 5.1 Šumový práh NFL řádků určuje počet vzorků. Počet bitů bits = 16, referenční napětí (fullscale) Uref = 2.5 V, použité okno č. 6 (Nuttall) a požadovaný počet harmonických hmax = 5 (včetné základní). addynam.exe NFL ADoutdyn.csv addynam.exe NFL ADoutdyn.csv file nfl.csv V prvním příkladě bude výsledek šumového prahu vypsán na obrazovku (poměr, dbv, dbc a dbm), ve druhém uložen do souboru nfl.csv. Pro zobrazení nápovědy v konzole je potřeba spustit program bez parametrů nebo s parametrem?. addynam.exe -? 5.2. Celkové harmonické zkreslení THD Celkové harmonické zkreslení udává, jak velká energie vyšších harmonických složek je k základní harmonické složce Definice Celkové harmonické zkreslení THD (Total Harmonic Distortion) je odmocnina z poměru součtu kvadrátu efektivních hodnot vyšších harmonických složek ke kvadrátu efektivní hodnotě základní harmonické složky. Kvadrát efektivní hodnoty požadované složky je vypočten z normalizovaného DFT spektra (viz 4.1.1) sumou binů z hlavního laloku požadované složky. Celkové harmonické zkreslení je stanoveno jako poměr bez jednotky nebo v db. Výpočet celkového harmonického zkreslení je uveden následující rovnice: Rovnice 32 Výpočet harmonického zkreslení THD kde THD 2 je kvadrát celkového harmonického zkreslení X nrm je normalizované DFT spektrum definované (viz 4.1.1) lmax je šířka půlky hlavního laloku použitého okna (viz 4.2) l je index binu hlavního laloku, při výpočtu THD l ϵ < lmax; lmax> hmax je počet harmonických složek včetně základní h je index harmonické složky, při výpočtu THD h ϵ <2; hmax> J je číslo binu základní harmonické v X nrm εj je odchylka binu základní harmonické od skutečné frekvence (viz 4.2), εj ϵ (-0,5; 0,5> round je funkce zaokrouhlení Pozor, pokud dochází k aliasingu, požadovaná vyšší harmonická složka má vyšší frekvenci než polovina vzorkovací frekvence, je nutno detekovat biny (viz. 4.3), na kterých se vyskytuje a tyto zahrnout do výpočtu namísto hj. Tento vztah je odvozen ze standardu DYNAD [3] a ze standardu IEEE-1057 [1]. Porovnání: zde definovaný vztah pro výpočet celkového harmonického zkreslení počítá efektivní hodnotu 66

72 5.2 Celkové harmonické zkreslení THD požadované harmonické složky z normalizovaného DFT spektra a z celého jejího hlavního laloku (DYNAD počítá je z jedné spektrální čáry a používá kompenzaci amplitudy použitím frekvenční lupy v DFT spektru). Příklad: Zde je uveden příklad pro výpočet celkového harmonického zkreslení z normalizovaného DFT spektra. V časové oblasti je použit sinusový signál o těchto parametrech: amplituda U = 51,4 mv; frekvence f = 7,6953 khz. Vstupní signál je vzorkován frekvencí fs = 100 khz, referenční napětí (amplituda) převodníku je Uref = 100 mv (fullscale = 200 mv). Vzorkovaný signál obsahuje M = 128 (M C = 65 viz Rovnice 21) vzorků a v časové oblasti je prohnán oknem prvního řádu (např. Hann), tudíž šířka půlky hlavního laloku je lmax = 2. Ve zmíněném normalizovaném DFT spektru je přítomno celkem hmax = 6 harmonických složek (včetně základní), jejichž hlavní spektrální čáry jsou na binech číslo [10; 20; 30; 39; 49; 59] (detekce viz 4.3). Obrázek 37 Příklad výpočtu celkového harmonického zkreslení THD V uvedeném spektru (viz Obrázek 37) je základní harmonická složka znázorněna zeleně a vyšší harmonické složky jsou znázorněny červeně. Barevně je vždy označen celý hlavní lalok požadované harmonické složky. Hodnoty ze znázorněného příkladu jsou doplněny do vzorce (viz Rovnice 32): Rovnice 33 Příklad výpočtu harmonického zkreslení THD Číselné hodnoty normalizovaného spektra v tomto příkladě jsou k nalezení v příloze (viz Příloha č. 1), kde je spektrum podrobněji okótováno Hlavička, parametry funkce Hlavička funkce pro výpočet celkového harmonického zkreslení THD: int THDcalc(double * nrmxabs2half, unsigned long lhalfc, unsigned char lmax, unsigned char hmax, unsigned long * fundharmbin, double * THD); 67

73 5.2 Celkové harmonické zkreslení THD Blokové schéma funkce pro výpočet celkového harmonického zkreslení THD: Obrázek 38 Blok funkce pro výpočet celkového harmonického zkreslení THD Vstupní parametry: nxa2h (nrmxabs2half) normalizované DFT spektrum (viz 4.1.1) lhalfc počet binů normalizovaného DFT spektra, délka pole nxa2h lmax šířka poloviny hlavního laloku v binech použitého okna (viz 4.2) hmax počet harmonických včetně základní, délka pole fhbin fhbin (fundharmbin) pozice (čísla) binů harmonických Výstupní parametry: THD celkové harmonické zkreslení [poměr] Výsledek funkce: 0 funkce proběhla v pořádku 1 chyba ve vstupních parametrech 2 chyba při alokaci paměti 4 chyba, délka oboustranného DFT spektra je lichá 5 chyba při adresaci v poli, chybné indexy v poli fundharmbin 0x01 varování (číslo bitu): některá harmonická složka leží nebo se dotýká DC binu 0x02 varování (číslo bitu): některá harmonická složka leží nebo se dotýká DFThalf binu Popis algoritmu Výpočet celkového harmonického zkreslení THD je proveden dle definice (viz Rovnice 32). Pozice harmonických složek (čísla binů) jsou předány ve vstupním poli fundharmbin o délce hmax. Nejdříve je stanoven kvadrát efektivní hodnoty základní harmonické složky funkcí ARMS2calc() (viz 4.3). V dalším kroku jsou stanoveny v cyklu kvadráty efektivních hodnot hmax harmonických složek funkcí ARMS2calc() a zároveň je stanovena jejich suma. Cyklus proběhne od nejvyšší harmonické k nejnižší, protože se předpokládá, že nejvyšší harmonická složka má nejmenší energii (kvůli číselné stabilitě sumování). Celkové harmonické zkreslení je určeno jako odmocnina z poměru kvadrátu efektivní hodnoty základní harmonické k sumě kvadrátů efektivních hodnot vyšších harmonických složek a hodnota je uložena na výstup THD Příklad funkce v C Použití funkce pro výpočet celkového harmonického zkreslení je v následujícím příkladu: 68

74 5.2 Celkové harmonické zkreslení THD #include "addynam.h" #include "io.h" int main() { unsigned char bits = 16; double Uref = 2.5; unsigned char hmax = 5; unsigned long ** ADcode; unsigned long length; unsigned long K; double * w; unsigned char lmax; double NNPG; double ** ADU; double ** xw; double ** Xabs; double * Xabsavg; double * nrmxabs2half; unsigned long lhalfc; double fundfreq; unsigned long * fundharmbin; double fundampl2; double THD; double harmampl2; unsigned long i; unsigned char j; csv2adcdyn_in("adoutdyn.csv", &ADcode, &length, &K); ADU = (double **) malloc (K * sizeof(**adu)); xw = (double **) malloc (K * sizeof(**xw)); Xabs = (double **) malloc (K * sizeof(**xabs)); window(w_nuttall, length, &w, &lmax, NULL, &NNPG); for (i = 0; i!= K; i++) { AD2sig(bits, Uref, ADcode[i], length, &ADU[i]); windowsignal(adu[i], w, length, &xw[i]); dft(xw[i], length, &Xabs[i], NULL); } avgdft(xabs, K, length, &Xabsavg); nrmxabs2halfcalc(xabsavg, length, NNPG, &nrmxabs2half, &lhalfc); fundchar(nrmxabs2half, lhalfc, lmax, NULL, &fundfreq, NULL); harmlocator(length, fundfreq, hmax, lmax, &fundharmbin, NULL); ARMS2calc(nrmXabs2half,lhalfc,lmax,fundharmbin[0],&fundAMPL2,NULL); THDcalc(nrmXabs2half, lhalfc, lmax, hmax, fundharmbin, &THD); printf("total harmonic distortion THD of this ADC is: THD = %e [-]\n",thd); printf(" THD = %f [db]\n",20*log10(thd)); printf("fundamental detected at %d BIN, est. freq. %f * fs, amplitude %e V, amplitude %f dbfs\n", fundharmbin[0], fundfreq/length, sqrt(fundampl2), 20*log10(sqrt(fundAMPL2)/(Uref/2))); for (j = 1; j!= hmax; j++) { ARMS2calc(nrmXabs2half,lhalfc,lmax,fundharmbin[j],&harmAMPL2,NULL); printf("%d.harmonic detected at %d BIN,amplitude %e V, %f dbc\n",j+1, fundharmbin[j],sqrt(harmampl2),20*log10(sqrt(harmampl2/fundampl2))); } alldyninonecalc(bits, Uref, ADcode, length, K, W_NUTTALL, hmax, NULL, NULL, NULL, NULL, &THD, NULL, NULL, NULL, NULL, NULL); for (i = 0; i!= K; i++) { free(adu[i]);free(xw[i]);free(xabs[i]); 69

75 5.2 Celkové harmonické zkreslení THD } free(adu);free(xw);free(xabs); free(w);free(xabsavg);free(nrmxabs2half);free(fundharmbin); } return (0); Výstupní data 16 bitového AD převodníku (fullscale Uref = 2,5 V) jsou načteny funkcí csv2adcdyn_in() ze souboru ADoutdyn.csv (viz Příloha CD), který obsahuje 4 náměry po 2048 vzorcích. Poté je alokován první rozměr polí ADU, xw a Xabs podle počtu náměrů K. Funkcí window() (viz 4.2.1) je vypočtena okénkovací funkce okna NUTTALL a parametry NNPG ( zeslabení okna ) a lmax (polovina šířky hlavního laloku) tohoto okna. Každý náměr je v cyklu převeden funkcí AD2sig() z hodnoty kódového slova na hodnotu napětí (podle Uref), oknován funkcí windowsignal() (viz 4.2.1) a jsou vypočteny amplitudové DFT spektra. Funkce avgdft() (viz 4.1.2) vytvoří průměrované DFT spektrum a funkce nrmxabs2halfcalc() (viz 4.1.2) vypočte normalizované DFT spektrum. Poté je funkcí fundchar() nalezena v normalizovaném DFT spektru nrmxabs2half základní harmonická složka a její odhadnutá frekvence v binech fundfreq. Čísla binů všech harmonických složek jsou vypočteny funkcí harmlocator() a uloženy do pole fundharmbin. Kvadrát amplitudy základní harmonické složky na binu číslo fundharmbin[0] je vypočtena funkcí ARMS2calc(). Nyní je stanoveno požadované harmonické zkreslení THD AD převodníku funkcí THDcalc() (viz 5.2.2) a výsledky jsou vypsány. Ve výpisu výsledků je použita funkce ARMS2calc() pro výpočet kvádrátu amplitudy vyšších harmonických složek. Celý postup určení harmonického zkreslení THD od načtení vstupního souboru lze provést jedinou funkcí alldyninonecalc(). Nakonec jsou řádně uvolněna všechna dynamicky alokována pole. Výsledek: total harmonic distortion THD of this ADC is: THD = e-04 [-] THD = [db] fundamental detected at 430 BIN, est. freq * fs, amplitude e+00 V, amplitude -1, dbfs 2. harmonic detected at 860 BIN, amplitude e-04 V, dbc 3. harmonic detected at 758 BIN, amplitude e-05 V, dbc 4. harmonic detected at 329 BIN, amplitude e-05 V, dbc 5. harmonic detected at 101 BIN, amplitude e-06 V, dbc Pozn. Pro jednoduchost nejsou v tomto příkladě testovány použité funkce na výsledek. V praktickém použití je doporučeno testovat funkce na nulovost, jen tehdy je zaručeno, že funkce proběhly v pořádku. Všechny použité funkce jsou také podrobně popsány v knihovnách addynam.c a io.c Příklad funkce v konzolové aplikaci Parametr THD určuje funkci aplikace pro výpočet celkového harmonického zkreslení. Výstupní kódová slova AD převodníku jsou uloženy v csv souboru ADoutdyn.csv, počet sloupců určuje počet náměrů a počet řádků určuje počet vzorků. Počet bitů bits = 16, referenční napětí (fullscale) Uref = 2.5 V, použité okno č. 6 (Nuttall) a požadovaný počet harmonických hmax = 5 (včetné základní). addynam.exe THD ADoutdyn.csv addynam.exe THD ADoutdyn.csv file thd.csv 70

76 5.2 Celkové harmonické zkreslení THD V prvním příkladě bude výsledek celkového harmonického zkreslení vypsán na obrazovku (poměr, db), ve druhém uložen do souboru thd.csv. Pro zobrazení nápovědy v konzole je potřeba spustit program bez parametrů nebo s parametrem?. addynam.exe -? 5.3. Poměr signálu k falešné složce SFDR Poměr signálu k falešné složce udává, jak velký je odstup základní harmonické složky od jiné nejsilnější složky ve spektru Definice Poměr signálu k falešné složce SFDR (Spurious Free Dynamic Range) je poměr efektivní hodnoty základní harmonické složky k efektivní hodnotě další nejvyšší složky (falešná) nalezené ve spektru po vyřazení DC složky a jejího hlavního laloku. Kvadrát efektivní hodnoty požadované složky je vypočten z normalizovaného DFT spektra (viz 4.1.1) sumou binů z hlavního laloku požadované složky. Poměr signálu k falešné složce je stanoven jako poměr bez jednotky nebo v dbc. Výpočet celkového harmonického zkreslení je uveden následující rovnice: Rovnice 34 Výpočet poměru signálu k falešné složce SFDR kde SFDR 2 je kvadrát poměru signálu k falešné složce X nrm je normalizované DFT spektrum definované (viz 4.1.1) lmax je šířka půlky hlavního laloku použitého okna (viz 4.2) l je index binu hlavního laloku, při výpočtu SFDR l ϵ < lmax; lmax> J je číslo binu základní harmonické v X nrm S je číslo binu falešné složky S, maximální složka mimo biny DC a základní harmonické Tento vztah je odvozen ze standardu IEEE-1057 [1]. Porovnání: zde definovaný vztah je odvozen pro nekoherentní vzorkování s použitím okénkování v časové oblasti, pro koherentní vzorkování je lmax = 0. Standard DYNAD [3] pro nalezení falešné složky zamítá DC bin, biny základní harmonické složky a jejího laloku, ale navíc i biny vyšších harmonických složek a jejich laloků a zamítá i intermodulační zkreslení. Pozn. autora: Zde je odvozená definice poměru signálu k falešné složce z normy IEEE-1057 [1], protože z anglického názvu Spurious Free Dynamic Range vyplývá, že se jedná o výšku rozsahu, která je k dispozici falešným složkám pro dosažení úrovně základní harmonické. Proto v definici je bin falešné složky hledán v celém spektru jen kromě hlavního laloku DC složky a hlavního laloku základní harmonické složky (viz následující příklad). 71

77 5.3 Poměr signálu k falešné složce SFDR Příklad: Zde je uveden příklad pro nalezení falešné složky a výpočet poměru signálu k falešné složce z normalizovaného DFT spektra. V časové oblasti je použit sinusový signál o těchto parametrech: amplituda U = 51,4 mv; frekvence f = 7,6953 khz. Vstupní signál je vzorkován frekvencí fs = 100 khz, referenční napětí (amplituda) převodníku je Uref = 100 mv (fullscale = 200 mv). Vzorkovaný signál obsahuje M = 128 (M C = 65 viz Rovnice 21) vzorků a v časové oblasti je prohnán oknem prvního řádu (např. Hann), tudíž šířka půlky hlavního laloku je lmax = 2. Ve zmíněném normalizovaném DFT spektru je přítomno celkem hmax = 6 harmonických složek (včetně základní), jejichž hlavní spektrální čáry jsou na binech číslo [10; 20; 30; 39; 49; 59] (detekce viz 4.3). Obrázek 39 Příklad výpočtu poměru signálu k falešné složce SFDR V uvedeném spektru (viz Obrázek 39) je základní harmonická složka znázorněna zeleně a nalezená falešná složka je znázorněna červeně. Falešná složka se hledá na černých (červených) binech. Z hledání maximálního binu (falešné složky) jsou vyřazeny šedé DC biny a zelené biny základní harmonické. Barevně je vždy označen celý hlavní lalok požadované složky. Hodnoty z příkladu jsou doplněny do definičního vzorce (viz Rovnice 34): Rovnice 35 Příklad výpočtu poměru signálu k falešné složce SFDR Číselné hodnoty normalizovaného spektra v tomto příkladě jsou k nalezení v příloze (viz Příloha č. 1), kde je spektrum podrobněji okótováno Hlavička, parametry funkce Hlavička funkce pro výpočet poměru signálu k falešné složce SFDR: int SFDRcalc(double * nrmxabs2half, unsigned long lhalfc, unsigned char lmax, unsigned long fundbin, double * SFDR); 72

78 5.3 Poměr signálu k falešné složce SFDR Blokové schéma funkce pro výpočet poměru signálu k falešné složce SFDR: Obrázek 40 Blok funkce pro výpočet poměru signálu k falešné složce SFDR Vstupní parametry: nxa2h (nrmxabs2half) normalizované DFT spektrum (viz 4.1.1) lhalfc počet binů normalizovaného DFT spektra, délka pole nxa2h lmax šířka poloviny hlavního laloku v binech použitého okna (viz 4.2) hmax počet harmonických včetně základní, délka pole fhbin fundbin pozice (číslo) binu základní harmonické složky Výstupní parametry: SFDR poměr signálu k falešné složce [ ] Výsledek funkce: 0 funkce proběhla v pořádku 1 chyba ve vstupních parametrech 2 chyba při alokaci paměti 4 chyba, délka oboustranného DFT spektra je lichá 5 chyba při adresaci v poli, chybný index v proměnné fundbin 0x01 varování (číslo bitu): základní harmonická nebo falešná složka leží nebo se dotýká DC binu 0x02 varování (číslo bitu): základní harmonická nebo falešná složka leží nebo se dotýká DFThalf binu Popis algoritmu Výpočet poměru signálu k falešné složce SFDR je proveden dle definice (viz Rovnice 34). Nejdříve je alokována paměť pro kopii pole nrmxabs2half o délce lhalfc normalizovaného DFT spektra, které již obsahuje kvadráty amplitud (viz 4.1.1) a provedena jeho kopie nrmxabs2half_, protože při výpočtu poměru signálu k falešné složce se bude toto pole upravovat. Nyní nastává část vyřazení binů v poli nrmxabs2half_, které nesmí být zahrnuty při hledání falešné složky. Vyřazení binů se provádí nulováním jejich amplitudy. Nejdříve se nuluje amplituda binu DC složky a základní harmonické složky a poté v cyklu se nulují amplitudy binů hlavního laloku o délce lmax u DC složky a délce ± lmax u základní harmonické složky. Pozice základní harmonické složky (číslo binu) je předána ve vstupním parametru fundbin. Po vyřazení všech požadovaných binů z pole nrmxabs2half_ je v poli vyhledána (funkcí findmax()) nejvyšší amplituda a její bin je uložen v proměnné spurbin. Poté je funkcí ARMS2calc() (viz 4.3) určen kvadrát efektivní hodnoty základní harmonické a nalezené falešné složky. 73

79 5.3 Poměr signálu k falešné složce SFDR Poměr signálu k falešné složce je určen jako odmocnina z poměru kvadrátu efektivní hodnoty základní harmonické a kvadrátu efektivní hodnoty falešné složky. Výsledná hodnota je uložena na výstup SFDR Příklad funkce v C Použití funkce pro stanovení poměru signálu k falešné složce je v následujícím příkladu: #include "addynam.h" #include "io.h" int main() { unsigned char bits = 16; double Uref = 2.5; unsigned char hmax = 5; unsigned long ** ADcode; unsigned long length; unsigned long K; double * w; unsigned char lmax; double NNPG; double ** ADU; double ** xw; double ** Xabs; double * Xabsavg; double * nrmxabs2half; unsigned long lhalfc; unsigned long fundbin; double SFDR; unsigned long i; csv2adcdyn_in("adoutdyn.csv", &ADcode, &length, &K); ADU = (double **) malloc (K * sizeof(**adu)); xw = (double **) malloc (K * sizeof(**xw)); Xabs = (double **) malloc (K * sizeof(**xabs)); window(w_nuttall, length, &w, &lmax, NULL, &NNPG); for (i = 0; i!= K; i++) { AD2sig(bits, Uref, ADcode[i], length, &ADU[i]); windowsignal(adu[i], w, length, &xw[i]); dft(xw[i], length, &Xabs[i], NULL); } avgdft(xabs, K, length, &Xabsavg); nrmxabs2halfcalc(xabsavg, length, NNPG, &nrmxabs2half, &lhalfc); fundchar(nrmxabs2half, lhalfc, lmax, &fundbin, NULL, NULL); SFDRcalc(nrmXabs2half, lhalfc, lmax, fundbin, &SFDR); printf("spurious free dynamic range SFDR of this ADC is: SFDR = %e [-]\n",sfdr); printf(" SFDR = %f [db]\n",20*log10(sfdr)); alldyninonecalc(bits, Uref, ADcode, length, K, W_NUTTALL, hmax, NULL, NULL, NULL, NULL, NULL, &SFDR, NULL, NULL, NULL, NULL); for (i = 0; i!= K; i++) { free(adu[i]);free(xw[i]);free(xabs[i]); } free(adu);free(xw);free(xabs); free(w);free(xabsavg);free(nrmxabs2half); 74

80 5.3 Poměr signálu k falešné složce SFDR } return (0); Výstupní data 16 bitového AD převodníku (fullscale Uref = 2,5 V) jsou načteny funkcí csv2adcdyn_in() ze souboru ADoutdyn.csv (viz Příloha CD), který obsahuje 4 náměry po 2048 vzorcích. Poté je alokován první rozměr polí ADU, xw a Xabs podle počtu náměrů K. Funkcí window() (viz 4.2.1) je vypočtena okénkovací funkce okna NUTTALL a parametry NNPG ( zeslabení okna ) a lmax (polovina šířky hlavního laloku) tohoto okna. Každý náměr je v cyklu převeden funkcí AD2sig() z hodnoty kódového slova na hodnotu napětí (podle Uref), oknován funkcí windowsignal() (viz 4.2.1) a jsou vypočteny amplitudové DFT spektra. Funkce avgdft() (viz 4.1.2) vytvoří průměrované DFT spektrum a funkce nrmxabs2halfcalc() (viz 4.1.2) vypočte normalizované DFT spektrum. Poté je funkcí fundchar() nalezena v normalizovaném DFT spektru nrmxabs2half základní harmonická složka a je určeno její číslo binu fundbin. Nyní je stanoven požadovaný poměr signálu k falešné složce SFDR AD převodníku funkcí SFDRcalc() (viz 5.3.2) a výsledky jsou vypsány. Celý postup určení poměru signálu k falešné složce SFDR od načtení vstupního souboru lze provést jedinou funkcí alldyninonecalc(). Nakonec jsou řádně uvolněna všechna dynamicky alokována pole. Výsledek: spurious free dynamic range SFDR of this ADC is: SFDR = e+03 [-] SFDR = [db] Pozn. Pro jednoduchost nejsou v tomto příkladě testovány použité funkce na výsledek. V praktickém použití je doporučeno testovat funkce na nulovost, jen tehdy je zaručeno, že funkce proběhly v pořádku. Všechny použité funkce jsou také podrobně popsány v knihovnách addynam.c a io.c Příklad funkce v konzolové aplikaci Parametr SFDR určuje funkci aplikace pro výpočet poměru signálu k falešné složce. Výstupní kódová slova AD převodníku jsou uloženy v csv souboru ADoutdyn.csv, počet sloupců určuje počet náměrů a počet řádků určuje počet vzorků. Počet bitů bits = 16, referenční napětí (fullscale) Uref = 2.5 V, použité okno č. 6 (Nuttall) a požadovaný počet harmonických hmax = 5 (včetné základní). addynam.exe SFDR ADoutdyn.csv addynam.exe SFDR ADoutdyn.csv file sfdr.csv V prvním příkladě bude výsledek poměru signálu k falešné složce vypsán na obrazovku (poměr, db), ve druhém uložen do souboru sfdr.csv. Pro zobrazení nápovědy v konzole je potřeba spustit program bez parametrů nebo s parametrem?. addynam.exe -? 5.4. Poměr signálu k šumu SNHR Poměr signál k šumu (SNHR, někdy značený SNR) udává odstup efektivní hodnoty signálu od celkové energie šumu. 75

81 5.4 Poměr signálu k šumu SNHR Definice Poměr signál k šumu SNHR (Signal NonHarmonic Ratio) je poměr efektivní hodnoty základní harmonické složky ponížené o šumový práh NFL k efektivní hodnotě celkového šumu. Kvadrát efektivní hodnoty požadované složky je vypočten z normalizovaného DFT spektra (viz 4.1.1) sumou jejích binů. Celkový šum je vypočten z binů ve spektru po vyřazení DC složky a jejího hlavního laloku a základní harmonické složky a jejího hlavního laloku. Tyto vyřazené biny jsou ve výpočtu nahrazeny šumovým prahem NFL. Poměr signál k šumu je stanoven jako poměr bez jednotky nebo v db. Výpočet poměru signálu k šumu je uveden v následující rovnici: Rovnice 36 Výpočet poměru signálu k šumu SNHR kde SNHR 2 je kvadrát poměru signálu k šumu NFL 2 je kvadrát efektivní hodnoty šumového prahu (viz 5.1) X nrm je normalizované DFT spektrum definované (viz 4.1.1) M C je délka normalizovaného DFT spektra (viz 4.1.1) k je index frekvenčního binu v X nrm lmax je šířka půlky hlavního laloku použitého okna (viz 4.2) l je index binu hlavního laloku, při výpočtu SNHR l ϵ <0; lmax> hmax je počet harmonických složek včetně základní h je index harmonické složky, při výpočtu SNHR h ϵ <2; hmax> J je číslo binu základní harmonické v X nrm εj je odchylka binu základní harmonické od skutečné frekvence (viz 4.2), εj ϵ (-0,5; 0,5> round je funkce zaokrouhlení Pozor, pokud dochází k aliasingu, některá vyšší harmonická složka má vyšší frekvenci než polovina vzorkovací frekvence, je nutno detekovat biny (viz. 4.3), na kterých se vyskytuje a tyto zahrnout do výpočtu namísto hj. Tento vztah je odvozen ze standardu DYNAD [3]. Porovnání: zde definovaný vztah pro výpočet poměru signálu k šumu nahrazuje hodnotou šumového prahu biny celého DC laloku, celého laloku základní harmonické složky a celých laloků vyšších harmonických složek. V čitateli SNHR je efektivní hodnota základní harmonické složky ponížena o šumový práh v celém jejím laloku. Je upraven počet binů nahrazených šumovým prahem a ve výpočtu je používáno normalizované DFT spektrum. Příklad: Zde je uveden příklad pro výpočet poměru signálu k šumu z normalizovaného DFT spektra. V časové oblasti je použit sinusový signál o těchto parametrech: amplituda U = 51,4 mv; frekvence f = 7,6953 khz. Vstupní signál je vzorkován frekvencí fs = 100 khz, referenční napětí (amplituda) převodníku je Uref = 100 mv (fullscale = 200 mv). Vzorkovaný signál obsahuje M = 128 (M C = 65 viz Rovnice 21) vzorků a v časové oblasti je prohnán oknem prvního řádu (např. Hann), tudíž šířka půlky hlavního laloku je lmax = 2. Ve zmíněném normalizovaném DFT spektru je přítomno celkem hmax = 6 76

82 5.4 Poměr signálu k šumu SNHR harmonických složek (včetně základní), jejichž hlavní spektrální čáry jsou na binech číslo [10; 20; 30; 39; 49; 59] (detekce viz 4.3). Kvadrát efektivní hodnoty šumového prahu NFL 2 = 12,66 mv 2. Obrázek 41 Příklad výpočtu poměru signálu k šumu SNHR V uvedeném spektru (viz Obrázek 41) je znázorněna zeleně základní harmonická složka, červeně biny šumu, šedě vyřazené biny (DC, vyšší harmonické), které jsou ve výpočtu nahrazeny hodnotou šumového prahu NFL. Spodní vynášecí čára kóty SNHR znázorňuje hodnotu celkové energie šumu. Základní harmonická složka je ponížena o malé červené úseky, které znázorňují hodnotu šumového prahu NFL. V základu spektrální čar DC a vyšších harmonických složek jsou mále červené úseky, které znázorňují nahrazení těchto binů šumovým prahem NFL. Nyní jsou hodnoty z příkladu doplněny do vzorce (viz Rovnice 36): Rovnice 37 Příklad výpočtu poměru signálu k šumu SNHR Číselné hodnoty normalizovaného spektra v tomto příkladě jsou k nalezení v příloze (viz Příloha č. 1), kde je spektrum podrobněji okótováno Hlavička, parametry funkce Hlavička funkce pro výpočet poměru signálu k šumu SNHR: int SNHRcalc(double * nrmxabs2half, unsigned long lhalfc, unsigned char lmax, unsigned char hmax, unsigned long * fundharmbin, double * SNHR); 77

83 5.4 Poměr signálu k šumu SNHR Blokové schéma funkce pro výpočet poměru signálu k šumu SNHR: Obrázek 42 Blok funkce pro výpočet poměru signálu k šumu SNHR Vstupní parametry: nxa2h (nrmxabs2half) normalizované DFT spektrum (viz 4.1.1) lhalfc počet binů normalizovaného DFT spektra, délka pole nxa2h lmax šířka poloviny hlavního laloku v binech použitého okna (viz 4.2) hmax počet harmonických včetně základní, délka pole fhbin fhbin (fundharmbin) pozice (čísla) binů harmonických Výstupní parametry: SNHR poměr signálu k šumu [ ] Výsledek funkce: 0 funkce proběhla v pořádku 1 chyba ve vstupních parametrech 2 chyba při alokaci paměti 4 chyba, délka oboustranného DFT spektra je lichá 5 chyba při adresaci v poli, chybné indexy v poli fundharmbin 0x01 varování (číslo bitu): některá harmonická složka leží nebo se dotýká DC binu 0x02 varování (číslo bitu): některá harmonická složka leží nebo se dotýká DFThalf binu Popis algoritmu Výpočet poměru signálu k šumu SNHR je proveden dle definice (viz Rovnice 36). Nejdříve je alokována paměť pro kopii pole nrmxabs2half o délce lhalfc normalizovaného DFT spektra, které již obsahuje kvadráty amplitud (viz 4.1.1) a provedena jeho kopie nrmxabs2half_, protože při výpočtu poměru signálu k šumu se bude toto pole upravovat. Nyní nastává část vyřazení binů v poli nrmxabs2half_, ze kterých se neprovádí výpočet poměru signálu k šumu. Vyřazení binů se provádí nulováním jejich amplitudy. V prvním kroku vyřazení se nuluje amplituda binu DC složky a v cyklu se nulují amplitudy binů hlavního laloku DC složky délky lmax. V druhém kroku vyřazení se v cyklu nulují amplitudy binů hmax harmonických složek (včetně základní) a ve vnořeném cyklu se nulují amplitudy binů hlavního laloku všech harmonických složek o délce ± lmax. Pozice harmonických složek (čísla binů) jsou předány ve vstupním poli fundharmbin o délce hmax. Po vyřazení všech požadovaných binů z pole nrmxabs2half_ je pole vzestupně seřazeno a provedena jeho suma noise2, která obsahuje energii šumu (pole je seřazeno vzestupně pro lepší číselnou stabilitu při sumování). Pomocí funkce NFLcalc (viz 5.1.2) je proveden výpočet kvadrát šumového prahu NFL2 (šumový práh lze vypočítat i ze 78

84 5.4 Poměr signálu k šumu SNHR sumy noise2, ale kvůli možné změně/aktualizace definice dynamických parametrů je schválně použit výpočet odděleně). Nyní je potřeba k sumě noise2 připočítat šum z vyřazených binů, proto se vyřazené biny (DC, základní a vyšší harmonické a jejich hlavní laloky) nahradí hodnotou kvadrátu šumového prahu NFL2. K sumě noise2 je tedy připočten NFL2 násobený celkovým počtem vyřazených binů. Dále je vypočten funkcí ARMS2calc() kvadrát efektivní hodnoty základní harmonické složky. Protože jsou šumovým prahem nahrazeny i biny základní harmonické složky je nutno ponížit energii základní harmonické složky před vypočtením poměru. Proto je kvadrát efektivní hodnoty základní harmonické složky ponížen tolikrát o hodnotu kvadrátu šumového prahu, kolik binů hlavní lalok základní harmonické složky obsazuje (hlavní bin základní harmonické složky ± šířka hlavního laloku lmax). Nyní lze stanovit poměr signál k šumu jako odmocnina poníženého kvadrátu efektivní hodnoty základní harmonické složky a celkové energie šumu noise2 a výsledná hodnota je uložena na výstup SNHR Příklad funkce v C Použití funkce pro výpočet poměru signálu k šumu je v následujícím příkladu: #include "addynam.h" #include "io.h" int main() { unsigned char bits = 16; double Uref = 2.5; unsigned char hmax = 5; unsigned long ** ADcode; unsigned long length; unsigned long K; double * w; unsigned char lmax; double NNPG; double ** ADU; double ** xw; double ** Xabs; double * Xabsavg; double * nrmxabs2half; unsigned long lhalfc; double fundfreq; unsigned long * fundharmbin; double SNHR; unsigned long i; csv2adcdyn_in("adoutdyn.csv", &ADcode, &length, &K); ADU = (double **) malloc (K * sizeof(**adu)); xw = (double **) malloc (K * sizeof(**xw)); Xabs = (double **) malloc (K * sizeof(**xabs)); window(w_nuttall, length, &w, &lmax, NULL, &NNPG); for (i = 0; i!= K; i++) { AD2sig(bits, Uref, ADcode[i], length, &ADU[i]); windowsignal(adu[i], w, length, &xw[i]); dft(xw[i], length, &Xabs[i], NULL); } avgdft(xabs, K, length, &Xabsavg); nrmxabs2halfcalc(xabsavg, length, NNPG, &nrmxabs2half, &lhalfc); fundchar(nrmxabs2half, lhalfc, lmax, NULL, &fundfreq, NULL); harmlocator(length, fundfreq, hmax, lmax, &fundharmbin, NULL); SNHRcalc(nrmXabs2half, lhalfc, lmax, hmax, fundharmbin, &SNHR); printf("signal nonharmonic ratio SNHR of this ADC is: SNHR = %e [-]\n",snhr); 79

85 5.4 Poměr signálu k šumu SNHR printf(" SNHR = %f [db]\n",20*log10(snhr)); alldyninonecalc(bits, Uref, ADcode, length, K, W_NUTTALL, hmax, NULL, NULL, NULL, NULL, NULL, NULL, &SNHR, NULL, NULL, NULL); for (i = 0; i!= K; i++) { free(adu[i]);free(xw[i]);free(xabs[i]); } free(adu);free(xw);free(xabs); free(w);free(xabsavg);free(nrmxabs2half);free(fundharmbin); } return (0); Výstupní data 16 bitového AD převodníku (fullscale Uref = 2,5 V) jsou načteny funkcí csv2adcdyn_in() ze souboru ADoutdyn.csv (viz Příloha CD), který obsahuje 4 náměry po 2048 vzorcích. Poté je alokován první rozměr polí ADU, xw a Xabs podle počtu náměrů K. Funkcí window() (viz 4.2.1) je vypočtena okénkovací funkce okna NUTTALL a parametry NNPG ( zeslabení okna ) a lmax (polovina šířky hlavního laloku) tohoto okna. Každý náměr je v cyklu převeden funkcí AD2sig() z hodnoty kódového slova na hodnotu napětí (podle Uref), oknován funkcí windowsignal() (viz 4.2.1) a jsou vypočteny amplitudové DFT spektra. Funkce avgdft() (viz 4.1.2) vytvoří průměrované DFT spektrum a funkce nrmxabs2halfcalc() (viz 4.1.2) vypočte normalizované DFT spektrum. Poté je funkcí fundchar() nalezena v normalizovaném DFT spektru nrmxabs2half základní harmonická složka a její odhadnutá frekvence v binech fundfreq. Čísla binů všech harmonických složek jsou vypočteny funkcí harmlocator() a uloženy do pole fundharmbin. Nyní je stanoven požadovaný poměr signálu k šumu SNHR AD převodníku funkcí SNHRcalc() (viz 5.4.2) a výsledky jsou vypsány. Celý postup určení poměru signálu k šumu SNHR od načtení vstupního souboru lze provést jedinou funkcí alldyninonecalc(). Nakonec jsou řádně uvolněna všechna dynamicky alokována pole. Výsledek: signal nonharmonic ratio SNHR of this ADC is: SNHR = e+04 [-] SNHR = [db] Pozn. Pro jednoduchost nejsou v tomto příkladě testovány použité funkce na výsledek. V praktickém použití je doporučeno testovat funkce na nulovost, jen tehdy je zaručeno, že funkce proběhly v pořádku. Všechny použité funkce jsou také podrobně popsány v knihovnách addynam.c a io.c Příklad funkce v konzolové aplikaci Parametr SNHR určuje funkci aplikace pro výpočet poměru signálu k šumu. Výstupní kódová slova AD převodníku jsou uloženy v csv souboru ADoutdyn.csv, počet sloupců určuje počet náměrů a počet řádků určuje počet vzorků. Počet bitů bits = 16, referenční napětí (fullscale) Uref = 2.5 V, použité okno č. 6 (Nuttall) a požadovaný počet harmonických hmax = 5 (včetné základní). addynam.exe SNHR ADoutdyn.csv addynam.exe SNHR ADoutdyn.csv file snhr.csv 80

86 5.4 Poměr signálu k šumu SNHR V prvním příkladě bude výsledek poměru signálu k šumu vypsán na obrazovku (poměr, db), ve druhém uložen do souboru snhr.csv. Pro zobrazení nápovědy v konzole je potřeba spustit program bez parametrů nebo s parametrem?. addynam.exe -? 5.5. Poměr signálu k šumu a zkreslení SINAD a efektivní počet bitů ENOB Poměr signál k šumu a zkreslení SINAD udává odstup efektivní hodnoty signálu od energie celkového harmonického zkreslení a energie šumu. Pomocí parametru SINAD se vypočítává i efektivní rozlišitelnost efektivní počet bitů AD převodníku Definice Poměr signál k šumu a zkreslení SINAD (SIgnal Noise And Distrortion) je poměr efektivní hodnoty základní harmonické složky ponížené o šumový práh NFL k efektivní hodnotě celkového harmonického zkreslení a celkového šumu. Kvadrát efektivní hodnoty požadované složky je vypočten z normalizovaného DFT spektra (viz 4.1.1) sumou jejích binů. Celkové harmonické zkreslení je vypočteno sumou z binů vyšších harmonických složek v normalizovaném DFT spektru. Část celkového šumu je již obsažena v hodnotě celkového harmonického zkreslení (šum je obsažen na binech vyšších harmonických složek) a druhá část šumu je vypočtena ze zbylých binů (mimo vyšší harmonické složky) ve spektru po vyřazení DC složky a jejího hlavního laloku, základní harmonické složky a jejího hlavního laloku, tyto vyřazené biny jsou nahrazeny šumovým prahem NFL. Poměr signál k šumu a zkreslení je stanoven jako poměr bez jednotky nebo v db. Výpočet poměru signálu k šumu a zkreslení je uveden následující rovnicích: Rovnice 38 Výpočet poměru signálu k šumu a zkreslení SINAD kde SINAD 2 je kvadrát poměru signálu k šumu NFL 2 je kvadrát efektivní hodnoty šumového prahu (viz 5.1) A zastupuje celkový šum B zastupuje celkové harmonické zkreslení (včetně části šumu vyšších harmonických) X nrm je normalizované DFT spektrum definované (viz 4.1.1) M C je délka normalizovaného DFT spektra (viz 4.1.1) k je index frekvenčního binu v X nrm lmax je šířka půlky hlavního laloku použitého okna (viz 4.2) l je index binu hlavního laloku, při výpočtu SINAD l ϵ <0; lmax> 81

87 5.5 Poměr signálu k šumu a zkreslení SINAD a efektivní počet bitů ENOB hmax je počet harmonických složek včetně základní h je index harmonické složky, při výpočtu SINAD h ϵ <2; hmax> J je číslo binu základní harmonické v X nrm εj je odchylka binu základní harmonické od skutečné frekvence (viz 4.2), εj ϵ (-0,5; 0,5> round je funkce zaokrouhlení Vztah pro výpočet parametru SINAD je odvozen ze standardu DYNAD [3]. Porovnání: zde definovaný vztah pro výpočet poměru signálu k šumu a zkreslení nahrazuje hodnotou šumového prahu biny celého DC laloku a celého laloku základní harmonické složky. V čitateli SINAD je efektivní hodnota základní harmonické složky ponížena o šumový práh v celém jejím laloku. Je upraven počet binů nahrazených šumovým prahem a ve výpočtu je používáno normalizované DFT spektrum. Pozor, pokud dochází k aliasingu, některá vyšší harmonická má vyšší frekvenci než polovina vzorkovací frekvence je nutno detekovat biny (viz. 4.3), na kterých se vyskytuje a tyto zahrnout do výpočtu namísto hj. Efektivní počet bitů AD převodníku je odvozen z parametru SINAD a je definován vztahem: Rovnice 39 Výpočet efektivního počtu bitů ENOB Vztah pro výpočet ENOB je převzat ze standardu IEEE-1057 [1]. V praxi se těžko dosahuje plného využití rozsahu (fullscale) AD převodníku. Proto je doporučeno [3] ke stanovené hodnotě ENOB vždy uvádět poměr amplitudy vstupního signálu k rozsahu AD převodníku SFSR (Signal FullScale Ratio): Rovnice 40 Výpočet poměru amplitudy vstupního signálu k rozsahu fullscale SFSR Příklad: Zde je uveden příklad pro výpočet poměru signálu k šumu a zkreslení z normalizovaného DFT spektra a stanovení efektivního počtu bitů. V časové oblasti je použit sinusový signál o těchto parametrech: amplituda U = 51,4 mv; frekvence f = 7,6953 khz. Vstupní signál je vzorkován frekvencí fs = 100 khz, referenční napětí (amplituda) převodníku je Uref = 100 mv (fullscale = 200 mv). Vzorkovaný signál obsahuje M = 128 (M C = 65 viz Rovnice 21) vzorků a v časové oblasti je prohnán oknem prvního řádu (např. Hann), tudíž šířka půlky hlavního laloku je lmax = 2. Ve zmíněném normalizovaném DFT spektru je přítomno celkem hmax = 6 harmonických složek (včetně základní), jejichž hlavní spektrální čáry jsou na binech číslo [10; 20; 30; 39; 49; 59] (detekce viz 4.3). Kvadrát efektivní hodnoty šumového prahu NFL 2 = 12,66 mv 2. 82

88 5.5 Poměr signálu k šumu a zkreslení SINAD a efektivní počet bitů ENOB Obrázek 43 Příklad výpočtu poměru signálu k šumu a zkreslení SINAD V uvedeném spektru (viz Obrázek 43) je znázorněna zeleně základní harmonická složka, červeně biny šumu, modře vyšší harmonické složky a šedě vyřazené biny DC složky, které jsou nahrazeny ve výpočtu hodnotou šumového prahu NFL. Spodní vynášecí čára kóty SINAD znázorňuje hodnotu celkové energie šumu a energie harmonického zkreslení. Základní harmonická složka je ponížena o malé červené úseky, které znázorňují hodnotu šumového prahu NFL. V základu spektrální čar DC jsou mále červené úseky, které znázorňují nahrazení těchto binů šumovým prahem NFL. Biny vyšších harmonických složek nejsou ani nahrazeny ani poníženy hodnotou šumového prahu, protože šum, který obsahují, je obsažen z jejich binů v celkovém harmonickém zkreslení. Nyní jsou hodnoty z příkladu doplněny do vzorce (viz Rovnice 38 a Rovnice 39): Rovnice 41 Příklad výpočtu poměru signálu k šumu a zkreslení SINAD Rovnice 42 Příklad výpočtu efektivního počtu bitů ENOB Rovnice 43 Výpočet poměru amplitudy vstupního signálu k rozsahu fullscale SFSR Číselné hodnoty normalizovaného spektra v tomto příkladě jsou k nalezení v příloze (viz Příloha č. 1), kde je spektrum podrobněji okótováno. 83

89 5.5 Poměr signálu k šumu a zkreslení SINAD a efektivní počet bitů ENOB Poznámka k příkladům: Zadané hodnoty DFT spektra uvedené v příkladech (viz 5.1.1, 5.2.1, 5.3.1, a 5.5.1) jsou stanoveny tak, aby bylo možné názorně vysvětlit definice dynamických parametrů. Tudíž výsledné hodnoty stanovených dynamických parametrů neodpovídají reálným výsledkům měření Hlavička, parametry funkce Hlavička funkce pro výpočet poměru signálu k šumu a zkreslení SINAD: int SINDAcalc(double * nrmxabs2half, unsigned long lhalfc, unsigned char lmax, unsigned char hmax, unsigned long * fundharmbin, double FS, double * SINAD, double * ENOB, double * SFSR); Blokové schéma funkce pro výpočet poměru signálu k šumu a zkreslení SINAD: Obrázek 44 Blok funkce pro výpočet poměru signálu k šumu a zkreslení SINAD Vstupní parametry: nxa2h (nrmxabs2half) normalizované DFT spektrum (viz 4.1.1) lhalfc počet binů normalizovaného DFT spektra, délka pole nxa2h lmax šířka poloviny hlavního laloku v binech použitého okna (viz 4.2) hmax počet harmonických včetně základní, délka pole fhbin fhbin (fundharmbin) pozice (čísla) binů harmonických FS fullscale rozsah AD převodníku [V] Výstupní parametry: SINAD poměr signálu k šumu a zkreslení [ ] ENOB efektivní počet bitů [bit] SFSR poměr amplitudy signálu k polovině fullscale AD převodníku [ ] Výsledek funkce: 0 funkce proběhla v pořádku 1 chyba ve vstupních parametrech 2 chyba při alokaci paměti 3 chyba, není požadován žádný výstup (všechny výstupy jsou NULL) 4 chyba, délka oboustranného DFT spektra je lichá 5 chyba při adresaci v poli, chybné indexy v poli fundharmbin 84

90 5.5 Poměr signálu k šumu a zkreslení SINAD a efektivní počet bitů ENOB 0x01 0x02 varování (číslo bitu): některá harmonická složka leží nebo se dotýká DC binu varování (číslo bitu): některá harmonická složka leží nebo se dotýká DFThalf binu Popis algoritmu Výpočet poměru signálu k šumu a zkreslení SINAD a efektivní hodnoty bitů ENOB jsou provedeny dle definice (viz Rovnice 38 Rovnice 39). Nejdříve je alokována paměť pro kopii pole nrmxabs2half o délce lhalfc normalizovaného DFT spektra, které již obsahuje kvadráty amplitud (viz 4.1.1) a provedena jeho kopie nrmxabs2half_, protože při výpočtu poměru signálu k šumu a zkreslení se bude toto pole upravovat. Nyní nastává část vyřazení binů v poli nrmxabs2half_, ze kterých se neprovádí výpočet poměru signálu k šumu a zkreslení. Vyřazení binů se provádí nulováním jejich amplitudy. V prvním kroku vyřazení se nuluje amplituda binu DC složky a v cyklu se nulují amplitudy binů hlavního laloku DC složky délky lmax. V druhém kroku vyřazení se v cyklu nulují amplitudy binů hmax harmonických složek (včetně základní) a ve vnořeném cyklu se nulují amplitudy binů hlavního laloku všech harmonických složek o délce ± lmax. Během nulování vyšších harmonických složek se zároveň počítá suma kvadrátu amplitud binů (efektivní hodnota) všech vyšších harmonických složek v proměnné distor2. Tím je dána celková energie zkreslení, obsažená v poměru SINAD. Pozice harmonických složek (čísla binů) jsou předány ve vstupním poli fundharmbin o délce hmax. Po vyřazení všech požadovaných binů z pole nrmxabs2half_ je pole vzestupně seřazeno a provedena jeho suma noise2, která obsahuje energii šumu (pole je seřazeno vzestupně pro lepší číselnou stabilitu při sumování). Pomocí funkce NFLcalc (viz 5.1.2) je proveden výpočet kvadrát šumového prahu NFL2 (šumový práh lze vypočítat i ze sumy noise2, ale kvůli možné změně/aktualizace definice dynamických parametrů je schválně použit výpočet odděleně). Nyní je potřeba k sumě noise2 připočíst šum z vyřazených binů DC složky a základní harmonické složky a jejich hlavních laloků. Pozor: k sumě noise2 se nepřičítá šum z binů vyšších harmonických složek, protože ten je již obsažen v energii zkreslení, v sumě distor2! Vyřazené biny (DC, základní složky a jejich hlavní laloky) nahradí hodnotou kvadrátu šumového prahu NFL2 ( průměrná hodnota šumu). K sumě noise2 je tedy připočten NFL2 násobený počtem nulovaných binů DC složky a základní harmonické složky. Dále je vypočten funkcí ARMS2calc() kvadrát efektivní hodnoty základní harmonické složky fundrms2. Protože jsou šumovým prahem nahrazeny i biny základní harmonické složky je nutno ponížit energii základní harmonické složky před vypočtením poměru. Proto je kvadrát efektivní hodnoty základní harmonické složky ponížen tolikrát o hodnotu kvadrátu šumového prahu, kolik binů hlavní lalok základní harmonické složky obsazuje (hlavní bin základní harmonické ± šířka hlavního laloku lmax). Před ponížením kvadrátu efektivní hodnoty základní harmonické složky se ještě spočítá parametr SFSR poměr amplitudy základní harmonické k polovině celkového rozsahu AD převodníku (fullscale) pro výpočet efektivního počtu bitů. Nyní lze stanovit poměr signál k šumu a zkreslení SINAD jako odmocnina poníženého kvadrátu efektivní hodnoty základní harmonické a celkové energie šumu noise2 plus celková energie harmonického zkreslení distor2. Efektivní počet bitů ENOB je stanoven podle definice (viz Rovnice 39). Výsledky jsou uloženy do výstupů SINAD, ENOB, SFSR Příklad funkce v C Použití funkce pro výpočet poměru signálu k šumu je v následujícím příkladu: #include "addynam.h" #include "io.h" 85

91 5.5 Poměr signálu k šumu a zkreslení SINAD a efektivní počet bitů ENOB int main() { unsigned char bits = 16; double Uref = 2.5; unsigned char hmax = 5; unsigned long ** ADcode; unsigned long length; unsigned long K; double * w; unsigned char lmax; double NNPG; double ** ADU; double ** xw; double ** Xabs; double * Xabsavg; double * nrmxabs2half; unsigned long lhalfc; double fundfreq; unsigned long * fundharmbin; double SINAD; double ENOB; double SFSR; unsigned long i; csv2adcdyn_in("adoutdyn.csv", &ADcode, &length, &K); ADU = (double **) malloc (K * sizeof(**adu)); xw = (double **) malloc (K * sizeof(**xw)); Xabs = (double **) malloc (K * sizeof(**xabs)); window(w_nuttall, length, &w, &lmax, NULL, &NNPG); for (i = 0; i!= K; i++) { AD2sig(bits, Uref, ADcode[i], length, &ADU[i]); windowsignal(adu[i], w, length, &xw[i]); dft(xw[i], length, &Xabs[i], NULL); } avgdft(xabs, K, length, &Xabsavg); nrmxabs2halfcalc(xabsavg, length, NNPG, &nrmxabs2half, &lhalfc); fundchar(nrmxabs2half, lhalfc, lmax, NULL, &fundfreq, NULL); harmlocator(length, fundfreq, hmax, lmax, &fundharmbin, NULL); SINADcalc(nrmXabs2half, lhalfc, lmax, hmax, fundharmbin, Uref, &SINAD, &ENOB, &SFSR); printf("signal noise and distortion ratio SINAD of this ADC is: SINAD = %e [-]\n",sinad); printf(" SINAD = %f [db]\n",20*log10(sinad)); printf("number of effective bits (ENOB from SINAD) is: ENOB = %f [bits]\n",enob); printf("signal to fullscale ratio SFSR while estimating ENOB is: SFSR = %f [dbfs]\n",20*log10(sfsr)); alldyninonecalc(bits, Uref, ADcode, length, K, W_NUTTALL, hmax, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &SINAD, &ENOB, &SFSR); for (i = 0; i!= K; i++) { free(adu[i]);free(xw[i]);free(xabs[i]); } free(adu);free(xw);free(xabs); free(w);free(xabsavg);free(nrmxabs2half);free(fundharmbin); } return (0); 86

92 5.5 Poměr signálu k šumu a zkreslení SINAD a efektivní počet bitů ENOB Výstupní data 16 bitového AD převodníku (fullscale Uref = 2,5 V) jsou načteny funkcí csv2adcdyn_in() ze souboru ADoutdyn.csv (viz Příloha CD), který obsahuje 4 náměry po 2048 vzorcích. Poté je alokován první rozměr polí ADU, xw a Xabs podle počtu náměrů K. Funkcí window() (viz 4.2.1) je vypočtena okénkovací funkce okna NUTTALL a parametry NNPG ( zeslabení okna ) a lmax (polovina šířky hlavního laloku) tohoto okna. Každý náměr je v cyklu převeden funkcí AD2sig() z hodnoty kódového slova na hodnotu napětí (podle Uref), oknován funkcí windowsignal() (viz 4.2.1) a jsou vypočteny amplitudové DFT spektra. Funkce avgdft() (viz 4.1.2) vytvoří průměrované DFT spektrum a funkce nrmxabs2halfcalc() (viz 4.1.2) vypočte normalizované DFT spektrum. Poté je funkcí fundchar() nalezena v normalizovaném DFT spektru nrmxabs2half základní harmonická složka a její odhadnutá frekvence v binech fundfreq. Čísla binů všech harmonických složek jsou vypočteny funkcí harmlocator() a uloženy do pole fundharmbin. Nyní je stanoven požadovaný poměr signálu k šumu a zkreslení SINAD a efektivní počet bitů ENOB AD převodníku funkcí SINADcalc() (viz 5.5.2) a výsledky jsou vypsány. Celý postup určení poměru signálu k šumu a zkreslení SINAD od načtení vstupního souboru lze provést jedinou funkcí alldyninonecalc(). Nakonec jsou řádně uvolněna všechna dynamicky alokována pole. Výsledek: signal noise and distortion ratio SINAD of this ADC is: SINAD = e+03 [-] SINAD = [db] number of effective bits (ENOB from SINAD) is: ENOB = [bits] signal to fullscale ratio SFSR while estimating ENOB is: SFSR = [dbfs] Pozn. Pro jednoduchost nejsou v tomto příkladě testovány použité funkce na výsledek. V praktickém použití je doporučeno testovat funkce na nulovost, jen tehdy je zaručeno, že funkce proběhly v pořádku. Všechny použité funkce jsou také podrobně popsány v knihovnách addynam.c a io.c Příklad funkce v konzolové aplikaci Parametr SINAD určuje funkci aplikace pro výpočet poměru signálu k šumu a zkreslení a pro výpočet effektivního počtu bitů. Výstupní kódová slova AD převodníku jsou uloženy v csv souboru ADoutdyn.csv, počet sloupců určuje počet náměrů a počet řádků určuje počet vzorků. Počet bitů bits = 16, referenční napětí (fullscale) Uref = 2.5 V, použité okno č. 6 (Nuttall) a požadovaný počet harmonických hmax = 5 (včetné základní). addynam.exe SINAD ADoutdyn.csv addynam.exe SINAD ADoutdyn.csv file sinad.csv V prvním příkladě výsledky poměr signálu k šumu a zkreslení (poměr, db) a efektivní počet bitů včetně poměru signálu k fullscale (dbfs) budou vypsány na obrazovku, ve druhém příkladě budou výsledky uloženy (ve sledu: SINAD, ENOB, SFSR) do souboru sinad.csv. Pro zobrazení nápovědy v konzole je potřeba spustit program bez parametrů nebo s parametrem?. addynam.exe -? 87

93 6 Naměřené výsledky 6. Naměřené výsledky V této kapitole budou ukázány výsledky stanovených statických a dynamických parametrů AD převodníku na naměřených datech Statické parametry AD převodníku Naměřená data k testování statických parametrů AD převodníku poskytla firma STMicroelectronics. Data jsou naměřena na 10 bitovém AD převodníku. Vstupní napětí bylo generováno napěťovým kalibrátorem po krocích 0,25 mv od 10 mv do 2,505 V, referenční napětí AD převodníku Uref = 2,5 V. Na jedno kódové slovo AD převodníku připadá při této přenosové funkci průměrně 10 vzorků. Chyba nuly (viz 2.1) AD převodníku: zeroerr = 1,4096 LSB Chyba zesílení (viz 2.3) AD převodníku: gainerr = 0,2528 LSB Diferenciální nelinearita (viz 2.5) AD převodníku: DNL [LSB] 0,6 0,4 0,2 0-0,2-0,4-0,6-0, AD code maximání hodnota DNL na kódovém slově: DNL[511] = 0,69272 LSB Integrální nelinearita (viz 2.6) AD převodníku: INL [LSB] 1 0,5 0-0, AD code maximání hodnota INL na kódovém slově: INL[251] = 0,8639 LSB 88

94 6.1 Statické parametry AD převodníku Histogram kódových slov AD převodníku (viz 2.8): histogram AD code Diferenciální nelinearita (viz 2.8) AD převodníku stanovená z histogramu: DNLh [LSB] 0,6 0,4 0,2 0-0,2-0,4-0,6-0, AD code maximání hodnota DNLh na kódovém slově: DNLh[511] = 0,69272 LSB Integrální nelinearita (viz 2.8) AD převodníku: INLh [LSB] 1 0,5 0-0, AD code maximání hodnota INLh na kódovém slově: INLh[251] = 0,8639 LSB Test monotónnosti (viz 2.9) AD převodníku odhalil chyby monotónnosti u 59 kódových slov, na 986. kódovém slově byly nalezeny dvě chyby monotónnosti. Všechny chyby monotónnosti měly hodnotu 1 LSB. 89

95 6.2 Dynamické parametry AD převodníku 6.2. Dynamické parametry AD převodníku Stanovení dynamických parametrů bude porovnáno s [17]. Data AD převodníku jsou naměřena s generátorem Brüel & Kjar 1049 low-distortion generátor na 16 bitovém převodníku ADC module AD976A jako součást přístroje AD Transfer Standard. Vzorkovací frekvence f s = 156 khz, počet vzorků length = 32768, při výpočtu dynamických parametrů je bráno v úvahu 20 harmonických složek. Naměřeny jsou 3 náměry pro frekvence základní harmonické složky f f = 1,333 khz, 10,333 khz a 20,333 khz. Naměřená data (viz Příloha CD) poskytl pan Ing. David Slepička Ph.D. Naměřené hodnoty knihovnou addynam.c, použité okno Nuttall: f f = 1,333 khz f f = 10,333 khz f f = 20,333 khz detekována f f [khz] 1, ,317 20,305 SFSR [dbfs] 0, ,1803 0,403 NFL [dbv] 128,94 126,84 123,63 THD [db] 96,56 97,13 90,61 SFDR [db] 102,04 102,83 92,71 SNHR [db] 85,63 83,44 80,01 SINAD [db] 85,34 83,30 79,69 ENOB [bit] 13,9 13,57 13,01 Tabulka 3 Naměřená data, dynamické parametry addynam.c, okno Nuttall Naměřené hodnoty knihovnou addynam.c, použité okno Blackman-Harris 7-term: f f = 1,333 khz f f = 10,333 khz f f = 20,333 khz detekována f f [khz] 1, ,317 20,305 SFSR [dbfs] 0, ,1803 0,403 NFL [dbv] 128,95 126,81 123,63 THD [db] 96,32 96,66 90,28 SFDR [db] 101,86 102,76 92,72 SNHR [db] 85,63 83,41 80,01 SINAD [db] 85,35 83,28 79,69 ENOB [bit] 13,9 13,59 13,01 Tabulka 4 Naměřená data, dynamické parametry addynam.c, okno Blackman-Harris 7-term Naměřené hodnoty v [17], použité okno Blackman-Harris 7-term: f f = 1,333 khz f f = 10,333 khz f f = 20,333 khz clsthd [db] N/A SNR [db] N/A SINAD [db] N/A Tabulka 5 Data z [17], dynamické parametry, okno Blackman-Harris 7-term 90

96 6.2 Dynamické parametry AD převodníku Ukázka výsledků dynamických parametrů v konzolové aplikaci pro f f = 20,333 khz (viz Tabulka 4): Obrázek 45 Konzolová aplikace addynam.exe ukázka výsledků 91

97 7 Závěr 7. Závěr Podle zadání byl vytvořen software pro stanovení všech požadovaných statických a dynamických parametrů AD převodníků. Funkce byly otestovány na reálných datech z AD převodníků (viz 6). Knihovna adstatic.c obsahuje funkce pro stanovení těchto statických parametrů: chyba nuly, chyba zesílení, diferenciální nelinearita DNL, integrální nelinearita INL a test monotónnosti převodní charakteristiky. Navíc knihovna adstatic.c obsahuje pro účely testování funkci převodníku (kvantizátoru) s definovatelnými statickými parametry. Knihovna addynam.c obsahuje následující funkce pro stanovení dynamických parametrů ve frekvenční oblasti, při nekoherentním vzorkování: šumový práh NFL, celkové harmonické zkreslení THD, poměr signálu k falešné složce SFDR, poměr signálu k šumu SNHR, poměr signálu k šumu a harmonickému zkreslení SINAD a efektivní počet bitů ENOB. Z knihovny addynam.c jsou dále k dispozici funkce pro výpočet okénkovací funkce a jejích parametrů, stanovení a průměrování DFT, výpočet normalizovaného DFT spektra (definované v 4.1.1). Bohužel se nestihlo v této práci implementovat funkce pro stanovení dynamických parametrů v časové oblasti metodou prokládané sinusovky. Knihovna addynam.c obsahuje dvě hotové funkce pro stanovení 3 parametrového odhadu prokladem sinusovkou (pevná frekvence) dle [1] a [3]. Obsahuje také funkci pro LU rozklad matic, který je využit při optimální implementaci [1] výpočtu inverzních matic, to je důležité pro stanovení 4 parametrového odhadu prokladem sinusovkou. Funkce pro 4 parametrový odhad dle [3] je rozpracovaná, není hotová. Při implementaci funkcí se vycházelo ze standardů pro testování AD převodníků: IEEE [1], IEEE [2] a DYNAD [3]. Ke knihovnám byla také vytvořena konzolová aplikace zkompilovaná pro platformu win32 (adstatic.exe, addynam.exe) a linux (./adstatic,./addynam), která umožňuje rychlé a snadné vypočtení požadovaných parametrů AD převodníku. Konzolová aplikace může výsledky přímo zobrazit nebo používá jako vstup a výstup soubory typu csv (oddělené hodnoty oddělovačem), se kterými lze následně jednoduše pracovat např. v tabulkovém procesoru nebo matematickém softwaru. Software pro testování AD převodníků byl napsán v programovém jazyce ANSI C, využívá jen standardní knihovny a jednu externí dll knihovnu FFTW pro výpočet DFT [11], ta může být v případě potřeby jednoduše nahrazena (viz funkce dft(), kapitola 4.1). Čistý ANSI C kód je vhodný pro kompilaci programu pod různými platformami např. win32, linux, solaris atd. Důraz byl také kladen na důslednou dokumentaci zdrojového kódu a modularitu funkcí pro možné následné použití v dalších projektech katedry měření. 92

98 Seznam použitých zdrojů Seznam použitých zdrojů [1] IEEE Instrumentation and Measurement Society. IEEE Std : Standard for Digitizing Waveform Recorders New York. [2] IEEE Instrumentation and Measurement Society. IEEE Std : Standard for Terminology and Test Methods for Analog-to-Digital Converters New York. [3] European project DYNAD - SMT4-CT Draft standard - Version 3.3. Methods and draft standards for the DYNamic characterisation and testing of Analogue to Digital converters [4] Martin Novotný, David Slepička, Miloš Sedláček. Uncertainty Analysis of the RMS Value and Phase in the Frequency Domain by Noncoherent Sampling [5] Dominique Dallet, David Slepička, Yannick Berthoumieu, Djamel Haddadi, Philippe Marchegay. ADC Characterization in Time Domain Frequency Estimation to Linearize TimeDomain Analysis of AD Converters [6] Albert H. Nuttall. Some Windows with Very Good Sidelobe Behavior [7] Fredric J. Harris. On the Use of Windows for Harmonic Analysis with the Discrete Fourier Transform [8] V. Hlaváč, M. Sedláček. Zpracování signálů a obrazů Praha. [9] M. Sedláček, Z. Štoudek. Iterative design of DSP cosine windows by placing spectrum zeros, and some new classes of DSP cosine window. Paper in press ( ). [10] V. Haasz, J. Roztočil, J. Novák. Číslicové měřicí systémy Praha. [11] Matteo Frigo, Steven G. Johnson. FFTW manual for version Dostupné ( ) na url: [12] Autar Kaw. Textbook, Chapter LU Decomposition. Univesity of South Florida. Dostupné ( ) na url: [13] Gökseli Göde, António Manuel Couto Pinto, Domenico Luca Carni, Attila Sárhegyi, Martin Gustafsson. Frequency Domain analysis of ADCs in IEEE-1241 and DYNAD: A comparison [14] Quicksort. Dostupné ( ) na url: [15] Binary search algorithm. Dostupné ( ) na url: [16] STMicroelectronics Andrle Milan. Zadání pro stanovení statických parametrů ADC. Dokument ze dne ( ) (viz Příloha CD). [17] Vladimír Haasz, Jaroslav Roztočil, David Slepička. Evaluation of ADC Testing Systems Using ADC Transfer Standard. Praha. 93

99 Seznam obrázků, rovnic, tabulek a příloh Seznam obrázků Obrázek 1 Příklad chyby nuly... 7 Obrázek 2 Blok funkce chyby nuly... 8 Obrázek 3 Příklad korekce chyby nuly Obrázek 4 Blok funkce korekce chyby nuly Obrázek 5 Příklad chyby zesílení Obrázek 6 Blok funkce chyby zesílení Obrázek 7 Příklad korekce chyby zesílení Obrázek 8 Blok funkce korekce chyby zesílení Obrázek 9 Příklad diferenciální nelinearity Obrázek 10 Blok funkce diferenciální nelinearity Obrázek 11 Příklad integrální nelinearity (výpočet z DNL) Obrázek 12 Blok funkce integrální nelinearity (výpočet z DNL) Obrázek 13 Příklad integrální nelinearity 2 (výpočet ze středu kódového slova) Obrázek 14 Blok funkce integrální nelinearity 2 (výpočet ze středu kódového slova) Obrázek 15 Příklad průběhu pro stanovení DNL a INL z histogramu Obrázek 16 Příklad histogramu pro stanovení DNL a INL Obrázek 17 Blok funkce DNL a INL z histogramu Obrázek 18 Příklad průběhu pro test monotónnosti Obrázek 19 Blok funkce test monotónnosti Obrázek 20 Příklad řazení polí Uin a ADcode adstaticsort() Obrázek 21 Blok funkce pro řazení vstupních polí Uin a ADcode Obrázek 22 Blok funkce pro načtení vstupů z csv Obrázek 23 Blok funkce pro uložení výstupů do csv Obrázek 24 Blokové schéma funkce kvantizátoru Obrázek 25 Blok funkce generátor vstupu pro kvantizátor typu rampa Obrázek 26 Příklad oboustaného amplitudového DFT spektra Obrázek 27 Blokové schéma funkce pro výpočet DFT Obrázek 28 Blokové schéma funkce pro průměrování DFT Obrázek 29 Blokové schéma funkce pro výpočet normalizovaného DFT spektra Obrázek 30 Blokové schéma pro výpočet okénkovací funkce Obrázek 31 Blokové schéma pro aplikaci okénkovací funkce na vstupní signál Obrázek 32 Blokové schéma funkce pro charakterizaci základní harmonické složky Obrázek 33 Blokové schéma funkce lokalizace harmonických složek v normalizovaném DFT spektru 59 Obrázek 34 Blokové schéma funkce pro výpočet efektivní hodnoty (amplitudy) požadované složky. 59 Obrázek 35 Příklad výpočtu šumového prahu NFL Obrázek 36 Blok funkce pro výpočet šumového prahu NFL Obrázek 37 Příklad výpočtu celkového harmonického zkreslení THD Obrázek 38 Blok funkce pro výpočet celkového harmonického zkreslení THD Obrázek 39 Příklad výpočtu poměru signálu k falešné složce SFDR Obrázek 40 Blok funkce pro výpočet poměru signálu k falešné složce SFDR Obrázek 41 Příklad výpočtu poměru signálu k šumu SNHR

100 Seznam obrázků, rovnic, tabulek a příloh Obrázek 42 Blok funkce pro výpočet poměru signálu k šumu SNHR Obrázek 43 Příklad výpočtu poměru signálu k šumu a zkreslení SINAD Obrázek 44 Blok funkce pro výpočet poměru signálu k šumu a zkreslení SINAD Obrázek 45 Konzolová aplikace addynam.exe ukázka výsledků Seznam rovnic Rovnice 1 Výpočet chyby nuly... 8 Rovnice 2 Korekce chyby nuly Rovnice 3 Výpočet chyby zesílení Rovnice 4 Korekce chyby zesílení Rovnice 5 Výpočet diferenciální nelinearity Rovnice 6 Definice integrální nelinearity (výpočet z DNL) Rovnice 7 Výpočet integrální nelinearity Rovnice 8 Příklad výpočtu integrální nelinearity z DNL Rovnice 9 Výpočet integrální nelinearity Rovnice 10 Diferenciální nelinearita z histogramu Rovnice 11 Ideální počet výskytů kódového slova v histogramu Rovnice 12 Integrální nelinearita z histogramu Rovnice 13 Příklad výpočtu ideálního počtu výskytů kódového slova Rovnice 14 Příklad výpočtu diferenciální nelinearity z histogramu Rovnice 15 Příklad výpočtu integrální nelinearity z histogramu Rovnice 16 Příklad výpočtu kvadratického průměru chyb monotónnosti Rovnice 17 Diskrétní Fourierova transformace DFT Rovnice 18 Rozklad DFT na amplitudu a fázi Rovnice 19 Průměrování amplitudového DFT spektra Rovnice 20 Výpočet jednostranného, normalizovaného, amplitudového DFT spektra Rovnice 21 Délka jednostranného, normalizovaného, amplitudového DFT spektra Rovnice 22 Nekoherentní vzorkování Rovnice 23 Výpočet okénkovací funkce Rovnice 24 Aplikace okénkovací funkce na signál Rovnice 25 Výpočet parametru NNPG použitého okna Rovnice 26 Výpočet parametru ENBW použitého okna Rovnice 27 Výpočet frekvence základní harmonické složky v normalizovaném DFT spektru Rovnice 28 Výpočet pozice (čísla binů) harmonických složek v normalizovaném DFT spektru Rovnice 29 Výpočet efektivní hodnoty požadované složky v normalizovaném DFT spektru Rovnice 30 Výpočet šumového prahu NFL Rovnice 31 Příklad výpočtu šumového prahu NFL Rovnice 32 Výpočet harmonického zkreslení THD Rovnice 33 Příklad výpočtu harmonického zkreslení THD Rovnice 34 Výpočet poměru signálu k falešné složce SFDR Rovnice 35 Příklad výpočtu poměru signálu k falešné složce SFDR

101 Seznam obrázků, rovnic, tabulek a příloh Rovnice 36 Výpočet poměru signálu k šumu SNHR Rovnice 37 Příklad výpočtu poměru signálu k šumu SNHR Rovnice 38 Výpočet poměru signálu k šumu a zkreslení SINAD Rovnice 39 Výpočet efektivního počtu bitů ENOB Rovnice 40 Výpočet poměru amplitudy vstupního signálu k rozsahu fullscale SFSR Rovnice 41 Příklad výpočtu poměru signálu k šumu a zkreslení SINAD Rovnice 42 Příklad výpočtu efektivního počtu bitů ENOB Rovnice 43 Výpočet poměru amplitudy vstupního signálu k rozsahu fullscale SFSR Seznam tabulek: Tabulka 1 Kritické parametry AD převodníků [2]... 5 Tabulka 2 Okna a jejich vlastnosti Tabulka 3 Naměřená data, dynamické parametry addynam.c, okno Nuttall Tabulka 4 Naměřená data, dynamické parametry addynam.c, okno Blackman-Harris 7-term Tabulka 5 Data z [17], dynamické parametry, okno Blackman-Harris 7-term Seznam příloh Příloha č. 1 Podrobné nákresy příkladů. Příloha č. 2 Ukázka zdrojových kódů. Příloha č. 3 Ukázka konzolové aplikace adstatic a addynam. Příloha CD Obsah přiloženého CD. 96

102 Příloha č. 1 Příloha č. 1 Podrobnější nákres průběhu použitého v příkladech pro stanovení statických parametrů AD převodníků (viz 2): Podrobnější normalizované DFT spektrum použité v příkladech pro názorné stanovení dynamických parametrů (viz 5): 97

103 Příloha č. 2 Příloha č. 2 Ukázka zdrojového kódu software pro testování AD převodníků. Funkce pro výpočet diferenciální nelinearity difnonlin() (viz 2.5) AD převodníku z knihovny adstatic.c a funkce pro výpočet šumového prahu AD převodníku NFLcalc() (viz 5.1) z knihovny addynam.c: /************************************************************************** **************************** function difnonlin *************************** *************************************************************************** DESCRIPTION: Compute a static parameter of AD converter differential nonlinearity for all AD codes (in input unsigned long * ADcode). Differential nonlinearity is defined for this function as a difference of width of actual AD code to ideal width that is 1 LSB in voltage. Results are in voltage. For missing AD code result is -1. Output of this function is array of differential nonlinearity for every AD code and corresponding array of sorted single AD codes (e.g. for bits 10 is 0,1,2,3, ). CONDITIONS: Array ADcode must be sorted with corresponding sorted array Uin. See functions qsortadcode() and qsortuinsep(). INPUTS: unsigned char bits : number of AD converter bits double Uref : reference voltage (fullscale unipolar) of AD converter, Uref should be double * Uin : array of set voltage on input of ADC, sorted array (transfer function) unsigned long * ADcode : array of ADC digital output that responds to array double * Uin unsigned long length : number of elements in array double * Uin and unsigned long * ADcode OUTPUTS: unsigned long ** ADcode_s : pointer where is stored array of sorted single AD codes double ** DNL : pointer where is stored array of differential nonlinearity RESULT (int): 0 ok -1 error in INPUTS, e.g. length of array is incorrect **************************************************************************/ int difnonlin(unsigned char bits, double Uref, double * Uin, unsigned long * ADcode, unsigned long length, unsigned long ** ADcode_s, double ** DNL) { double ULSB; //voltage width of 1 LSB double DNLi; unsigned long i; //all ADcodes 0..2^bits unsigned long ADcodemax; //maximum of AD codes unsigned long j; //pointer to Uin array all values 98

104 Příloha č. 2 unsigned long * tempadcode_s; //temporary output ADcode_s array double * tempdnl; //temporary output DNL array if ((length <= 0) (bits <= 0) (ADcode == NULL) (Uin == NULL) (ADcode_s == NULL) (DNL == NULL)) return (-1); ULSB = Uref/(pow(2,bits)); //voltage of 1 LSB ADcodemax = pow(2,bits); //maximum of AD codes j = 0; //init of pointer to Uin array tempadcode_s = (unsigned long *) malloc (ADcodemax * sizeof(*tempadcode_s)); //single AD codes tempdnl = (double *) malloc (ADcodemax * sizeof(*tempdnl)); //alloc for DNL output for (i = 0; i!= ADcodemax; i++) { tempadcode_s[i] = i; //make single AD code array (iteration) //000, ,111 if (i == ADcode[j]) //test for missing AD code { DNLi = Uin[j]; //difference for AD code see prelast //line in this if j++; //save one while while ((j!= length) && (i == ADcode[j])) //through one AD code, in //sorted array j++; if (j == length) //last ADcode j--; DNLi = Uin[j] - DNLi; //difference for AD code tempdnl[i] = DNLi / ULSB - 1; //store into DNL array } else { tempdnl[i] = -1; //missing AD code } } tempdnl[0] = 0; tempdnl[adcodemax-1] = 0; *ADcode_s = tempadcode_s; *DNL = tempdnl; //no definition for first and last ADcode // store outputs return (0); } 99

105 Příloha č. 2 /************************************************************************** ****************************** function NFLcalc *************************** *************************************************************************** DESCRIPTION: Calculation of noise floor from DFT. Firstly function removes fundamental, harmonics with mainlobe bins (makes these bins zero). Then square of magnitudes through half of DFT (normalized DFT) is summed and diveded by remaining (after zeroing) bins number. [1] INPUTS: double * nrmxabs2half : one sided, squared and normalized abs (amplitude) DFT sperctrum unsigned long lhalfc : length of half DFT (including DFT half bin) (length of nrmxabs2half) unsigned char lmax : width of half main lobe of used window in bins, rectangular = 1, output of function window() unsigned char hmax : number of harmonics that are used to calculate NFL unsigned long * fundharmbin : array of estimated fundamental and harmonics bin location OUTPUTS (optional if NULL output is not saved): double * NFL : pointer where noise floor (magnitude) will be saved double * NFL2 : pointer where square of noise floor (magnitude) will be saved REFERENCES: [1] Project DYNAD - SMT4-CT Draft standard - Version 3.3, September 22, 2000 RESULT (int): 0 ok -1 error in INPUTS, length of array is incorrect -2 error while allocationg memory -3 no output is requested -5 bad array indexing, main lobe of fundamental or harmonic is out of half DFT x may result with result of functions: ARMS2calc(), findmax() **************************************************************************/ int NFLcalc(double * nrmxabs2half, unsigned long lhalfc, unsigned char lmax, unsigned char hmax, unsigned long * fundharmbin, double * NFL, double * NFL2) { double tempnfl; //temporary output for noise floor double * nrmxabs2half_; //copy of nrmxabs2half, some bins gonna be //zeroed and array will be sorted unsigned long i; //index running through half DFT length, //length/2 unsigned char j; //index running through harmonics index, hmax unsigned char k; //index running through window main lobe //width, lmax unsigned long fhbin; //bin,index of fundamental or harmonics 100

106 Příloha č. 2 if ((nrmxabs2half == NULL) (lhalfc == 0) (lmax == 0) (hmax == 0) (fundharmbin == NULL)) return (-1); //parameters check if ((NFL == NULL) && (NFL2 == NULL)) return (-3); nrmxabs2half_ = (double *) malloc (lhalfc * sizeof(*nrmxabs2half_)); //alloc output for copy nrmxabs2half_ if (nrmxabs2half_ == NULL) return (-2); //allocating error for (i = 0; i!= lhalfc; i++) { nrmxabs2half_[i] = nrmxabs2half[i]; } //copy tempnfl = 0; nrmxabs2half_[0] = 0; for (k = 1; k!= (lmax + 1); k++) { nrmxabs2half_[k] = 0; } //zeroing DC //zeroing main lobe of DC for (j = 0; j!= hmax; j++) //zeroing fundamental, harmonics and //their window lobe { fhbin = fundharmbin[j]; //fundamental or harmonic max bin index if ((fhbin < ((unsigned long) lmax)) ((fhbin+lmax) >= lhalfc)) //checking index array (fhbin - lmax) < 0 return (-5); nrmxabs2half_[fhbin] = 0; //zeroing fundamental or harmonic line for (k = 1; k!= (lmax + 1); k++) { nrmxabs2half_[fhbin+k] = 0; //zeroing their main lobe nrmxabs2half_[fhbin-k] = 0; } } qsortd(0, (lhalfc-1), nrmxabs2half_); for (i = 0; i!= lhalfc; i++) { tempnfl = tempnfl + nrmxabs2half_[i]; } //sorting array before summing for //better number (double) stability //in sum //sum for NFL calc //sum tempnfl = tempnfl / (lhalfc - (lmax+1) - hmax*(2*lmax+1)); //dividing by number of bins, decreased of number of zeroed (DC //and harmonics) bins 101

107 Příloha č. 2 if (NFL2!= NULL) *NFL2 = tempnfl; tempnfl = sqrt(tempnfl); if (NFL!= NULL) *NFL = tempnfl; free(nrmxabs2half_); //store output if requested //sqrt of square NFL //store output if requested //free return (0); } 102

108 Příloha č. 3 Příloha č. 3 Konzolová aplikace adstatic.exe (win32), zobrazení nápovědy: 103

109 Příloha č. 3 Konzolová aplikace addynam.exe (win32), zobrazení nápovědy: 104

110 Příloha CD Příloha CD Obsah přiloženého CD. Adresářová striktura: Console_app Zkompilované, konzolové aplikace adstatic a addynam pro platformu win32 a linux. DP_doc Tato diplomová práce ve formátu docx. Obsahuje také použité zdrojové obrázky v této práci. FFTW Knihovna FFTW použitá v této práci pro stanovení DFT (viz 4.1). [11] url: Measure Naměřená reálná data AD převodníků použitá v kapitole 6 a další použitá vstupní data během testování. Sources_CVUT Použité zdroje licencované pro ČVUT v Praze. SW_ADC_testing Zdrojové kódy naprogramovaného softwaru pro testování AD převodníků. Knihovny adstatic, addynam, vstupné/výstupní knihovna io, zdrojové kódy konzolových aplikací main_adstatic a main_addynam. DP_2010_SARA.pdf Tato diplomová práce ve formátu pdf. Bc. Jakub Sára,

A/D převodníky - parametry

A/D převodníky - parametry A/D převodníky - parametry lineární kvantování -(kritériem je jednoduchost kvantovacího obvodu), parametry ADC : statické odstup signálu od kvantizačního šumu SQNR, efektivní počet bitů n ef, dynamický

Více

Snímání biologických signálů. A6M31LET Lékařská technika Zdeněk Horčík Katedra teorie obvodů

Snímání biologických signálů. A6M31LET Lékařská technika Zdeněk Horčík Katedra teorie obvodů Snímání biologických signálů A6M31LET Lékařská technika Zdeněk Horčík Katedra teorie obvodů horcik@fel.cvut.cz Snímání biologických signálů problém: převést co nejvěrněji spojitý signál do číslicové podoby

Více

Realizace Sigma-Delta převodníku pomocí FPGA

Realizace Sigma-Delta převodníku pomocí FPGA Rok / Year: Svazek / Volume: Číslo / Number: 2011 13 6 Realizace Sigma-Delta převodníku pomocí FPGA Implementation Sigma-Delta converter in FPGA Pavel Štraus xstrau00@stud.feec.vutbr.cz Fakulta elektrotechniky

Více

Direct Digital Synthesis (DDS)

Direct Digital Synthesis (DDS) ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Ing. Radek Sedláček, Ph.D., katedra měření K13138 Direct Digital Synthesis (DDS) Přímá číslicová syntéza Tyto materiály vznikly za podpory

Více

Quantization of acoustic low level signals. David Bursík, Miroslav Lukeš

Quantization of acoustic low level signals. David Bursík, Miroslav Lukeš KVANTOVÁNÍ ZVUKOVÝCH SIGNÁLŮ NÍZKÉ ÚROVNĚ Abstrakt Quantization of acoustic low level signals David Bursík, Miroslav Lukeš Při testování kvality A/D převodníků se používají nejrůznější testovací signály.

Více

Měření neelektrických veličin. Fakulta strojního inženýrství VUT v Brně Ústav konstruování

Měření neelektrických veličin. Fakulta strojního inženýrství VUT v Brně Ústav konstruování Měření neelektrických veličin Fakulta strojního inženýrství VUT v Brně Ústav konstruování Obsah Struktura měřicího řetězce Senzory Technické parametry senzorů Obrazová příloha Měření neelektrických veličin

Více

- DAC - Úvod A/D převodník převádějí analogové (spojité) veličiny na digitální (nespojitou) informaci. Základní zapojení převodníku ukazuje obr.

- DAC - Úvod A/D převodník převádějí analogové (spojité) veličiny na digitální (nespojitou) informaci. Základní zapojení převodníku ukazuje obr. - DAC - Úvod A/D převodník převádějí analogové (spojité) veličiny na digitální (nespojitou) informaci. Základní zapojení převodníku ukazuje obr. Řada zdrojů informace vytváří signál v analogové formě,

Více

Binární data. Číslicový systém. Binární data. Klávesnice Snímače polohy, dotykové displeje, myš Digitalizovaná data odvozená z analogového signálu

Binární data. Číslicový systém. Binární data. Klávesnice Snímače polohy, dotykové displeje, myš Digitalizovaná data odvozená z analogového signálu 5. Obvody pro číslicové zpracování signálů 1 Číslicový systém počítač v reálném prostředí Klávesnice Snímače polohy, dotykové displeje, myš Digitalizovaná data odvozená z analogového signálu Binární data

Více

DIPLOMOVÁ PRÁCE Lock-in zesilovač 500 khz 10 MHz

DIPLOMOVÁ PRÁCE Lock-in zesilovač 500 khz 10 MHz DIPLOMOVÁ PRÁCE Lock-in zesilovač 500 khz 10 MHz Petr Sládek Princip a použití lock-in zesilovače Im koherentní demodulátor f r velmi úzkopásmový Re příjem typ. 0,01 Hz 3 Hz zesilování harmonických měřený

Více

Úvod do zpracování signálů

Úvod do zpracování signálů 1 / 25 Úvod do zpracování signálů Karel Horák Rozvrh přednášky: 1. Spojitý a diskrétní signál. 2. Spektrum signálu. 3. Vzorkovací věta. 4. Konvoluce signálů. 5. Korelace signálů. 2 / 25 Úvod do zpracování

Více

KATEDRA ELEKTRICKÝCH MĚŘENÍ

KATEDRA ELEKTRICKÝCH MĚŘENÍ VŠB-TU Ostrava Datum měření: Datum odevzdání/hodnocení: KATEDRA ELEKTRICKÝCH MĚŘENÍ 9. VIRTUÁLNÍ MĚŘICÍ PŘÍSTROJE Fakulta elektrotechniky a informatiky Jména, studijní skupiny: Cíl měření: Seznámit se

Více

CW01 - Teorie měření a regulace

CW01 - Teorie měření a regulace Ústav technologie, mechanizace a řízení staveb CW01 - Teorie měření a regulace ZS 2010/2011 SPEC. 2.p 2010 - Ing. Václav Rada, CSc. Ústav technologie, mechanizace a řízení staveb Teorie měření a regulace

Více

5. A/Č převodník s postupnou aproximací

5. A/Č převodník s postupnou aproximací 5. A/Č převodník s postupnou aproximací Otázky k úloze domácí příprava a) Máte sebou USB flash-disc? b) Z jakých obvodů se v principu skládá převodník s postupnou aproximací? c) Proč je v zapojení použit

Více

Vektorové obvodové analyzátory

Vektorové obvodové analyzátory Radioelektronická měření (MREM, LREM) Vektorové obvodové analyzátory 9. přednáška Jiří Dřínovský Ústav radioelektroniky FEKT VUT v Brně Úvod Jedním z nejběžnějších inženýrských problémů je měření parametrů

Více

Signál v čase a jeho spektrum

Signál v čase a jeho spektrum Signál v čase a jeho spektrum Signály v časovém průběhu (tak jak je vidíme na osciloskopu) můžeme dělit na periodické a neperiodické. V obou případech je lze popsat spektrálně určit jaké kmitočty v sobě

Více

Vlastnosti členů regulačních obvodů Osnova kurzu

Vlastnosti členů regulačních obvodů Osnova kurzu Osnova kurzu 1) Základní pojmy; algoritmizace úlohy 2) Teorie logického řízení 3) Fuzzy logika 4) Algebra blokových schémat 5) Statické vlastnosti členů regulačních obvodů 6) Dynamické vlastnosti členů

Více

Měření na výkonovém zesilovači 1kW/144MHz by OK1GTH

Měření na výkonovém zesilovači 1kW/144MHz by OK1GTH Měření na výkonovém zesilovači 1kW/144MHz by OK1GTH Ing.Tomáš Kavalír, Katedra aplikované elektroniky a telekomunikací FEL /ZČU kavalir.t@seznam.cz, http://ok1gth.nagano.cz Zadání měření: 1. Měření max.

Více

Číslicový Voltmetr s ICL7107

Číslicový Voltmetr s ICL7107 České vysoké učení technické v Praze Fakulta elektrotechnická Analogové předzpracování signálu a jeho digitalizace Číslicový Voltmetr s ICL7107 Ondřej Tomíška Petr Česák Petr Ornst 2002/2003 ZADÁNÍ: 1)

Více

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE DIPLOMOVÁ PRÁCE

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE DIPLOMOVÁ PRÁCE ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA ELEKTROTECHNICKÁ KATEDRA MĚŘENÍ DIPLOMOVÁ PRÁCE Určení nejistot měření při testování dynamických vlastností A/Č systémů Pavel Fexa 2008 Kopie zadání: Anotace

Více

Struktura a typy lékařských přístrojů. X31LET Lékařskátechnika Jan Havlík Katedra teorie obvodů

Struktura a typy lékařských přístrojů. X31LET Lékařskátechnika Jan Havlík Katedra teorie obvodů Struktura a typy lékařských přístrojů X31LET Lékařskátechnika Jan Havlík Katedra teorie obvodů xhavlikj@fel.cvut.cz Elektronické lékařské přístroje využití přístrojové techniky v medicíně diagnostické

Více

Analogově číslicové převodníky

Analogově číslicové převodníky Verze 1 Analogově číslicové převodníky Doplněná inovovaná přednáška Zpracoval: Vladimír Michna Pracoviště: Katedra textilních a jednoúčelových strojů TUL Tento materiál vznikl jako součást projektu In-TECH

Více

- + C 2 A B V 1 V 2 - U cc

- + C 2 A B V 1 V 2 - U cc RIEDL 4.EB 10 1/6 1. ZADÁNÍ a) Změřte frekvenční charakteristiku operačního zesilovače v invertujícím zapojení pro růžné hodnoty zpětné vazby (1, 10, 100, 1000kΩ). Vstupní napětí volte tak, aby nedošlo

Více

1 SENZORY V MECHATRONICKÝCH SOUSTAVÁCH

1 SENZORY V MECHATRONICKÝCH SOUSTAVÁCH 1 V MECHATRONICKÝCH SOUSTAVÁCH Senzor - důležitá součást většiny moderních elektronických zařízení. Účel: Zjišťovat přítomnost různých fyzikálních, většinou neelektrických veličin, a umožnit další zpracování

Více

11. Odporový snímač teploty, měřicí systém a bezkontaktní teploměr

11. Odporový snímač teploty, měřicí systém a bezkontaktní teploměr 11. Odporový snímač teploty, měřicí systém a bezkontaktní teploměr Otázky k úloze (domácí příprava): Pro jakou teplotu je U = 0 v případě použití převodníku s posunutou nulou dle obr. 1 (senzor Pt 100,

Více

íta ové sít baseband narrowband broadband

íta ové sít baseband narrowband broadband Každý signál (diskrétní i analogový) vyžaduje pro přenos určitou šířku pásma: základní pásmo baseband pro přenos signálu s jednou frekvencí (není transponován do jiné frekvence) typicky LAN úzké pásmo

Více

2. GENERÁTORY MĚŘICÍCH SIGNÁLŮ II

2. GENERÁTORY MĚŘICÍCH SIGNÁLŮ II . GENERÁTORY MĚŘICÍCH SIGNÁLŮ II Generátory s nízkým zkreslením VF generátory harmonického signálu Pulsní generátory X38SMP P 1 Generátory s nízkým zkreslením Parametry, které se udávají zkreslení: a)

Více

Měření na nízkofrekvenčním zesilovači. Schéma zapojení:

Měření na nízkofrekvenčním zesilovači. Schéma zapojení: Číslo úlohy: Název úlohy: Jméno a příjmení: Třída/Skupina: / Měřeno dne: Měření na nízkofrekvenčním zesilovači Spolupracovali ve skupině Zadání úlohy: Na zadaném Nf zesilovači proveďte následující měření

Více

DSY-4. Analogové a číslicové modulace. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

DSY-4. Analogové a číslicové modulace. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti DSY-4 Analogové a číslicové modulace Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti DSY-4 analogové modulace základní číslicové modulace vícestavové modulace modulace s rozprostřeným

Více

Měřící přístroje a měření veličin

Měřící přístroje a měření veličin Číslo projektu Číslo a název šablony klíčové aktivity Tematická oblast CZ.1.07/1.5.00/34.0556 III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT Měřící přístroje a měření veličin Číslo projektu

Více

Číslicová filtrace. FIR filtry IIR filtry. ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická

Číslicová filtrace. FIR filtry IIR filtry. ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Ing. Radek Sedláček, Ph.D., katedra měření K13138 Číslicová filtrace FIR filtry IIR filtry Tyto materiály vznikly za podpory Fondu rozvoje

Více

Operační zesilovač (dále OZ)

Operační zesilovač (dále OZ) http://www.coptkm.cz/ Operační zesilovač (dále OZ) OZ má složité vnitřní zapojení a byl původně vyvinut pro analogové počítače, kde měl zpracovávat základní matematické operace. V současné době je jeho

Více

základní vlastnosti, používané struktury návrhové prostředky MATLAB problém kvantování koeficientů

základní vlastnosti, používané struktury návrhové prostředky MATLAB problém kvantování koeficientů A0M38SPP - Signálové procesory v praxi - přednáška 4 2 Číslicové filtry typu FIR a IIR definice operace filtrace základní rozdělení FIR, IIR základní vlastnosti, používané struktury filtrů návrhové prostředky

Více

Lineární a adaptivní zpracování dat. 1. ÚVOD: SIGNÁLY a SYSTÉMY

Lineární a adaptivní zpracování dat. 1. ÚVOD: SIGNÁLY a SYSTÉMY Lineární a adaptivní zpracování dat 1. ÚVOD: SIGNÁLY a SYSTÉMY Daniel Schwarz Investice do rozvoje vzdělávání Osnova Úvodní informace o předmětu Signály, časové řady klasifikace, příklady, vlastnosti Vzorkovací

Více

31SCS Speciální číslicové systémy Antialiasing

31SCS Speciální číslicové systémy Antialiasing ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE 2006/2007 31SCS Speciální číslicové systémy Antialiasing Vypracoval: Ivo Vágner Email: Vagnei1@seznam.cz 1/7 Převod analogového signálu na digitální Složité operace,

Více

KTE/TEVS - Rychlá Fourierova transformace. Pavel Karban. Katedra teoretické elektrotechniky Fakulta elektrotechnická Západočeská univerzita v Plzni

KTE/TEVS - Rychlá Fourierova transformace. Pavel Karban. Katedra teoretické elektrotechniky Fakulta elektrotechnická Západočeská univerzita v Plzni KTE/TEVS - Rychlá Fourierova transformace Pavel Karban Katedra teoretické elektrotechniky Fakulta elektrotechnická Západočeská univerzita v Plzni 10.11.011 Outline 1 Motivace FT Fourierova transformace

Více

Základní metody číslicového zpracování signálu část I.

Základní metody číslicového zpracování signálu část I. A4M38AVS Aplikace vestavěných systémů Základní metody číslicového zpracování signálu část I. Radek Sedláček, katedra měření, ČVUT v Praze FEL, 2015 Obsah přednášky Úvod, motivace do problematiky číslicového

Více

1. Navrhněte a prakticky realizujte pomocí odporových a kapacitních dekáda derivační obvod se zadanou časovou konstantu: τ 2 = 320µs

1. Navrhněte a prakticky realizujte pomocí odporových a kapacitních dekáda derivační obvod se zadanou časovou konstantu: τ 2 = 320µs 1 Zadání 1. Navrhněte a prakticky realizujte pomocí odporových a kapacitních dekáda integrační obvod se zadanou časovou konstantu: τ 1 = 62µs derivační obvod se zadanou časovou konstantu: τ 2 = 320µs Možnosti

Více

Praha technic/(4 -+ (/T'ERATU"'P. ))I~~

Praha technic/(4 -+ (/T'ERATU'P. ))I~~ Jaroslav Baláte Praha 2003 -technic/(4 -+ (/T'ERATU"'P ))I~~ @ ZÁKLADNí OZNAČENí A SYMBOLY 13 O KNIZE 24 1 SYSTÉMOVÝ ÚVOD PRO TEORII AUTOMATICKÉHO iízení 26 11 VYMEZENí POJMU - SYSTÉM 26 12 DEFINICE SYSTÉMU

Více

18A - PRINCIPY ČÍSLICOVÝCH MĚŘICÍCH PŘÍSTROJŮ Voltmetry, A/D převodníky - principy, vlastnosti, Kmitoměry, čítače, fázoměry, Q- metry

18A - PRINCIPY ČÍSLICOVÝCH MĚŘICÍCH PŘÍSTROJŮ Voltmetry, A/D převodníky - principy, vlastnosti, Kmitoměry, čítače, fázoměry, Q- metry 18A - PRINCIPY ČÍSLICOVÝCH MĚŘICÍCH PŘÍSTROJŮ Voltmetry, A/D převodníky - principy, vlastnosti, Kmitoměry, čítače, fázoměry, Q- metry Digitální voltmetry Základním obvodem digitálních voltmetrů je A/D

Více

Číslicové filtry. Honza Černocký, ÚPGM

Číslicové filtry. Honza Černocký, ÚPGM Číslicové filtry Honza Černocký, ÚPGM Aliasy Digitální filtry Diskrétní systémy Systémy s diskrétním časem atd. 2 Na co? Úprava signálů Zdůraznění Potlačení Detekce 3 Zdůraznění basy 4 Zdůraznění výšky

Více

VY_32_INOVACE_E 15 03

VY_32_INOVACE_E 15 03 Název a adresa školy: Střední škola průmyslová a umělecká, Opava, příspěvková organizace, Praskova 399/8, Opava, 746 01 Název operačního programu: OP Vzdělávání pro konkurenceschopnost, oblast podpory

Více

1. Základy teorie přenosu informací

1. Základy teorie přenosu informací 1. Základy teorie přenosu informací Úvodem citát o pojmu informace Informace je název pro obsah toho, co se vymění s vnějším světem, když se mu přizpůsobujeme a působíme na něj svým přizpůsobováním. N.

Více

MĚŘENÍ A DIAGNOSTIKA

MĚŘENÍ A DIAGNOSTIKA STŘEDNÍ PRŮMYSLOVÁ ŠKOLA STROJNICKÁ A STŘEDNÍ ODBORNÁ ŠKOLA PROFESORA ŠVEJCARA, PLZEŇ, KLATOVSKÁ 109 Milan Nechanický MĚŘENÍ A DIAGNOSTIKA SOUBOR PŘÍPRAV PRO 3 R OBORU 26-41-M/01 ELEKTROTECHNIKA - MECHATRONIKA

Více

4. MĚŘENÍ NA SMĚŠOVAČI A MEZIFREKVENČNÍM FILTRU

4. MĚŘENÍ NA SMĚŠOVAČI A MEZIFREKVENČNÍM FILTRU 4. MĚŘENÍ NA SMĚŠOVAČI A MEZIFREKVENČNÍM FILTRU Cíl měření Seznámit se s vlastnostmi dvojitě vyváženého směšovače a stanovit: 1) spektrum výstupního signálu a vliv mezifrekvenčního filtru na tvar spektra,

Více

ETC Embedded Technology Club setkání 6, 3B zahájení třetího ročníku

ETC Embedded Technology Club setkání 6, 3B zahájení třetího ročníku ETC Embedded Technology Club setkání 6, 3B 13.11. 2018 zahájení třetího ročníku Katedra měření, Katedra telekomunikací,, ČVUT- FEL, Praha doc. Ing. Jan Fischer, CSc. ETC club,6, 3B 13.11.2018, ČVUT- FEL,

Více

OPERA Č NÍ ZESILOVA Č E

OPERA Č NÍ ZESILOVA Č E OPERAČNÍ ZESILOVAČE OPERAČNÍ ZESILOVAČE Z NÁZVU SE DÁ USOUDIT, ŽE SE JEDNÁ O ZESILOVAČ POUŽÍVANÝ K NĚJAKÝM OPERACÍM. PŮVODNÍ URČENÍ SE TÝKALO ANALOGOVÝCH POČÍTAČŮ, KDE OPERAČNÍ ZESILOVAČ DOKÁZAL USKUTEČNIT

Více

Oddělovací moduly VariTrans

Oddělovací moduly VariTrans Oddělovací moduly VariTrans VariTrans B 13000 určen pro standardní průmyslové aplikace, kalibrované rozsahy VariTrans P 15000 profesionální převodník pro standardní signály, kalibrované rozsahy VariTrans

Více

CW01 - Teorie měření a regulace

CW01 - Teorie měření a regulace Ústav technologie, mechanizace a řízení staveb CW01 - Teorie měření a regulace ZS 2014/2015 tm-ch-spec. 1.p 2014 - Ing. Václav Rada, CSc. Ústav technologie, mechanizace a řízení staveb Teorie měření a

Více

Struktura a architektura počítačů (BI-SAP) 5

Struktura a architektura počítačů (BI-SAP) 5 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Struktura a architektura počítačů (BI-SAP) 5 doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii

Více

APLIKACE ALGORITMŮ ČÍSLICOVÉHO ZPRACOVÁNÍ SIGNÁLŮ 1. DÍL

APLIKACE ALGORITMŮ ČÍSLICOVÉHO ZPRACOVÁNÍ SIGNÁLŮ 1. DÍL David Matoušek, Bohumil Brtník APLIKACE ALGORITMÙ ÈÍSLICOVÉHO ZPRACOVÁNÍ SIGNÁLÙ 1 Praha 2014 David Matoušek, Bohumil Brtník Aplikace algoritmù èíslicového zpracování signálù 1. díl Bez pøedchozího písemného

Více

popsat princip činnosti základních zapojení čidel napětí a proudu samostatně změřit zadanou úlohu

popsat princip činnosti základních zapojení čidel napětí a proudu samostatně změřit zadanou úlohu 9. Čidla napětí a proudu Čas ke studiu: 15 minut Cíl Po prostudování tohoto odstavce budete umět popsat princip činnosti základních zapojení čidel napětí a proudu samostatně změřit zadanou úlohu Výklad

Více

Měření nelineárních parametrů

Měření nelineárních parametrů Mikrovlnné měřicí systémy Měření nelineárních parametrů A. Popis nelineárních jevů Přenosové charakteristiky obvodů mohou být z mnoha důvodu nelineární. Použité komponenty vykazují závislosti některých

Více

Harmonizace metod vyhodnocení naměřených dat při zkratových zkouškách

Harmonizace metod vyhodnocení naměřených dat při zkratových zkouškách Harmonizace metod vyhodnocení naměřených dat při zkratových zkouškách P. Křemen (Zkušebnictví, a.s.), R. Jech (Zkušebnictví, a.s) Jsou uvedeny principy a postup harmonizace metod zpracování a vyhodnocení

Více

MĚŘENÍ TEPLOTY TERMOČLÁNKY

MĚŘENÍ TEPLOTY TERMOČLÁNKY MĚŘENÍ TEPLOTY TERMOČLÁNKY Úkoly měření: 1. Změřte napětí termočlánku a) přímo pomocí ručního multimetru a stolního multimetru U3401A. Při výpočtu teploty uvažte skutečnou teplotu srovnávacího spoje termočlánku,

Více

DUM 19 téma: Digitální regulátor výklad

DUM 19 téma: Digitální regulátor výklad DUM 19 téma: Digitální regulátor výklad ze sady: 03 Regulátor ze šablony: 01 Automatizační technika I Určeno pro 4. ročník vzdělávací obor: 26-41-M/01 Elektrotechnika ŠVP automatizační technika Vzdělávací

Více

Čísla, reprezentace, zjednodušené výpočty

Čísla, reprezentace, zjednodušené výpočty Čísla, reprezentace, zjednodušené výpočty Přednáška 4 A3B38MMP kat. měření, ČVUT - FEL, Praha J. Fischer A3B38MMP, 2014, J.Fischer, ČVUT - FEL, kat. měření 1 Čísla 4 bitová dec bin. hex. 0 0000 0 1 0001

Více

Spektrální analyzátory

Spektrální analyzátory Radioelektronická měření (MREM, LREM) Spektrální analyzátory 6. přednáška Jiří Dřínovský Ústav radioelektroniky FEKT VUT v Brně Úvod Spektrální analyzátory se používají pro zobrazení nejrůznějších signálů

Více

VÝVOJ ŘÍDICÍCH ALGORITMŮ HYDRAULICKÝCH POHONŮ S VYUŽITÍM SIGNÁLOVÉHO PROCESORU DSPACE

VÝVOJ ŘÍDICÍCH ALGORITMŮ HYDRAULICKÝCH POHONŮ S VYUŽITÍM SIGNÁLOVÉHO PROCESORU DSPACE VÝVOJ ŘÍDICÍCH ALGORITMŮ HYDRAULICKÝCH POHONŮ S VYUŽITÍM SIGNÁLOVÉHO PROCESORU DSPACE Přednáška na semináři CAHP v Praze 4.9.2013 Prof. Ing. Petr Noskievič, CSc. Ing. Miroslav Mahdal, Ph.D. Katedra automatizační

Více

LabView jako programovací jazyk II

LabView jako programovací jazyk II LabView jako programovací jazyk II - Popis jednotlivých funkcí palety Function I.část - Expresní funkce, struktury, Ing. Martin Bušek, Ph.D. Paleta Functions Základní prvky pro tvorbu programu blokového

Více

Teoretický úvod: [%] (1)

Teoretický úvod: [%] (1) Vyšší odborná škola a Střední průmyslová škola elektrotechnická Božetěchova 3, Olomouc Laboratoře elektrotechnických měření Název úlohy Číslo úlohy ZESILOVAČ OSCILÁTOR 101-4R Zadání 1. Podle přípravku

Více

2 Teoretický úvod Základní princip harmonické analýzy Podmínky harmonické analýzy signálů Obdelník Trojúhelník...

2 Teoretický úvod Základní princip harmonické analýzy Podmínky harmonické analýzy signálů Obdelník Trojúhelník... Obsah 1 Zadání 1 2 Teoretický úvod 1 2.1 Základní princip harmonické analýzy.................. 1 2.2 Podmínky harmonické analýzy signálů................. 1 3 Obecné matematické vyjádření 2 4 Konkrétní

Více

Hlavní parametry rádiových přijímačů

Hlavní parametry rádiových přijímačů Hlavní parametry rádiových přijímačů Zpracoval: Ing. Jiří Sehnal Pro posouzení základních vlastností rádiových přijímačů jsou zavedena normalizovaná kritéria parametry, podle kterých se rádiové přijímače

Více

Tel-30 Nabíjení kapacitoru konstantním proudem [V(C1), I(C1)] Start: Transient Tranzientní analýza ukazuje, jaké napětí vytvoří proud 5mA za 4ms na ka

Tel-30 Nabíjení kapacitoru konstantním proudem [V(C1), I(C1)] Start: Transient Tranzientní analýza ukazuje, jaké napětí vytvoří proud 5mA za 4ms na ka Tel-10 Suma proudů v uzlu (1. Kirchhofův zákon) Posuvným ovladačem ohmické hodnoty rezistoru se mění proud v uzlu, suma platí pro každou hodnotu rezistoru. Tel-20 Suma napětí podél smyčky (2. Kirchhofův

Více

ZÁKLADY AUTOMATICKÉHO ŘÍZENÍ

ZÁKLADY AUTOMATICKÉHO ŘÍZENÍ VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ ZÁKLADY AUTOMATICKÉHO ŘÍZENÍ 1. týden doc. Ing. Renata WAGNEROVÁ, Ph.D. Ostrava 2013 doc. Ing. Renata WAGNEROVÁ, Ph.D. Vysoká škola báňská

Více

Technická kybernetika. Obsah. Principy zobrazení, sběru a uchování dat. Měřicí řetězec. Principy zobrazení, sběru a uchování dat

Technická kybernetika. Obsah. Principy zobrazení, sběru a uchování dat. Měřicí řetězec. Principy zobrazení, sběru a uchování dat Akademický rok 2016/2017 Připravil: Radim Farana Technická kybernetika Principy zobrazení, sběru a uchování dat 2 Obsah Principy zobrazení, sběru a uchování dat strana 3 Snímač Měřicí řetězec Měřicí obvod

Více

Struktura a typy lékařských přístrojů. X31LET Lékařskátechnika Jan Havlík Katedra teorie obvodů

Struktura a typy lékařských přístrojů. X31LET Lékařskátechnika Jan Havlík Katedra teorie obvodů Struktura a typy lékařských přístrojů X31LET Lékařskátechnika Jan Havlík Katedra teorie obvodů xhavlikj@fel.cvut.cz Elektronické lékařské přístroje využití přístrojové techniky v medicíně diagnostické

Více

Externí 12V / 200 ma (adaptér v příslušenství)

Externí 12V / 200 ma (adaptér v příslušenství) ORCA 2800 DVOUKANÁLOVÝ A/D PŘEVODNÍK Orca 2800 je externí precizní dvoukanálový 24bit A/D převodník s dvěma analogovými a čtyřmi digitálními vstupy, čtyřmi číslicovými výstupy a jedním pomocným D/A převodníkem.

Více

Teorie úlohy: Operační zesilovač je elektronický obvod, který se využívá v měřící, výpočetní a regulační technice. Má napěťové zesílení alespoň A u

Teorie úlohy: Operační zesilovač je elektronický obvod, který se využívá v měřící, výpočetní a regulační technice. Má napěťové zesílení alespoň A u Fyzikální praktikum č.: 7 Datum: 7.4.2005 Vypracoval: Tomáš Henych Název: Operační zesilovač, jeho vlastnosti a využití Teorie úlohy: Operační zesilovač je elektronický obvod, který se využívá v měřící,

Více

Analýza a zpracování digitálního obrazu

Analýza a zpracování digitálního obrazu Analýza a zpracování digitálního obrazu Úlohy strojového vidění lze přibližně rozdělit do sekvence čtyř funkčních bloků: Předzpracování veškerých obrazových dat pomocí filtrací (tj. transformací obrazové

Více

Učební osnova předmětu ELEKTRICKÁ MĚŘENÍ

Učební osnova předmětu ELEKTRICKÁ MĚŘENÍ Učební osnova předmětu ELEKTRICKÁ MĚŘENÍ Obor vzdělání: 2-41-M/01 Elektrotechnika (slaboproud) Forma vzdělávání: denní studium Ročník kde se předmět vyučuje: třetí, čtvrtý Počet týdenních vyučovacích hodin

Více

Pracoviště 1. Vliv vnitřního odporu voltmetru na výstupní napětí můstku. Přístroje: Úkol měření: Schéma zapojení:

Pracoviště 1. Vliv vnitřního odporu voltmetru na výstupní napětí můstku. Přístroje: Úkol měření: Schéma zapojení: Přístroje: Pracoviště 1. Vliv vnitřního odporu voltmetru na výstupní napětí můstku zdroj stejnosměrného napětí 24 V odporová dekáda 2 ks voltmetr 5kΩ/ V, rozsah 1,2 V voltmetr 1kΩ/ V, rozsah 1,2 V voltmetr

Více

Číslicové zpracování signálů a Fourierova analýza.

Číslicové zpracování signálů a Fourierova analýza. Číslicové zpracování signálů a Fourierova analýza www.kme.zcu.cz/kmet/exm 1 Obsah prezentace 1. Úvod a motivace 2. Data v časové a frekvenční oblasti 3. Fourierova analýza teoreticky 4. Fourierova analýza

Více

(s výjimkou komparátoru v zapojení č. 5) se vyhněte saturaci výstupního napětí. Volte tedy

(s výjimkou komparátoru v zapojení č. 5) se vyhněte saturaci výstupního napětí. Volte tedy Operační zesilovač Úvod Operační zesilovač je elektronický obvod hojně využívaný téměř ve všech oblastech elektroniky. Jde o diferenciální zesilovač napětí s velkým ziskem. Jinak řečeno, operační zesilovač

Více

Funkce komplexní proměnné a integrální transformace

Funkce komplexní proměnné a integrální transformace Funkce komplexní proměnné a integrální transformace Fourierovy řady I. Marek Lampart Text byl vytvořen v rámci realizace projektu Matematika pro inženýry 21. století (reg. č. CZ.1.07/2.2.00/07.0332), na

Více

Automatizace je proces při němž je řídicí funkce člověka nahrazována činností

Automatizace je proces při němž je řídicí funkce člověka nahrazována činností Automatizace je proces při němž je řídicí funkce člověka nahrazována činností různých přístrojů a zařízení. (Mechanizace, Automatizace, Komplexní automatizace) Kybernetika je Věda, která zkoumá obecné

Více

Mikrosenzory a mikroelektromechanické systémy

Mikrosenzory a mikroelektromechanické systémy Mikrosenzory a mikroelektromechanické systémy Ing. Jaromír Hubálek, Ph.D. Ústav mikroelektroniky U7/104 Tel. 54114 6163 hubalek@feec.vutbr.cz http://www.umel.feec.vutbr.cz/~hubalek Obsah Úvod do senzorové

Více

SIGNÁLY A SOUSTAVY, SIGNÁLY A SYSTÉMY

SIGNÁLY A SOUSTAVY, SIGNÁLY A SYSTÉMY SIGNÁLY A SOUSTAVY, SIGNÁLY A SYSTÉMY TEMATICKÉ OKRUHY Signály se spojitým časem Základní signály se spojitým časem (základní spojité signály) Jednotkový skok σ (t), jednotkový impuls (Diracův impuls)

Více

Obr. 1 Činnost omezovače amplitudy

Obr. 1 Činnost omezovače amplitudy . Omezovače Čas ke studiu: 5 minut Cíl Po prostudování tohoto odstavce budete umět definovat pojmy: jednostranný, oboustranný, symetrický, nesymetrický omezovač popsat činnost omezovače amplitudy a strmosti

Více

Srovnání kvality snímání analogových veličin řídících desek se signálovým procesorem Motorola DSP56F805. Úvod. Testované desky

Srovnání kvality snímání analogových veličin řídících desek se signálovým procesorem Motorola DSP56F805. Úvod. Testované desky Srovnání kvality snímání analogových veličin řídících desek se signálovým procesorem Motorola DSP56F805 Anotace: Tento dokument vznikl pro interní účely Výzkumného centra spalovacích motorů a automobilů

Více

TECHNICKÁ UNIVERZITA V LIBERCI

TECHNICKÁ UNIVERZITA V LIBERCI TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky, informatiky a mezioborových studií Základní pojmy diagnostiky a statistických metod vyhodnocení Učební text Ivan Jaksch Liberec 2012 Materiál vznikl

Více

ROZDĚLENÍ SNÍMAČŮ, POŽADAVKY KLADENÉ NA SNÍMAČE, VLASTNOSTI SNÍMAČŮ

ROZDĚLENÍ SNÍMAČŮ, POŽADAVKY KLADENÉ NA SNÍMAČE, VLASTNOSTI SNÍMAČŮ ROZDĚLENÍ SNÍMAČŮ, POŽADAVKY KLADENÉ NA SNÍMAČE, VLASTNOSTI SNÍMAČŮ (1.1, 1.2 a 1.3) Ing. Pavel VYLEGALA 2014 Rozdělení snímačů Snímače se dají rozdělit podle mnoha hledisek. Základním rozdělení: Snímače

Více

A/D a D/A PŘEVODNÍK 0(4) až 24 ma DC, 16 bitů

A/D a D/A PŘEVODNÍK 0(4) až 24 ma DC, 16 bitů Deska obsahuje osm samostatných galvanicky oddělených vstupních A/D převod-níků pro měření stejnosměrných proudových signálů 0(4) 20 ma z technologických převodníků a snímačů a čtyři samostatné galvanicky

Více

Elektronické praktikum EPR1

Elektronické praktikum EPR1 Elektronické praktikum EPR1 Úloha číslo 4 název Záporná zpětná vazba v zapojení s operačním zesilovačem MAA741 Vypracoval Pavel Pokorný PINF Datum měření 9. 12. 2008 vypracování protokolu 14. 12. 2008

Více

VSTUPNÍ VÝSTUPNÍ ROZSAHY

VSTUPNÍ VÝSTUPNÍ ROZSAHY Univerzální vysokonapěťový oddělovací modul VariTrans P 29 000 P0 ní signály ±30 mv až ±1000 V ±20 ma, ±10 V nebo 0(4)..20 ma Pracovní napětí až 1000 V ac/dc Přesnost 0,1 nebo 0,2 % z rozsahu Zkušební

Více

Laboratorní zdroj - 6. část

Laboratorní zdroj - 6. část Laboratorní zdroj - 6. část Publikované: 20.05.2016, Kategória: Silové časti www.svetelektro.com V tomto článku popíšu způsob, jak dojít k rovnicím (regresní funkce), které budou přepočítávat milivolty

Více

Návrh frekvenčního filtru

Návrh frekvenčního filtru Návrh frekvenčního filtru Vypracoval: Martin Dlouhý, Petr Salajka 25. 9 2010 1 1 Zadání 1. Navrhněte co nejjednodušší přenosovou funkci frekvenčního pásmového filtru Dolní propusti typu Bessel, která bude

Více

D C A C. Otázka 1. Kolik z následujících matic je singulární? A. 0 B. 1 C. 2 D. 3

D C A C. Otázka 1. Kolik z následujících matic je singulární? A. 0 B. 1 C. 2 D. 3 atum narození Otázka. Kolik z následujících matic je singulární? 4 A. B... 3 6 4 4 4 3 Otázka. Pro která reálná čísla a jsou vektory u = (,, 3), v = (3, a, ) a w = (,, ) lineárně závislé? A. a = 5 B. a

Více

Fakulta elektrotechnická Katedra aplikované elektroniky a telekomunikací. Diplomová práce. Testování a měření audio A/D a D/A převodníků

Fakulta elektrotechnická Katedra aplikované elektroniky a telekomunikací. Diplomová práce. Testování a měření audio A/D a D/A převodníků Fakulta elektrotechnická Katedra aplikované elektroniky a telekomunikací Diplomová práce Testování a měření audio A/D a D/A převodníků Autor práce: Bc. Ladislav Bokr Vedoucí práce: Ing. Jiří Stifter, Ph.D.

Více

Dodatek k uživatelském manuálu Adash 4202 Revize 040528MK

Dodatek k uživatelském manuálu Adash 4202 Revize 040528MK Vyvažovací analyzátory Adash 4200 Dodatek k uživatelském manuálu Adash 4202 Revize 040528MK Email: info@adash.cz Obsah: Popis základních funkcí... 3 On Line Měření... 3 On Line Metr... 3 Časový záznam...

Více

3 METODY PRO POTLAČENÍ ŠUMU U ŘE- ČOVÉHO SIGNÁLU

3 METODY PRO POTLAČENÍ ŠUMU U ŘE- ČOVÉHO SIGNÁLU 3 METODY PRO POTLAČENÍ ŠUMU U ŘE- ČOVÉHO SIGNÁLU V současné době se pro potlačení šumu u řečového signálu používá mnoho různých metod. Jedná se například o metody spektrálního odečítání, Wienerovy filtrace,

Více

Operační zesilovač, jeho vlastnosti a využití:

Operační zesilovač, jeho vlastnosti a využití: Truhlář Michal 6.. 5 Laboratorní práce č.4 Úloha č. VII Operační zesilovač, jeho vlastnosti a využití: Úkol: Zapojte operační zesilovač a nastavte jeho zesílení na hodnotu přibližně. Potvrďte platnost

Více

ODHALOVÁNÍ PADĚLKŮ SOUČÁSTEK PARAMETRICKÝM MĚŘENÍM

ODHALOVÁNÍ PADĚLKŮ SOUČÁSTEK PARAMETRICKÝM MĚŘENÍM ODHALOVÁNÍ PADĚLKŮ SOUČÁSTEK PARAMETRICKÝM MĚŘENÍM Unites Systems a.s. 8.12.2011 1 recyklace ZDROJE PROBLÉMOVÝCH SOUČÁSTEK degradace parametrů přehřátím při demontáži, ESD problémy apod. vyřazení při testech/

Více

SIGNÁLY A LINEÁRNÍ SYSTÉMY

SIGNÁLY A LINEÁRNÍ SYSTÉMY SIGNÁLY A LINEÁRNÍ SYSTÉMY prof. Ing. Jiří Holčík, CSc. holcik@iba.muni.cziba.muni.cz II. SIGNÁLY ZÁKLADNÍ POJMY SIGNÁL - DEFINICE SIGNÁL - DEFINICE Signál je jev fyzikální, chemické, biologické, ekonomické

Více

Semestrální projekt. Vyhodnocení přesnosti sebelokalizace VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ. Fakulta elektrotechniky a komunikačních technologií

Semestrální projekt. Vyhodnocení přesnosti sebelokalizace VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ. Fakulta elektrotechniky a komunikačních technologií VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta elektrotechniky a komunikačních technologií Semestrální projekt Vyhodnocení přesnosti sebelokalizace Vedoucí práce: Ing. Tomáš Jílek Vypracovali: Michaela Homzová,

Více

ČESKÁ TECHNICKÁ NORMA

ČESKÁ TECHNICKÁ NORMA ČESKÁ TECHNICKÁ NORMA ICS 17.160 2001 Metody kalibrace snímačů vibrací a rázů - Část 11: Primární kalibrace vibracemi pomocí laserové interferometrie ČSN ISO 16063-11 01 1417 Leden Methods for the calibration

Více

I. Současná analogová technika

I. Současná analogová technika IAS 2010/11 1 I. Současná analogová technika Analogové obvody v moderních komunikačních systémech. Vývoj informatických technologií v poslední dekádě minulého století digitalizace, zvýšení objemu přenášených

Více

SIGNÁLY A LINEÁRNÍ SYSTÉMY

SIGNÁLY A LINEÁRNÍ SYSTÉMY SIGNÁLY A LINEÁRNÍ SYSTÉMY prof. Ing. Jiří Holčík, CSc. holcik@iba.muni.cz II. SIGNÁLY ZÁKLADNÍ POJMY SIGNÁL - DEFINICE SIGNÁL - DEFINICE Signál je jev fyzikální, chemické, biologické, ekonomické či jiné

Více

1 Zadání. 2 Teoretický úvod. 7. Využití laboratorních přístrojů v elektrotechnické praxi

1 Zadání. 2 Teoretický úvod. 7. Využití laboratorních přístrojů v elektrotechnické praxi 1 7. Využití laboratorních přístrojů v elektrotechnické praxi 1 Zadání Zapojte pracoviště podle pokynů v pracovním postupu. Seznamte se s ovládáním přístrojů na pracovišti a postupně realizujte jednotlivé

Více

Úvod do programování. Lekce 1

Úvod do programování. Lekce 1 Úvod do programování Lekce 1 Základní pojmy vytvoření spustitelného kódu editor - psaní zdrojových souborů preprocesor - zpracování zdrojových souborů (vypuštění komentářů atd.) kompilátor (compiler) -

Více

Modelování a simulace Lukáš Otte

Modelování a simulace Lukáš Otte Modelování a simulace 2013 Lukáš Otte Význam, účel a výhody MaS Simulační modely jsou nezbytné pro: oblast vědy a výzkumu (základní i aplikovaný výzkum) analýzy složitých dyn. systémů a tech. procesů oblast

Více