Oprogramowanie Systemów Pomiarowych



Podobne dokumenty
Ćw. 12. Akwizycja sygnałów w komputerowych systemach pomiarowych ( NI DAQPad-6015 )

Ćw. 1 Wprowadzenie: Obsługa mikroprocesorowych modułów, podstawy techniki programowania, obsługa operacji WE/WY

Systemy Pomiarowe Wielkości Fizycznych Ćw. 9. Ćw.9 Badanie mikroprocesorowego przetwornika A/C

PROGRAM TESTOWY LCWIN.EXE OPIS DZIAŁANIA I INSTRUKCJA UŻYTKOWNIKA

Mikrosystemy Pomiarowe i Procesory Sygnałowe

Podstawy budowy wirtualnych przyrządów pomiarowych

ĆWICZENIE. TEMAT: OBSŁUGA PRZETWORNIKA A/C W ukontrolerze 80C535 KEILuVISON

Parametryzacja przetworników analogowocyfrowych

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

1. Opis. 2. Wymagania sprzętowe:

1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych

Program ćwiczenia: SYSTEMY POMIAROWE WIELKOŚCI FIZYCZNYCH - LABORATORIUM

interfejs szeregowy wyświetlaczy do systemów PLC

Szkolenia specjalistyczne

Rejestratory Sił, Naprężeń.

2. Architektura mikrokontrolerów PIC16F8x... 13

Wstęp Architektura... 13

Komputerowe systemy pomiarowe. Dr Zbigniew Kozioł - wykład Mgr Mariusz Woźny - laboratorium

ZAKŁAD SYSTEMÓW ELEKTRONICZNYCH I TELEKOMUNIKACYJNYCH Laboratorium Podstaw Telekomunikacji WPŁYW SZUMÓW NA TRANSMISJĘ CYFROWĄ

Kurs Podstawowy S7. Spis treści. Dzień 1

Przetwornik analogowo-cyfrowy

Przykładowe pytania DSP 1

Laboratorium Komputerowe Systemy Pomiarowe

Interfejs analogowy LDN-...-AN

Instrukcja do oprogramowania ENAP DEC-1

Kod produktu: MP01105

ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM

APPLICATION OF ADUC MICROCONTROLLER MANUFACTURED BY ANALOG DEVICES FOR PRECISION TENSOMETER MEASUREMENT

4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD.

1.Wstęp. 2.Generowanie systemu w EDK

1. Opis aplikacji. 2. Przeprowadzanie pomiarów. 3. Tworzenie sprawozdania

Laboratorium Komputerowe Systemy Pomiarowe

Gromadzenie danych. Przybliżony czas ćwiczenia. Wstęp. Przegląd ćwiczenia. Poniższe ćwiczenie ukończysz w czasie 15 minut.

TERMINAL DO PROGRAMOWANIA PRZETWORNIKÓW SERII LMPT I LSPT MTH-21 INSTRUKCJA OBSŁUGI I EKSPLOATACJI. Wrocław, lipiec 1999 r.

Laboratorium Komputerowe Systemy Pomiarowe

Schemat blokowy karty

1.2. Architektura rdzenia ARM Cortex-M3...16

Laboratorium Komputerowe Systemy Pomiarowe

Konfiguracja i programowanie sterownika GE Fanuc VersaMax z modelem procesu przepływów i mieszania cieczy

Język SCPI (ang. Standard Commands for Programmable Instruments)

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

Przetwarzanie A/C i C/A

LEKCJA TEMAT: Zasada działania komputera.

Przetwarzanie AC i CA

Programowanie sterowników przemysłowych / Jerzy Kasprzyk. wyd. 2 1 dodr. (PWN). Warszawa, Spis treści

1. Podstawowe wiadomości Możliwości sprzętowe Połączenia elektryczne Elementy funkcjonalne programów...

Opis ultradźwiękowego generatora mocy UG-500

Architektura komputerów

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

Przetworniki AC i CA

Licznik rewersyjny MD100 rev. 2.48

XXXII Olimpiada Wiedzy Elektrycznej i Elektronicznej. XXXII Olimpiada Wiedzy Elektrycznej i Elektronicznej

Generator przebiegów pomiarowych Ex-GPP2

Kod produktu: MP01105T

Wydział Elektryczny. Katedra Telekomunikacji i Aparatury Elektronicznej. Konstrukcje i Technologie w Aparaturze Elektronicznej.

Research & Development Ultrasonic Technology / Fingerprint recognition

MIKROKONTROLERY I MIKROPROCESORY

1. Cel ćwiczenia. 2. Podłączenia urządzeń zewnętrznych w sterowniku VersaMax Micro

Mikrosystemy Pomiarowe i Procesory Sygnałowe

Wirtualne przyrządy kontrolno-pomiarowe

Układy sekwencyjne. Podstawowe informacje o układach cyfrowych i przerzutnikach (rodzaje, sposoby wyzwalania).

Kurs Zaawansowany S7. Spis treści. Dzień 1

Przystawka oscyloskopowa z analizatorem stanów logicznych. Seria DSO-29xxA&B. Skrócona instrukcja użytkownika

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej

Instytut Teleinformatyki

PUKP Programowanie urządzeń kontrolno-pomiarowych. ztc.wel.wat.edu.pl

Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.

Programowanie Układów Logicznych kod kursu: ETD6203. Szczegóły realizacji projektu indywidualnego W dr inż.

1. Zasilacz mocy AC/ DC programowany 1 sztuka. 2. Oscyloskop cyfrowy z pomiarem - 2 sztuki 3. Oscyloskop cyfrowy profesjonalny 1 sztuka

OBSŁUGA ZA POMOCĄ PROGRAMU MAMOS.EXE

Instytut Teleinformatyki

Architektura komputerów. Układy wejścia-wyjścia komputera

Zastosowanie procesorów AVR firmy ATMEL w cyfrowych pomiarach częstotliwości

Metody obsługi zdarzeń

Uśrednianie napięć zakłóconych

Hardware mikrokontrolera X51

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej

Interfejsy komunikacyjne pomiary sygnałów losowych i pseudolosowych. Instrukcja do ćwiczenia laboratoryjnego

Instrukcja użytkownika ARSoft-WZ1

BADANIE ELEMENTÓW RLC

Pośredniczy we współpracy pomiędzy procesorem a urządzeniem we/wy. W szczególności do jego zadań należy:

System mikroprocesorowy i peryferia. Dariusz Chaberski

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej

1. Opis płyty czołowej multimetru METEX MS Uniwersalne zestawy laboratoryjne typu MS-9140, MS-9150, MS-9160 firmy METEX

Wirtualne przyrządy pomiarowe

dokument DOK wersja 1.0

Kurs SIMATIC S7-300/400 i TIA Portal - Podstawowy. Spis treści. Dzień 1. I System SIEMENS SIMATIC S7 - wprowadzenie (wersja 1503)

2.1 Porównanie procesorów

1. Opis okna podstawowego programu TPrezenter.

Różnicowy przetwornik ciśnienia EL-PS-xxx

4 Transmisja szeregowa, obsługa wyświetlacza LCD.

Konfiguracja karty akwizycji danych pomiarowych DAQ

Ogólne przeznaczenie i możliwości interfejsu sieciowego przepływomierza UniEMP-05 z protokołem MODBUS. ( )

ĆWICZENIE 7. Wprowadzenie do funkcji specjalnych sterownika LOGO!

Ćwiczenie 4: Próbkowanie sygnałów

UWAGA. Wszystkie wyniki zapisywać na dysku Dane E: Program i przebieg ćwiczenia:

ASTOR IC200ALG320 4 wyjścia analogowe prądowe. Rozdzielczość 12 bitów. Kod: B8. 4-kanałowy moduł ALG320 przetwarza sygnały cyfrowe o rozdzielczości 12

Transkrypt:

WYKAZ ĆWICZEŃ LABORATORYJNYCH Oprogramowanie Systemów Pomiarowych ET-DU 1. Środowisko programowe, translator, konsolidator, biblioteki użytkownika 2. Synchronizacja zdarzeń systemowych, moduły zliczające w pomiarach interwału czasu, okresu i częstotliwości 3. Wirtualizacja zadań pomiarowych, skalowanie kanałów pomiarowych, przetwarzanie wielokanałowe 4. Graficzne środowiska programowania, LabVIEW SCXI (NI SCXI-1600) 5. Graficzne środowiska programowania, magistrala PXI (NI PXI-1031) 6. Programowanie przyrządów systemowych w SCPI 7. Język assembler w programowaniu procesorów sygnałowych 8. Odrabianie zaległości, zaliczenie

Wprowadzenie: Obsługa mikroprocesorowych modułów, podstawy techniki programowania, obsługa operacji WE/WY Problemy teoretyczne: Podstawy architektury mikrokontrolerów i mikrokonwerterów pamięć programu, pamięć danych, interfejs komunikacyjny RS-232, moduły programowanych liczników/dzielników, system przerwań. języki programowania mikrokontrolerów analogowych, środowisko programowe, emulatory programowe i sprzętowe obsługa operacji WE/WY, przechwytywanie strumieni danych przy pomocy terminala Program ćwiczenia: 1. Uruchomić mikrokomputer PC system operacyjny WINDOWS XP i zalogować się w systemie jako użytkownik student (bez hasła). 2. W folderze C:\MikroSYS\ założyć unikalny folder dla studenckiej grupy laboratoryjnej (tylko w tym folderze można dokonywać zapisów i modyfikacji własnych plików). 3. Zapoznać się z podstawowymi własnościami mikrokonwerterów ADuc8xx (pliki: AduC8xx.pdf): multiplekser kanałów analogowych, układ T-H, przetwornik A/C, napięcie referencyjne przetwornika, metody transferu danych uzyskiwanych z przetwornika, kanał monitorowania temperatury układu mikrokonwertera, pamięć (organizacja pamięci programu, pamięci danych, pamięci zewnętrznej, rodzaje pamięci, procesor rdzeniowy 8051, podstawowe własności, zegar systemowy, liczniki/dzielniki, porty WE/WY, moduły dodatkowe, zasilanie, urządzenia peryferyjne (moduły transmisji szeregowej, transmisji I 2 C, moduł nadzorcy systemu, moduł kontrolera zasilania), zastosowania modułu mikrokonwertera. 4. Zapoznać się z modułem typu EVAL-KIT ADuC8xx (zasilanie, konfigurowanie pamięci, podłączanie zewnętrznych analogowych sygnałów testowych: sinus, trójkąt, prostokąt) t 0 1 2 3 4 5 6 7 khz x(t) y(t) U DC A x Reg. f x x1 x10 x100 x1000 oscyloskop Generator / Częstościomierz moduł ADuC831 AI7 AI6 AI5 AI4 AI3 AI2 AI1 AI0 Sensor temp. U REF A GND T/H rdzeń 8051/52 A/C U REF 2.5V RAM zewn. 2kB mikrokomputer UART RS232 Rys. 1. Schemat blokowy układu testowania przetwornika A/C modułu mikrokonwertera ADuC8xx.

(a) SW1 & SW3 zwolnione (b) wciśnij SW3 (c) wciśnij SW1 SW1 (RESET=0) SW3 (PSEN=1) SW1 (RESET=0) SW3 (PSEN=0) SW1 (RESET=1) SW3 (PSEN=1) (d) zwolnij SW1 (e) zwolnij SW3 SW1 (RESET=0) SW3 (PSEN=0) SW1 (RESET=0) SW3 (PSEN=1) Rys. 2. Zasada wprowadzenia modułu ADuC8xx w tryb ładowania programu użytkownika (SW1-RESET, SW3- Serial_Download kolejność wciskania i zwalnia przycisków). 5. Uruchomić program komunikacyjny HyperTerminal (ADuC8xx.ht), dostosować port oraz parametry transmisji do współpracy z minimodułem: - kanał komunikacyjny COM1: parametry transmisji (prędkość transmisji-9600bitów/sek, 8 bitów danych, parzystość/brak, 1 bit stopu, brak sterowania przepływem danych, bufor FIFO z zapewnioną zgodnością z UART em 16550. - konfiguracja terminala ANSI. 6. Uruchomić i zapoznać się z obsługą pakietu programowego μvision2 do edycji, kompilowania, konsolidowania i uruchamiania aplikacji użytkownika w środowisku C-Keil (GS51.pdf) 7. W środowisku μvision2 zweryfikować parametry przetwarzania projektu (kompilacja, konsolidacja, hex-konwersja) stosując poniższe parametry: - opcje kompilacji C51 CD SB DB OE ROM(Small) Large - opcje konsolidacji BL51 NOOL RS(256) PL(68) PW(78) CO(0) 8. Załadować i uruchomić własny projekt Cw1_8xx.uv2 zawierający pojedynczy moduł programu Cw1_8xx.c. W pliku źródłowym ustalić sekcje: definicji typu mikrokroprocesora zakresu dostępnych zasobów pamięci RAM/ROM zmiennych predefiniowanych zmiennych globalnych programu procedur WE/WY (#include <stdio.h>) aktywowania kanału komunikacynego np.: CFG831=0x11; // Uaktywnij pamiec 2kB pamieci RAM jako XDATA // KONFIGURACJA portu transmisji szeregowej - UART T3CON=0x085; // specjalizowany licznik L3 T3FD= 0x08; // szybkość transmisji 9600baud SCON = 0x052; printf("%ctestowanie PRZETWORNIKA A/C \n", 0x0C); 9. Przeprowadzić proces załadowania opracowanego modułu programowego (downloading) *.hex przy pomocy programu WSD.EXE (ustalić parametry downloadingu związane z parametrami kanału komunikacyjnego oraz zakresu procedur czyszczenia pamięci FlashEE). 10. Przetestować działanie: procedury restartu mikrokonwertera (wciśnięcie przycisku RESET), instrukcji scanf i wprowadzanie danych w zapisie: tekstowym i całkowitoliczbowym w postaci dziesiętnej i heksadecymalnej, instrukcji printf i wyprowadzanie danych w zapisie: tekstowym i całkowitoliczbowym w postaci dziesiętnej i heksadecymalnej, obsługi przycisku kontrolnego INT0 (powiązać działanie przycisku zobsługą przerwania sprzętowego)

obsługi jednobitowych wskaźników typu LED Rys. 3. Schemat blokowy mikrokonwertera AduC 831. f sampl sygnał wyzwalający przetwornik A/C Rys. 4. Schemat blokowy zegara/licznika-l2 pracującego w 16-bitowym trybie auto-przeładowania i generującego sygnał wyzwalania przetwornika A/C.

Przykładowy program obsługi mikrokonwertera: (kolorem szarym zaznaczono linie źródłowe związane z zadawaniem częstości próbkowania) #include <ADuC831.h> // predefiniowane symbole ADuC831 #include <stdio.h> #define SENSTEMP 8 // kanal 8 #define DMASTOP 15 // DMA-> STOP #define DZ 18 // dzielnik Licznika2, zadawanie częstotliwości próbkowania // ZMIENNE DEFINIOWANE W WEWNETRZNEJ PAMIECI RAM idata int xdata *ptr; idata int num; bdata bit C; sbit P32 = P3^2; // linia INT0 = Port3.2 - przelacznik Int0 sbit LED = P3^4; // dioda LED idata unsigned char ch; // numer przetwarzanego kanalu xdata int DMASTART[1024]; // segment pamieci dla przeslan DMA // Procedura obslugi przerwania generowanego sygnalem ADCI z przetw. ADC void end_of_adc(void) interrupt 6 { // int_6*8+3 = 51dec = 33hex = ADCI TR2=0; // zakoncz wyzwalanie przetwornika C=0; // zeruj wskaznik } // Procedura obslugi przerwania generowanego sygn. zewnetrznym INT0 // W obsludze tego przerwania realizujemy pomiar temperatury void interrupt_0 () interrupt 0 { int T; } ADCCON1 = 0x80; ADCCON2 = SENSTEMP; for (T=0; T<100; T++) ; SCONV = 1; while (!ADCI); T=((ADCDATAH & 0x0F) * 256) + ADCDATAL; ADCCON1=0x00; printf ( "\ntemperatura binarnie = %u bit",t ); // wlaczenie zasilania przetwornika // wlaczenie sensora temp. // opoznienie programowe // rozkaz pojedynczej konwersji // oczekiowanie na zakonczeniu konwersji SCCONV<=0 // odbior wyniku przetwarzania // wylaczenie zasiolania przetwornika // wyswietlenie binarnej wartosci wyniku przetwarzania A/C main() { int i, DMACOUNT; CFG831=0x11; // Uaktywnij pamiec 2kB pamieci RAM jako XDATA // KONFIGURACJA portu transmisji szeregowej - UART T3CON=0x085; // specjalizowany licznik L3 T3FD= 0x08; // szybkość transmisji 9600baud SCON = 0x052; printf("%ctestowanie PRZETWORNIKA A/C \n", 0x0C); printf("\nwprowadz numer kanalu przetwarzania A/C (0-15):?"); // Numer przetwarzaniego kanalu scanf ("%bd", &ch); ch&=0xf; // liczba: od 0 do 14 printf("\npodaj liczbe probek sygnalu pomiarowego DMACOUNT:?"); // Liczba próbek mierzonego sygnału scanf ("%u", &DMACOUNT); printf("\nwybrales kanal nr=%bd i N=%d probek sygnalu badanego", ch, DMACOUNT); // PRE-KONFIGURACJA zewnetrznej RAM dla DMA w pojedynczym kanale for(i=0; i<dmacount; i++) DMASTART[i] = ch << 12; DMASTART[i]=DMASTOP << 12; // Zancznik konca bloku danych pomiarowych: Stop DMA for (i=0; i<=dmacount; i++) { // Wydruk kontrolny prekonfigurowanego obszaru RAM if (i % 8 ==0) printf("\n"); printf("%3d=%04x ", i, DMASTART[i] ); } // KONFIGURACJA ADC dla konwersji typu DMA... DMAL=0; // adres inicjujacy kanal operacji DMA DMAH=0; DMAP=0; // koniecznie w takim porzadku: DMAL, DMAH, DMAP) TL2,TH2=0; RCAP2L=0x10000-DZ; RCAP2H=(0x10000-DZ)>>8; ADCCON1=0x9E; ADCCON2=0x40; C=1; // Fsys=11059200Hz // Tosc=12/Fosc -> 1.085us // okres probkowania = T2 =(DZ*1.085us) // [RCAP2H,RCAP2L]= 65536 - DZ // tryb zasilania -> normaly // tryb przesylania danych -> DMA // wyzwalanie przetwornika -> Timer2 // lokany wskaznik warunku

EA=1; EADC=1; TR2=1; // globalne zezwolenie obslugi przerwan // zezwolenie obslugi przerwan przetwornika ADC // zezwolenie na prace licznika L2 // Trwa konwersja i przesylanie danych DMA // kiedy transmisja DMA jest kompletna, przetwornik ADC generuje // przerwanie i zeruje bit C while (C); // wynik przetwarzania ADC jest juz dostepny w RAM EA=0; // wstrzymana obsluga przerwan - globalnie EADC=0; // wstrzymana obsluga przerwan od przetwornika A/C ADCCON1=0x00; // zasilanie przetwornika wylaczone for(i=0; i<=dmacount; i++) { // wydruk kontrony zawartosci pamieci RAM if (i % 8== 0) printf("\n"); printf("%3d=%04x ", i, DMASTART[i] ); } // wydruk kontrolny w postaci slupka danych for(i=0; i<=dmacount; i++) printf("\n%4u ", DMASTART[i] & 0x0FFF ); printf("\n"); IT0=1; // zezwolenie na obsluge przerwania 0 EA=1; // zezwolenie na obsluge przerwan EX0=1; // zezwolenie na obsluge przerwania zewnetrznego INT0 (przycisk) printf("\nczekam na INT0\n"); while(1) { for (i=0; i<30000; i++) ; LED = ~LED ; } } // KONIEC // Test przetwarzania w trybie pojedynczej konwersji A/C // opoznienie programowe // negacja stanu wysterowania diody LED na przeciwny (panel hyperterminala) PRZYKŁADOWE WYNIKI TESTOWANIE PRZETWORNIKA A/C Wprowadz numer kanalu przetwarzania A/C (0-15):?0 Podaj liczbe probek sygnalu pomiarowego DMACOUNT:?128 Wybrales kanal nr=0 i N=128 probek sygnalu badanego 0=0000 1=0000 2=0000 3=0000 4=0000 5=0000 6=0000 7=0000 8=0000 9=0000 10=0000 11=0000 12=0000 13=0000 14=0000 15=0000... 112=0000 113=0000 114=0000 115=0000 116=0000 117=0000 118=0000 119=0000 120=0000 121=0000 122=0000 123=0000 124=0000 125=0000 126=0000 127=0000 128=F000 0=05C9 1=0535 2=04A7 3=0424 4=03AB 5=033F 6=02E4 7=029D 8=0262 9=0236 10=021B 11=020A 12=0220 13=0242 14=0271 15=02B1... 120=038C 121=0400 122=0482 123=050E 124=05A1 125=0639 126=06D3 127=0000 128=F000... 1154 1294 1441 1593 1747... Czekam na INT0 Temperatura binarnie = 1064 bit Temperatura binarnie = 1064 bit Temperatura binarnie = 1064 bit...

Przykłady inicjalizacji portów transmisji szeregowej dla wybranych typów mikrokontrolerów analogowych #ifdef ADuC831 CFG831=0x01; // Uaktywnij pamiec 2kB pamieci RAM jako XDATA T3CON=0x085; // KONFIGURACJA portu transmisji szeregowej - UART T3FD=0x08; SCON=0x052; #endif #ifdef ADuC812 // KONFIGURACJA portu transmisji szeregowej - UART SCON = 0x52; // 8bit, nieparzystosc, 1 bit stopu TMOD = 0x20; // konfiguracja Timer1.. TH1 = 0xFD; //..dla predkosci transmisji 9600[b/s] (baud) TR1 = 1; #endif #ifdef ADuC834 CFG834=0x01; // Uaktywnij pamiec 2kB pamieci RAM jako XDATA T3CON = 0x82; T3FD = 0x12; SCON = 0x52; #endif #ifdef ADuC824 RCAP2H=0xFFh; // config UART for 9830baud RCAP2L=-5; // (close enough to 9600baud) TH2=0xFFh; TL2=-5; SCON=0x52h; T2CON=0x34h; #endif

Ćw. 2. Synchronizacja zdarzeń systemowych, moduły zliczające w pomiarach interwału czasu, okresu i częstotliwości Zagadnienia ogólne: architektura mikrokontrolera rodziny INTEL 80C552, moduł mikrokontrolera typu PB-552 techniki programowania w językach: asembler A-51 i C-51 (struktura programu, kompilacja, konsolidacja). wybrane algorytmy obsługi urządzeń WE/WY rodziny układów serii 8051. programowa obsługa wyświetlacza ciekłokrystalicznego i klawiatur funkcyjnych. zasady obsługi programowanych zegarów/liczników (w szczególności L2) analiza rozwiązań programowo-sprzętowych małych interwałów czasu, analiza rozwiązań programowo-sprzętowych dużych interwałów czasu. Program ćwiczenia: badany sygnał f x f osc =11,0592MHz rejestr CT0 licznika L2 jednobitowy wskaźnik wpisu do rejestru CT0 licznika L2 CTI0 CTL0 CTH0 1/12 Dzielnik wstępny 1/2/4/8 moduł licznika L2 INT wewnętrzna 16 bit. magistrala danych rejestr licznika L2 T2H T2L PRZERWANIE (INT): 16 bitowe przepełnienie licznika L2 Rys. 1. Schemat blokowy struktury układu do pomiaru okresu i częstotliwości przy wykorzystaniu struktury układu licznikowego L2. Bieżący stan licznika L2 65535 65534 65533 INT14 Przepełnienie licznika L2 Przerwania INT14 Przepełnienie licznika L2 25537 25538 25539 + 00002 00001 00000 Sygnał f x Sygnał f osc t N Stan licznika L2 rejestrowany 1 N 2 w rejestrze CT0 (CTH0, CTL0) Rys. 2. Wykres czasowy zdarzeń związanych z pomiarem okresu i częstotliwości układem licznikowym L2 (80C552) 1. Zapoznać się ze strukturą minimodułu PB-552 (pamięć ROM, pamięć RAM, układy peryferyjne moduły zegarów/liczników). 2. Zapoznać się ze sposobem obsługi minimodułu PB-552 oraz programem Monitor Diagnostyczny Minimodułu. W tym celu należy: uruchomić minikomputer w trybie MS-DOS (opcja startowa menu: C 51), w katalogu C:\KEIL\ utworzyć poleceniem md name nowy katalog o unikalnej nazwie name. Z katalogu C:\KEIL\WZORC skopiować do katalogu name pliki: c.bat oraz pom_okr.c

uruchomić program terminal komunikacyjny term90.exe, przeprowadzić konfigurację kanału transmisji szeregowej do łączności z modułem PB-552 (parametry transmisji RS232: COM2, 9600, *, N, 1 ) oraz ustawić ścieżki dostępu do swojego katalogu, MODUL DIAGNOSTYCZNY 80C552 v3 [16kB ROM] >H L - LOAD HEX G - START A - KONW. A/C H - help X=[adr] - RAM EXTERNAL C=[adr] - ROM I - RAM INTERNAL MX[adr]=[hex] - RAM EXTERNAL MI[adr]=[hex] - RAM INTERNAL P - display porty O Port_[n]=[hex] - USTAW port 8 bit S[p].[l] - SET port [p], linia [l] R[p].[l] - RESET port [p], linia [l] F=[pwmp] - dzielnik W[n]=[pwm] - wypelnienie DC=[hex], DW=[hex], DR=HEX, DA:text[CR]- LCD Z - RTC->LED T - RTC->terminal > zweryfikować działanie podstawowych funkcji modułu. 3. Zapoznać się z zawartością źródłową programu pom_okr.c do pomiaru okresu i częstotliwości. Jako źródło sygnału pomiarowego wykorzystać generator i częstościomierz typu MS-9140. 4. Przeprowadzić kompilację, konsolidację i konwersję pliku pom_okr.c poleceniem c.bat 5. Przeprowadzić proces ładowania programu pom_okr.hex do pamięci minimodułu poleceniem L, 6. Uruchomić testowany program poleceniem G 7. Zestawić układ pomiarowy: źródło sygnałów pomiarowych generator funkcyjny MS-9140 (wyjście TTL), minimoduł mikroprocesora PB552, oscyloskop pomiarowy. 8. Przeprowadzić proces testowania programu częstościomierza zmieniając częstotliwość generatora funkcyjnego MS-9140 (wyjście TTL), zaobserwować i porównać wskazania częstotliwościomierzem MS-9140, przeprowadzić analizę uzyskanych wyników. 9. Zaproponować rozwiązania programowe (modyfikacje programu pom_okr.c) zmierzające do rozszerzenia zakresu pomiarowego.

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; }

Ćw. 3. Wirtualizacja zadań pomiarowych, skalowanie kanałów pomiarowych, przetwarzanie wielokanałowe (NI SCXI-1600) Problemy teoretyczne: Podstawy architektury systemów kondycjonowania i zbierania danych pomiarowych opartych o magistrale SCXI Teoria próbkowania i kwantowania sygnałów analogowych Zasada działania przetwornika A/C z równoważeniem wagowym (sukcesywna aproksymacja). Zapoznać się z budową oraz podstawowymi parametrami technicznymi modułu kontrolno-pomiarowej NI- SCXI 1600 ze szczególnym zwróceniem uwagi na: Interfejs pomiarowy, schemat blokowy modułu kontrolno-pomiarowego, wejście sygnałów analogowych, konfiguracja trybów pracy układów wejściowych, polaryzacja sygnałów wejściowych, zakres zmian sygnałów wejściowych, multipleksowanie sygnałów analogowych, metody wyzwalania przetwornika,... listwa zaciskowa sygnałów we/wy karty. Rozpoznać sposób podłączenia sygnałów do listwy zaciskowej, schemat podłączeń zamieścić w sprawozdaniu. 2. Zapoznanie się z program konfiguracji środowiska pomiarowego: Measurement & Automation Explorer w skrócie MAX 5.4 Nasz system My system Konfiguracja modułu w środowisku systemu operacyjnego Windows 7 (32bit) Skale pomiarowe Scales zdefiniować liniową skalę pomiarową parametrach przetwarzania: wzmocnienie sygnału wejściowego G=2, przesunięciem skali o stałą wartość DC = -1V, dobrać parametry przetwarzania dla skali liniowej: y=mx+b m= b= Wprowadź nazwę skali przetwarzania i jej krótki opis. Definicja kanałów pomiarowych - Data Neighborhood Opis wirtualnego kanału pomiarowego o Wprowadź nazwę kanału pomiarowego i jego krótki opis, o Wybierz typ czujnika pomiarowego : dla kanału napięciowego (kanał fizyczny ch=7, symetryczny), dla kanału do pomiaru temperatury (ch=4, termopara typu K, symetryczny), o o Zdefiniuj jednostki i zakres pomiarowy (możliwość wyboru notacji naukowej lub stałopozycyjnej) Zdefiniuj metodę skalowania wyników pomiarowych (bez skalowania, mapa zakresów, nowa skala pomiarowa -> nazwa skali, krótki opis, rodzaj skali (liniowa, wielomianowa, tablicowa) wykorzystaj wcześniej zdefiniowaną skalę. Urządzenia i interfejsy - Devices and Interfaces Moduł pomiarowy: DAQPad-6015 (Dev 1) opis wyprowadzeń. Przyrządy wirtualne - IVI Instruments, (pomijamy) Oprogramowanie Software (pomijamy) Remote Systems Zdalne systemy (pomijamy) 3. Procedury testu urządzenia na poziomie programu MAX 5.4. Funkcje: TEST Panel Wybrać zakładkę Analog output (Rysunek 4) i dokonać ustawień: o tryb wyjścia: generator sinusoidy, o selekcja kanału: 0 o amplituda sinusoidy: 5V, o szybkość uaktualniania kanału: 1000prb/sek o uruchomić proces generacji sinusoidy: Start sine generator o zweryfikować status działania generatora: last error Wybrać zakładkę Analog input i dokonać ustawień: o wybrać numer testowanego kanału pomiarowego (zrealizować testy dla sygnału zewnętrznego kanały fizyczne 4 i 7, o przetestować dozwolone tryby pracy przetwornika i opisać zaobserwowane stany pracy przetwornika. 4. Dokonań prostej rejestracji sygnałów analogowych w aplikacji LabVIEW 2012. Uruchomić program LabVIEW 2012 wybrać opcję: Find examples, następnie w trybie browse wybrać przykład: (podaje prowadzący) zapoznać się z konstrukcja budowy oprogramowania w LabWIEW: widok panelu i widok diagramu zmieniamy klawiszem CTRL-E,

w widoku panelu wybrać urządzenie (zgodnie z zadeklarowanym wcześniej systemie MAX), wybrać numer/nazwę kanału pomiarowego (zgodnie z deklaracją w programie MAX), liczbę próbek do akwizycji - number of scans to acquire (100-1000), szybkość próbkowania scan rate (dobrać tak aby zabezpieczyć w naszych założeniach około 100 próbek na okres zmienności sygnału wejściowego), uruchomić aplikację: klawisz, zaobserwować przebieg zmienności zarejestrowanego sygnału, porównać z przebiegami obserwowanymi na ekranie oscyloskopu, poprzez schowek przenieść wartości numeryczne kilkunastu próbek badanego sygnału do pliku notatnika, zapoznać się z diagramem programu, schemat i opis diagramu zamieścić w sprawozdaniu, 5. Dokonać rejestracji sygnałów w systemie SignalExpress, dane w formacie TDMS, opisać format zarejestrowanych danych, dokonać odtworzenia zarejestrowanych danych w systemie SignalExpres i w programie Excel2003 lub OpenOffice Calc. 6. Wnioski. Materiały pomocnicze: 1. P.Lesiak, D.Świsulski: Komputerowa Technika Pomiarowa, Agenda Wydawnicza PAK, Marzec 2002 2. D.Świsulski: Laboratorium z Systemów Pomiarowych, Politechnika Gdańska, 1998. 3. DAQ AT E Series User Manuals 4. LabVIEW User Manuals 5. LabVIEW Measurements Manual

/************************************************************* * 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.14ms. 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; /* 8 bits, no parity, 1 STOP bit */ TH1=TL1=0xFD; /* 19200 Baud @11.0592MHz */ PCON=0x80; TMOD=0x20; TR1=1; TM2CON=0x0D; /* źródło sygn. zegarowego T2: osc/96 */ RTE=0x80; /* 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, conversion++); /* Wyprowadzenie rezulatu do modułu UART */ if (conversion==10000) conversion=0; } }

Ćw. 4. Graficzne środowiska programowania, LabVIEW SCXI (NI SCXI-1600) Zapoznać się z podstawową dokumentacją systemów NI SCXI-1600 Podstawowy zakres dotyczy dokumentacji produktów NI: NI-DAQ for Windows NI-DAQmx for Linux NI-DAQmx Base LabVIEW LabWindows/CVI Measurement Studio ANSI C without NI Application Software.NET Languages without NI Application Software Device Documentation and Specifications Przegląd Systemów ADP (DAQ) Typowy system akwizycji danych pomiarowych: 1. Czujniki i przetworniki 2. Blok akcesoriów przyłączeniowych sygnałów pomiarowych 3. Moduły SCXI 4. Obudowa SCXI 5. Okablowanie 6. Urządzenia ADP 7. Komputer (mikrokomputer)..

Urządzenia ADP (DAQ Hardware) Urządzenia ADP dokonują digitalizacji sygnałów analogowych (kwantowanie i próbkowanie), konwersji C/A do generacji wyjściowych sygnałów analogowych, pomiarów, obsługi cyfrowych sygnałów WE/WY sterowania. DAQ-STC Urządzenia NI wykorzystują kontroler sterowania czasem (STC system timing controller ) do zadań sterowania funkcjami pomiarowymi. AQ-STC zawiera następujące grupy sterujące: AI dwa 24-bit, dwa 16-bit liczniki AO trzy 24-bit, jeden 16-bit licznik Zadania ogólnego przeznaczenia zegar/licznik dwa 24-bit liczniki Niezależna konfiguracja każdej grupy liczników z rozdzielczością czasu 50ns lub 10 s. DAQ-STC wykorzystuje linie PFI do wprowadzania zewnętrznych sygnałów uzależnień czasowych i wyzwalania lub generuje sygnały zegarowe i wyzwalające dla urządzeń zewnętrznych. Układy kalibracji Kalibracja jest procesem adjustacji przyrządów i urządzeń w celu zmniejszenia błędów pomiarowych. Bez procesu kalibracji rezultaty pomiarów podlegają dryftowi w funkcji czasu i temperatury. Internal or Self-Calibration External Calibration Kondycjonowanie sygnałów Wiele czujników i przetworniki wymaga kondycjonowania sygnału zanim system kontrolno-pomiarowy skutecznie i dokładnie dokona pomiaru sygnału. Sygnał dostarczany na zaciski wejściowe kondycjonera może podlegać przetwarzaniu: wzmocnienie sygnału, tłumienie sygnału, filtracja sygnału (ograniczanie pasma, izolacja elektryczna, jednoczesne próbkowanie, multipleksowanie sygnału. Ponadto wiele przetworników wymaga wzbudzenia poprzez doprowadzenie do nich prądów lub napięć, podłączenia w układzie mostków, procesu linearyzacji charakterystyki statycznej. W związku z tym systemy pomiarowe, najczęściej oparte na komputerach, zawierają pewną formę kondycjonowania sygnału bezpośrednio w urządzeniach DAQ w formie dodatków typu plug-in. Analog Devices jest liderem w produkcji i opracowywaniu podsystemów wstępnego przetwarzania sygnałów: podsystemy serii : o 1B o 3B o 5B * o 6B o 7B

Ćw. 5. Graficzne środowiska programowania, magistrala PXI (NI PXI- 1031) Instrukcja tymczasowa

Ćw. 6 Programowanie przyrządów systemowych w SCPI) na przykładzie obsługi sytemowych przyrządów fmy Agilent: Multimetr 34410A, Generator 33220A, Oscyloskop 5420 Cel ćwiczenia: Zapoznanie się z zasadami obsługi systemowych przyrządów kontrolno-pomiarowych, ich interfejsami (RS232C, USB, GPIB, TCP/IP) i językami programowania przyrządów systemowych (SCPI) Program ćwiczenia: 1. Zapoznać się z parametrami technicznymi multimetru Agilent 34410A: a. parametry metrologiczne (ogólne dane techniczne, związane z przetwarzaniem napięć stałych DC, napięć zmiennych AC, rezystancji, pojemności, częstotliwości), b. schematy blokowe i zasada współpracy przyrządów systemowych pracujących z wykorzystaniem interfejsów komunikacyjnych, c. protokołami komunikacyjnymi przyrządów (SCPI) 2. Zapoznać się z parametrami technicznymi generatora Agilent 33220A: a. parametry metrologiczne, funkcje przyrządu, b. schematy blokowe i zasada współpracy przyrządów systemowych pracujących z wykorzystaniem interfejsów komunikacyjnych, c. protokołami komunikacyjnymi przyrządów (SCPI) 3. Zapoznać się z obsługą przyrządów w trybie sterowania lokalnego. 4. Uruchomić interaktywną zdalną obsługę przyrządów przy wykorzystaniu protokołu SCPI w standardzie Telnet wykorzystując port komunikacyjny 5024 a. wykonać i zarejestrować odpowiedź przyrządów na podstawowe polecenia SCPI 5. Zweryfikować zdalną obsługę przyrządów pomiarowych w środowisku Agilent Suite 6. Zweryfikować zdalną obsługę przyrządów pomiarowych przy wykorzystaniu interfejsu sieciowego WEB Interface. 7. Zrealizować serię pomiarów multimetrem Agilent 34410A sygnałów generowanych generatorem Agilent 33220A, przeprowadzić rejestrację danych do pliku. Literatura: 1. User s Guide Agilent 34410A/11A 6 ½ Digit Multimeter 2. Agilent 34410A/11A Command Quick Reference 3. User s Guide Agilent 33220A 4. P.Lesiak, D.Świsulski: Komputerowa Technika Pomiarowa, Agenda Wydawnicza PAK, Marzec 2002 5. D.Świsulski: Laboratorium z Systemów Pomiarowych, Politechnika Gdańska, 1998. 6. DAQ AT E Series User Manuals 7. LabVIEW User Manuals 8. LabVIEW Measurements Manual

Interfejs Komunikacyjny IEE488 IEC-625 IEE-488 GPIB HP-IB IEE-488.1 IEE-488.2 Funkcje interfejsu SH AH T L SR DC DT RL PP C - Inicjator współpracy (ang. Source Handshake) - Akceptor współpracy (ang. Acceptor Handshake) - Nadawca (ang. Talker) - Odbiorca (ang. Listner) - Żądanie obsługi (ang. Service Request) - Zerowanie urządzenia (ang. Device Clear) - Wyzwalanie urządzenia (ang. Device Trigger) - Zdalny/Lokalny (ang. Remote/Local) - Kontrola równoległa (ang. Parallel Poll) - Kontroler (ang. Controller)

NDAC NRFD DAV DIO 1-8 Diagram czasowy sygnałów przy wymianie informacji za pomocą magistrali IEC-625 (konwencja logiczna ujemna) bajt informacyjny N bajt informacyjny N+1 3 11 21 t 1 4 6 ważny 10 nieważny 12 16 ważny 20 23 t 2 2 5 niektóre gotowe wszystkie gotowe 7 8 niektóre potwierdziły żaden nie jest gotowy wszystkie potwierdziły 9 13 14 niektóre gotowe żaden nie potwierdził 15 wszystkie gotowe 17 wszystkie potwierdziły 18 19 22 23 23 t t KLASYFIKACJA KOMUNIKATÓW STANDARDU IEC-625 Przesyłane po magistrali IEC-625 Komunikaty IEC-625 Przesyłane od funkcji interfejsu do funkcji urządzenia i na odwrót Zdalne Lokalne Wieloliniowe (grupowe) Jednoliniowe (pojedyncze) Do funkcji interfejsu Z funkcji interfejsu Instrukcje sterujące Dane

STANDARD SCPI (STANDARD COMMANDS FOR PROGRAMMABLE INSTRUMENTS) W strukturze systemów kontrolno-pomiarowych "komunikacja" pomiędzy urządzeniami realizowana jest za pośrednictwem komunikatów SCPI. Historia: Hewlett-Packard metajęzyk TMSL (Test & Measurement Systems Language) SCPI jest normą która określa środowisko programowe oraz język do sterowania urządzeniami pomiarowokontrolnymi i interpretacji danych. Standard umożliwia ujednolicenie sterowania urządzeniami pochodzącymi od różnych wytwórców. Stanowi warstwę programową normy IEEE-4888.2 interfejsu systemowego. urządzenie SCPI m Interfejsy komunikacyjne RS-232 RS-485 (422) IEE-488 Ethernet Język SCPI Model urządzenia SCPI (podstawowe bloki funkcjonalne) Budowa rozkazów i reguły syntaktyczne języka SCPI ATE Automatic Test Equipment Komunikat aplikacji ":MEAS:VOLT:DC?" IEEE488, RS-232, RS485, Ethernet, itp Rozkaz SCPI Driver komunikacyjny Port komunikacyjny Magistrala komunikacyjna Interfejs komunikacyjny Bufor WE/WY Dekoder rozkazów Aplikacja (Program) Kontroler Odpowiedź "1.573E-3" Procesor SCPI (parser) Urządzenie Sterowanie urządzenia Odpowiedź urządzenia Rys. Ogólny i prosty schemat komunikacji w systemie ATE zgodny ze standardem SCPI Model urządzenia SCPI DISPlay ROUTe Pomiar sygnałów INPut SENSe CALCulate FORMat Magistrale sygnałowe CALibration DIAGnostic TRIGer MEMory SYSTem Magistrale danych ROUTe OUTput SOURce CALCulate FORMat Generacja sygnałów Rys. Model urządzenia SCPI. Podstawowe podsystemy funkcjonalne urządzeń pomiarowych: ROUTe steruje podłączeniem syganłu wejściowego lub wyjściowego,

INPut określa własności portów wejściowych przetwornika, spełnia funkcje kondycjonowania sygnału przed jego przetworzeniem w bloku SENSe (tłumienie, wzmacnianie, filtracja itp.), dopasowuje rodzaj sprzężenia sygnału (DC, AC), konfiguruje pomiarowe obwody wejściowe (impedancja wejściowa, symetryczne, niesymetryczne pływające wejście itp.), SENse blok przetwarzania sygnału na dane w reprezentacji wewnętrznej przyrządu, wybór funkcji pomiarowej, metody pomiaru, własności przetwornika (zakres, rozdzielczość), sposobu akwizycji danych, (SENSe zawiera 22 podsystemów), CALCulate podsystem wykonywania operacji obliczeniowych zebranych w podsystemie SENSe lub wykonywanie operacji obliczeniowych przed wygenerowaniem sygnału przez podsystem SOURce (obliczenia: zmiana jednostek, skali pomiarowej, transformata FOURIERA, obliczenia statystyczne, różniczkowanie, całkowanie, przetwarzanie wektorów i danych zespolonych, transformacje w domenie czasu i częstotliwości itp.), TRIGer realizuje proces wyzwolenia pomiaru sygnału wejściowego lub generacji sygnału wyjściowgo (synchr. działania przyrządu z funkcjami wewnętrznymi przyrządu i/lub sygnałami zewnętrznymi pochodzącymi z innych przyrządów), DISPlay prezentacja informacji pomiarowych graficznie i tekstowo, statusu przyrządu, statusu interfejsów itp., sterowanie terminalem (intensywność, jasność, FORMat konwersja danych, dostosowanie do innych przyrządów SOURce podsystem przetwarzania C/A oraz generacji sygnałów analogowych na podstawie dostarczonych danych. OUTPut podsystem poleceń sterujących kondycjonowaniem sygnału dostarczonego do portu wyjściowego urządzenia (tłumienie, wzmocnienie, filtracja sygnału, sposób sprzężenia (AC, DC), offset, dołączania lub odłączania sygnału. MEMory zapamiętywanie danych, OUTput określa własności portów wyjściowych (tłumienie, imedancja, filtracja, sposób sprzężenia, offset, sposób zabezpieczenia wyjścia itp.), STATus - obsługa systemu raportowania statusu urządzeń SCPI. SYSTem - podsystem globalnych konfiguracji takich jak czas, data, ochrona pewnych zasobów urządzenia. Pozwala też uzyskiwać informacje o błędach działania urządzenia gromadzonych w kolejce błędów (zapytanie SYST:ERR?). Drzewa poleceń SCPI SCPI grupuje polecenia w 28 podstawowych podsystemach. Polecenia danej grupy sterują zasobami funkcjonalnymi odpowiadającego podsystemu funkcjonalnego urządzenia. SENSe TRIGer SOURce VOLTage CURRent Język SCPI tworzy strukturę hierarchiczną, w której podobne funkcje programujące są zgrupowane pod określonym węzłem. Uogólniony model urządzenia wyszczególnia bloki funkcjonalne odpowiedzialne za specyficzne funkcje urządzenia, np. SENSe - funkcje pomiarowe, SOURCE - funkcje generacji sygnału, TRIGGER - funkcje wyzwolenia działania, CALIBRATION - funkcje kalibracji urządzenia itd. Z każdym blokiem jest związane osobne drzewo poleceń programujących. Korzenie tych drzew noszą nazwy odpowiadających im podsystemom urządzenia ( SENSe, SOURce, TRIGger, CALibration itd.) i pod każdym z nich są zgrupowane polecenia programujące danego podsystemu. :SENSe:VOLTage:RANGe:AUTO ( automatyczne dobieranie podzakresu przetwornika pomiaru napięcia )

SCPI zakłada zgodność urządzeń ze specyfikacją IEEE 488.2. Polecenia wspólne IEEE 488.2 są zatem dodatkowym podzbiorem poleceń urządzeniowych SCPI z tym, że tylko 13 z nich urządzenia zgodne z SCPI muszą obowiązkowo stosować. Są to: *CLS - Zerowanie systemu statusowego. *ESE <NRf> - Ustawienie maski standardowego rejestru zdarzeń. *ESE? - Zapytanie o maskę standardowego rejestru zdarzeń. *ESR? - Zapytanie o zawartość standardowego rejestru zdarzeń. *IDN? - Zapytanie o dane identyfikacyjne. *OPC - Zgłoszenie wykonania operacji bitem OPC. *OPC? - Zgłoszenie wykonania operacji odpowiedzią '1'. *RST - Zerowanie urządzenia. *SRE <NRf> - Ustawienie maski rejestru statusowego. *SRE? - Zapytanie o maskę rejestru statusowego. *STB? - Zapytanie o zawartość rejestru statusowego. *TST? - Wykonaj testowanie i podaj wynik testowania. *WAI - Czekaj na zakończenie operacji nakładkowych.

Ćw. 7. Język assembler w programowaniu procesorów sygnałowych (na przykładzie projektowania i badania filtru cyfrowego URUCHAMIANIE PROGRAMÓW DSP PROCES URUCHAMIANIA PRZETWARZANIA SYGNAŁU NA UKŁADZIE ADSP-2181 Z PANELU EZ-KIT LITE SKŁADA SIĘ Z TRZECH ETAPÓW: 1. TWORZENIE TEKSTU ŹRÓDŁOWEGO ZAWIERAJĄCEGO WYKONANIE KODU MASZYNOWEGO ALGORYTMU. DOMYŚLNYM ROZSZERZENIEM NAZWY PLIKU JEST.DSP. DOS-OWE EDYTORY TEKSTU JAK EDIT LUB EMACS MOGĄ BYĆ WYKORZYSTANE DO EDYCJI PLIKU ŹRÓDŁOWEGO. MOGĄ BYĆ WYWOŁANE POPRZEZ KOMENDĘ SYSTEMU DOS: EDIT NAZWA_PLIKU.DSP EMACS NAZWA_PLIKU.DSP 2. KOMPILACJĘ I LINKOWANIE PLIKU ŹRÓDŁOWEGO PRZY UŻYCIU ASEMBLERA I LINKERA ASM21.EXE I LD21.EXE. TE OPERACJE ZOSTAŁY ZAUTOMATYZOWANE DO PLIKU WSADOWEGO DOS-A W PLIKU EZK.BAT, KTÓRY MOŻE BYĆ WYWOŁANY PONIŻSZĄ KOMENDĄ : EZK NAZWA_PLIKU GDZIE PLIKIEM ŹRÓDŁOWYM JEST NAZWA_PLIKU.DSP. WYNIKIEM TYCH OPERACJI JEST WYKONYWALNY PLIK NAZWA_PLIKU.EXE. (TEN PLIK JEST WYKONYWALNY DLA UKŁADU 2181, NIE DLA SYSTEMU DOS). 3. ZAŁADOWANIE WYKONYWALNEGO PLIKU DO UKŁADU POPRZEZ POŁĄCZENIE SZEREGOWE UŻYWAJĄC PROGRAMU DWIGHT-ELVEY'S PUBLIC-DOMAIN LOADER EZLD.COM, KTÓRY ZNAJDUJE SIĘ W [4]. TA OPERACJA ZOSTAŁA TAKŻE ZAUTOMATYZOWANA DO PLIKU WSADOWEGO EZL.BAT I JEST WYWOŁYWANA Z POZIOMU SYSTEMU DOS JAK PONIŻEJ : EZL.BAT TO SPOWODUJE ZAŁADOWANIE DO PROCESORA NAZWA_PILKU.EXE I NIEZWŁOCZNE WYKONANIE. MOŻNA TAKŻE ZAŁADOWAĆ PROGRAM I WEJŚĆ DO PROGRAMU MENU POPRZEZ KOMENDĘ: EZL NAZWA_PLIKU T POWYŻSZE NARZĘDZIA SĄ DOSTĘPNE Z KAŻDEGO PODKATALOGU. DOS - OWSKI WPIS DSP JEST SYNONIMEM KATALOGU C:\ADI_DSP\EXAMPLES W KTÓRYM ZNAJDUJĄ SIĘ PODKATALOGI Z RÓŻNYMI PRZYKŁADAMI. JEST TU DOSTĘPNYCH RÓWNIEŻ KILKA INNYCH PRZYDATNYCH

NARZĘDZI. PLIK WSADOWY EZS.BAT SPOWODUJE SKOMPILOWANIE I ZLINKOWANIE KODU PLIKU ŹRÓDŁOWEGO A NASTĘPNIE URUCHOMIENIE SYMULATORA SIM2181.EXE : EZS NAZWA_PLIKU GDZIE PEŁNA NAZWA NAZWA_PLIKU.DSP JEST DOMYŚLNA. NIEKTÓRE PRZYKŁADOWE PROGRAMY SYMULATORA SĄ W PODKATALOGU SIM. PRZYKŁĄDY TE ZAWIERAJĄ KWANTOWANIE I PRÓBKOWANIE, TRZYKROTNE OPÓŹNIENIE, WYKONANE FILTRY FIR I IIR PRZY UŻYCIU BUFORÓW CYKLICZNYCH. W SYMULATORZE MOŻNA PRZEŚLEDZIĆ KAŻDĄ INSTRUKCJĘ W PROGRAMIE I OBSERWOWAĆ ZAWARTOŚĆ REJESTRU BUFORA LINII OPÓŹNIAJĄCEJ W TRAKCIE ZMIAN Z JEDNEJ PRÓBKI WEJŚCIOWEJ NA NASTĘPNĄ. JEST RÓWNIEŻ PLIK MKEZK.BAT, UŻYWANY POPRZEZ : MKEZK NAZWA_PLIKU GENERUJE ON PLIK NAZWA_PLIKU.DSP POPRZEZ SKOPIOWANIE Z TYMCZASOWEGO PLIKU TEMPATLE.DSP Z PODKATALOGU MACROS. PLIK TYMCZASOWY ZAWIERA WSZELKIE NIEZBĘDNE DANE INICJACYJNE PROCESORA DSP I UKŁADÓW KODERÓW. UCZEŃ MOŻE WPROWADZIĆ WYBRANĄ PRZEZ SIEBIE CZĘSTOTLIWOŚĆ PRÓBKOWANIA FS I WSTAWIĆ ALGORYTM PRZETWARZANIA SYGNAŁU W DOWOLNE MIEJSCE W PLIKU. KILKA CZĘSTOTLIWOŚCI PRÓBKOWANIA MOŻE ZOSTAĆ WYBRANE, NP. FS = 8,16,32,44.1,48 KHZ I WIĘCEJ. KONWERSJA FORMATU DZIESIĘTNEGO NA SZESNASTKOWY DWA PROGRAMY DOS-OWE DEC2HEX.EXE I HEX2DEC.EXE POZWALAJĄ NA KONWERSJĘ Z DZIESIĘTNEGO FORMATU DO FORMATU SZESNASTKOWEGO 1.15 (LUB GENERALNIE A.B) I ODWROTNIE. ICH KOD ŹRÓDŁOWY C UŻYWA ROZKAZÓW ADC.C I DAC.C Z [1] I JEST DOŁĄCZONA W DODATKU. OBA PROGRAMY MOGĄ OTRZYMYWAĆ DANE WEJŚCIOWE Z STDIN LUB Z PLIKU WEJŚCIOWEGO ZAWIERAJĄCEGO LICZBY DO KONWERSJI (ODDZIELONE SPACJAMI, TABULACJAMI LUB W KOLEJNYCH LINIACH). ZWRACAJĄ ONE POSTAĆ WYJŚCIOWĄ DO STDOUT LUB DO PLIKU WYJŚCIOWEGO. PRZYKŁAD TYPOWEGO UŻYCIA: DEC2HEX 1.15 < DATA.DEC > DATA.HEX DEC2HEX 2.14 < DATA.DEC > DATA.HEX DEC2HEX 1.15 gdzie data.dec jest plikiem zawierającym dziesiętne liczby, które mają zostać przekonwertowane do postaci 1.15 (lub postaci 2.14 w innym przypadku) a plik data.hex zawiera odpowiadające im liczby w systemie szesnastkowym. W trzecim przypadku, użytkownik musi wprowadzić każdą liczbę dziesiętną (lub grupę liczb oddzielonych spacjami) w linii poleceń poprzedzone przez <RET> i wejść <CTRL-Z> lub <CTRL-C> po przetworzeniu ostatniej liczby. Podobnie używa się hex2dec, następująco: HEX2DEC 1.15 DATA.DEC

NA PRZYKŁAD, PONIŻSZA KOLUMNA LICZB DZIESIĘTNYCH WPROWADZONA DO DEC2HEX 1.15 STWORZY DRUGĄ KOLUMNĘ LICZB SZESNASTKOWYCH. Z KOLEI LICZBY SZESNASTKOWE WPROWADZONE DO HEX2DEC 1.15 STWORZĄ TRZECIĄ KOLUMNĘ LICZB DZIESIĘTNYCH, KTÓRE SĄ PIERWOTNYMI WARTOŚCIAMI, ZAOKRĄGLONYMI Z DOKŁADNOŚCIĄ DO 16-BITÓW: 1.00000 0x7fff 0.999969482421875 (największa liczba dodatnia) 0.50000 0x4000 0.500000000000000 0.40000 0x3333 0.399993896484375 0.00003 0x0001 0.000030517578125 (najmniejsza liczba dodatnia) -0.00003 0xffff -0.000030517578125 (najmniejsza liczba ujemna) -0.40000 0xcccd -0.399993896484375-0.50000 0xc000-0.500000000000000-1.00000 0x8000-1.000000000000000 (największa liczba ujemna) Całkowity zakres reprezentowanych liczb zależy od formatu. Na przykład, powyższa kolumna liczb szesnastkowych wprowadzona do hex2dec 2.14 stworzy trzecią kolumnę przeskalowaną przez wykładnik liczby 2. Aby ustalić, którego formatu a.b użyć, pamiętaj że wszystkie konwertowane liczby muszą zawierać się w zakresie: - 2 A-1 <= X <= 2 A-1-2 -B W TEN SPOSÓB, DLA PRZYKŁADU, ZAKRES DLA POSTACI 1.15 2.14 I 3.13 MAJĄ WARTOŚĆ : - 1 <= X <= 1-2 -15-2 <= X <= 2-2 -14-4 <= X <= 4-2 -13 Ogólnie użycie całkowitej liczby bitów B, to znaczy a+b=b, postać a.b jest prostym przekształceniem postaci binarnej standardu 0.B z uzupełnieniem do dwóch (b 1,b 2,...,b B ): x = (-b 1 2-1 + b 2 2-2 + b 3 2-3 +... + b B 2 -B ) x = (-b 1 2-1 + b 2 2-2 + b 3 2-3 +... + b B 2 -B )2 a (postać 0.B) (postać a.b) gdzie a=0,1,...,b. Ewentualnie możemy mówić o postaci a.b jako przekształconej postaci liczby całkowitej B.0 z uzupełnieniem do dwóch. Pisząc a=b-b w obydwu powyższych wyrażeniach mamy: x = (-b 1 2 B-1 + b 2 2 B-2 + b 3 2 B-3 +... + b B ) x = (-b 1 2 B-1 + b 2 2 B-2 + b 3 2 B-3 +... + b B )2 -B (postać B.0) (postać b.a) gdzie b=0,1,...,b. Rysunek pokazuje współczynniki wagowe bitów oraz umieszczenie przecinka dla czterech postaci zapisu 0.16, 1.15, 2.14 oraz 3.13

Rysunek 2.1 Wagi bitów dla formatów 0.16, 1.15, 2.14, i 3.13 Programy dec2hex i hex2dec mogą być zastosowane z każdą wartością B, która jest wielokrotnością liczby 4. Na przykład, mogą konwertować do/z postaci 1.7, 1.23 lub 1.31 (które są 8-,24- i 32-bitowymi postaciami) i ich odmianami, jak postać 2.6, 3.21 lub 2.30. Programy generatora przebiegów DOS-owe programy sinetbl.exe, squartbl.exe, trapztbl.exe są generatorami przebiegów, generują jeden okres przebiegu sinusoidalnego, fali prostokątnej i przebiegu trapezowego. Ich kody źródłowe w języku C zostały załączone w dodatku. Już wpisanie nazwy któregokolwiek z tych programów w linii poleceń systemu DOS, potwierdzone przez <RET> spowoduje wyświetlenie sposobu ich użycia (help a). Programy te mogą być używane łącznie z makrem wavegen.dsp do generowania przebiegów o innych częstotliwościach. Niektóre przykłady używania programów są przedstawione poniżej: sinetbl 0 1 2000 > sin.dec sinetbl 1 1 2000 > cos.dec squartbl 1-1 1000 2000 1 > square1.dec squartbl 1-1 1000 2000 0 > square2.dec Pierwszy zapis generuje jeden okres o długości 2000 próbek przebiegu sinusoidalnego, natomiast drugi, okres przebiegu kosinusoidalnego, to znaczy: x 1 ( 2 n 2 n) sin( ), 2 ) cos( ), D ( n x n D n = 0,1,,D-1 z D=2000.Trzeci i czwarty przykład generują jeden okres przebiegu fali prostokątnej: x3(n) 1,1,...,1, 1, 1,..., 1 1000"1" 1000" 1" x4 (n) 0,1,1,...,1,0, 1, 1,..., 1 999"1" 999" 1" Fala prostokątna x 3 (n) przeskakuje (przerywanie) z poziomu 1 do -1, natomiast x 4 (n) przechodzi przez wartość 0 w momentach braku ciągłości.

Struktura podkatalogów Domyślnym katalogiem instalacyjnym oprogramowania EZ-KIT Lite jest c:\adi_dsp. Różne pliki wsadowe, narzędzia DOS-owe i makrodefinicje DSP dla tego laboratorium znajdują się w katalogu macros. Przykłady znajdują się w podkatalogu examples. Szczegółowa zawartość tych katalogów jest przedstawiona poniżej: c:\adi_dsp\macros: ezk.bat ezl.bat ezs.bat mkezk.bat dec2hex.exe hex2dec.exe sinetbl.exe squartbl.exe trapztbl.exe uran.exe dec2hex.c hex2dec.c sinetbl.c squartbl.c trapztbl.c uran.c begin.dsp ccan.dsp cdelay.dsp cdir.dsp cfir.dsp dot.dsp dspmac.dsp end.dsp tap.dsp tapin.dsp wavgen.dsp zero.dsp template.dsp c:\adi_dsp\examples: allpass comb delay fir flanger guitar lowpass multidel multitap notch plain quantize revdel reverb sim stereo wavtable 3. OPIS PAKIETU INSTRUKCJI Procesor ADSP 2181 ma olbżymi zestaw instrukcji, który jest przedstawiony w rozdziale Quick Programmer's Reference w EZ-KIT Lite Refence Manual [2]. Jednakże, aby zacząć pisanie prostych filtrujących algorytmów przetwarzania sygnału, potrzebny jest tylko mały wycinek z całego zestawu instrukcji. Tymczasowe zmienne, takie jak bufory linii opóźniającej mogą zostać zapamiętane w pamięci danych (data memory -DM) lub w pamięci programu (program memory - PM), skąd mogą być przesłane tam i z powrotem do jednostki obliczeniowej procesora, gdzie wykonywane są wszystkie operacje arytmetyczne. 3.1 Jednostki obliczeniowe Występują tu trzy jednostki obliczeniowe: akumulator mnożący (MAC), jednostka arytmetyczno-logiczna (ALU) oraz rejestry przesuwne. MAC, ALU i rejestry będą używane w naszych przykładach jak poniżej: mx0, mx1, my0, my1, mr, mr0, mr1, mr2 ax0, ax1, ay0, ay1, ar sr, sr0, sr1, si, se Długości słowa tych rejestrów są następujące: (ALU) (MAC) (shifter) 16 bits: mx0, mx1, my0, my1, mr0, mr1, ax0, ax1, ay0, ay1, ar, sr0, sr1, si 40 bits: mr (consists of mr2, mr1, mr0) 32 bits: sr (consists of sr1, sr0) 8 bits: mr2, se 40-bitowy rejestr akumulatora mr MAC-a składa się z trzech rejestrów mr0,mr1 i mr2.wynik mnożenia dwóch 16-bitowych liczb jest liczbą 32-bitową umieszczaną w rejestrach mr1,mr0, gdzie mr1 zawiera 16MSB bitów a mr0 zawiera 16LSB bitów. 8-bitowy rejestr mr2 jest używany do bitów nadmiarowych. Podzestaw operacji MAC-a, który będziemy używać przedstawia się następująco: mr = 0; (czyści akumulator MAC) mr = x * y (ss); (mnożenie z 32-bitową dokładnością) mr = x * y (rnd); (mnoży z 16-bitową dokładnością i umieszcza wynik w mr1) mr = mr + x * y (ss); (mnoży/sumuje z 32-bitową dokładnością) mr = mr + x * y (rnd);(mnoży/sumuje oraz zaokrągla do 16 bitów) mr = mr - x * y (ss); mr = mr - x * y (rnd);

if mv sat mr; (nasycenie jeśli pojawią się stany nadmiarowe) gdzie x i y mogą być jednym z następujących rejestrów: x: mx0, mx1, mr0, mr1, mr2, ar, sr0, sr1 y: my0, my1 x zawsze musi być pisany po lewej stronie y. Dopisek (ss) oznacza, że liczby mają być podane w zapisie 1.15 a, operacje wykonywane przez MAC-a są wykonane z podwójną precyzją. Dopisek (rnd) powoduje, że 32-bitowy wynik o podwójnej precyzji jest zaokrąglany do 16 najbardziej znaczących bitów a wynik pozostaje w mr1.ostatnia instrukcja if mv sat mr ustawia mr, jego największą wartością (dodatnią lub ujemna) każdorazowo, gdy pojawia się flaga przepełnienia. Podzestaw operacji ALU, którego będziemy używać to: ar = x + y; ar = x - y; ar = y - x; gdzie dopuszczalne rejestry dla x i y to: x: ar, ax0, ax1, mr0, mr1, mr2, sr0, sr1 y: ay0, ay1 Instrukcje przesuwania, których będziemy używać są przesunięciami arytmetycznymi: sr = ashift x by exp (hi); (mnoży x przez wykładnik 2 i wstawia wynik MSB do sr1) sr = ashift x (hi); (pobiera exp z rejestru se) gdzie x i exp są: x: si, sr0, sr1, ar, mr0, mr1, mr2 exp: każda liczba całkowita, taka jak ( 1, 2,... ) Efektem tej instrukcji jest zwiększenie x przez czynnik 2 exp i umieszczenie wyniku w sr, z sr1 zawierającym 16MSB bitów. W drugiej instrukcji ashift wartość wykładnika exp jest wstępnie ładowana do 8-bitowego rejestru wykładniczego se i stamtąd jest czytany. 3.2 Transfer danych Każdy z powyższych 16-bitowych rejestrów obliczeniowych może być załadowany wartością liczbową (w postaci 1.15), lub wysłany tam i z powrotem do innego takiego rejestru lub do pamięci danych DM albo do pamięci programu PM. Na przykład, przypuśćmy że mamy zadeklarowane kilka stałych i kilka zmiennych w pamięci danych DM:.const a = 0x6000; { a = 0.75 w postaci dziesiętnej }.const D = 3;.var/dm w[d+1]; {4-wymiarowy bufor liniowy w[i], i=0,1,2,3}.var/dm x,y; {tymczasowe zmienne} Teraz, następujący przykład transferu danych jest wykonywany każdy w jednym cyklu: mr1 = 0; {ładuje zero do mr1} my1 = a; {ładuje stałą a do my1} ax1 = 0x4000; {ładuje wartość 0x4000 = 0.50 dziesiętni do ax1} ar = sr1; {ładuje zawartość sr1 do ar} mx1 = ay0; {ładuje zawartość ay0 do mx1} mr1 = dm(x); {ładuje zawartość pozycji DM do mr1} dm(y) = my1; {ładuje zawartość my1 do pozycji DM} mr1 = dm(w); {ładuje zawartość bufora pozycji w[0] do mr1} mr1 = dm(w+1); {ładuje zawartość bufora pozycji w[1] do mr1} dm(w+2) = mr1; {ładuje zawartość mr1 do bufora pozycji w[2] } Jako przykład przetwarzania, rozpatrzymy wykonanie filtru pierwszego rzędu:

n 1 b x( ) y( n) a y n gdzie a = 0,75, b = 0,25 Wprowadzając stan wewnętrzny w 1 (n)=y(n-1) i mając na uwadze to, że następnym stanem jest w 1 (n+1)=y(n), możemy narysować schemat blokowy i napisać prosty algorytm przetwarzania, jak poniżej: dla każdej próbki wejściowej x : y = aw 1 + bx w 1 = y Aby wprowadzić w życie ten przykład na EZ - KIT Lite board, musimy być w stanie czytać próbki wejściowe z układu kodującego i zapisywać próbki wynikowe do układu kodującego. W przykładowym programie talkthru z EZ-KIT Lita Manual [2], jest to zrealizowane przez użycie tzw. techniki autobuforowania portów szeregowych ADSP 2181, która pozwala próbkom z analogowego wejścia dekodera stereo na zapisanie do pamięci DM w predefiniowanych pozycjach bufora odbiorczego, nazywanego rx_buf. Próbki z lewego i z prawego kanału są zapamiętywane w rx_buf+1 i rx_buf+2. Po zapisaniu obu próbek stereo do pamięci DM, przerwanie odbioru jest przesyłane do DSP, który następnie inicjuje i obsługuje rozkaz przerwania, który wykonuje na wejściowych próbkach zadanym algorytmem przetwarzania. Częstotliwość próbkowania f s (wybrana przez postać rejestru dekoderów) określa rytm, w którym te przerwania są wysyłane do DSP, a zatem częstotliwość z jaką przykładowy algorytm przetwarzania, jest powtórnie wykonywany, generując próbki wyjściowe. Przetworzone w lewo/w prawo próbki wyjściowe, są później wpisywane do predefiniowanych pozycji buforów transmisyjnych w pamięci DM, nazywanych tx_buf, skąd przechodzą do portu szeregowego DSP i do dekodera w celu przekonwertowania do postaci analogowej wyjściowej. Cała sekwencja operacji jest pokazana na Rys 3.1. Rysunek 3.1 Przetwarzanie próbki na płycie EZ-KIT Lite Nasz prosty przykład zaczniemy od deklaracji zmiennych i inicjalizacji:.const a = 0x6000; {a = 0.75}.const b = 0x2000; {b = 0.25}.var/dm w1; {stan wewnętrzny filtru} ax0 = 0; dm(w1) = ax0; {inicjuje w1 zerem} Teraz algorytm przetwarzania próbki (tylko dla prawego kanału) będzie wyglądał : my0 = dm(rx_buf + 2); {pobiera prawy sygnał wejściowy z dekodera} mx0 = b; {wczytuje współczynnik filtru b do my0} mr = mx0 * my0 (ss); {mr = b * x} mx0 = a; {czyta współczynnik filtru a} my0 = dm(w1); {pobiera stan wewnętrzny z DM} mr = mr + mx0 * my0 (rnd); {mr = y = a * w1 + b * x = próbka wyjściowa}

dm(w1) = mr1; {aktualizuje stan, w1 = y} dm(tx_buf + 2) = mr1; {wysyła prawy sygnał wyjściowy do dekodera} Zauważ, ze po zakończeniu operacji w MAC tylko zaokrąglona 16-bitowa MSB część mr, zawierająca mr1 jest wysłana do dekodera i zapisana w miejscu wewnętrznej pamięci stanu. 3.3 Rejestry DAG i bufory cykliczne Innym sposobem transmisji danych tam i z powrotem do pamięci PM i DM jest sposób pośredni, poprzez dwa zestawy generatora rejestrów danych adresowych (DAG). Wskaźniki adresu lub rejestry indeksów (index I) i0, i1, i2, i3, są powiązane z DAG1 i mogą wskazywać tylko pamięć DM, natomiast i4, i5, i6, i7 są powiązane z DAG2 i mogą wskazywać obie pamięci DM lub PM. Powiązane z tymi wskaźnikami adresu są odpowiadające im rejestry zmian (modify M.) m0,m1,m2,m3,m4,m5,m6,m7 oraz rejestry długości (lenght L) L0, L1, L2, L3 i L4, L5, L6, L7. Wszystkie rejestry są 14-bitowe. Zauważ, że i0 i i1 są zarezerwowane w EZ-KIT Lite. Lokalizacja pamięci danych wskazywana przez rejestr I, może być udostępniona przez instrukcję dm(i,m), gdzie po dostępie (odczycie lub zapisie) adres jest zwiększany lub zmniejszany automatycznie o ilość określoną wielkością rejestru M. Na przykład instrukcja: mr1=dm(i2,m2) zapisuje do mr1 zawartość lokalizacji pamięci DM wskazywanej przez i2 i zmienia i2 o ilość m2. Jeśli m2=1, to nowy i2 będzie wskazywał następną lokalizacje pamięci, jeśli natomiast m2= - 1, będzie wskazywać poprzednią lokację. Nieco zmodyfikowany schemat stosuje się również do zapisu do pamięci. Na przykład, instrukcja: dm(i2,m2)=mr1 zapisuje zawartość mr1 do lokalizacji pamięci wskazywanej przez i2 i zmienia i2 o wartość m2. Przydatną, powiązaną instrukcją jest instrukcja modify, która zezwala na zmianę i2 o żądaną wartość m2 bez zapisu lub odczytu danych: modify(i2,m2) Rejestry DAG potrafią pamiętać ścieżki lokalizacji pamięci, dla obu tablic liniowego i cyklicznego bufora. Są one, zatem szczególnie dogodne do implementowania cyklicznych buforów linii opóźniającej. Rysunek poniżej pokazuje jak wskaźnik DAG i2 wskazuje do bufora cyklicznego, tak jak zwykły wskaźnik p w pozycji [1]. Wartość m2 określa, o ile przesunąć i2. W miarę jak i2 przesuwa się w górę lub w dół wewnątrz pozycji bufora, zachodzi na siebie, wokoło jeśli przekroczy górną lub dolną granicę. Rysunek 3.2 Wskaźnik DAG cyklicznego bufora linii opóźniającej 3.4 Definiowanie i inicjalizacja opóźnień