MIKROSYSTEMY POMIAROWE I PROCESORY SYGNAŁOWE mgr inż. Kazimierz Brydak pok. bud. A 204 lab. bud. A 208 17- 865-1438 Mikrosystemy (ang. MST - Micro Systems Technology) są to miniaturowe systemy pomiarowe i wykonawcze, integrujące w skali mikro: czujniki pomiarowe, siłowniki, bloki cyfrowego przetwarzania sygnałów i interfejsy cyfrowe. Technologia mikrosystemów należy do rewolucyjnych technologii XXI wieku. Oparta jest najczęściej na mikro mechanicznych strukturach wykonywanych trójwymiarowo na bazie półprzewodnikowych. Umożliwia wykonanie: czujników wielkości fizycznych, chemicznych i biologicznych, mikro siłowników i systemów wykonawczych, elementów optycznych, elementów chemicznych, układów elektronicznych System Pomiarowy Systemem pomiarowym jest zbiór środków technicznych podporządkowanych wspólnemu celowi i ogólnemu algorytmowi działania, przeznaczony do automatycznego uzyskiwania informacji bezpośrednio z obiektu w celu przekształcenia, pomiaru, przetworzenia, utrwalenia i przedstawienia w formie dostosowanej do wykorzystania przez człowieka oraz dla wprowadzenia do zautomatyzowanego urządzenia sterującego. Cyfrowym systemem pomiarowym jest zespół elementów (urządzeń lub bloków funkcjonalnych), współpracujących ze sobą według określonego algorytmu, połączonych układem przesyłania informacji, tzw. systemem interfejsu , przeznaczony do automatycznego uzyskiwania, przetwarzania, rejestracji i prezentacji w pożądanej formie informacji pomiarowych. Mikroprocesorowe Systemy Pomiarowe Podstawowe jednostki funkcjonalne: jednostki wejścia/wyjścia (WE/WY) jednostki pamięci (pamięć instrukcji programu, pamięć danych) jednostki procesorów – procesor jednostki centralnej (CPU – ang.) szyny systemowe (t.j. szyna adresu, szyna danych, szyna sterująca) szyna adresowa Klawiatura urządzenia wejścia Porty Wejścia Mikro procesor Pamięć szyna danych szyna sterująca Podstawowa architektura systemu mikroprocesorowego Porty Wyjścia Wyświetlacz urządzenia wyjścia Cyfrowe (dwustanowe), wejścia i wyjścia Przełączniki, przyciski, ... Analogowe wyjścia, (sygnały napięciowe, prądowe) Analogowe wejścia (sygnały napięciowe, prądowe) ..... ..... Przetworniki C/A Przetworniki A/C Analogowe wejścia (sygnały napięciowe, prądowe) ..... Przetworniki A/C pomocnicze (pomiar zimnych końców termopar) Ogólny schemat mikroprocesorowego systemu pomiarowego Mikroprocesor + procesor numeryczny Interfejs komunikacyjny (RS232, RS485..) RAM (EEPROM) Interfejs sieciowe (ethernet) ROM (FLASH ROM) Myszka Klawiatura Plotter Dysk elastyczne Dysk optyczny R/W Monitor ekranowy (graficzny) Drukarka (laserowa, atram., term.) Jednostki wejścia/wyjścia 8-bitowa wewnętrzna magistrala danych Rejestr sterujący PORT C PORT B PORT A Rejestr statusu 4 4 8 8 Przykładowy układ blokowy interfejsu urządzeń WE/WY cyfrowych dwukierunkowych - dedykowanych w procesie prgramowania trybu pracy jednostki Bufor trzy- stanowy: wejście (tabela stanów) zezwolenie wyjście JEDNOSTKI PAMIĘCI pamięci półprzewodnikowe Pamięć o dostępie swobodnym RAM (random Pamięć tylko do odczytu - ROM access memory), R/W statyczne (flip-flop), programowane maską (ROM), dynamiczne (pojemnościowe) programowane przez użytkownika (PROM), kasowalne PROM (EPROM), przeprogramowywane elektrycznie (EAROM) adresowanie pamięci (metody): adresowanie bezpośrednie, adresowanie pośrednie, adresowanie indeksowe, adresowanie rejestrowe, stronicowanie pamięci, ........ hierarchia urządzeń pamięciowych: AKUMULATOR REJESTRY ROBOCZE PAMIĘĆ PODRĘCZNA RAM / ROM Dyski Twarde (magnetyczne) Dyski Optyczne Pamięci taśmowe (streamer) Dyski elastyczne organizacja wewnętrzna pamięci: monitor ROM, rozszerzenie ROM obszar roboczy klawiatury, displeya, urządzeń peryferyjnych, ..... podstawowa pamięć RAM, rozszerzona pamięć RAM, obszary wolne, obszary rezerwowane obszary wymiany z innymi urządzeniami np. DMA (direct memory access) ........ Procesor jednostki centralnej: zadania procesora: operacje transferu danych, operacje arytmetyczne, operacje logiczne, operacje skoków, odgałęzień, obsługa stosu, WE/WY, operacje sterowania grupowego, podzespoły procesora: licznik programu, dekoder instrukcji, moduł zegarowy i sterujący, moduł jednostki arytmetyczno-logicznej ALU, zbiór rejestrów roboczych, ........ mikroprocesory jednoukładowe (zawierające ROM, RAM, WE/WY cyfr. i analogowe, wewn. generator sygn. zegarowych, ...) mikroprocesory zorientowane do ściśle wyznaczonych zadań (kontrolery), mikroprocesory bitowo-okrojone ( do prac wielo-sekcyjnych), ......... przykład architektury mikroprocesora: (uproszczony schemat blokowy zawierający jednostkę ALU, Akumulator, rejestry robocze, szynę danych we, szynę danych wy, moduł zegarowo/sterujący, ......) a. Architektura Von Neumanna (pojedyncza pamięć) SZYNA ADR. PAMIĘĆ PROGRAMU I DANYCH JEDNOSTKA CENTRALNA CPU SZYNA DANYCH b. Architektura Harvardzka (podwójna pamięć) SZYNA ADR. PROGR. SZYNA ADR. DANYCH CPU PAMIĘĆ PROGRAMU PAMIĘĆ DANYCH SZYNA DANYCH SZYNA PROGR. c. Architektura super-Harvardzka (podwójna pamięć, pamięć podręczna instrukcji, kontroler WE/WY) SZYNA ADR. PROGR. PAMIĘĆ PROGRAMU SZYNA PROGR. CPU instrukcje pam. podręcznej SZYNA ADR. DANYCH PAMIĘĆ DANYCH SZYNA DANYCH instrukcje i drugorzędne dane Kontroler I/O DANE ZEWNĘTRZNE Architektura procesorów Intel 80C51/52 Przerwania zewnętrzne Kontr. Przerwań Timer 0 4…64k ROM 128/256 RAM Timer 1 Kontr. Magistral Porty WE/WY SIO We0 We1 CPU Osc TxD P0 P2 P1 RxD P3 Adresy/Dane Organizacja pamięci IRQ4 0023H IRQ3 001BH IRQ2 0013H IRQ1 000BH IRQ0 0003H 80C51 P1 P0 EPROM ALE ADDR Latch P3 P2 0000H Reset OE System przerwań (wektor przerwań): Dołączenie zewnętrznej pamięci programu. Organizacja pamięci programu: Przestrzeń pamięci programu ROM Organizacja pamięci programu ROM FLASH/EE (big memory) 0FFFFh obszar kodu programu ładującego producenta Zewn. EPROM obszar kodu programu ładującego użytkownika 62kB kodu użytkownika EA=1 Wewn. x kB FLASH/EE 01FFFh 0000h PSEN EA=0 Zewn. x kB obszar kodu programu użytkownika 0FFFFh 2 kB 0F800h 0F7FFh 6 kB 0E000h 0DFFFh 56 kB 0000h Organizacja pamięci danych 0FFFFFFh 0FFFFFFh Obszar zewnętrznej pamięci danych (24-bit adres) Obszar zewnętrznej pamięci danych (24-bit adres) 000000h 000000h CFG8xx.0=0 2 kB wewn. pamięci danych CFG8xx.0=1 Model programowy mikrosystemu 4 kB reprogr. nieulotnej pamięci danych FLASH/EE 62kB reprogr. nieulotnej pamięci programu FLASH/EE Rdzeń 8051/52 2304 bajty RAM obszar 128bajtów rejestrów specjalnych SFR 8-kanałowy 12-bitowy przetwornik A/C inne urządzenia peryferyjne: czujnik temp. 2 x 12-bit C/A WDT PSM TIC INSTRUKCJE PROGRAMOWE MIKROPROCESORA I80C51 Tryby adresowania Natychmiastowe (immediate) dotyczy argumentu umieszczonego w kodzie istrukcji (instrukcja z operandem bezpośrednim) Rejestrowe bezpośrednie (register direct) wskazuje jeden z rejestrów procesora jako miejsce operandu (w kodzie instrukcji podawany jest numer tego rejestru) Bezpośredni (direct) – związany z adresowaniem danych w pamięci, efektywny adres operandu podany jest bezpośrednio w kodzie instrukcji (bezpośrednio mogą być tylko wewn. pamięć RAM i obszar rejestrów SFR) Rejestrowy pośredni (register indirect) – adres komórki pamięci przechowującej dany operand odczytywany jest z rejestru procesora (przy wykorzystaniu rejestrów R0, R1 wybranego banku rejestrów - możliwe adresowanie pamięci RAM wewn. i zewn.) Pośrednie- zawartością rejestru bazowego i indeksowego - do 16-bitowego adresu bazowego (DPTR lub PC) jest dodawana 8-bitowa zawartość akumulatora A. Instrukcje arytmetyczne ADD A,#127 ; adresowanie natychmiastowe ADD a,R7 ; adresowanie rejestrowe bezpośrednie ADD a,7FH ; bezpośrednie ADD A,@R0 ; adresowanie pośrednie Przykład mikrokontrolera z przetwornikiem A/C Specjalizowane moduły zegarów/liczników CT0I Int CT1I Int CTI0 CT2I CTI1 CT0 CT2I Int CTI2 CT1 CTI3 CT2 off fosc Int CT3 przerwanie od 8-bitowego przepełnienia 1/12 T2 Licznik Prescaler przerwanie od 16bitowego przepełnienia T2 RT2 T2ER zezwolenie zewn. zerowania magistrala 16-bitowa S R P4.0 S R P4.1 S R P4.2 S R P4.3 S R P4.4 S R P4.5 TG T P4.6 TG T STE RTE S = set R = reset T = toglle TG = toglle status COMP Int COMP Int COMP Int I/O Port 4 CM0 (S) CM1 (R) CM2 (T) P4.7 Port P4 T2 SFR address: TML2 = lower 8 bits TMH2 = higher 8 bits Schemat blokowy układu zegara/licznika 2 mikrokontrolera 80C552 Philips T2 Licznik COMP CM0, CM1, CM2 - zegar licznik 16 bitowy, dostęp 8-bitowy: rejestry TML2, TMH2 - komparator cyfrowy 16-bitowy (1-arg: Licznik L2, 2-arg: rejestr CMi) - rejestry 16 bitowe, dostęp 8-bitowy, CMLi, CMHi - rejestry warunkujące działanie wybranych linii portu P4 na skutek cyfrowej komparacji CMi, CT0, CT1, CT2, CT3 - rejestry 16 bitowe, na skutek zdarzenia (opadające zbocze, narastające zbocze sygnału CTiI ) do rejestru wpisywana jest 16-bitowa, bieżąca zawartość, licznika L2 STE, RTE CTIi IRQi - jednobitowe wskaźniki zdarzenia i - przepełnienie 8 i 16 bitowe licznika L2 Rejestr sterujący zegara/licznika 2 mikrokontrolera 80C552 Philips (TM2CON) Programowane moduły zliczające w pomiarach interwału czasu, okresu i częstotliwości jednobitowy wskaźnik wpisu do rejestru CT0 licznika L2 CTI0 rejestr CT0 licznika L2 badany sygnał INT CTL0 fx CTH0 wewnętrzna 16 bit. magistrala danych PRZERWANIE (INT): 16 bitowe przepełnienie licznika L2 rejestr licznika L2 fosc=11,0592MHz Dzielnik wstępny 1/2/4/8 1/12 T2H T2L moduł licznika L2 Schemat blokowy struktury układu do pomiaru okresu i częstotliwości przy wykorzystaniu struktury układu licznikowego L2. Bieżący stan licznika L2 Przerwania INT14 Przepełnienie licznika L2 65535 65534 65533 25537 25538 25539 00002 00001 00000 INT14 Przepełnienie licznika L2 + Sygnał fosc t Sygnał fx Stan licznika L2 rejestrowany w rejestrze CT0 (CTH0, CTL0) N1 długość słowa licznika L2: N N2 (16) N 2 Pojemność licznika L2: (65536) Liczba przepełnień licznika L2 (zgłoszonych przerwań od L2): Nirq Okres sygnału fx (interwał czasu τx): Tx Tosc N 2 N1 Nirq 2 N Częstotliwość fx: fx 1 Tx t Program pomiaru okresu (częstotliwości) - PB552 #include <stdio.h> #include <reg552.h> idata union { struct { char hi, lo; } byte; unsigned int word; } N1, N2; idata unsigned N; idata unsigned long LN; static idata unsigned char irq; float Tosc,Tx,Fx; void T2_int() interrupt 14 { irq++; T20V=0; } main() { TM2CON=0x81; CTCON=0x01; Tosc=12.0/11059200.0; EA=1; while (1) { CTI0=0; while (CTI0==0); N1.byte.hi=CTH0; N1.byte.lo=CTL0; /* odbierz wartosc T2 */ /* oczekujemy na drugie zbocze i zliczamy przepelnienia */ T20V=0; ET2=1; CTI0=0; while (CTI0==0); ET2=0; /* zablokuj zglaszanie przerwan od przepelnien T2 */ N2.byte.hi=CTH0; N2.byte.lo=CTL0; /* odbierz wartosc N2 */ N=N2.word-N1.word; if (N2.word < N1.word) irq--; LN=N+irq*65536L; Tx=LN*Tosc; Fx=1.0/Tx; printf("\nN1=%5u N2=%5u i=%bu", N1.word, N2.word, irq); printf(" N=%8Lu Tx=%.7f Fx=%5.5f", LN, Tx, Fx); irq=0; } } Ogólny schemat blokowy przetwornika A/C 80C552 Philips Schemat blokowy modułu przetwornika A/C mikrokontrolera 80C552 Philips 7 6 5 4 3 2 1 0 ADCON ADC.1 ADC.0 ADEX ADCI ADCS AADR 2 AADR 1 AADR 0 ADCH ADC.9 ADC.8 ADC.7 ADC.6 ADC.5 ADC.4 ADC.3 ADC.2 Rejestry SFR BIT ADCON.7 ADCON.6 Symbol ADC.1 ADC.0 ADCON.5 ADEX ADCON.4 ADCI ADCON.3 ADCS -//- ADCI ADCS ADCON.2 ADCON.1 ADCON.0 AADR2 AADR1 AADR0 Funkcja Pierwszy bit wartości konwersji A/C Drugi bit wartości konwersji A/C Blokada zewnętrznego startu konwersji przez STADC: 0 = konwersja nie może być uruchomiona zewnętrznym sygnałem STADC (pin STADC); 1 = konwersja może być uruchomiona zewnętrznym sygnałem STADC Flaga przerwania od przetwornika A/C. Flaga ta jest ustawiana gdy wynik konwersji jest gotowy do odczytu. Flaga musi być zerowana programowo. Start i status przetwarzania. Ustawienie tego bitu rozpoczyna konwersję. Musi być on ustawiany programowo lub poprzez zewnętrzny sygnał (pin STADC). Bit ADCS pozostaje 1 w czasie procesu przetwarzania, gdy konwersja zostaje zakończona ADCS zostaje resetowany równocześnie z pojawieniem się przerwania i flagi ADCI. ADCS nie może być zerowany programowo. ADCI 0 0 1 1 ADCS 0 1 0 1 OPERACJA PRZETWORNIK A/C WOLNY, KONWERSJA MOŻE SIĘ ROZPOCZĄĆ, PRZETWORNIK A/C ZAJĘTY, BLOKADA STARTU NOWEJ KONWERSJI, KONWERSJA ZAKOŃCZONA, BLOKADA STARTU NOWEJ KONWERSJI, Stan nie możliwy. Wybór wejścia analogowego. Bity te kodują binarnie jedno z 8 wejść analogowych portu P5 jako wybrane do procesu konwersji. Mogą być ustawiane tylko gdy ADCI i ADCS są w stanie niskim. Rezultat 2 N Vin AV REF AV REF AV REF N – dł. słowa przetwornika, AVREFAVREF+ - napięcia referencyjne przetwornika Vin Rezultat AVREF AVREF AVREF N 2 jeżeli: Vin AV REF 0 [V ] Rezultat AV REF N 2 Przykład algorytmu konwersji wyniku przetwarzania A/C przy parametrach: N=10; AV REF 0 [V ] ; AVREF 2.5 [V ] float Vin, AVRef; AVRef=2.5; Vin=(float)((256*ADCH+(ADCON&0xC0))>>6)*AVRef/1024; Przykład uproszczonego algorytmu konwersji wyniku przetwarzania A/C (bez stosowania arytmetyki liczb zmiennoprzecinkowych), wynik konwersji jest liczbą typu int reprezentującą wartość napięcia wejściowego w [mV] : N=10; AV REF 0 [V ] ; AV REF 5.12 [V ] /* uwaga: (5.12/1024)*1000 = 5 */ int Vin; Vin=5*((256*ADCH+(ADCON&0xC0))>>6); Przykład algorytmu obsługi wielokanałowego przetwornika A/C z wyzwalaniem sprzętowym serii pomiarów (sygnał wyzwalający STADC – przepełnienie 16-bitowe modułu zegara/licznika L2). Obsługa przetwornika, rejestru kontrolno sterującego ADCON – w trybie przeglądania, zastosowano również uproszczony sposób konwersji wyników przy zastosowaniu źródła napięcia referencyjnego AVRef=5.12V. Wyniki konwersji przekazywane są kanałem transmisji szeregowej do zewnętrznego odbiornika . /************************************************************* * Moduł: adc_pol.c * Aplikacja: Programu demonstracyjny obsługi przetwornika ADC * mikrokontroler typu: 8xC552 * Obsługa przetwornika w trybie przeglądania * UWAGA: * Kanały są skanowane kolejno po narastającym zboczu sygnału STADC, * Sygnał jest podłączony do P4.7i jest powtarzany z okresem repetycji * co 1.14s. Okres ten jest kontrolowany przez moduł zegara/licznika T2. * Rezultaty przetwarzania przekazywane są kanałem transmisji szeregowej UART. **************************************************************************/ #define ADEX 0x20 #define ADCI 0x10 #define ADCS 0x08 void write_UART (unsigned int *ptr, unsigned int k); void main(void) { unsigned int conversion, result_ADC[8]; unsigned char ADC_Channel; S0CON=0x40; TH1=TL1=0xFD; PCON=0x80; TMOD=0x20; TR1=1; TM2CON=0x0D; RTE=0x80; /* 8 bits, no parity, 1 STOP bit */ /* 19200 Baud @11.0592MHz */ /* źródło sygn. zegarowego T2: osc/96 */ /* okres przepełnień: 0.569ms P4.7 zmienia stan na przeciwny co każde 0.569ms ADC konwersja narastającym zboczem sygnału STADC P4.7/STADC: 1.14ms szybkość konwersji */ conversion=0; while (1) { for (ADC_Channel=0; ADC_Channel < 8; ADC_Channel++) { ADCON=0; /* ADCI i ADCS są zerowane */ ADCON=ADC_Channel; /* przed wybraniem numeru kanału ADC */ if (ADC_Channel==0) ADCON=ADEX; /* ADC0: zewnętrzny start konwersji T2 */ else ADCON=ADCON | ADCS; /* ADC1..ADC7: programowy start */ while((ADCON&ADCI)==0); /* Czekaj na zakończenie konwersji sprawdzając ADCI */ result_ADC[ADC_Channel]=5*((256*ADCH+(ADCON&0xC0))>>6); /* Oblicz 10–bitowy binarny rezultat przetwarzania dla Uref=5.12V */ } write_UART(&result_ADC, if (conversion==10000) conversion=0; } } conversion++); /* Wyprowadzenie rezulatu do modułu UART */ Schemat zastępczy obwodów wejściowych przetwornika A/C Charakterystyka przetwarzania i charakterystyka błędu kwantowania MIKROKONTROLERY MOTOROLA Architektura 8-bitowa (M68HC05, M68HC08, M68HC11) M68HC05 Family, M68HC08 Family M68HC08 Automotive Family M68HC11 Family Architektura 16-bitowa (HCS12, M68HC12, M68HC16, 56800/E) Architektura 32bitowa 32-Bit (68K/ColdFire, MAC7100, MCORE, PowerPC) Narzędzia programistyczne - MCU Development Tools Mikroprocesory Motorola - MC68HC11A8 Hardware Features 8 Kbytes of ROM 512 Bytes of EEPROM 256 Bytes of RAM (All Saved During Standby) Relocatable to Any 4K Boundary Enhanced 16-Bit Timer System: — Four Stage Programmable Prescaler — Three Input Capture Functions — Five Output Compare Functions 8-Bit Pulse Accumulator Circuit Enhanced NRZ Serial Communications Interface (SCI) Serial Peripheral Interface (SPI) Eight Channel, 8-Bit Analog-to-Digital Converter Real Time Interrupt Circuit Computer Operating Properly (COP) Watchdog System Available in Dual-In-Line or Leaded Chip Carrier Packages Software Features Enhanced M6800/M6801 Instruction Set 16 x 16 Integer and Fractional Divide Features Bit Manipulation WAIT Mode STOP Mode PODSTAWOWE PARAMETRY PRZETWORNIKÓW A/C I C/A Metoda przetwarzania A/C Rozdzielczość, Długość słowa kodowego, metoda kodowania Zakres przetwarzania, napięcie referencyjne, maksymalne napięcia wejściowe Liczba kanałów przetwarzania, sposób sprzężenia sygnałów wejściowych Szybkość przetwarzania (próbki/s) Charakterystyka wzmacniaczy wejściowych o impedancja wejściowa (stanu włączenia, stanu wyłączenia, stanu przeciążenia) o prąd polarycji obw. wejściowych o wsp. tłumienia sygnałów współbieżnych CMMR o charakterystyki dynamiczne i czasy ustalania sygn. wejściowych dla poszcz. wzmocnień Rozmiar bufora FIFO Metody wyzwalania Metody transferu danych (DMA, przerwania) System rejestrów kontrolno-sterujących (pamięć) warunki otoczenia (pracy) stabilność (czas wygrzewania, ..) błędy przetwarzania o nieliniowość całkowa (ang. integral nonlinearity) o nieliniowość różniczkowa (ang. differential nonlinearity) o przesunięcie zera (ang. offset error) o błąd wzmocnienia (ang. gain error) o stosunek sygnału do szumu (ang. signal to (noise + distortion) ratio ) o dokładność względna (ang. relative accuracy) o czas ustalania napięcia wyjściowego (ang. voltage output settling time) o zakłócenia szpilkowe sygnału wyjściowego (glittch) (ang. digital-to-analog glitch impulse) Podstawowe błędy przetworników A/C i C/A Przetworniki A/C Nieliniowość całkowa (Integral Nonlinearity) : Max odchylenie dowolnego kodu od linii łączącej punkty końcowe charakterystyki przetwarzania przetwornika A/C (określana w bitach, częściach ułamkowych bitów) np. ±0.3LSB) Nieliniowość różniczkowa (Differential Nonlinearity): Największa zmierzona różnica pomiędzy dwoma sąsiednimi poziomami sygnału analogowego przy zmianie słowa kodowego o 1 wyrażona (określana w bitach, częściach ułamkowych bitów) np. ±0.3LSB Przesunięcie zera (Offset Error): Przesunięcie charakterystyki przetwarzania od punktu zerowego przy zerowej wartości sygnału wejściowego (określana w bitach, częściach ułamkowych bitów) np. ±4LSB Błąd wzmocnienia (Gain error): Przesunięcie charakterystyki przetwarzania od końcowego punktu przy sygnale wejściowym pełnego zakresu pomiarowego (po uprzedniej adjustacji przesunięcia zera) (określana w bitach, częściach ułamkowych bitów) np. ±2LSB Stosunek sygnału do szumu (Signal to (Noise + Distortion) Ratio ): Stosunek sygnału do szumu określa się dla sygnału sinusoidalnego o max. amplitudzie, stosunek częstotliwości fali sinusoidalnej do częstotliwości próbkowania powinien być liczbą niewymierną. Teoretyczna wartość stosunku sygnał szum dla N-bitowego przetwornika: ( S / N ) max (6.02 N 1.76 ) dB Dla N=12 S/N=74dB Całkowite zniekształcenia harmoniczne (Total Harmonic Distortion) Całkowite zniekształcenia harmoniczne to stosunek sumy wartości średniokwadratowych harmonicznych do sygnału podstawowego. Przetworniki C/A Dokładność względna (Relative Accuracy) Dokładność względna jest mierzona jako max odchylenie punktów charakterystyki przetwarzania od linii prostej przechodzącej przez punkt końcowy charakterystyki przetwarzania C/A, odniesioną do napięcia pełnego zakresu przetwarzania i wyrażona w procentach. Pomiar powinien być dokonywany po przeprowadzeniu adjustacji błędu przesunięcia zera i błędu pełnej skali przetwornika. Czas ustalania napięcia wyjściowego (Voltage Output Settling Time) Jest to wartość czasu upływającego do momentu osiągnięcia specyfikowanego poziomu napięcia wyjściowego na skutek zmiany na wejściu odpowiadającej pełnemu zakresowi. Zakłócenia szpilkowe sygnału wyjściowego (GLITTCH) ( Digital-to-Analog Glitch Impulse) Powstają w wyniku stanów przejściowych zmiany słów kodowych. Określane powierzchnią obszaru szpilek w nV/s. Przetwornik C/A U UFS szpilka napięciowa o najw. polu powierzchni t ADuC812 jest wyposażony w dwa 12-bitowe napięciowe przetworniki C/A. Każdy z nich posiada wyjściowy bufor napięciowy typu „rail-to-rail” (wyjście od szyny do szyny zasilającej) obciążany do wartości 10kΩ/100pF. Każdy niezależnie może pracować w zakresie 0V do VREF (wewnętrzne źródło 2.5V) i 0V do AVDD. Każdy z nich może pracować w trybie 8 lub 12-bitowym. Przetworniki wykorzystują wspólnie jeden rejestr kontrolny DACCON oraz 4 rejestry danych, DAC1H, DAC1L, DAC0H, DAC0L. Mogą pracować w trybie 12-bitowym asynchronicznym w którym wartośc wyjściowa napięcia przetwornika C/A uaktualniana jest po wpisaniu danej do DACL – dlatego ważana jest kolejność wpisywania danych, najpierw cz. starsza DACH, a potem, młodsza DACL. DACCON (wartość pocz. 04H, brak adresowania bitowego) MODE RNG1 RNG0 CLR1 CLR0 SYNC PD1 Alokacja bitowa Mnemo nic bitu Opis DACCON.7 MODE DAC MODE bit umieszcza nadrzędny działający tryb dla obu DACs „1” = 8-bit tryb (pisz 8bitowy do DACxL SFR). „0” = 12-bit tryb.Bitowy wybór zakresu DAC1. DACCON.6 RNG1 PD0 Bit wyboru zakresu przetwornika . DAC1 „1” =DAC1 zakres 0-VDD. „0” = DAC1 zakres 0-VREF. DACCON.5 RNG0 Bit wyboru zakresu przetwornika . DAC0. „1” =DAC0 zakres „0” = DAC0zakres DACCON.4 CLR1 DACCON.3 CLR0 DACCON.2 SYNC 0-VDD. 0-VREF. Bit zerowania DAC1 „0” =DAC1 wyjście wymusza do 0V. „1” = DAC1 wyjście normalne. Bit zerowania DAC0 „0” =DAC0 wyjście wymusza do 0V. „1” = DAC0 wyjście normalne. Bit uaktualnienia synchronicznego „1” – wyjścia przetworników są aktywowane wpisem danej do DACxL. Użytkownik może uaktualniać rejestry DACxL/H podczas SYNC=0. Uaktualnie jednoczesne wyjść nastąpi po wpisaniu do SYNC=1. DACCON.1 PD1 DACCON.0 PD0 Bit Power-Down „1” = Power-On DAC1. „0” = Power-Off DAC1 Bit Power Down. „1” = Power-On DAC0 „0” = Power-Off DAC0 Architektura przetwornika C/A zawiera drabinkę rezystancyjną współpracującą ze buforowym wzmacniaczem wyjściowym (funkcjonalny ekwiwalent pokazany jest na rys.). Szczegóły architektury są opatentowane U.S. Patent Number 5969657. Zasada tej architektury gwarantuje monotoniczność i znakomitą różnicową liniowość. Przykładowy program generatora fali sinusoidalnej przy wykorzystaniu przetwornika C/A i chwilowych wartości amplitudy (1 okres – 64 próbki) przechowywanych w pamięci kodu programu #include <stdio.h> #include <ADuC831.h> sbit LED = 0x0B4; void main (void) { unsigned code values[64][2]={{0x07, 0xFF},{0x08, 0xC8},{0x09, 0x8E},{0x0A, 0x51},{0x0B, 0x0F}, {0x0B, 0xC4},{0x0C, 0x71},{0x0D, 0x12},{0x0D, 0xA7},{0x0E, 0x2E}, {0x0E, 0xA5},{0x0F, 0x0D},{0x0F, 0x63},{0x0F, 0xA6},{0x0F, 0xD7}, {0x0F, 0xF5},{0x0F, 0xFF},{0x0F, 0xF5},{0x0F, 0xD7},{0x0F, 0xA6}, {0x0D, 0x12},{0x0C, 0x71},{0x0B, 0xC4},{0x0B, 0x0F},{0x0A, 0x51}, {0x09, 0x8E},{0x08, 0xC8},{0x07, 0xFF},{0x07, 0x36},{0x06, 0x70}, {0x05, 0xAD},{0x04, 0xEF},{0x04, 0x3A},{0x03, 0x8D},{0x02, 0xEC}, {0x02, 0x57},{0x01, 0xD0},{0x01, 0x59},{0x00, 0xF1},{0x00, 0x9B}, {0x00, {0x00, {0x01, {0x04, 0x58},{0x00, 0x27},{0x00, 0xD0},{0x02, 0xEF},{0x05, 0x27},{0x00, 0x58},{0x00, 0x57},{0x02, 0xAD},{0x06, 0x09},{0x00, 0x9B},{0x00, 0xEC},{0x03, 0x70},{0x07, 0x00},{0x00, 0x09}, 0xF1},{0x01, 0x59}, 0x8D},{0x04, 0x3A}, 0x36}}; DACCON = 0x0D; DAC0H = 0x08; DAC0L = 0x00; //DAC0 on 12-bit Asynchronous //DAC0 mid scale while (1) { int i, j; for ( i = 0 ; i < 64; i++) { DAC0H = values[i][0]; DAC0L = values[i][1]; for (j=0; j< 3000; j++) ; } LED ^= 1; } } /* */ MIKROKONWERTERY – Przetworniki inteligentne smart transducer W ciągu ostatnich 20 lat obserwuje się postęp w dziedzinie czujników inteligentnych. IEEE oraz NIST opracowały normę, która obejmuje funkcje i zasady transmisji sygnału. Przetworniki wykonane zgodnie z normą 1451 są przetwornikami nowej generacji, przystosowanymi do pracy w sieci, o możliwościach niespotykanych w dotychczasowych rozwiązaniach. Są niezależne od rozwiązań konstrukcyjnych sprzętu i sieci. Sygnał cyfrowy zawiera informacje o wartości mierzonej wielkości, jej jednostce SI i symbolu przetwornika, może być także sygnałem sterującym. IEEE Institute of Electrical and Electronics Engineers NIST National Institute of Standards and Technology (dawne National Bureau of Standards NBS) Termin: „czujniki inteligentne” ? ... czy układy pomiarowe zdolne są do podejmowania decyzji ? Od czujnika wymaga się znacznie mniej. W j. angielskim takie czujniki nazywane są smart sensors lub inteligent sensors. W roku 1992 prof. Ryszard Jachowicz znając poglądy środowisk metrologów zarówno polskich jak i zachodnich zaproponował na konferencji COE’92 następującą definicję czujnika inteligentnego: Czujnik inteligentny jest elementem pomiarowym przekazującym informację o mierzonej wielkości w postaci cyfrowej, który komunikuje się z zewnętrznym cyfrowym systemem pomiarowym (komputerem) w oparciu o standardowy protokół komunikacji i z użyciem standardowego interfejsu W opracowanej normie IEEE 1451 obejmującej sprzęgi przetworników (Smart Transducer Interface Standard For Sensors And Actuators) przyjęta jest inna definicja, obejmująca wszystkie przetworniki, zarówno czujniki jak i organy wykonawcze lub wzbudzające. Wspólne traktowanie czujników i organów wykonawczych wprowadza nowe podejście do sygnału pomiarowego zgodne z treścią tej normy. Sygnały pomiarowe maja taki sam charakter, co sygnały sterujące, są przesyłane po tych samych magistralach i mogą być użyte do sterowania. POSTĘP W DZIEDZINIE CZUJNIKÓW INTELIGENTNYCH Jednym z pierwszych układów jest produkowany seryjnie czujnik inteligentny Eμ358A. Ma on czujnik pierwotny wykonany w technologii IS-FET zintegrowany ze wzmacniaczem. Różne typy czujników inteligentnych nowszej generacji zawierają obecnie cztery podstawowe układy toru przetwarzania sygnałów: wzmacniacz dopasowujący (kondycjonujący) przetwornik analogowo-cyfrowy mikroprocesor 4-bitowy (8-bitowy) nadajnik transmisji szeregowej Wszystkie części toru pomiarowego można wykonać w jednej strukturze scalonej ? Typowy dla początku lat dziewięćdziesiątych czujnik inteligentny zawierał trzy układy scalone: część analogową wraz z przetwornikiem A/C mikroprocesor część cyfrową. Rs485 Mikrokomputer Czujnik 1 Zasilacz inne czujniki Czujnik 2 Rys. Łączenie zespołu czujników inteligentnych z wykorzystaniem łącza RS 485 i dodatkowych przewodów zasilających CZUJNIK INTELIGENTNY WEDŁUG NOWEJ NORMY Smart transducer interface module (STIM) Transducer electronic data sheet (TEDS) Network Network capable Application procesor (NCAP) Function block Transducer block Adres logic A/D converter Transducer D/A converter Transducer Discrete I/O Transducer ? Transducer Signal isolator Buffered analog output Signal isolator Buffered analog output Smart sensor per IEEE P 1451 definition (15 july 1996) output Rys. Czujnik inteligentny według IEEE 1451.2. NCAP- sprzęg między czujnikiem a siecią. Moduł sprzęgu czujnika inteligentnego - STIM może zawierać wiele różnych czujników i musi posiadać pamięć nieulotną TEDS zawierającą szczegółowy zapis struktury STIM. NAJWAŻNIEJSZE USTALENIA NORMY Norma obejmuje następujące zagadnienia: P1451.1 - normalizacja programów potrzebnych dla pracy NCAP, między innymi: - współpracy ze STIM - dostępu do TEDS - adresowania - sterowania przesyłaniem informacji - komunikacji między przetwornikami a siecią P1451.2 – normalizacja zarówno sprzętu jak i programów związanych z pracą STIM. Norma rozróżnia następujące typy przetworników w zależności od charakteru ich sygnałów: - czujniki - organy wykonawcze - czujniki kolejności zdarzeń - przetworniki próbkujące (wysyłające serie danych) Standardy sieci komunikacyjnych Ethernet Foundation Fieldbus Lonwork Profibus Interbus-S Universal Serial Bus (USB) CAN-Bus Device-Net WorldFIP P-NET HART AS Realizowane funkcje: - adresowanie - przesyłanie danych - przechowywanie informacji o wszystkich przetwornikach i dostępie do nich - identyfikacja - status - sterowanie całym STIM oraz poszczególnymi torami pomiarowymi - przełączanie - przerwania Inne funkcje (dodatkowe): kalibracja, autokalibracja itp. Oddzielny rozdział jest poświęcony jest pamięci TEDS, która zawiera poza danymi układu także funkcje matematyczne przydatne przy korekcji sygnału. Znormalizowane jest również zasilanie (4,5 – 5,5 V) (3V), pobór prądu przez STIM (nie więcej niż 75 mA ) oraz złącze między NCAP a STIM (dziewięciostykowe). P1451.3 - komunikację dla systemów rozproszonych P1451.4 - komunikację o charakterze mieszanym, np. przesyłanie niektórych cyfrowych danych dotyczących czujników analogowych. Z rys.3 wynika, że każdy czujnik inteligentny (mogący zawierać w sobie kilka czujników pierwotnych), ma własny, bardzo rozbudowany układ cyfrowy. Jest to oczywiście rozwiązanie nadmiarowe, ale umożliwiające uproszczenie zarówno układów sterujących systemem, jak i szybsze ich działanie. PRZETWARZANIE SYGNAŁÓW W CZUJNIKACH WEDŁUG NOWEJ NORMY Dla wytworzenia sygnału dostosowanego do przesyłania w sieci oraz do wykorzystania przez współpracujące urządzenia niezbędne jest wielokrotne przetwarzanie sygnału. Norma nie stawia warunków na przetwarzanie analogowe, więc na schematach funkcjonalnych nie jest ono wyodrębnione. Kalibracja i korekcja sygnału odbywa się przy użyciu informacji zapisanych w TEDS, a więc korygowany jest sygnał cyfrowy. Przy korekcji sygnału może być wykorzystany sygnał z innego przetwornika. Wyjściowy sygnał pomiarowy zawiera (w/g normy) trzy składniki: wartość wielkości mierzonej jednostkę symbol lub numer porządkowy przetwornika Sieć a) Czujnik Przetwornik A/C Układ adresujący TEDS NCAP Wzmacniacz separujący b) Sieć NCAP Układ adresujący Przetwornik A/C Organ wykonawczy Wielkość wyjściowa (np. prąd, siła, moment obrotowy) Wzmacniacz separujący Rys. Przetwarzanie sygnału w czujnikach inteligentnych a) tor sygnału pomiarowego, b) tor sygnału sterującego Liczba użytych jednocześnie czujników może być bardzo wielka. W przykładzie przedstawionym na rys. zastosowano 16 magistral, przy czym do każdej z nich można przyłączyć 255 czujników. Networked snsor Host procesor Network HUB Networked snsor Networked snsor Networked snsor Bus 1 Bus 2 Bus 3 Networked snsor Networked snsor Networked snsor Host controller Bus16 Networked snsor Networked snsor Networked snsor Rys. System czujników inteligentnych badany w Boeing Commertial Airplan Co. KORZYŚCI Z WPROWADZENIA NORMY Najważniejsze zalety normalizacji w dziedzinie czujników inteligentnych to zwiększenie możliwości ich stosowania, a mianowicie: wykorzystywanie znacznie większej niż dotąd liczby czujników w jednym systemie pomiarowym współpracy między systemami zawierającymi różne czujniki, nawet produkowanych przez różne firmy transmisji na odległość niezależnej od rodzaju sieci stosowania w systemach rozproszonych wykorzystania tych samych sygnałów do sterowania brak zależności pracy systemów od rozwiązań sprzętowych. PODSUMOWANIE Ze względu na stosowane technologie i związaną z tym miniaturyzację czujniki inteligentne, mimo niespotykanych dotąd możliwości, będą miały małe wymiary i względnie niewielką cenę. Sygnały pomiarowe tych czujników będą dostarczały więcej niż dotychczas informacji, ponieważ będą zawierały także jednostkę oraz symbol identyfikacyjny czujnika. Będą mogły być skorygowane ze względu na wielkości wpływowe, możliwa jest również kalibracja. Przydatne są bezpośrednio w układów sterujących. Transmisja danych będzie szybka i niezależna od sieci. Mimo zastosowania techniki cyfrowej, dla użytkowników są dostępne również sygnały analogowe. Mikrokonwerter ADuC812 Rys. Schemat blokowy mikrokowertera ADuC812 CHARAKTERYSTYKA OGÓLNA: Analogowe WE/WY: 8-kanałow, Wysoka dokładnośc przetwarzania 12-Bit C/A Źródło napięcie refencyjnego wewnątrz chpiu, 100 ppm/_C Wysoka prędkośc przetwarzania A/C 200 kprb/s Kontroler DMA wykorzystywany w procesie przetwarzania A/C do zapamiętywania wyników w pamięci RAM 2 x 12-Bit ptrzetworniki C/A z wyjściem napięciowym Wbudowany czujnik temeratury (On-Chip) Pamięć: Pamięć programu: 8K Bytes (On-Chip) Flash/EE Pamięć danych: 640 Bytes (On-Chip) Flash/EE Pamieć danych RAM: 256 Bytes (On-Chip) Pamięć danych zewnętrzna: do 16MB Pamięć programu zewnętrzna: do 64KB Rdzeń systemu kompatybilny 8051 Zegar systemowy: 12 MHz (nominalnie) 16 MHz Max 3 moduły 16-Bit zegar/licznik Port 3 – o zwiększonej obciążalności 9 wektorów przerwań, 2 poziomy priorytetów Zasilanie: 3 V lub 5 V Tryby pracy: Normal, Idle, and Power-Down Urządzenia peryferyjne( On-Chip): moduł transmisji szeregowych: UART and SPI® Serial I/O 2-Wire (400 kHz I2C® Compatible) Serial I/O Watchdog Timer Monitor napięcia zasilania Architektura pamięci mikrokonwerterów: Rys.1. Pamięć programu. Rys.2. Pamięć danych Rys.3. Model programowy mikrokonwertera Rys.4. Funkcja przetwarzania (statyczna) Rys.5. Format rezultatu przetwarzania A/C 𝑈𝑥 = 𝑋 ∙ 𝑈𝑁 2𝑁 Równanie przetwarzania przetwornika Podstawowe problemy programowej obsługi przetworników A/C (na przykładzie programowania mikrokonwertera ADuC812) wybrane rejestry sterujące przetwornika A/C ( AduC812) zasady obsługi programowo-sprzętowej przetwornika A/C, programowanie rejestrów specjalnych (SFR) przetwornika dostęp bitowy i bajtowy do rejestrów specjalnych przetwornika programowa inicjalizacja pracy przetwornika A/C podstawowe problemy kalibracji przetworników A/C zasady obsługi programowo-sprzętowej przetworników A/C ADCCON1 MD1 MD0 00 01 10 11 Tryb aktywowania przetwornika: ADC powered down ADC normal mode ADC powered down if not executing a conversion cycle ADC standby if not executing a conversion cycle CK1 CK0 00 01 10 11 MCLK Dzielnik częstotliwości systemowej (przetwornik wymaga 17 taktów zegara systemowego) 1 2 4 8 AQ1 AQ0 00 01 10 11 ADC Clks Liczba taktów układu wzmacniacza podtrzymującego sygnał wejściowy (Track-Hold) 1 2 4 8 T2C Bit zezwolenia wyzwalania przetwornika sygnałem przepełnienia zegara/licznika L2 EXC Bit zezwolenia wyzwalania przetwornika zewnętrznym sygnałem CONVST(sygnał aktywny LOW, min. czas utrzymania sygnału > 100ns) ADCCON2 ADCI: bit przerwania przerwornika, sygnalizuje zakończenie konwersji pojedynczej lub bloku DMA DMA: bit zezwala na tryb przetwarzania DMA CCONV: bit zezwolenia na tryb ciągły (continuous) przetwornika SCONV: bit startu pojedynczej konwersji (jest automatycznie kasowany po zakończeniu cyklu konwersji) CS3..CS1: bity wyboru kanału multipleksera, CS3 CS2 CS1 CS0 CH# 0 0 0 0 0 0 0 0 1 1 0 0 1 0 2 0 0 1 1 3 0 1 0 0 4 0 1 0 1 5 0 1 1 0 6 0 1 1 1 7 1 0 0 0 Temp Sensor 1 1 1 1 DMA STOP ADCCON3 BUSY: status zajętości przetwornika podczas konwersji (automatycznie zerowany po zakończeniu konwersji lub kalibracji) Wewnętrzna struktura przetwornika A/C Wyzwalanie pomiaru przetwornika A/C wyzwalanie programowe wyzwalanie sprzętowe o tryb pracy ciągły o wyzwalanie zewnętrznym źródłem pobudzającym (generator zewn.) o wyzwalanie wewnętrznym źródłem pobudzającym (generator modułu L2) tryby mieszany Systemowa obsługa przetwornika A/C obsługa programowa metodą „podglądania” stanu rejestrów kontrolnych przetwornika (ang. pooling) obsługa programowa z wykorzystaniem systemu przerwań obsługa programowo-sprzętowa z bezpośrednim przekazywaniem danych do pamięci danych systemu (tryb pracy DMA) Tryb DMA pracy przetwornika prekonfigurowanie zewnętrznej pamięci RAM mikrokonwertera (wstępne inicjowanie zawartości pamięci RAM – docelowego transferu danych) Rys. Pamięć przed konwersją A/C Rys. Pamięć po wykonaniu cyklu przetwarzania DMA Rys. Cykl przetwarzania DMA (mikrooperacje procesora) Algorytm obsługi przetwornika w trybie DMA: 1. Wyłącz zasilanie przetwornika (Tryb power down: MD1 i MD0 ustawione na 0 w rejestrze ADCCON1) 2. Adres wskaźnika przesyłanych danychustawić na początek obszaru danych, wskaźnik danych określany jest 24-bitowo w rejestrach DMAL, DMAH i DMAP (DMALmusi być wpisany jako pierwszy, potem kolejno DMAH i DMAP) 3. Przygotowac zewnętrzną pamięć danych...określić numery przetwarzanych kanałów pomiarowych oraz wielkość bloku danych (całkowitą liczbę próbek przetwarzanych sygnałów) 4. Przeprowadzić inicjalizację rejestrów ADC SFRs w następującej kolejności: a. w ADCCON2 ustaw tryb DMA ( MOV ADCCON2, #40H; DMA ) b. w ADCCON1ustaw parametry czasowe konwersji i włącz zasilanie przetwornika c. proces konwersji DMA może być wyzwalany sygnałem startu poj. konwersji, z układu licznika L2 lub sygnałem zewn. Metody programowania pamięci programu FLASH/EE: Serial Downloading (In-Circuit Programming) standardowy port transmisji szeregowej przy wykorzystaniu protokołu HEX Intel, tryb pracy uzyskiwany po sygnale RESET z aktywnym sygnałem PSEN=0, (2) Parallel Programming, tryb analogiczny do programowania klasycznych modułów FLASH lub EEPROM przy wykorzystaniu portów P0, P1 i P2, sygnału ALE (3) User Download Mode (ULOAD), specjalny tryb pracy umożliwiający wykorzystanie własnego protokołu ładowania programów (start z adr. 0E000h). (1) Zabezpieczanie pamięci FLASH/EE, tryby zabezpieczeń: Lock Mode Secure Mode Serial Safe Mode Mikrokontroler analogowy ADuC814 (niski koszt, niewielkie wymiary) // Zaawansowany przyklad obslugi przetwornika A/C z sprzętowym // wyzwalaniem startu przetwarzania z obsługą w trybie DMA #include <ADuC812.h> #include <stdio.h> #define DMACOUNT #define DMACHAN // predefiniowane symbole ADuC812 100 0x0 // liczba AD odczytow do wykonania // nr kanału // ZMIENNE DEFINIOWANE W WEWNETRZNEJ PAMIECI RAM idata int xdata *ptr; idata int num; bdata bit C; // SEGMENT PAMIECI ZEWNETRZNE DO PRZESLAN DMA xdata int DMASTART[ DMACOUNT + 1]; // location for DMA results void end_of_adc(void) interrupt 6 { CCONV=0; C=0; } // int_6*8+3 = 51dec = 33hex = ADCI // stop conversions // clear C to indicate DMA done main() { int i; // KONFIGURACJA portu transmisji szeregowej - UART SCON = 0x52; // 8bit, noparity, 1stopbit TMOD = 0x20; // konfiguracja Timer1.. TH1 = 0xFD; // ..dla 9600baud.. TR1 = 1; // PRE-KONFIGURACJA zewnetrznej RAM dla DMA w pojedynczym kanale for(i=0; i<DMACOUNT; i++) DMASTART[i]=DMACHAN<<12; DMASTART[i]=0xF000; printf("%cPRz ZMiSP\n", 0x0C); for (i=0; i<=DMACOUNT; i++) { if (i % 8 ==0) printf("\n"); printf("[%3d]=%04X ", i, DMASTART[i] ); } // KONFIGURACJA ADC dla konwersji typu DMA ... DMAL=(char)(&DMASTART); // adres inicjujacy kanal operacji DMA DMAH=(int)(&DMASTART)>>8; DMAP=0; // koniecznie w takim porzadku: DMAL, DMAH, DMAP) ADCCON1=0x64; // 6.51us conv+acq time [01-10-01-00] ADCCON2=0x40; // DMA mode EA=1; EADC=1; // globalne zezwolenie obslugi przerwan // zezwolenie obslugi przerwan przetwornika ADC C=1; // czekaj na koniec DMA CCONV=1; // start przetwarzania ADC w trybie "continuous" // Trwa konwersja i przesylanie danych DMA //... kiedy transmisja DMA jest kompletna, przetwornik ADC generuje // przerwanie i zeruje bit C while (C); EA=0; EADC=0; // wynik przetwarzania ADC jest juz dostepny w RAM // wydruk kontrony zawartosci pamieci RAM for(i=0; i<=DMACOUNT; i++) { if (i % 8== 0) printf("\n"); printf("[%3d]=%4d ", i, DMASTART[i] ); } printf("\n"); // wydruk kontrolny w postaci slupka danych for(i=0; i<=DMACOUNT; i++) printf("\n%4d ", DMASTART[i] ); printf("\n"); // procedura mrugania dioda while(1) { for (i=0; i<10000; i++) ; P3 ^= 0x10 ; } } // KONIEC Podstawy akwizycji danych pomiarowych Konfiguracja systemów akwizycji danych Kontroler procesu Proces technolo -giczny C/A C/A A/C A/C System akwizycji danych z przetwarzaniem A/C i C/A w pojedynczych kanałach Adres Kanału Pom. Sygn. zegarowy Rejestr Adresu Dekoder adresu Adresu RON Kan.1 Wejścia analogowe Bufor, PP, Wzm., A/C RL RON Kan.M MUX Podstawowe parametry multipleksera: czas kluczowania: 50ns do >1s rezystancja stanu włączenia: 25 do setek rezystancja włączenia modulowana (RON zmienia się od poziomu sygnału) rezystancja izolacji: 50 do 90 dB zabezpieczenia przepięciowe Nowe trendy w konstrukcjach multiplekserów: Trench Isolation gives high speed, latch-up protection, and low-voltage operation ADG511, ADG512, ADG513: +3.3V, +5V, 5V specified Ron < 50 @ 5V Switching Time: <200ns @ 5V ADG411, ADG412, ADG413: 15V, +12V specified Ron < 35 @ 15V Switching Time: <150ns @ 15V ADG508F, ADG509F, ADG528F: 15V specified Ron < 300 Switching Time: < 250ns Fault-Protection on Inputs and Outputs fwe Kan.1 FDP Sygnał zmiany kanału Sygnał zmiany wzmocnienia MUX ffwe we Kan.M tmux FDP fs Sygnał startu konwersji A/C SAR A/C (bez PP) twzm tkonw tmux f s 1 2 2 tkonw tmux twzm f we 1 2 tkonw N N dla przykładu: jeśli N=12 i tkonw=20s to wtedy fwe=4Hz Skąd to ? : Jeżeli przetwornik A/C nie posiada układów próbkująco-pamiętających (PP) to dla zapewnienia dokładności przetwarzania na poziomie 1LSB: dv 1 LSB dt max t konw V(t) Przy max. amplitudzie sygnału sinusoidalnego zapewniającego przetwarzanie przy V pełnej skali 2 N 2 lub 2 N 1 maks. szybkość zmian sygnału wejściowego: dv 2f max 2 N 1 f max 2 N dt max t Biorąc pod uwagę te dwa równania możemy określić f max, t f max 1 2 tkonw N Dla przykładu przy tkonw=20s (co odpowiada częstości próbkowania 50kPS), i 12-bitowej rozdzielczości przetwornika maks. częstotliwość sygnału wejściowego jest limitowana do 4Hz. Modyfikacja układu pomiarowego przez dodanie układu PP (próbkująco-pamiętającego) pozwala zwiększyć zakres dynamiki sygnałów wejściowych. Kan.1 fwe FDP1 Sygnał zmiany kanału Sygnał zmiany wzmocnienia MUX Kan.M fwe tmux FDPM fs Sygnał startu Sygnał startu podtrzymania konwersji A/C PP takw A/C tkonw N twzm Ogólnie: FDP 2 tmux t 2pga takw tkonw dlatego: fs 1 takw tkonw dla przykładu: jeśli takw=1µs, tkonw=9µs, wtedy fs=100kPs oraz: f we fs 2M PP A/C Próbkuj / Zbieraj Trzymaj takw tkonw Dane ważne Konwersja A/C Próbkuj / Zbieraj Dane ważne Zmiana kanału i wzmocn. Mult/Wzm Stan przejść. Mult./Wzm. 1/fs Typowy diagram czasowy dla systemu akwizycji multipleksowanych danych z użyciem PP Kwantowanie i kodowanie yi y8 Q y7 y6 x1 x2 x3 x4 y5 +UF x5 y4 -UFS x6 x7 x8 x9 xa S y3 y2 y1 Δ=yi-xa e=xa-yi Q x1 x2 x3 x4 x5 x6 x7 x9 x8 xa Rys. 1. a) Charakterystyka przejściowa kwantyzatora równomiernego i b) przebieg zmian błędu kwantyzacji yi y8 y8 000 y7 001 y6 010 y5 011 y4 y4 100 y3 y3 101 y2 y2 110 y1 111 y7 x1 x2 -UFS y6 x5y5 x4 x3 Q +UFS Q x6 x7 x8 x9 xa e=xa-yi y1 x1 y2 x2 y3 x3 y4 x4 y5 y6 x5 y8 y7 x x8 7 x6 yi x9 xa Rys. 2. a) Charakterystyka przejściowa kwantyzatora równomiernego z przesunięciem, b) przykładowe przypisanie słów kodowych oraz c) przebieg zmian błędu kwantyzacji Proces kwantyzacji wprowadza inherentny, nieunikniony błąd. Założenia i oznaczenia, wprowadzamy: elementarny przedział kwantowania q s sygnał wejściowy UI Przedział q s jest określony przez liczbę poziomów kwantowania sygnału zależną od liczby bitów N (przy słowie kodowym w zapisie dwójkowym). Dla kwantyzatora równomiernego z przesunięciem błąd kwantyzacji nie przekracza wartości q s 2 . Średniokwadratowa wartość błędu kwantowania: Można założyć, że wszystkie poziomy nieokreśloności w obszarze kwantowania Ai q s 2 pojawiają się tyle samo razy, co prowadzi do przyjęcia założenia o równomiernej gęstości prawdopodobieństwa w zakresie q s 2 do qs 2 . Estymator średniokwadratowej wartości jest równy: qs 2 E 2 2 d qs 2 Przy przyjętych założeniach wartość średnia tego błędu jest równa zeru. Błąd kwantyzacji można przedstawić jako napięcie błędu kwantyzacji 2 . Wartość skuteczną napięcia błędu kwantyzacji eqns 2 eqns E 2 można zapisać jako: 2 eqns Maksymalna międzyszczytowa amplituda sygnału: 2 N 1 2 qs 12 1 qs App 2N qs a dla większej liczby bitów słowa (N>5): App 2 N qs Dla takiej wartości App można łatwo określić wartość skuteczną sygnału (dla sinusoidy): ARMS Wartość stosunku sygnału do szumu qs 2 N 2 2 S N można obliczyć jako: e S qns 2 N 1,5 N ARMS Oraz przeliczając tą wartość na skalę decybelową: S N 6,02N 1,76 dB S N 2 N 1,5 Przyjmując inne rozważania dla przetworników wysokiej rozdzielczości oraz mechanizmy powstawania szumów w torach pomiarowych wynikające również z innych efektów, takich szumy w elementach biernych, rezystorach (szumy Jonsosna) i elementów aktywnych jak np. przełączniki (szumy kT/C). Zakładając zwarcie wejścia („grounded input”) rozkład szumów jest zbliżony do Gaussowskiego jak na rys. poniżej. Wówczas analiza efektywnej rozdzielczości można przedstawić jako stosunek pełnego zakresu pomiarowego do wartości skutecznej mierzonych szumów. Drift = 10nV/°C INL = 2ppm typ, 15ppm max Reprezentacje cyfrowe wielkości analogowych (liczbowe kody binarne) słowa kodowe A a0 a1 a N 1 o długości N bitów, przy czym ai 0, 1 , i 0, 1, 2, N 1 poszczególnym bitom przypisuje się wagi, MSB – bit najbardziej znaczący (największa waga) aN-1 LSB – bit najmniej znaczący (najmniejsza waga) a0 UFS – napięcie pełnej skali przetwarzania D – wartość liczbowa reprezentowana przez słowo kodowe Ua – wartość napięcia reprezentowana przez słowo kodowe a). Przy zapisie słowa kodowego z użyciem liczb ułamkowych wagi bitów posiadają wartości: bi 1 2 N i b). Przy zapisie słowa kodowego z użyciem liczb całkowitych wagi bitów posiadają wartości: bi 2 i Słowo kodowe (wyjściowe słowo przetwornika) N 1 D bi ai i 0 a). U a U FS D b). Ua U FS D 2N (w naszych rozważaniach proponuję przyjąć sposób b. ) Wagi bitów słowa kodowego ai 7 6 5 4 3 2 1 0 ∑ bi=2i 128 64 32 16 8 4 2 1 255 1 2 1 4 1 8 1 16 1 32 1 64 1 128 1 256 255 256 bi= 1 2 N i kody unipolarne: reprezentacja napięć z przedziału (0, UFS) kody bipolarne: reprezentacja napięć z przedziału (-UFS, +UFS) Kody binarne przetworników A/C naturalny kod binarny kod uzupełnień do dwóch kod binarny przesunięty N 1 D bi a i i 0 N 2 D bi a i bN 1a N 1 i 0 N 1 D bi a i bN 1 i 0 kod znak-moduł N 1 D z a N 1 bi a i i 0 1 dla a N 1 0 z a N 1 1 dla a N 1 1 kody dwójkowo-dziesiętne (dziesiętno-binarne) (BCD, CCD, ...) o pozycyjne o symboliczne Przykład binarnych kodów prostych Wartość reprezentowana przez kod Naturalny kod binarny Kod uzupełnień do 2 Kod binarny przesunięty Kod znakmoduł a 7 a 6 a 5 a 4 a 3 a 2 a1 a 0 a 7 a 6 a 5 a 4 a 3 a 2 a1 a 0 a 7 a 6 a 5 a 4 a 3 a 2 a1 a 0 a 7 a 6 a 5 a 4 a 3 a 2 a1 a 0 U FS Q 11111111 01111111 11111111 01111111 U FS 2Q 11111110 01111110 11111110 01111110 U a U FS D 1 2U FS Q 10000001 01000001 11000001 01000001 1 2U FS 10000000 01000000 11000000 01000000 1 2U FS Q 01111111 00111111 10111111 00111111 00000001 00000000 — — 00000001 10000001 00000000 10000000 11111111 01111111 00000001 00000000 10000000 10000001 Q 0 Q +0 –0 1 2U FS Q — 11000001 01000001 10111111 1 2U FS — 11000000 01000000 11000000 1 2U FS Q — 10111111 00111111 11000001 U FS 2Q — 10000010 00000010 11111110 U FS Q — 10000001 00000001 11111111 U FS — 10000000 00000000 — Pomiary wartości DC/RMS Poziom DC sygnału analogowego DC wartość średnia dla sygnału analogowgo dla sygnału cyfrowego RMS wartość skuteczna dla sygnału analogowego dla sygnału cyfrowego FFT transformata Fouriera PRZESYŁANIE SYGNAŁÓW INFORMACYJNYCH, STERUJĄCYCH I PROGRAMUJĄCYCH (w systemach pomiarowych) sygnały informacyjne – niosą informację o wielkościach mierzonych, sygnały organizacyjne – adresy, rozkazy i sygnały kontrolne systemu pomiarowego. Sygnały w systemach pomiarowych Informacyjne (dane) Organizacyjne (adresy, rozkazy) ANALOGOWE Naturalne Standardowe Napięciowe DYSKRETNE Z rozdziałem częstotliwościowym Prądowe Z rozdziałem czasowym Impulsowe Kodowe Potencjałowe Aplikacje – pomiary temperatury Czujniki typu RTD (resistive temperature detectors) zakres pracy (-200°C do +800°C), duża dokładność przykł. RTD Klasy B wg normy IEC: 100Ω±0.12% w 0°C, Klasa A: ±0.15% w 0°C współczynnik temp. zmian rezyst.: R100 R0 gdzie: 100 R0 R100 – rezystancja w 100°C R0 – rezystancja w 0°C α=0,00385 °C-1 w normach amerykańskich α=0,003 92 Ω/ Ω/°C jako jednostkę podaje się też α [Ω/ Ω/°C] do obliczeń stosuje się wartość dokładną: α = 0,00385055 Konwersja rezystancji na temperaturę: Rt R0 1 A B 2 C 100 3 °C-1 Rt R0 1 A B 2 C 100 3 wg Keithley wg PN-EN 6-751+A1+A2 dla temp. > 0°C przyjmuje się wsp. C=0 2 t 0 R R 1 A B W układach pom. gdzie Rt jest określane poprzez IR i UR: 2U R I R R0 I R ,U R I R R0[ A2 A2 4 BU R I R R0 / I R R0 ] W układach pom. gdzie Rt jest określane bezpośrednio: Rt A A2 4 B Rt R0 1 2B Współczynniki Callendar-Van Duser wielomianu Rt=f( ) Standard DIN 43760 American ITS-90 PN-EN 60751 wsp. temperaturowy A [C-1] B[C-2] (α) 0,003850 3,9080×10-3 -5,8019×10-7 -3 0,003911 3,9692×10 -5,8495×10-7 -3 0,003926 3,9848×10 -5,8700×10-7 -3 0,00385055 3,9083×10 -5,7750×10-7 * dla temp. > 0°C przyjmuje się wsp. C=0 C* [C-3] lub [C-4] -4,2735×10-12 -4,2325×10-12 -4,0000×10-12 -4,1830×10-12 AVDD ADuC83x Źródło prądowe IEXC1 AIN1 MUX Rt BUF PGA PRIMARY 24-BIT ∑Δ ADC AIN2 REFIN+ RREF External VREF Detect REFIN- Rt Procedura obliczenia wartości rezystancji Rt: W aplikacji ADuC824, ADuc834 RREF=5,62kΩ±0.1% DRREF 2N Termistory Równanie Steinhart-Hart’a: 1 3 [°K] A B ln Rt C ln Rt gdzie: A, B, C – wsp. określone przez producenta IEXEC1 200µA P1.2/DAC/IEXC1 P1.3/IEXC/AIN5 IEXEC2 200µA I2EN 1 I2PIN 0 1 I1PIN I1EN 0 1 P1.7/DAC/AIN4 P1.4/AIN1 P1.5/AIN2 P1.6/AIN3 0 BUF 12-bit DAC AIN1 AIN3 AIN2 AIN3 + AIN2 - BUF PGA AIN4 AIN2 AIN2 Rys. 1. Model programowy obwodów wejściowych mikrokonwertera Σ/Δ. ADSP 2100 Family DSP Microcomputers Ogólne własności: DSP Mikroprocesor z 16-Bitowy arytmetyka stałopozycyjna z własną pamięcią Rozszerzona architektura Harvard-ska z trzema magistralami Niezależne jednostki obliczeniowe: ALU, MAC i Shifter Instrukcje realizowane w 1 cyklu maszynowym, Pamięć RAM lub ROM i RAM danych w chipie mikroprocesora, Zintegrowane urządzenia WE/WY: Porty szeregowe, Zegary/liczniki, Interfejs portu nadrzędnego, Ogólne cechy: Szybkość wykonywania operacji 33-75 MIPS (30ns cykl instrukcji maszynowej) Oddzielne magistrale dostępu do pamięci programu i pamięci danych, Jednostki Funkcjonalne: Jednostka obliczeniowe: 3 niezależne jednostki: jednostka arytmetyczno/logiczna (ALU), jednostka mnożąca (mulptiplier/accumulator MAC), jednostka przesuwająca: barrel shifter, Generator adresu danych i Sekwencer programu (kolejkowanie instrukcji), dwa dedykowane generatory adresu, sekwencer programu dostarczający adresów dostępu do pamięci zewnętrznej lub wewnętrznej, Pamięć: architektura Hardvard-ska zmodyfikowana z niezależnym dostępem do pamięci danych i pamięci programu (instrukcji) i danych jednocześnie. Porty transmisji szeregowej: Programowany Zegar/licznik: zawiara 8-bitowy preskaler umożliwiający generowanie cyklicznych przerwań, Port interfejsu nadrzędnego Port DMA – transfer danych z/do wewnętrznej pamięci (BDMA) oraz IDMA przy wykorzystaniu 16-bitowego multipleksowania adresu i danych transfer do 24-bitowego obszaru pamięci programu, Interfejs analogowy – model ADSP-21msp58/59 posiada obwody: ADC, DAC, filtry analogowe i cyfrowe, równoległy interfejs sprzegający z procesorem. Technologia sigma-delta. Ogólny podział procesorów stałoprzecinkowych rodziny ADSP 21XX ADSP-21ES202 ADSP-21ESP202 Procesor mowy z przetwornikiem A/C i C/A ADSP-2141L SafeNet DSP, system zabezpieczeń na chipie, ADSP-2186M 16-Bit, 75 MIPS(milion instrukcji na sekundę), 2.5V, 2 szeregowe porty, Host Port, 40 KB RAM ADSP-2188M 16-bit, 75 MIPS, 2.5v, 2 szeregowe porty, host port, 256 KB RAM ADSP-2185M 16-bit, 75 MIPS, 2.5v, 2 szeregowe porty, host port, 80 KB RAM ADSP-21MOD980 DIVA / ADSP-21mod980 - 40 Ports of Voice Over Network ADSP-2165 Procesor sygnałowy z pamięcią ROM ADSP-2166 Procesor sygnałowy z pamięcią ROM ADSP-2184 16-bit, 40 MIPS, 5v, 2 szeregowe porty, host port, 20KB RAM ADSP-2184L 16-bit, 40 MIPS, 3.3v, 2 szeregowe porty, host port, 20KB RAM ADSP-2189M 16-bit, 75 MIPS, 2.5v, 2 szeregowe porty, host port, 192 KB RAM ADSP-21MOD970 wielo-portowy, internetowy procesor dostepowy ADSP-2187L 16-bit, 52 MIPS, 3.3v, 2 szeregowe porty, host port, 160 KB RAM ADSP-21MOD870 16-bit, pirwszy całkowity, cyfrowy modem na pojedynczym chipie ADSP-2185L 16-bit, 52 MIPS, 3.3v, 2 szeregowe porty, host port, 80 KB RAM ADSP-2186L 16-bit, 40 MIPS, 3.3 v, 2 szeregowe porty, host port, 40 KB RAM ADSP-2185 16-bit, 33 MIPS, 5 v, 2 szeregowe porty, host port, 80 KB RAM ADSP-2186 16-bit, 40 MIPS, 5v, 2 szeregowe porty, host port, 40 KB RAM ADSP-2104 16-bit, 20 MIPS, 5v, 2 szeregowe porty ADSP-2104L 16-bit, 13 MIPS, 3.3v, 2 szeregowe porty ADSP-2183 16-bit, 52 MIPS, 3.3 v, 2 szeregowe porty, host port, 80 KB RAM ADSP-2181 16-bit, 40 MIPS, 5v, 2 szeregowe porty, host port, 80 KB RAM ADSP-21msp58 W pełni zintegrowany pojedynczy chip DSP ADSP-2171 16-bit, 33 MIPS, 5v, 2 szeregowe porty, host port ADSP-2173 16-bit, 20 MIPS, 3.3v, 2 szeregowe porty, host port ADSP-2161 Procesor sygnałowy z pamięcią ROM ADSP-2163 Procesor sygnałowy z pamięcią ROM ADSP-2164 Procesor sygnałowy z pamięcią ROM ADSP-2103 16-bit, 10.2 MIPS, 3.3v, 2 szeregowe porty ADSP-2162 Procesor sygnałowy z pamięcią ROM ADSP-2115 16-bit, 25 MIPS, 5v, 2 szeregowe porty ADSP-2105 16-bit, 20 MIPS, 5v, 1 szeregowe porty ADSP-2101 16-bit, 25 MIPS, 5v, 2 szeregowe porty Parametry rodziny procesorów. Parametry 2101 2103 2105 2115 2111 2161 2162 2163 2164 Pamieć danych RAM Pamięć programu RAM Pamięć programu ROM Zegar Port szeregowy 0 (wielokanałowy) Port szeregowy 1 Port łączący hosta Klasa szybkości (czas jednostkowy instrukcji) 10.24 MHz (76.9ns) 13.0 MHz (76.9ns) 13.824 MHz (72.3ns) 16.67 MHz (60ns) 20.0 MHz (50ns) 25 MHz (40ns) Napięcie zasilania Rodzaj obudowy 68- Pin-ów PGA 68- wyprowadzeń PLCC 80- wyprowadzeń PQFP 80- wyprowadzeń TQFP 100- Pin-ów PGA 100- wyprowadzeń PQFP Klasy temperatur pracy K techniczne 0oC do 70o C B przemysłowe -40oC do 85o C T specjalne -55oC do 125o C 1K 2K * * * - 1K 2K * * * - 1/2K 1K * * - 1/2K 1K * * * - 1K 2K * * * * 1/2K 8K * * * - 1/2K 8K * * * - 1/2K 4K * * * - 1/2K 4K * * * - * * * 5V * 3.3V * * 5V * * * 5V * * * 5V 5V 3.3V 5V 3.3V * * * - * * - * - * * * - * * * * - * * - * * - * * - * * * * * - * * - * * - * * * * * - * * - * * - * * - Opis końcówek (pinów) procesora (nazwa, ralizowana funkcja, liczba) Nazwa pinu (końcówki) Liczba Wejście/wy Funkcja końcówek jście (I/O) Adress (linie adresu) 14 O Data (linie danych) 24 I/O RESET IRQ2 1 I Wyjściowe adresy dla pamięci programu, danych i botowalnej Dane I/O pinów dla pamięci programu i danych. Wejście tylko dla pamięci bootowalnej, z dwoma sektorami bootującymi użytymi dla adresów pamięci bootowalnej. Linie nieużywanych danych mogą być nie podłączone. Wejście resetujące procesora 1 I Żądanie zewnętrznego przerwania #2 BR 2 BG PMS DMS BMS RD WR 1 I Zewnętrzne żądanie pobrania danych z szyny 1 O Zewnętrzne żądanie wyprowadzenia danych na szynę 1 O Wybór zewnętrznej pamieci programu 1 O Wybór zewnętrznej pamieci programu 1 O Wybór pamięci butowalnej 1 O Zezwolenie odczytu zewnetrznej pamięci 1 1 2 1 O I I O Zezwolenie zapisu zewnetrznej pamięci SPORT03 5 I/O SPORT1 5 I/O IRQO (RFS1) 1 I Żądanie zewnętrznego przerwania #0 IRQ1 (TFS1) 1 I Żądanie zewnętrznego przerwania #1 F1(DR1) F0(DT1) FL2-0 (tylko ADSP-2111) Port łączący hosta (tylko 1 1 3 I O O Końcowka wejścia flagi Końcówka wyjścia flagi Końcówka wyjścia flgi ogólnego przeznaczenia 1 I Wejście wyboru HIP 1 O Wyjście potwierdzenia HIP 1 I 8/16 bitów wybór hosta (0=16 bitów, 1=8bitów) BMODE 1 I HMD0 1 I HMD1 1 I HRD / HRW 1 I HWR / HDS 1 I HD15-0/HAD15-0 16 I/O HA2/ALE 1 I HA1-0/nieużywane 2 I MMAP CLKIN, XTAL CLKOUT VDD GND Wejście wyboru mapy pamieci Zegar zewnetrzny lub wewnętrzny Wyjście zegara procesora Końcowka źrodła zasilania Końcówka masy Końcówki portu szeregowego 0 (TFS0, RFS0, DT0, DR0, SCLK0 ) Końcówki portu szeregowego 1 (TFS1, RFS1, DT1, DR1, SCLK1) ADSP-2111) HSEL HACK HSIZE Wybór trybu boota (0=standard EPROM butujacy, 1=HIP bootujacy) Wybór strobowania szyny (0=RD/WR , 1=RW/DS) HIP wybór trybu adresy/dane (0=odseperowanie, 1=multipleksowanie) HIP strobowanie odczytu lub wybór zapis/odczyt HIP strobowanie zapisu lub wybor strobowania danych hosta HIP dane lub HIP dane i adresy Drugie wejście adresu hoste lub wejście umożliwiające zatrzaskiwanie adresu Adres hosta 1 i 0 wejścia Schemat blokowy ADSP-21xx. Rejestr instrukcji Generator adresu danych Generator adresu danych Pamięć Programu SRAM lub ROM Flagi Tylko ADSP 2111 Pamięć Danych Generator Adresu boota SRAM Sekwenser programu zegar Szyna PMA Szyna adresowa zewnętrzna Szyna DMA Szyna PMD Rejestr wej. Zewnętrzna szyna danych Wymiana szyny Szyna DMD Rejestr wej. Kompansja zespołu obwodów Rejestr wej. Kontrolny port hosta Przesuwnik Rejestr wyj. Rejestr wyj. Rejestr wyj. Rejestr transmisji Rejestr odbioru Port szeregowy 0 (nie na ADSP2105) Szyna R Rej. transmisji Rej. odbioru Port szere Zewnętrzna szyna portu hosta Port danych hosta Port interfejsu zarządzania (tylko ADSP-2111) Opis ogólny procesorów sygnałowych Dzisiejsze procesory DSP to pojedyncze układy scalone. Podstawowe bloki funkcjonalne tych układów były już znane znacznie wcześniej, ale dopiero na początku lat 80-tych opracowano technologie, dzięki którym stało się możliwe zamknięcie tych skomplikowanych struktur w jednym układzie. Jednym z powodów dużej popularności tych układów jest ich programowalność. Możliwe jest zaprojektowanie urządzenia z wykorzystaniem DSP, które będzie realizowało różne funkcje (w zależności od załadowanego programu) przy niezmiennej konstrukcji sprzętowej. W układach cyfrowych parametrów urządzenia nie psują starzejące się kondensatory lub rezystory o zmieniającej się pod wpływem różnych czynników rezystancji Ponadto procesory DSP mogą być tak zaprogramowane, że same wykryją i skompensują zmiany parametrów analogowych elementów systemu. Niezaprzeczalną zaletą urządzeń opartych na DSP jest ich powtarzalność. Dzięki temu gotowy układ można łatwiej uruchomić (np. w przypadku filtrów cyfrowych praktycznie brak jest operacji strojenia różnych elementów) oraz zapewnić powtarzalność parametrów wejściowych i wyjściowych danego urządzenia. Procesory sygnałowe produkowane są w dwu odmianach: operacji stałoprzecinkowych operacji zmiennoprzecinkowych Zasadniczą zaletą układów zmiennoprzecinkowych jest fakt, że uwalniają one programistę od zwracania uwagi na skalowanie. W układach stałoprzecinkowych użytkownik musi zwracać większą uwagę na ograniczenia systemu liczbowego. W szczególności należy zadbać oto, aby nie przepełniać akumulatora i dbać o precyzję obliczeń. Procesory stałoprzecinkowe są tańsze, wymagają dbałości o skalowanie, częściej programuje się je w asemblerze. DSP zmiennoprzecinkowe są droższe, typowe ich programowanie odbywa się w języku C, a problemy ze skalowaniem nie występują. Procesory stałoprzecinkowe – rodzina ADSP-2100 Architektura wszystkich procesorów należących do rodziny ADSP-2100 jest taka sama. Jej trzon stanowią: - jednostka arytmetyczno-logiczna (ALU) - układ mnożąco-akumulujący (MAC) - przesuwnik (barrel shifter) - generatory adresowe Jednostki te w dużym stopniu mogą działać niezależnie od siebie. Wewnątrz układu scalonego przestrzeń adresowa danych jest oddzielona od przestrzeni adresowej programu. Na zewnętrz układu scalonego magistrala adresowa jest multipleksowana między adresy komórek pamięci danych i programu. Podobnie magistrala danych jest multipleksowana pomiędzy dane i instrukcje programu. Wszystkie procesory należące do tej rodziny mają przynajmniej niewielką wewnętrzną pamięć danych i programu. W ten sposób zachowuje się zalety struktury typu Harvard przy jednoczesnej niewielkiej liczbie wyprowadzeń. Architektura poszczególnych procesorów rodziny ADSP-2100 jest uzupełniona o dodatkowe jednostki: - zegar, - porty szeregowe przystosowane do współpracy z układem kodeka, - porty do komunikacji z jednostką nadrzędną (HIP) oraz - przetworniki analogowo-cyfrowe i cyfrowo-analogowe. Procesory wyposażone w przetworniki A/C i C/A firma Analog Devices określa angielskim terminem mixed signal processors. Cechą charakterystyczną procesorów rodziny ADSP-2100 są specjalizowane rejestry. Jednostkę arytmetyczno-logiczna - podstawowe operacje wykonywane przez jednostkę arytmetyczno-logiczną to: dodawanie, dodawanie z przeniesieniem, odejmowanie, odejmowanie z uwzględnieniem "pożyczki", zmiana znaku (dopełnienie do dwóch), obliczanie wartości bezwzględnej, operacje logiczne AND, OR, XOR, NOT (dopełnienie do jedności) oraz przesłanie wartości z rejestru wejściowego do rejestru wyjściowego bez wykonywania żądnej operacji oprócz ustawienia flag. Operacje logiczne wykonuje się oddzielnie dla każdego bitu argumentów, natomiast operacje arytmetyczne wykonuje się przy założeniu, że argumenty są liczbami stałoprzecinkowymi w formacie 1.15. Jednostka arytmetyczno-logiczna wykonuje także podstawowe operacje niezbędne do zrealizowania dzielenia liczb stałoprzecinkowych. Dzielenie o pojedynczej precyzji - dla którego dzielnik jest liczbą 32-bitową, dzielna liczbą 16-bitową, natomiast wynik dzielenia jest 16-bitowy - wymaga wykonania 16 rozkazów. Możliwe jest przy tym zorganizowanie dzielenia tak, aby liczba bitów wyniku była albo mniejsza, albo większa niż 16. Układ mnożąco-akumulujący - podstawowe operacje wykonywane przez układ mnożąco-akumulujący to mnożenie liczb stałoprzecinkowych oraz mnożenie i akumulacja (dodawanie i odejmowanie).Charakterystycznymi rejestrami tego układu są rejestr akumulujący MR (40-bitowy) oraz rejestr pośredniczący MF (16-bitowy). Układ mnożąco-akumulujący ma możliwość zaokrąglenia 40-bitowego rezultatu obliczeń do 16 bitów. Zaokrąglony wynik może zostać skierowany do rejestru MF lub MR. W tym ostatnim przypadku liczba 16-bitowa zostanie umieszczona w bitach 16-31 rejestru MR , natomiast jej znak zostanie ośmiokrotnie powielony w bitach 32-39rejestru MR. Układ przesuwnika - pozawala jednym rozkazem umieścić 16-bitowy argument w dowolnym miejscu 32-bitowego rejestru wyjściowego, włączając w to sytuacje, gdy część argumentu pozostaje poza rejestrem wyjściowym. Daje to łącznie 49 położeń w rejestrze wyjściowym. Znajdowana jest także cecha liczby stałoprzecinkowej lub wspólna cecha dla całej tablicy liczb stałoprzecinkowych. Operacje te pozwalają na efektywne zakodowanie funkcji zamiany liczby stałoprzecinkowej na liczbę zmiennoprzecinkową i odwrotnie. Generatory adresu – dostarczają adresów pamięci kiedy pamięć danych jest przesyłana do lub z rejestru wejściowego (wejściowego).Każdy generator adresu trzyma ścieżkę do czterech punktów adresowych. Kiedy wskaźnik jest używany do pośredniego adresowania, jest to post-modyfikowanie przez wartość w rejestrze specjalnym. Z dwóch niezależnych generatorów adresu, procesor może generować dwa równoczesne adresy dla podwójnie pobranych argumentów operacji. Rozmiar wartości może być powiązany z każdym wskaźnikiem do implementacji automatycznego adresowania modułu dla buforów cyklicznych. (cecha bufora cyklicznego jest także wykorzystywana przez porty szeregowe do automatycznego transferu danych ). Generator adresu 1 może przesyłać adresy tylko do pamięci programu; zaś generator adresu 2 może przesyłać adresy do obu pamięci programu i danych. Kiedy bit trybu właściwego jest zadany w trybie rejestru stanu (MSTAT), adres wyjściowy generatora adresu1 jest odwracaniem bitu przed rozpoczęciem kierowania na szynę adresową. Ta cech ułatwia adresowanie w radix-2 algorytmu szybkiej transformaty Fouriera. Każdy z tych generatorów ma trzy grupy rejestrów: - rejestry indeksowe I, - rejestry modyfikacji M, - rejestry długości L. Na początku cyklu rozkazowego następuje przesłanie do procesora danych wskazywanych przez rejestr I, natomiast pod koniec tego cyklu wartość rejestru M (może być ujemna) jest dodawana do wartości rejestru I i w nim jest przechowywany wynik działania. Rejestr L wykorzystuje się do adresowania kołowego. W trakcie wykonywania programu instrukcje są pobierane z kolejnych komórek pamięci programu wskazywanych przez licznik rozkazów PC. Każda instrukcja jest wykonywana w jednym cyklu zegarowym. Sekwenser programowy - wykonuje adresy rozkazu do pamięci programu. Sekwenser jest sterowany przez rejestr instrukcji który utrzymuje obieg wykonywanych instrukcji. Rejestr instrukcji wprowadza poziom sygnału przetwarzania potokowego wewnątrz działającego programu. Instrukcje są pobierane i ładowane do rejestru instrukcji podczas jednego cyklu maszynowego, wykonywane podczas następnego cyklu dopóki nie zostanie wcześniej pobrana następna instrukcja. Do zminimalizowania cykli narzutu, sekwenser daje możliwość wykonania skoku jednostkowego, wywołanie programu i powrót w pojedynczym cyklu. Z wewnętrznej pętli licznika i pętli stosu, procesor wykonuje kod pętli zaczynając od zera. Bez wyraźnego rozkazu skoku instrukcje są wymagane do pętli. Szyny - procesory posiadają pięć wewnętrznych szyn. Szyna adresowa pamięci programu (PMA) oraz szyna adresowa pamięci danych (DMA) są używane wewnętrznie do połączeń adresowych z pamięcią programu i danych. Szyna danych pamięci programu (PMD) i szyna danych pamięci danych (DMD) są używane do połączenia danych z przestrzenią adresową. Szyny są połączone wewnątrz pojedynczą zewnętrzną szyną adresową i pojedynczą zewnętrzną szyną danych; BMS, DMS, PMS to sygnały wyboru różnych przestrzeni adresowych. R - szyna pośrednich wyników transferu bezpośrednio pomiędzy różnorodnymi jednostkami liczącymi. Szyna PMA jest 14 bitowa pozwala na 16KB/s połączonych kodów rozkazu i danych. Szyna PMD o szerokości 24- bitów. Szyna DMA ma szerokość 14 bitową pozwalającą rozkazy dostępu 16K słów danych. Szyna DMD o szerokości 16 bitów. Szyna danych DMD dostarcza ścieżkę potrzebną do przesłania zawartości pewnych rejestrów w procesorze do innych rejestrów lub jakiejś komórki pamięci danych w pojedynczym cyklu. Adresowanie pamięci danych możliwe jest poprzez określenie adresu w kodzie rozkazu (adresowanie bezpośrednie) lub z wyjścia generatora adresu danych (adresowanie pośrednie). Dostęp do danych w pamięci programu możliwy jest tylko przy adresowaniu pośrednim. Szyna PMD często może być używana do transferu danych do i z jednostek liczących poprzez ścieżki rozkazu lub vi PMD-DMD wymianę jednostki. Sprzętowy system przerwań - procesory należące do rodziny ADSP-2100 są ponadto wyposażone w sprzętowy system przerwań. Najczęściej jedno z nich (maksymalnie 3) jest przerwaniem zewnętrznym, natomiast pozostałe są generowane przez układy wewnętrzne procesora. Wszystkim przerwaniom w sposób sztywny są przypisane priorytety. Każde z przerwań można przy tym zamaskować, zerując odpowiedni bit w rejestrze maski przerwań IMASK. Kontroler przerwań pozwala procesorowi reagować na przerwania z minimalnym narzutem. Zależą od trzech wejściowych pinów przerwań zewnętrznych,IRQ0, IRQ1, oraz IRQ2. IRQ2 jest zawsze dostępny jako pin dedykowany; IRQ1 oraz IRQ0 mogą być alternatywnie skonfigurowane jako część szeregowego portu 1. ADSP-21xx często opiera się na przerwaniach wewnętrznych z zegara, portu szeregowego oraz portu interfejsu hosta (tylko ADSP-2111). Przerwania są wewnętrznie priorytetowane oraz indywidualnie maskowane (z wyjątkiem dla RESET który jest niemaskowalny ). Piny wejść IRQx mogą być programowane dla obu poziomów lub czułości brzegowej. Priorytety przerwań dla wszystkich procesorów ADSP-21xx są pokazane w tabeli Źródło przerwania Przerwanie, Adresy wektorowe ADSP 2105 RESET rozpoczęcie pracy IRQ2 0x0004 0x0000 SPORT1 transmitowanie lub IRQ1 0x0004 (wysoki priorytet) SPORT1 odbiór lub IRQ0 0x0010 Zegar 0x0014 0x0018 (niski priorytet) ADSP-2101/2103/2115/216x RESET rozpoczęcie pracy IRQ2 0x0004 0x0000 SPORT0 transmitowanie lub IRQ1 0x0004 (wysoki priorytet) SPORT0 odbiór lub IRQ0 0x0008 SPORT1 transmitowanie lub IRQ1 0x000C SPORT1 odbiór lub IRQ0 0x0010 Zegar 0x0014 0x0018 (niski priorytet) ADSP-2111 RESET rozpoczęcie pracy IRQ2 0x0004 HIP zapis z hosta 0x0000 HIP odczyt z hosta 0x0004 (wysoki priorytet) SPORT0 transmitowanie lub IRQ1 0x0008 SPORT0 odbiór lub IRQ0 0x000C SPORT1 transmitowanie lub IRQ1 0x0010 SPORT1 odbiór lub IRQ0 0x0014 Zegar 0x0018 0x001C 0x0020 (niski priorytet) Reset - Zainicjowany sygnał RESET całkowicie resetuje ADSP21-xx. Jeśli zastosowany zostanie sygnał RESET podczas inicjacji załączania, musi być podtrzymany tak długo aż wewnętrzny zegar procesora się ustabilizuje. Jeśli sygnał RESET zastosowany zostanie po czasie załączenia i częstotliwość wejścia zegara się nie zmienia, wewnętrzny zegar procesora kontynuuje pracę i nie wymaga tego czasu stabilizowania. Zegar - każdy z procesorów rodziny ADSP-2100 jest wyposażony w szybki, programowalny licznik-zegar. Np. dla procesora ADSP-2111 taktowanego zegarem o częstotliwości 20 MHz pozwala on odmierzać odcinki czasu do 3,28 ms z rozdzielczością 50 ns lub odcinki czasu 839 ms z rozdzielczością nie mniejszą niż 12,8 ms. Sygnały zegarowe - W ADSP-21xx wejście CLKIN może być sterowane przez reznonator kwarcowy lub przez zewnętrzny sygnał zegarowy TTL-kompatybilny. Wejście CLKIN nie powinno być zatrzymywane lub zmieniana jego częstotliwość podczas wykonywania operacji i nie powinno pracować poniżej sprecyzowanej częstotliwości. Jeśli używa się zewnętrznego zegara, powinna być kompatybilność jego sygnału z prędkością wykonywania się instrukcji. Sygnał powinien być podłączony do wejścia CLKIN; w tym przypadku wejście XTAL musi być odłączone. Ponieważ ADSP-21xx zawierają wewnątrz układu obwód oscylatora, może być używany zewnętrzny rezonator kwarcowy. Rezonator kwarcowy podłącza się pomiedzy piny CLKIN i XTAL, z dwoma kondensatorami podłączonymi do masy. CLKIN XTAL CLKOUT ADSP-21xx Porty szeregowe Wszystkie procesory mają dwa porty szeregowe (SPORT 0, SPORT1) za wyjątkiem ADSP – 2105 który posiada tylko port SPORT1. Ich cechy charakterystyczne to: praca w trybie dupleksowym; część nadawcza jest niezależna od części odbiorczej; podwójne buforowanie; część nadawcza (i odbiorcza) ma bufor przechowujący dane przeznaczone do wysłania (lub odbierane) oraz rejestr zamieniający dane z formatu szeregowego na równoległy i odwrotnie; możliwość synchronizacji pracy portu zegarem zewnętrznym; możliwość zmiany długości słowa w granicach od 3 do 16 bitów; dokonywanie w locie dekompresji (kompresji) danych odbieranych (lub przekazywanych) z kodeka; możliwość umieszczania danych w buforze kołowym kosztem jednego cyklu zegarowego, bez przerywania pracy procesora; praca na przerwaniach; nadejście (lub wysyłanie) danych jest sygnalizowane przerwaniem; możliwość realizacji transmisji z podziałem kanału w dziedzinie czasu (system TDM). Porty szeregowe dostarczają całkowitego synchronicznego, szeregowego połączenia z optymalną kompansją w sprzęcie. Jest dostępny duży wybór ramowej lub całoramowej transmisji danych. Każdy SPORT może być generowany wewnętrznym programowalnym zegarem szeregowym lub zewnętrznym zegarem. Każdy port szregowy posiada 5 pinów przesyłających nasępujące sygnały: Nazwa sygnału SCLK Zegar (wej/wyj) RFS Synchronizacja ram odbioru (wej/wyj) TFS Synchronizacja ram nadawania (wej/wyj) DR Odbiór szeregowy danych DT Przekazywanie szeregowe danych HIP - niektóre procesory są wyposażone w port do komunikacji z jednostką nadrzędną HIP (host interface port). Z punktu widzenia procesora jest to zespół rejestrów umieszczonych w przestrzeni adresowej danych, pełniących rolę skrzynki pocztowej pomiędzy procesorem a urządzeniem zewnętrznym pracującym całkowicie asynchronicznie w stosunku do niego. Nadejście komunikatu z urządzenia zewnętrznego sygnalizowane jest przez HIP przerwaniem. Rejestry HIP pozwalają się także zorientować procesorowi czy wysłany na zewnątrz przez niego komunikat został odebrany przez urządzenie zewnętrzne. HIP umożliwia procesorowi nadrzędnemu zresetować procesor sygnałowy, załadować program do jego pamięci i uruchomić go, czyli jest to pełna kontrola pracy procesora DSP. Przetwornik A/C i C/A - procesory DSP analogowo-cyfrowe mają ponadto 16-bitowy przetwornik A/C i 16-bitowy przetwornik C/A. Oba są przetwornikami z przetwarzaniem typu delta-sigma, próbkującymi sygnał z częstotliwością 8 kHz. Przetworniki te są uzupełnione o filtry antyaliasingowe oraz filtry odtwarzające. Możliwa jest również programowa zmiana wzmocnienia w torze przetwarzania A/C i C/A. Zwiększenie rozdzielczości i jakości przetworników A/C i C/A powoduje konieczność poprawy dokładności obliczeń algorytmów stosowanych przy cyfrowym przetwarzaniu sygnałów. Wprowadzenie arytmetyki zmiennoprzecinkowej pozwala na uniknięcie kłopotliwego skalowania wyniku przy działaniach stałoprzecinkowych, potrzebnego do zachowania odpowiedniej poprawności wyniku. W przypadku działań stałoprzecinkowych konieczne jest dokładne określenie maksymalnych wartości sygnału wejściowego. Wzrost sygnału wejściowego ponad poziom założony może zaowocować nasycaniem się wyników pośrednich i znacznym wzrostem zniekształceń nieliniowych. Z kolei przy przetwarzaniu niskich sygnałów występuje znaczne zmniejszenie dokładności obliczeń ze względu na kwantyzację, a to powoduje znaczne zmniejszenie stosunku sygnału użytecznego do szumu. Przy zastosowaniu arytmetyki zmiennoprzecinkowej problemy te nie występują, ponieważ liczby zmiennoprzecinkowe ze względu na swoją naturę niejako "automatycznie" dostosowują się do dynamiki sygnału wejściowego, zapewniając praktycznie nieograniczony zakres liniowości oraz dużą dokładność nawet przy małych poziomach sygnału. Dużą korzyścią jest również uproszczenie pisania programów. Programista jest zwolniony od konieczności dostosowywania istniejących algorytmów w celu zapewnienia odpowiedniej dynamiki sygnału w każdym punkcie programu. Wpływa to znacznie na skrócenie czasu pisania programu, a zatem również i na zmniejszenie kosztów poszczególnych zastosowań. Literatura: www.elektronika.pl/C1/pc_1.htm www.arton-el.com.pl/dsp.htm www.analog.com Analog Devices – podręczniki rodzin 21xx i 210xx Schemat blokowy ALU PMD bus DMD bus AX0, AX1 AY0, AY1 AF AZ AN AC AV AS AQ ALU AR R bus CI \ RDZEŃ PROCESORA DAG1 adresowanie tylko DM DAG2 adresowanie DM i PM możliwość odwracania bitów możliwość pośrednich odgałęzień I0 L0 M0 I4 L4 M4 I1 L1 M1 I5 L5 M5 I2 L2 M2 I6 L6 M6 I3 14 L3 M3 14 I7 14 14 ALU AX0 L7 M7 14 14 MAC AX1 AY0 AR AF AY1 MX0 MX1 MR0 MR1 MY0 MR2 SHIFTER PM<->DM SI SE SB 8 PX SR1 SR0 SEKWENCER PROGRAMU 18 5 LOOP STACK 4×18 18 ICNTL IFC PC STACK 16×14 8 OWRCNTR SSTAT 8 CNTR COUNT STACK 4×14 IMASK MSTAT ASTAT STATUS STACK* MY1 MF Podstawowe cechy procesorów sygnałowych: równoległe mnożenie z akumulacją, wykonywane w jednym cyklu, generatory adresu ze specjalizowanymi trybami, wydajny zestaw instrukcji z jednocyklowymi równoległymi operacjami matematycznymi i przesłań w pamięci oraz sprawną realizacją pętli, zintegrowany z procesorem moduł DMA i wewnętrzną pamięcią RAM dla jednoczesnych operacji wykonywanych przez CPU i układy we/wy. Generalny podział procesorów sygnałowych dokonuje się na kategorie: procesory stałoprzecinkowe (ang. fixed-point DSP) procesory zmiennoprzecinkowe (ang. floating-point DSP) Rdzeń procesora składa się z: szyn adresowych, szyn danych, kontrolera programu, jednostki generacji adresu (AGU), jednostki arytmetyczno-logicznej danych (ALU), interfejsu do emulacji ZEGAR 14 Adres pamięci programu 24 Dane pamięci programu PAMIĘĆ PROGRAMU 16/32K x 24 Adres CLKOUT CLKIN ADSP-2100 Adres 14 16K x 16 pamięci danych Dane pamięci danych PAMIĘĆ DANYCH Dane 16 Adres RESET HALT TRAP IRQ BR BG 4 PERYFERIA Dane Rys. Zmodyfikowana architektura Harvard na przykładzie ADSP-2100 Transfer Danych GENERETOR ADRESU DANYCH - DAG Generatory adresu danych DAG są jednostkami zaprojektowanymi do generowania adresów pośrednich w celu wskazania danych w pamięci. Operują na danych 14-bitowych. Każda jednostka posiada 3 różne typy rejestrów: I (rejstry indeksowe): zawierają bieżący adres, M (rejestry modyfikujące): zawierają różnicę pomiędzy bieżącym i następnym adresem, L (rejestry długości): zawierają rozmiar bufora cyklicznego (dla zapewnienia normalnego liniowego adresowania ustawiane są na 0). Każda jednostka DAG zawiera po 4 rejestry każdego typu, numerowane od 0 do 3 dla DAG1 i od 4 do 7 dla DAG2. Rejestry L i I są niezależne, dla przykładu DM(I0,M2) jest prawidłowe, lecz rejestr L jest przydzielony do korespondującego z nim rejestru I. Adresowanie pośrednie: Procesory rodziny ADSP-2100 wykorzystują dwa tryby adresowania: bezpośrednie i pośrednie. Adresowanie pośrednie jest realizowane przy wykorzystaniu rejestru I (indeksowego) i rejestru M (modyfikującego). Rejestr L podczas adresowania liniowego musi być ustawiony na 0. Przykład liniowego adresownia pośredniego: I3=0x3800; M2=0; L3=0; AX0=DM(I3,M2); Poniższy przykład używa zmiennych pamięciowych i wskaźników adresowych: .VAR/DM/RAM addr_ptr; I3=DM(addr_ptr); L3=0; M1=0; AX0=DM(I3,M1); {zmienna do przechowywania adresu dostępu } {I3 załaduj przy użyciu adresowania bezpośredniego} {zabroń adresowania cyklicznego, adresowanie liniowe} {nie stosuj modyfikacji z I3} {AX0 załaduj adresując pośrednio} Bufory cykliczne (adresowanie modulo) Bufory cykliczne wykorzystują automatyczną implementację generowania adresów modulo dla dostępu do buforów cykliczmnych. Do obliczenie kolejnego adresu wykorzystuje się następujące informacje: bieżącą lokację, przechowywaną w rejestrze I (bez znaku – unsigned), wartość modyfikującą, przechowywaną w rejestrze M (ze znakiem – signed), długość bufora, przechowywaną w rejestrze L (bez znaku – unsigned), bazowy adres bufora. Następny adres jest obliczany zgodnie z wyrażeniem: Nast. Adres (I M B) Modulo(L) B gdzie: I = bieżący adres, M = modyfikacja adresu (ze znakiem), B = adres bazowy, L = długość bufora M + I = zmodyfikowany adres przy ograniczeniu warunkiem, że M L . Adres bazowy bufora cyklicznego o długości L jest 2n lub wielokrotnością 2n oraz ograniczeniu: 2 n 1 L 2 n . Przykład: I0=5, M0=1, L0=3, adres bazowy B=4. (I0+M0-B) mod L0 + B = (5+1-4) mod 3 + 4 = 6 Kolejne generowane adresy podlegają sekwencji: 5, 6, 4, 5, 6, 4, ... Dla M0=-1 (tzn. 0x3FFF) I0 generuje kolene wartości: 5, 4, 6, 5, 4, 6, 5, ... Odwracanie bitów adresowych: Logika odwracania bitów adresowych jest w pierwszym rzędzie stosowana w algorytmach FFT i polega na zmianie porządku bitów w słowie adresowym (jak na rysunku). Odwracanie bitów możliwe jest tylko w jednostce DAG1. porządek normalny porządek odwrócony 13 0 12 1 11 2 10 3 9 4 8 5 7 6 6 7 5 8 4 9 3 10 2 11 1 12 0 13 Odwracanie bitów jest przeprowadzane przez zezwolenie/zabronienie odpowiedniego bitu stattusowego rejestru MSTAT. Kiedy jest zezwolone, to wszystkie adresy generowane przy użyciu rejestrów indeksowych I0-3 posiadają na wyjściu odwrócone bity. Jest również możliwe odwracanie bitów przy szerokości mniejszej niż 14 przy wykorzystaniu rejestru M (patrz “modyfikacja Butterfly” rozdz.6. Jednowymiarowa FFT – Digital Signal Processing...) Programowanie dostępu danych Tablice deklarowane są przykładowo dyrektywą: .VAR/DM coeffficients[128]; Deklaracja taka rezerwuje tablicę 128 elementów 16-bitowych w pamięci danych (DM). Operatory specjalne: ^ i % odnoszą się odpowiednio do adresu zmiennej i do jej długości. I0=^coefficients; {wskażnik adresu bufora} L0=0; {rejestr L ustaw na 0} MX0=DM(I0,M0); {załaduj MX0 z bufora} alternatywnie: MX0=DM(coefficients); Inicjalizacja tablicy może odbywać się przy wykorzystaniu dyrektywy assemblera: .INIT coefficients: <nazwa_pliku.dat> Obsługa bufora cyklicznego: .VAR/DM/CIRC coefficients[128]; L0=%coefficients; {długość bufora cyklicznego} I0=^coefficients; {wskaźnik na adres pierwszego elementu bufora} M0=1; { zwiększ o 1 lokalizację za każdym razem] ..... MX0=DM(I0,M0); {załaduj MX0 z bufora} MX0=DM(I0,M0); ZAMIANA MAGISTRAL PMD ↔ DMD SPECJALNA JEDNOSTKA PMD-DMD REALIZUJE POŁĄCZENIE POMIĘDZY MAGISTRALĄ PAMIĘCI DANYCH (DMD) A PAMIĘCIĄ PROGRAMU (PMD). PONIEWAŻ MAGISTRALA PMD JEST 24-BITOWA, A MAGISTRALA DMD JEST 16-BITOWA, DANE NIE MOGĄ BYĆ TRANSMITOWANE BEZPOŚREDNIO, LECZ PRZY WYKORZYSTANIU WEWNĘTRZNEGO REJESTRU PX. PM(I4,M4)=AR; Dane z rejestru AR (poprzez magistralę DMB) zostaną przesłane do lokacji w pamięci programu PMD. przykład: AR=1234H, PX=00H, PM(I4,M4)=123400H SI=PM(I4,M4); Dane z pamięci programu PM(I4,M4) przesyłane są do rejestru SI (rej. wejściowy jednostki przesuwającej). np. PM(I4,M4)=1F2C3DH, po operacji SI=1F2CH a PX=3DH. Rys. Zestawienie wybranych rodzin procesorów Analog Devices Rys. Wewnętrzna architektura ADSP-2100 Porównanie procesorów ADSP-2181, TMS320C5x i DSP56000 Głównym celem porównania jest określenie przydatności procesorów do wybranych zastosowań w aplikacjach DSP. Tabela. Porównanie właściwości wybranych procesorów DSP Procesor DSP Pamięć RAM w układzie scalonym Pamięć RAM poza układem scalonym („Glue-Less”) i interfejs we/wy Moc obliczeniowa DSP ADSP-2181 32K słów DSP56002 1K słów TMS320C50 9.5K słów TMS320C53 3.5K słów Tak Nie Nie Nie 33 MIPS 20 MIPS 40 MIPS 40 MIPS TEXAS INSTRUMENTS TMS320C5X Procesor sygnałowy TMS320C5x jest stało-przecinkowym procesorem 16-bitowym w zależności od wersji zawiera do 9,5K słów pamięci wewnętrznej RAM i do 16K słów pamięci ROM, port szeregowy, szeregowy port TDM (time-divisionmultiplexed) oraz 16-bitowy zegar. Tabela. Cechy porównawcze procesora Texas Instruments TMS32C52 Cechy porównawcze Pamięć wewnętrzna Pamięć zewnętrzna Interfejs urządzeń We/Wy DMA TMS320C52 1k x 16-bit wewnętrrzen pamięci całkowitej RAM . Pamięc ta jest dostępna jako pamięć danych i programu. Dostęp do pamięci zewnętrznej wymaga co najmniej dwóch cykli we wszystkich zewnętrznych zapisach pamięci. Nominalny czas dostępu do pamięci wynosi 12ns (przy użyciu procesora z zegarem 80 MHz). 64k x 16-bit przestrzeni we/wy dla urządzeń zewnetrznych Zewnętrzny kontroler DMA, operacje przetwarzania DSP są zawieszone podczas tranferu DMA. Cztery 16 x 4 bity zewnętrzne SROM TMS320C53 WR R/W RD OE DANE DANE ADRES ADRES Zezwolenie RAM STRBO DS DEKODOWANIE LOGIC ZNE ADRESU Zezwolenie DAC WR RD ADRES DANE (40 MIPS DSP z wewnętrznym RAM o 3.5 K słów) CS A13 A14 CS WR RD ADRES DANE DAC Rys. TMS320C53 z dodatkową pamięcią, dekodowaniem logicznym i z DAC Procesor wymaga dodatkowej pamięci zewnętrznej z dekodowaną logiką dostępu do pamięci i urządzeń zewnętrznych. Dodatkowe komponenty wydłużają czas i koszt operacji DSP. Motorola DSP56000 Procesor DSP56000 może być 16 lub 24-bitowym, stałoprzecinkowym procesorem sygnałowym. Zawiera 1K słów pamięci, port równoległy, dwa porty szeregowe, układ kodująco-dekodujący i zegar. Tabela. Cechy porównawcze procesora Motorola DSP 56002 Cechy porównawcze Pamięć wewnętrzna Dostęp do pamięci zewnętrznej Interfejs urządzeń We/Wy DMA DSP 56002 Matryca pamięci 256 x 256 słów, 512 słów pamięci programu Możliwy jest dostęp do pamięci zewnętrzej w ciągu jednego cyklu instrukcji DSP. Nominalny czas dostępu wynosi 15 ns (przy zegarze 66 MHz procesora DSP56002) Urządzenia zewnętrzne wymagają pamięci mapowanej oraz dekodowania adresu w przestrzeni pamięci zewnętrznej. Nie obsługuje DMA Układ aplikacyjny DSP5600 wymagana stosowania dodatkowej zewnętrznej pamięci z dekodowaną logiką dostępu do pamięci i urządzeń peryferyjnych. Powoduje to, podobnie jak w przypadku procesora firmy TI wzrost czasu i kosztów przetwarzania. Ponieważ procesor ten nie ma wspomagania DMA dostępu do pamięci zewnętrznej i urządzeń peryferyjnych obciąży to znacznie procesor przy przetwarzaniu. Trzy 32 x 8 bitów zewnętrzne SROM DSP56002 WR R/W RD OE DANE DANE ADRES ADRES Zezwolenie RAM PS DS X/Y DEKODOWANIE LOGICZNE ADRESU Zezwolenie DAC WR RD ADRES DANE (20 MIPS DSP z wewnętrznym RAM o 1.5 K słów) CE CS A13 A14 CS WR RD ADRES DANE DAC Rys. DSP56002 z dodatkową pamięcią, dekodowaniem logicznym i z DAC Moduł EZ-KIT Lite procesor - ADSP-2181 KS-133 (moc obliczeniową 33 MIPS), interfejs analogowy - dwukanałowy układ kodująco – dekodujący AD1847, analogowe wejścia - para sprzężonych, dwukanałowych wejść liniowych - para sprzężonych, dwukanałowych wejść mikrofonowych 20mVRMS AC, analogowe wyjścia - para sprzężonych, dwukanałowych wyjść liniowych 1VRMS AC zasilanie - 8 do 10V DC przy 300mA Rys. Moduł EZ-KIT Lite Rys. Architektura modułu EZ-KIT lite Pamięć programu Używana na płytce zewnętrzna pamięć programu jest typu EPROM o organizacji 128k x 8 bitów. Podczas restartu systemu ADSP-2181, wewnętrzny układ BDMA (Byte Memory DMA) załadowuje pierwsze 32 słowa pamięci programu z obszaru pamięci bajtowej. Wykonywanie programu jest jednak wstrzymane, dopóki wszystkie 32 słowa nie są załadowane. Diody LED D1 – dioda koloru czerwonego - jest kontrolowana przez wyjście FL1 procesora ADSP-2181. Stan wskaźnika można kontrolować programowo przez wpisanie do wewnętrznego rejestru 0 lub 1. D2 – dioda koloru zielonego – włączona, gdy dostarczane jest zasilanie do modułu. Przełączniki S1 - jest przyciskiem restartu. Użycie tego przełącznika powoduje, że procesor ADSP-2181 i kodek AD1847 wchodzą do stanu restartu sprzętowego. S2 - jest przełącznikiem wywołującym przerwanie. Użycie go powoduje, że ADSP-2181 otrzymuje zgłoszenie przerwania IRQE. Procesor wykonuje wtedy aktualny program obsługi przerwania IRQE (jeśli obsługa przerywania jest umożliwiona programowo). Wyjścia przełączników są zabezpieczone elektronicznie, by zapobiec wielokrotnej transmisji z powodu mechanicznego odbicia kontaktów. Kodek AD1847 Kiedy AD1847 jest aktywowany na płytce EZ - KIT Lite, uzyskujemy dostęp do sygnałów wejścia i wyjścia audio w dzięki mini gniazdom stereo. Gniazdo liniowe Mikrofon / Wejście jest połączone do pinów LINE_IN_L (lewego) i LINE_IN_R (prawego) albo do MIC1 i MIC2 SoundPort Stereo kodeka AD1847 w zależności od ustawienie zworek JP2 (Rys.3.3). Gniazdo wyjścia liniowego jest połączone z pinami kodeka lewym (L) LINE_OUT i prawym (R) LINE_OUT. Złącza portu rozszerzeń Dwie złącza portu rozszerzeń umożliwiają dostęp do magistral sygnałowych ADSP- 2181. Jedną z możliwości użycia tych złącz, poza testowaniem, jest sterowanie nadrzędne. Wszystkie przerwania, szyny sygnałowe i sygnały PWM są dostępne przez te dwa porty. Złącze EZ-ICE Emulator ADSP-218x EZ-ICE jest zewnętrznym modułem przeznaczonym do zaawansowanego sprzętowego testowania systemu ADSP-2181. Emulator składa się z osprzętu, stałego oprogramowania komputera nadrzędnego i złącza komunikacyjnego. ADSP-2181 łączy jednoukładowe wspomaganie emulatora poprzez 14 -pinowy interfejs ICE - Port. Program monitora systemowego Producent ADSP-2181 EZ-KIT Lite wyposażył ten moduł w stałe oprogramowanie nazywane monitorem systemowym. Ułatwia ono w dużym stopniu przygotowanie oprogramowania użytkownika. Po włączeniu płytki, a także po każdym restarcie systemu program monitora realizuje podstawowe testy (selftest), ustawia podstawowe przerwania, rejestry i zgłasza gotowość do działania. Monitor ten umożliwia autotestowanie płytki, ładowanie skrośne programów napisanych przez użytkownika, ładowanie skrośne danych i uruchamianie zapisanych programów. EZ - ICE wykonuje pełny zakres funkcji, zawierających: standardowe operacje, do 30 punktów wstrzymań programów, operacje krokowe albo praca z pełną szybkością, zawartość rejestrów i pamięci mogą być analizowane i zmieniane, funkcje PC ładowania skrośnego (z ang. downloading i uploading), emulacja instrukcji programu inicjalizującego i wykonywanego, pełna asemblacja i deasemblacja instrukcji, testowanie na poziomie języka źródłowego C. Kodek AD1847 Parametry AD1847: jednoukładowy zintegrowany 16-bitowy kodek audio stereo /*, programowane wzmocnienie i tłumienie, obudowy typu PLCC i TQFP, wielokanałowe wejścia i wyjścia stereo , analogowe i cyfrowe mieszanie sygnałów, filtry sygnałowe zintegrowane w układzie scalonym: cyfrowa interpolacja i decymacja; filtr dolno przepustowy wyjść analogowych, częstotliwość próbkowania od 5.5 kHz do 48 kHz, szeregowy cyfrowy interfejs kompatybilny z rodziną ADSP-21XX/21XXX, zasilanie 5V ( Imax = 140mA). Interfejs równoległy AD1845 AD1848K AD1848J AD1846 AD1845 Procesor audio AD184x AD181x Kodek multimedialny Interfejs szeregowy AD1819 AD1849K Kodek multimedialny AD1849J AC ‘98 AD1847 AD1843 Rys. Rozwój rodziny kodeków AD184x Kodek zawiera dwukanałowy konwerter analog-cyfra (ADC) i parę dwukanałowych konwerterów cyfra-analog (DAC). Wejścia ADC mogą zostać wybrane z czterech par dwukanałowych sygnałów analogowych: LINE1, LINE2, pomocnicze ("aux”) LINE#1 i wyjście DAC z mieszacza. Kontrolowane programowo wzmocnienie pozwala na niezależne wzmocnienie dla każdego kanału wchodzącego do ADC. AD1847 może wygenerować 16-bitowe dane w zapisie uzupełnieniowym do 2, PCM , 8 - bitowe bez znakowe wartości bezwzględne liniowych danych PCM. Technologia Sigma-Delta - konwertery tego typu posiadają bardzo wysoką rozdzielczość uzyskiwaną przez nadpróbkowanie i modulacje (integracja zwrotna). Wykorzystuje ona nisko wydajne obwody analogowe przez przesuniecie obciążenia na cyfrowe obwody CMOS. Ta metoda jest atrakcyjnym wyborem dla aplikacji audio ze względu na swój umiarkowany koszt rysunek bardzo dobre parametry techniczne (liniowość charakterystyki przetwarzania). * Rys. Schemat blokowy AD1847 Wszystkie wejścia są bez składowej stałej Analogowe sygnały dwukanałowe LINE1, LINE2, AUX1, i wyjście DAC z mieszacza są połączone przez multiplekser do wewnętrznego programowanego wzmacniacza (PGA) Pozwala to na wybór niezależnego, selektywnego wzmocnienia dla każdego kanału od 0 do 22.5dB w krokach co +1.5dB. Kodek może pracować w trybie dwukanałowym oraz w jednokanałowym. Analogowe sygnały stereo AUX1 i AUX2 mogą być mieszane w analogowym obszarze z wyjściem DAC. Każdy kanał pomocniczego wejścia analogowego może zostać niezależnie wzmocniony / tłumiony od +12dB do –34.5dB w krokach mających –1.5dB, lub też całkowicie stłumiony. Nawet, jeśli AD1847 nie odtwarza danych z DAC, funkcja analogowego mieszania może być nadal aktywna. Konwertery analogowo-cyfrowe posiadają czterostopniowy modulator. Pasywny filtr jednobiegunowy jest wszystkim, co jest potrzebne do antyaliasingu analogowego wejścia, ponieważ ADC nadpróbkowują 64-krotnie. ADC zawierają cyfrowe filtry decydujące, które filtrują dolnopasmowo wejście do 0,4 x Fs (Fs – częstotliwość próbkowania) DAC zawiera programowane tłumienie i dolnoprzepustowy cyfrowy filtr interpolujący. Tłumienie w każdym kanale DAC jest niezależne i może być regulowane od 0dB do –94.5dB w 1.5dB krokach a także możliwe jest pełne wytłumienie. Cyfrowe wyjście stereo ADC może być miksowane cyfrowo z wejściem do DAC. AD1847 działa z dwoma zewnętrznymi kryształami kwarcu, z XTAL1 i XTAL2. Dają one szeroki zakres doboru częstotliwości próbkowania. Wybór po między rezonatorami dokonywany jest za pomocą multipleksera. Częstotliwości rezonatorów kwarcowych wynoszą 16.9344MHz i 24.576MHz. Dzięki nim można ustawić następujące możliwe częstotliwości próbkowania (Tabela) Dostępne częstotliwości próbkowania Tabela. Częstotliwości próbkowania w AD1847 XTAL1 24.576 MHz 8 kHz 9.6 kHz 16 kHz 27.42857 kHz 32 kHz 48 kHz XTAL2 16. 9344MHz 5.5125 kHz 6.615 kHz 11.025 kHz 18.9 kHz 22.05 kHz 33.075 kHz 37.8 kHz 44.1 kHz UWAGA: nie można regulować płynnie częstotliwości próbkowania. Spowodowane to jest dzielnikami częstotliwości, które zostały zastosowane w AD1847. Mimo to, kodek ten daje szerokie możliwości doboru częstotliwości próbkowania w zakresie pasma akustycznego. Więcej informacji w pliku AD1847.pdf NARZĘDZIA I OPROGRAMOWANIE NARZĘDZIA DSP Oprogramowanie przeznaczone do tworzenia programów użytkowych DSP jest zestawem współpracujących z sobą modułów takich jak: program budowy systemu, kompilator języka asemblera, program konsolidujący, program PROM Splitter*, symulatory i kompilatory języka C. Proces projektowania systemy DSP i kolejność wykorzystania modułów systemu projektowego w kolejnych krokach przedstawia Rys. PROGRAM BUDOWY SYSTEMU Program budowy systemu jest programowym narzędziem do opisu środowiska sprzętowego. Każdy system ADSP-21xx posiada unikalną sprzętową konfigurację i może używać różnych zasobów przestrzeni pamięci. Programu budowy systemu określa konfigurację sprzętu, w tym rodzaje i zakresy użytkowania pamięci, adresy portów wejścia / wyjścia, w oparciu o informacje przekazane przez plik wsadowy (.SYS). Wynikiem działania jest plik konfigurujący działanie programu konsolidującego (Rys). Program ten na podstawie pliku wyjściowego (.EXE) tworzy moduł binarny przeznaczony do zaprogramowania pamięci typu EPROM * Program budowy systemu Krok 1. OKREŚLENIE ARCHITEKTURY Krok 2. GENERACJA KODU Plik .C Plik .ACH Kompilator ANSI C Krok 3. Plik .DSP Program asemblujący EZ-LAB Evaluation Board lub specjalistyczne karty PC PROGRAMY TESTUJĄCE Krok 4. Plik .EXE Symulator programowy Pełno wymiarowy emulator lub emulator EZ-ICE TESTY W SYSTEMIE DOCELOWYM Program konsolidujący Płytka docelowa Krok 5. Przetestowana płytka DSP KOŃCOWY SYSTEM PRODUKCYJNY PROM Splitter = plik lub sprzęt użytkownika = narzędzie rozwoju oprogramowania = narzędzie rozwoju sprzętu Rys. Proces projektowania systemu DSP PLIK SPECYFIKACJI SYSTEMU (.SYS) PROGRAM BUDOWY SYSTEMU KOMUNIKATY BŁĘDÓW LUB STRESZCZENIE ARCHITEKTURY PLIK OPISUJĄCY ARCHITEKTURĘ (.ACH) (Użyj komend systemu operacyjnego by zobaczyć wyjście) Rys. Program budowy systemu Program budowy systemu przetwarzając plik wsadowy, generuje plik opisujący architekturę systemu DSP. Plik ten posiada rozszerzenie *.ACH Program budowy systemu uruchamia się w linii poleceń komendą: BLD21 nazwa_pliku_wsadowego [.sys] Przykładowy plik wsadowy, określający konfigurację sprzętu: .SYSTEM filtr .ADSP2181; .SEG/PM/RAM/ABS=0/CODE/DATA ext_pm[2048]; .SEG/DM/RAM/ABS=14336/DATA int_dm[1024]; .ENDSYS; {nazwa system} {określenie procesora} {miejsce w pamięci programu, w którym przechowywany jest kod programu oraz przechowywana są dane} { miejsce w pamięci danych, w którym przechowywane są dane} {dyrektywa kończąca} Kompilator języka asemblera PLIK Z KODEM ŹRÓDŁOWYM W ASEMBLERZE (.DSP) ZAŁĄCZANE PLIKI KOMPILATOR JĘZYKA ASEMBLERA PLIK LISTINGU (.LST) PLIK INICJALIZACJI DANYCH (.INT) PLIK OBIEKTOWY (.OBJ) PLIK KODU (.CDE) Rys. Kompilator języka asemblera Kompilator języka asemblera rodziny ADSP-2100 tłumaczy język asemblerowy na kod obiektowy. Wydzielone fragmenty kodu lub danych nazywane się modułem. Moduły wchodzące do kompilatora języka asemblera są nazywane modułami źródłowymi. Każdy plik powinien zawierać jeden moduł. Moduły te są łączone w jeden plik wykonywalny. Pliki z kodem źródłowym mogą być redagowane przy wykorzystaniu edytorów tekstu, tworzących proste pliki tekstowe. Kompilator języka asemblera czyta plik wejściowy i generuje cztery typy plików wyjściowych: plik obiektowy (.OBJ), plik kodu (.CDE), plik listingu (.LST) oraz plik inicjalizacji (.INT). Pliki o rozszerzeniach *.OBJ, *.CDE, *.INT są plikami wejściowymi do programu konsolidującego. Plik obiektowy zawiera informacje dotyczące alokacji pamięci i definicji symboli. Plik kodu zawiera instrukcje kodu operacji dla ADSP-21xx z wyraźnymi symbolami. Pliki inicjalizacji zawierają dane dla inicjalizacji buforów danych. Plik listingu, który jest opcjonalny, dokumentuje proces asemblacji. Kompilator języka asemblera uruchamia się z linii poleceń komendą: ASM21 nazwa_pliku [.DSP] [-opcje] Nazwa_pliku jest plikiem wejściowym, który musi zawierać tylko jeden moduł kodu źródłowego. Opcje dają możliwość różnej konfiguracji kompilatora języka asemblera. PLIKI INICJALIZACJI DANYCH (.INT) „ASM21” PREPROCESOR C PLIKI KODU (.CDE) PLIKI OBIEKTOWY (.OBJ) PREPROCESOR ASEMBLERA PLIKI INICJALIZACJI BUFORA DANYCH (.DAT) PLIK OPISUJĄCY ARCHITEKTURE (.ACH) JĄDRO ASEMBLERA PROGRAM KONSOLIDUJĄCY PLIK .CDE PLIK .OBJ PLIK OBRAZU PAMIĘCI (.EXE) PLIK LISTINGU MAPY PAMIĘCI (.MAP) PLIK .INT PLIK .LST Rys. Schemat procesu kompilacji PLIK TABLICY SYMBOLI (.SYM) Rys. Schemat procesu konsolidacji Program konsolidujący Program konsolidujący ADSP-21xx tworzy program wykonywalny łącząc wszystkie moduły. Generuje trzy typy plików. Głównym plikiem wyjściowym jest plik o rozszerzeniu *.EXE. – jest to plik wykonywalny. Opcjonalny plik *.MAP jest dokumentem procesu konsolidacji. Zaś opcjonalny plik o rozszerzeniu *.SYM tworzy listę symboli napotkanych przez program konsolidujący, wraz z ich wartościami absolutnymi i ich zakresem referencji. Pliki inicjalizacji danych (.DAT) są określane w plikach z kodem źródłowym, a co za tym idzie nie muszą być wyraźnie nazywane w wywołaniu programu konsolidującego. Pliki danych są załączane przez program konsolidujący. Program konsolidujący uruchamia się z linii poleceń komendą: LD21 plik1 [plik2...][-opcje...] Plik programu konsolidującego posiada wiele opcji pozwalających w szerokim zakresie określać działanie tego programu. Ogólna charakterystyka filtrów cyfrowych. Wprowadzenie Rozwój cyfrowego przetwarzania sygnałów zapoczątkowany został przez projektantów systemów analogowego przetwarzania sygnałów, którzy usiłowali symulować procesy zachodzące w tych układach bez potrzeby budowania kosztownych prototypów. Te pionierskie prace były przyczynkiem do powstania w latach 80-tych dużego działu elektroniki zajmującego się cyfrową obróbką sygnałów (z ang. Digital Signal Processing – DSP). Cyfrowa obróbka sygnału obejmuje: modelowanie sygnałów fizycznych za pomocą ciągów; modelowanie zależności między sygnałami za pomocą operatorów różnicowych; przetwarzanie ciągów za pomocą układów cyfrowych. Aby sygnał analogowy mógł być poddany cyfrowej obróbce, musi być przetworzony na sygnał cyfrowy. Dokonuje się tego za pomocą przetwornika analogowo-cyfrowego. Częstotliwość próbkowania determinuje największą częstotliwość sygnału, która może być jednoznacznie odwzorowana podczas przekształceń ADC-DAC, zgodnie z prawem Nyquista wynosi ona połowę częstotliwości próbkowania [6]. Cyfrowa obróbka sygnału polega na wykonywaniu operacji matematycznych na kolejnych próbkach, co przy pomocy odpowiednich algorytmów obliczeniowych pozwala między innymi na filtrację sygnału. Mówimy wtedy o filtracji cyfrowej z zastosowaniem filtrów cyfrowych. Istnieje możliwość zaprojektowania i realizacji filtrów cyfrowych o dowolnych parametrach nawet takich, których stworzenie przy zastosowaniu filtrów analogowych mogłoby się okazać bardzo trudne. Kolejną przewagą filtrów cyfrowych nad analogowymi jest możliwość dowolnej modyfikacji ich charakterystyki w trakcie filtracji, która sprowadza się do zmiany odpowiednich współczynników filtru. Można w ten sposób łatwo tworzyć filtry adaptacyjne tzn. takie, których charakterystyka ulega zmianie w zależności od nadchodzącego sygnału. W odniesieniu do filtrów istnieją jeszcze inne istotne zalety stosowania rozwiązań cyfrowych. Po pierwsze możliwe jest przeprogramowanie urządzenia dokonującego cyfrowej obróbki sygnału i dzięki temu całkowita zmiana jego charakterystyki amplitudowej i fazowej. Na przykład możemy zmienić konkretny program danego filtru i z filtru dolnoprzepustowego utworzyć filtr górno-przepustowy bez jakiejkolwiek zmiany sprzętowej. Podstawowe wiadomości i właściwości filtrów cyfrowych Filtry cyfrowe występują jako jeden z dwóch typów: SOI (z ang. FIR - Finite Impulse Response) - filtry o skończonej odpowiedzi impulsowej NOI (z ang. IIR - Infinite Impulse Response) - filtry o nieskończonej odpowiedzi cyfrowej Jedną z najprostszych postaci jest filtr typu SOI nazywanymi również filtrem nierekursywnym [6],[7]. Filtr ten do uzyskania próbki sygnału wyjściowego wykorzystuje próbkę bieżącą i próbki przeszłe sygnału wejściowego, nie korzysta z żadnych przeszłych próbek sygnału wyjściowego. Na Rys. przedstawiony został przykładowy schemat blokowy filtru nierekursywnego. x(n) x(n-1) x(n-2 x(n-3) x(n-N-1) Rys. Schemat blokowy filtru nierekursywnego Można to również zapisać równaniem ogólnym: N 1 y (n) bk (n) x(n k ) k 0 gdzie: x(n) oznacza sygnał wejściowy, y(n) – sygnał wyjściowy, N – to rząd filtru, zaś bk(n) to współczynniki filtru SOI. Ogromnymi zaletami tych filtrów są: prostota projektowania, stabilność (filtry te się nie wzbudzają) oraz możliwość uzyskania liniowej charakterystyki fazowo-częstotliwościowej, co nie powoduje zniekształceń sygnału. Cecha ta jest bardzo znacząca w wielu zastosowaniach m.in. w pomiarach biomedycznych. Wadą jednakże tych filtrów jest duża złożoność obliczeniowa w porównaniu z filtrami rekursywnymi. Bardziej obrazowo można to wytłumaczyć następująco: aby filtr nierekursywny posiadał stromą charakterystykę amplitudowo-częstotliwościową, szybko przechodził z pasma przejściowego do pasma zaporowego, wymagana będzie znaczna ilość współczynników. Liczba ich będzie znacznie większa, niż w przypadku filtrów rekursywnych o podobnej stromości zboczy. Jednakże technologiczny postęp projektowania i produkcji układów elektronicznych jest tak duży, iż z roku na rok oferują one coraz większe prędkości pracy, a co za tym idzie zmniejsza się ograniczenie zastosowań filtrów nierekursywnych. Filtry o nieskończonej odpowiedzi impulsowej NOI (z ang. Infinite Impulse Response - IIR) różnią się od filtrów SOI tym, iż posiadają pętlę sprzężenia zwrotnego. Próbki sygnału wyjściowego filtru zależą od próbek sygnału wejściowego i poprzednich próbek sygnału wyjściowego. Można to zapisać równaniem ogólnym o postaci: N 1 y ( n) x k ( n) a k y ( n k ) k 0 gdzie: x(n) oznacza sygnał wejściowy, y(n) – sygnał wyjściowy, N – to rząd filtru, ak(n) – współczynniki filtru NOI. Wielką zaletą filtrów rekursywnych jest możliwość uzyskania bardzo stromych charakterystyk amplitudowo- częstotliwościowych przy niewielkiej liczbie współczynników. We wszystkich systemach ze sprzężeniem zwrotnym tak i w filtrach NOI, mogą na wyjściu wystąpić niestabilności i oscylacje o nieskończonym czasie trwania. Rys. przedstawia schemat blokowy filtru rekursywnego y(n) y(n- 1) y(n-2) y(n-3) y(n-N-1) Rys. Schemat blokowy filtru rekursywnego Filtry cyfrowe rekursywne i nierekursywne różnią się dość znacznie między sobą. Podstawową różnicą (obok różnic strukturalnych) jest ilość wykonywanych obliczeń, gdzie w przypadku filtru NOI ich liczba jest znacznie mniejsza, niż w przypadki filtrów SOI. Filtry SOI natomiast posiadają dużą stabilność łatwość projektowania oraz liniową charakterystykę fazowo – częstotliwościową. Algorytmy numeryczne DSP realizacji filtrów cyfrowych Podstawowe algorytmy modelowania sygnałów ciągłych bazują na przekształceniach Laplace'a i Fouriera. Fourier w roku 1822 opublikował fundamentalną rozprawę o przepływie ciepła, w której do opisu zjawiska transportu ciepła zaproponował wykorzystanie szeregów Fouriera. Szeregi te znalazły do tej pory wiele zastosowań, między innymi w analizie sygnałów. W zasadzie szeregi Fouriera mają zastosowanie w analizie sygnałów okresowych, zaś przekształcenie Fouriera (całka Fouriera) jest stosowane w analizie sygnałów aperiodycznych. Dyskretne przekształcenie Fouriera (DFT - Discrete Fourier Transform) stało się popularne w latach 40 i 50 XX wieku, jako narzędzie cyfrowych technik obliczeniowych, jednak ze względu na duże wymagania co do mocy obliczeniowych jego użycie było ograniczone. Dopiero opracowanie algorytmu szybkiego przekształcenia (transformaty) Fouriera (Fast Fourier Transform - FFT) o zredukowanej liczbie operacji matematycznych (operacji mnożenia i dodawania) doprowadziło do powszechnego stosowania tego narzędzia. Z kolei za pomocą transformaty Laplace'a opisuje się pojedyncze sygnały, natomiast po odpowiednim rozszerzeniu i właściwej interpretacji jest ona nazywana transformatą Z, będącą podstawową zależnością opisującą bloki filtrów cyfrowych [6], [7], [8]. Podstawowymi i najczęściej stosowanymi algorytmami filtracji w procesorach sygnałowych są algorytmy splotu sygnałów wykorzystujące metodę bufora przesuwnego i metodę bufora kołowego (cyklicznego). Głównymi elementami filtrów cyfrowych w architekturze DSP są bufory numeryczne służące do przechowywania próbek wejściowych i wyjściowych, będących sumą ważoną aktualnej próbki oraz M ostatnich próbek, procesor wykorzystuje bufor roboczy. Po nadejściu z przetwornika analogowocyfrowego kolejnej wartości x(n), bufor zostaje zaktualizowany. Następuje usunięcie najstarszej danej i przesunięcie wszystkich próbek o jedną pozycję a na wolne miejsce zapisywana jest kolejna wartość. Nowe dane są zawsze wpisywane na początku bufora. Na Rys. przedstawiona została ilustracja graficzna zasady działania bufora przesuwnego. Rys. Ilustracja graficzna zasady działania bufora przesuwnego Jednakże w przypadku dużej ilości współczynników operacja przesuwania danych buforze jest zbyt czasochłonna. W celu przyspieszenia algorytmu filtracji wykorzystuje się technikę bufora cyklicznego. Rys.. ilustruje zasadę działania takiego bufora. Rys. Ilustracja graficzna zasady działania bufora cyklicznego W tej metodzie nowa dana zostaje nadpisana w miejsce najstarszej danej, po czym następuje przesuniecie wskaźnika bufora tzn. przychodzące próbki zapisywane są w następnych „komórkach” bufora [7]. Metody projektowania nierekursywnych filtrów cyfrowych Procedury projektowania rozpoczynają się od określenia wymaganej funkcji transmitancji, po czym następuje obliczenie współczynników filtru, które dadzą założoną funkcje transmitancji. Najczęściej stosowanymi metodami projektowania filtrów SOI są: metoda okien i metoda optymalna (Rameza) [6], [7], [8]. Metoda okien Metoda pod względem teoretycznym i implementacyjnym jest bardzo efektywna i szeroko stosowana. Algorytm postępowania przy projektowaniu tą metodą można przedstawić z postaci kolejnych kroków: 1. Wybór rodzaju filtru (dolno- lub górnoprzepustowy, pasmowoprzepustowy lub pasmowozaporowy) oraz jego częstotliwości granicznych; 2. Analityczne wyznaczenie wzoru na dyskretną odpowiedź filtru za pomocą odwrotnego przekształcenia Fourier’a N /2 1 h( n) H (m) e j 2mn / N N m ( N / 2)1 sin ( x) ; x Wymnożenia obliczonego h(n) z założoną funkcją okna; Przesunięciu wyliczonych współczynników w prawo o N/2. otrzymując funkcję zbliżoną do f ( x) 3. 4. Wybrane funkcje okien Okno prostokątne: w(n) = 1 Okno trójkątne: n w(n) = N /2 n w(n) = 2N /2 dla n = 0, 1, 2 …. N-1; dla n = 0, 1, 2 … N/2 oraz dla n = N/2 + 1, N/2 + 2 … N-1; Okno Hanninga: w(n) = 0,5 – 0,5 cos (2n/N) Okno Hamminga: w(n) = 0,54 – 0,46 cos (2n/N) Okno Blackmana: w(n) = 0,5 – 0,5 cos (2n/N) + 0,08 cos (4n/N) dla n = 0, 1, 2 … N-1; dla n = 0, 1, 2 … N-1; dla n = 0, 1, 2 … N-1; Metoda Rameza Metoda Rameza (nazywana również metodą Parksa-McClellana lub metodą optymalną) znalazła szeroką akceptację w praktyce. Jako wartości początkową ustalana jest częstotliwość graniczna fpass częstotliwość początkowa pasma zaporowego fstop. Dodatkowo ustalany jest parametr nierównomierności pasma przepustowego i zaporowego. Tak zadaną charakterystykę amplitudową Ap() aproksymuje się za pomocą sumy kosinusoid wziętych ze współczynnikami wagowymi cn. Algorytm Rameza bazuje na ogólnym twierdzeniu, mówiącym, że zawsze istnieje taki zbiór M+2 pulsacji m, m = 1, 2 … M+2, że funkcja błędu przyjmuje dla tych pulsacji tylko wartości : M E () W ( m ) cn cos ( m n) Ap ( m ) (1) m n 0 m = 1, 2, … M+2; i że są to jej wartości ekstremalne w zbiorze pulsacji , przy czym W() jest dowolną funkcją wagową. Algorytm Rameza polega na iteracyjnym wyznaczeniu pulsacji m, wykonując kolejne kroki: 1. 2. Przyjęcie wejściowych pulsacji m; Rozwiązaniu układu równań i wyliczeniu współczynników cn i parametru 1 cos(1 ) 1 cos( ) 2 : : 1 cos( M 1 ) 1 cos( M 2 ) ... ... :. ... ... c0 Ap (1 ) cos(M 2 ) 1 / W ( 2 ) c1 Ap ( 2 ) : : : : cos(M M 1 ) (1) M / W ( M 1 ) cM Ap ( M 1 ) cos(M M 2 ) (1) M 1 / W ( M 2 ) Ap ( M 2 ) cos(M1 ) 1 / W (1 ) Sprawdzenie czy amplituda oscylacji funkcji błędu E(m) dla należącego do przedziału [0, ], jest większa niż obliczone ; jeśli nie to koniec obliczeń i wyprowadzenie współczynników cn. 4. W przeciwnym przypadku wyznaczenie M+2 pulsacji, dla których funkcja błędu posiada ekstrema i przyjęcie ich za pulsacje ekstremalne m; powrót do punktu 2. 3. Metoda ta jest nieco bardziej skomplikowana, jednakże często stosowana ze względu na wynik zbliżonych do pożądanej charakterystyki amplitudowej. Metody projektowania rekursywnych filtrów cyfrowych Przy projektowaniu filtrów rekursywnych najczęściej stosuje się projektowanie bezpośrednie oraz projektowanie pośrednie. W pierwszym przypadku metoda polega na dobraniu współczynników wielomianu transmitancji filtru cyfrowego drogą minimalizacji błędu średniokwadratowego aproksymacji zadanej charakterystyki częstotliwościowej. Tak jest na przykład w metodzie Yule’a – Walkera. Drugi przypadek polega na przekształceniu filtrów analogowych do postaci cyfrowej [6], [7], [8]. Stosuje się wówczas metody: niezmienności odpowiedzi impulsowej; dopasowania transformacji Z transformacji biliniowej. Zazwyczaj stosuje się projektowanie pośrednie z wykorzystaniem metody transformacji biliniowej. Głównym założeniem tej metody jest spełnienie zależności: Hc (z) = Ha (s), z gdzie: (2 / T ) s 1 s(T / 2) (2 / T ) s 1 s(T / 2) jest funkcją przekształcenia filtru cyfrowego na analogowy. Hc(z) – transmitancja filtru cyfrowego, Ha (s)transmitancja filtru analogowego, zaś T jest okresem próbkowania sygnału dyskretnego. Transformacja odwrotna ma postać: s 2 z 1 T z 1 Kolejność projektowania rekursywnego filtru metodą biliniową jest następująca: zadanie pulsacji granicznych filtru cyfrowego przedziału [0, ] oraz wymaganych wartości tłumienia w paśmie zaporowym i przepustowym. 1. 2. wyznaczenie pulsacji g dla filtru analogowego Ha (s), związanego z filtrem cyfrowym Hc (z): 2 g tg ( g / 2) T zaprojektowanie filtru analogowego zdefiniowanego przez zbiór parametrów (pulsacje graniczne, tłumienia w pasmach zaporowych i przepustowych) 3. wyznaczenie współczynników transmitancji filtru cyfrowego na podstawie transmitancji filtru analogowego 4. H c ( z ) H a ( s) s ( 2 / T ) ( z 1) / ( z 1) Następnie obliczana jest odwrotna transformata Fourier’a, pozwalająca uzyskać współczynniki filtru h(n). 5. Program projektowania filtrów – FIR_designer Jest to program napisany w oparciu o środowisko LabVIEW, generujący plik zawierający współczynniki dla zadanych filtrów o odpowiedzi skończonej. Współczynniki są zapisywane w postaci kodu 1.15 (jeden kropka piętnaście). Program ten daje możliwość zaprojektowania kilku różnych rodzajów filtrów. Projektowanie odbywa się metodą okien. Do wyboru mamy sześć z nich, tj. prostokątne, trójkątne, Blackmana, Kaisera – Bessela, Hamminga oraz Hanninga. W programie mamy możliwość określenia rzędu filtru (max. 256) oraz częstotliwości odcięcia (Rys.). Próbkowanie odbywa się z częstotliwością stałą, równą 48 kHz, ze względu na ustawione parametry kodeka. Aplikacje użytkowe filtrów ustawiają programowo próbkowanie z tą częstotliwością, jest to maksymalna dostępna częstotliwość próbkowania dla tego układu. Wykres podczas działania programu pokazuje nam, jaki jest przebieg zmian wartości współczynników w funkcji numeru próbki (szerokości okna). Rys. Panel czołowy programu FIR_designer Budowa wewnętrzna programu została przedstawiona poniżej (Rys. – Rys.) przy wykorzystaniu bibliotecznych procedur obliczania okien. Rys. Ogólny wygląd diagramu programu – zadanie parametrów, obliczanie współczynników, przekształcenia na kod 1.15, dopełnienie do formatu 24-bitowego oraz zapis do pliku Rys. Okno prostokątne Rys. Okno Hanninga Rys. Okno Hamminga Rys. Okno trójkątne Rys. Okno Blackmana Szczegółowy opis działania programu: 1. Parametry wejściowe tj. częstotliwość odcięcia i rząd filtru zostają prowadzone do bloku obliczającego współczynniki filtru, 2. Rząd filtru podany zostaje do bloku obliczającego okno wybranego typu, 3. Na współczynnikach filtru i obliczonym oknie jest przeprowadzona operacja splotu, 4. Otrzymany wynik jest przesyłany do części przekształcającej kod dziesiętny na kod 1.15 i zapisywany w formacie 24-bitowym, 5. Obliczone współczynniki zostają zapisywane w pliku. Przykładowy plik wyjściowy generowany przez FIR_designer: 066700 0B3F00 0FBE00 133500 151700 151700 133500 0FBE00 0B3F00 066700 Są to współczynniki dla filtru opartego na oknie prostokątnym, rząd filtru wynosi 10, zaś częstotliwość odcięcia 4000 Hz. Program konwersji kodu 1.15 - 1q15.vi Kod 1.15 jest podstawowym sposobem zapisu liczb stałopozycyjnych. Reprezentacja liczb, z zakresu od -1 do 1, w kodzie 1.15 jest stosowana ze względu na to, iż architektura rodziny ADSP-2100 została zoptymalizowana dla takiego zapisu wartości numerycznych. W formacie 1.15 jest jeden bit znaku, jest on bitem najbardziej znaczącym (MSB), oraz piętnaście bitów reprezentujących wartości od -1 do 1 pomniejszonego o najmniej znaczący bit (LSB). Wagi poszczególnych bitów przedstawia Tabela 6.1 Tabela Wagi bitów dla liczb 1.15 -20 2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 2-9 2-10 2-11 2-12 2-13 2-14 2-15 Przykładowe wartości w obu kodach zostały podane w Tabeli Tabela Porównanie zapisu 1.15 z odpowiednikiem dziesiętnym Liczba 1.15 Odpowiednik dziesiętny 0x0001 0.000031 0x7FFF 0xFFFF 0x8000 0.999969 -0.000031 -1.000000 Program dokonujący konwersji kodu 1.15 z dziesiętnego ilustruje, iż przeliczanie w obie strony nie zawsze jest bez stratne. Kilka przykładów znajduje się w Tabeli. Związane jest to z tym, ze kod 1.15 ma określoną dokładność, jego najmniejszą jednostką jest liczba odpowiadająca wartości dziesiętnej równej 0.000031 Kod 1.15 7FFF Liczby dziesiętne -1 0000 1 8000 Rys. Ideowe przedstawienie relacji między liczbami dziesiętnymi a zapisanymi w kodzie 1.15 Tabela Porównanie przykładowych wartości przd i po przeliczeniu na kod 1.15 Wartość dziesiętna przed przeliczeniem 1.000000 0.400000 -0.600000 Wartość w kodzie 1.15 0x7FFF 0x3333 0xB333 Wartość dziesiętna po przeliczeniu 0.999969 0.399994 -0.600006 Na panelu czołowym programu (Rys.) znajdują się trzy pola z wartościami. W pierwszą z nich wprowadzamy wartości do przeliczenia. W pozostałych dwóch otrzymujemy wyniki w kodzie 1.15 oraz wartość dziesiętną po przeliczeniu z kodu 1.15. Rys. Panel czołowy programu 1q15.vi Diagram 1q15.vi jest dość prosty (Rys) i opiera się on na jednej z metod przeliczania wartości dziesiętnych na kod 1.15. Rys. Diagram programu 1q15.vi Kod źródłowy filtru – fir.dsp Ze względu na to, ze cały kod programu jest dość obszerny, poniniżej zostaną pokazane tylko najistotniejsze fragmenty programu do których zaliczymy: początkową inicjalizacje kodeka oraz przetwarzanie próbek i filtracje. Poniższy fragment pokazuje sekwencję słów programujących pracę kodeka: .init init_cmds: 0xc002, { Rejestr sterowania lewego wejścia ustawienia: wybrane liniowe lewe wejście #1 wzmocnienie lewego wejścia 3dB } 0xc102, { Rejestr sterowania prawego wejścia ustawienia: wybrane liniowe prawe wejście #1 wzmocnienie prawego wejścia 3dB } 0xc288, { Rejestr sterowania lewego pomocniczego wejścia #1 ustawienia: brak wzmocnienia/tłumienia kanał pomocniczy wyciszony } 0xc388, { Rejestr sterowania prawego pomocniczego wejścia #1 ustawienia: brak wzmocnienia/tłumienia kanał pomocniczy wyciszony } 0xc488, { Rejestr sterowania lewego pomocniczego wejścia #2 ustawienia: brak wzmocnienia/tłumienia kanał pomocniczy wyciszony } 0xc588, { Rejestr sterowania prawego pomocniczego wejścia #2 ustawienia: brak wzmocnienia/tłumienia kanał pomocniczy wyciszony } 0xc680, { Rejestr sterowania lewego przetwornika DAC ustawienia: lewy DAC wyciszony brak tłumienia } 0xc780, { Rejestr sterowania prawego przetwornika DAC ustawienia: prawy DAC wyciszony brak tłumienia } 0xc85c, { Rejestr formatu danych ustawienia: 16-bitowe liniowe przetwarzanie PCM przetwarzanie dwukanałowe próbkowanie 48kHz zegar XTAL1=24.576 MHz; } 0xc909, { Rejestr konfiguracji interfejsu ustawienia: umożliwiona auto-kalibracja włączone odtwarzanie } 0xca00, { Rejestr sterowania portami ustawienia: stan niski na bitach XCTL1 i XCTL0 } 0xcc40, { Rejestr innych informacji ustawienia: 32 bity w ramce transmisji synchronicznej, 0xcd00; system dwu przewodowy } { Rejestr sterujący cyfrowym mieszaniem ustawienia: brak tłumienia wyłączone cyfrowe mieszanie } W procedurze inicjalizacji kanały pomocnicze, przetworniki DAC oraz cyfrowe mieszanie są wyciszone. Ich uaktywnienie odbywa się zwykle w dalszej części kodu źródłowego. Najważniejszy rejestr pod względem sposobu przetwarzania sygnału, rejestr formatu danych, jest od razu ustawiany do parametrów wymaganych przez użytkownika. W programie została ustawiona częstotliwość próbkowania 48kHz, a wiec największa z dostępnych w kodeku oraz przetwarzanie liniowe PCM 16-bitowe. Drugi fragment przedstawia proces przetwarzania próbek wraz z kodem filtru zapisany w języku asembler dla procesorów ADSP-21xx : input_samples: ena sec_reg; { użycie banku rejestrów shadow } voice_input: sr1 = dm (rx_buf + 2); { pobranie nowej próbki z SPORT0 (z kodeka) } process_sample: dm(i0,m1)=sr1; { zapis próbki w buforze danych (linia opóźniająca) } jump fir; output: dm (tx_buf + 1) = mr1; { filtrowane wyjście do SPORT (do głośnika) } dm (tx_buf + 2) = mr1; {filtrowane wyjście do SPORT (do głośnika) } rti; fir: cntr=taps-1; mr=0, mx0=dm(i0,m1), my0=pm(i4,m4); do fir1loop until ce; fir1loop: mr=mr+mx0*my0(ss), mx0=dm(i0,m1), my0=pm(i4,m4); mr=mr+mx0*my0(rnd); if mv sat mr; sr = ashift mr1 by 1 (lo); {wzmocnienie filtrowanego sygnału razy 2 } mr1 = sr0; jump output; Opis badania filtrów cyfrowych DSP Filtry cyfrowe badane były w rzeczywistych torach pomiarowych w środowisku procesorów sygnałowych i przetworników ADC i DAC typu ΣΔ. Opis stanowiska i metody badania Przedmiotem badań było wyznaczenie charakterystyk amplitudowo-częstotliwościowych filtrów cyfrowych. Ze względu na różnorodność filtrów skupiliśmy się tylko na dolnoprzepustowych filtrach o skończonej odpowiedzi impulsowej i porównaniu ich z parametrami odpowiadających im filtrów teoretycznych. GENERATOR FUNKCYJNY OSCYLOSKOP CYFROWY A B PC RS-232 WE EZ-KIT Lite WY Rys. Blokowy schemat pomiarowy Przyrządy wykorzystane w badaniu charakterystyk amplitudowo-częstotliwościowych: moduł EZ-KIT Lite z procesorem sygnałowym ADSP-2181, komputer klasy PC, generator funkcyjny Meter International Corp. FG 503, oscyloskop cyfrowy Agilient 54622D. Przed przystąpieniem do pomiarów zrealizowano: 1. 2. 3. 4. Procedury zaprojektowania filtru przy pomocy opracowanego programu FIR_designer.vi, Wygenerowano współczynniki filtru, Skompilowano źródło DSP filtru wraz z otrzymanymi współczynnikami, Plik wynikowy filtr.exe załadowano do procesora sygnałowego przez łącze RS-232 za pomocą programu ładującego Loader.vi. Układ pomiarowy do badania charakterystyk amplitudowo –częstotliwościowych został połączony tak jak na Rys.. Sygnał sinusoidalny o amplitudzie 750mV podano na wejście modułu EZ-KIT Lite oraz na kanał A oscyloskopu cyfrowego. Do kanału B podłączono sygnał wyjściowy badanego modułu. Wartości skuteczne napięć sygnałów z generatora i sygnału wyjściowego badanego filtru cyfrowego odczytywano z oscyloskopu. Wyniki zebrano w plikach i zamieszczono w dodatku na CD–ROM -ie. Opracowane wyniki przedstawiono w formie graficznej. Przykładowe wyniki badań Celem badań było porównanie charakterystyk filtrów rzeczywistych z teoretycznymi oraz zbadanie wpływu okna na charakterystykę amplitudową. W pierwszej części wybrane zostały filtry o dwóch różnych oknach, a następnie te same filtry, lecz wyższego rzędu. Parametry, według których oceniono zaprojektowane filtry to: Obszar nierównomierności charakterystyki amplitudowej w paśmie przepustowym, Obszar przejściowy, Częstotliwość odcięcia filtru przy amplitudzie A=-3dB. Badane parametry obrazuje Rys. A fc f Rys. Obszar nierównomierności charakterystyki amplitudowej w paśmie przepustowym i obszar przejściowy, Filtr dolnoprzepustowy 32 – go rzędu z oknem prostokątnym Parametry filtru rzeczywistego: Częstotliwość odcięcia: fc (-3 dB) = 4,5 kHz Nierównomierność w paśmie przepustowym: + = - 0,37 dB i - = - 2,37 dB Pasmo przejścia: f = 3 kHz Parametry filtru teoretycznego: Częstotliwość odcięcia: Pasmo przejścia: fc (-3 dB) = 4,678 kHz f = 2,27 kHz 10 0 -10 -20 A [dB] -30 -40 -50 -60 -70 -80 -90 f [Hz] 8,5 8,3 8,1 7,9 7,7 7,5 7,3 7,1 6,9 6,7 6,5 6,3 6,1 5,9 5,7 5,5 5,3 5,1 4,9 4,7 4,5 4,3 4,1 3,9 3,5 3,1 2 2,7 1 0 0,15 Rys. Teoretyczna charakterystyka amplitudowo-częstotliwościowa filtru cyfrowego dolnoprzepustowego 32 – go rzędu z oknem prostokątnym -5 A [dB] -10 -15 -20 -25 -30 f [kHz] Rys.. Rzeczywista charakterystyka amplitudowo-częstotliwościowa filtru cyfrowego dolnoprzepustowego 32 – go rzędu z oknem prostokątnym MUX ΣΔ RS DSP RS ΣΔ Rys. Blokowy schemat toru przetwarzania DSP Bibliografia: [1] "ADSP-2181 EZ-KIT Lite Evaluation System Manual" - 81_EZ-KIT_Lite.pdf [2] "Serial-Port 16-Bit SoundPort Stereo Codec AD1847" - AD1847.pdf [3] "Considerations for Selecting a DSP Processor—Why Buy the ADSP-2181? (The Analog Devices ADSP-2181 vs. Texas Instruments & Motorola Fixed-Point DSPs)" - AN-400.pdf [4] "Assembler Tools & Simulator Manual" Second edition (11/94)- asm1.pdf [5] "ADSP-2100 Family User's Manual" Third edition (9/95) Analog Devices, 82-0007803 [6] Richard G. Lyons "Wprowadzenie do cyfrowego przetwarzania sygnałów" WKŁ, Warszawa 2000 [7] Tomasz P. Zielinski "Od teorii do cyfrowego przetwarzania sygnałów" ANTYKWA, Kraków 2002 [8] Adam Dąbrowski "Przetwarzanie sygnałów przy użyciu procesorów sygnałowych" Wydawnictwo Politechniki Poznańskiej, Poznań 2000 [9] "ADSP-2100 Family EZ-KIT Lite Reference Manual" First edition (5/95) Analog Devices, 82-000779-01 [10] Sophocles J. Orfanidis "ADSP-2181 Experiments" wiosna 2001 - man.pdf [11] "DIGITAL SIGNAL PROCESSING APPLICATIONS USING THE ADSP-2100 FAMILY" – Analog Devices, 1990 [12] "The Scientist and Engineer's Guide to Digital Signal Processing" Second Edition Steven W. Smith, 1999 [13] www.analog.com [14] www.ti.com [15] www.addis.pl