OSP. Oprogramowanie Ssystemów Pomiarowych. Materiały do wykładu.

Wielkość: px
Rozpocząć pokaz od strony:

Download "OSP. Oprogramowanie Ssystemów Pomiarowych. Materiały do wykładu. mikrosys@prz.edu.pl www.prz.edu.pl/~mikrosys"

Transkrypt

1 www: OSP Oprogramowanie Ssystemów Pomiarowych wykład 30 godz. laboratorium 15h mgr inż. Kazimierz Brydak bud. A sala 204 (laboratorium A208) (17) Materiały do wykładu

2

3 A 51 ASSEMBLER Operatory, adresowanie i wyrażenia Programy asemblera dla procesorów 8051 składają się ze zbioru instrukcji. Pojedyncza linia programu może zawierać najwyżej jedną instrukcję maszynową. Ogólna postać pojedynczej linii języka assemblera: [Etykieta:] 8051_mnemonik [operand][,operand][,operand] [;komentarz] <CrLf> np: LookUp: CJNE A, #'x', Delta ; Porównaj i skocz jesli nie równe Użycie etykiety jest opcjonalne. Stosowanie etykiet ma na celu: realizację skoków do zaznaczonych symbolicznie instrukcji (również podprogramów), ułatwienie testowania programu przy pomocy debuggera lub symulatora. Liczba i typy operandów instrukcji zależą bezpośrednio od rodzaju wyrażenia typu mnemonik. Operatory instrukcji można sklasyfikać jako: specjalne symbole assemblera (nazwy rejestrów), symbole programu (segment, extern, local, public), adresy pośrednie, stałe, adresy danych wewnętrznych 8051, adresy bitów, adresy programu. Liczby Program w języku assemblera akceptuje liczby zapisywane w 4 systemach liczenia (o podstawie 16, 10, 8 i 2). Liczby bez wyróżnionej podstawy są traktowane jako liczby dziesiętne. Pierwszy znak liczby musi być zawsze cyfrą z zakresu 0 do 9 (liczby hexadecymalne których pierwszy znak nie jest cyfrą muszą zaczynać cyfrą 0). Ponadto w ciągu cyfr (również w ciągach zanków) może występować znak $ i nie jest on interpretowany lecz służy do rozdzielania cyfr (np: 1111$0000$1111$0000B). podstawa liczenia przyrostek dozwolone znaki przykłady hexadecymalne H, h 0-9, A-F (a-f) 1234H 99H 123h 0A5h dziesietne D, d d 20D ósemkowe O, o, Q, q O 7777o 123o 1731Q binarne B, b B b Łańcuchy znaków Asemler A51 przewiduje stosowanie w wyrażeniach znaków ASCII. Wyrażenie takie posiada conajwyżej 2 znaki ASCII zamknięte znakiem ( ' ). Łańcuchy znaków mogą być użyte poza wyrażeniami (np. dyrektywa DB) i wtedy mogą posiadać więcej znaków. 'A' wartość 0041h 'abc' ERROR za dużo znaków wyrażenia łańcuchowego 'AB' wartość 4142h TEST: #'A' 'a' wartość 0061h SUBB A, #'0' ' ' pusty łańcuch TABLE: DB 'Enter any key to continue ', 0 Symbole Symbole reprezentują w programie wartości numeryczne, adresy, nazwy rejestrów i czynią program bardziej czytelnym. Nazwy symboli tworzy się w/g konwencji: maximum 31 znaków, pierwszy znak 'A'-'Z' ('a'-'z' '_' lub '?' dozwolone znaki 'A'-'Z' ('a'-'z'), '_', '?', '0'-'9' Assembler zawiera ponadto predefiniowane symbole dla mnemoników, rejestrów specjalnych 8051 i adresów bitów. Nazwy te są opisane jako słowa kluczowe języka i stosowanie ich w programie do definiowania symboli lub etykiet jest zabronione. Przykład: SERIAL_BUFFER DATA SBUF MOV SERIAL_BUFFER, A Etykiety Etykiety są symbolami definiowanymi przez programistę. Symbol etykiety zakończony jest znakiem (:). W jednej linii programu może wystąpić najwyżej jedna etykieta. Z etykietą zawsze jest związana wartość bieżącego licznika rozkazów bieżącego segmentu.

4 Przykłady: LABEL1: DS 2 LABEL2: ; komentarz NUMBER: DB 27, 33, 'KAZIO', 0 COPY: MOVX A R0, R1, R2, R3 R4, R5, R6, R7 DPTR Symbole specjalne assemblera akumulator, 8 roboczych rejestrów związanych z bieżącym zestawem rejestrów, 16 bitowy wskaźnik danej używany do adresowania danych w wewnętrznej lub zewnętrznej pamięci, 16 bitowy licznik programu związany bezpośrednio z adresem instrukcji, flaga przeniesienia, para rejestrów używana w instrukcjach MUL i DIV, symbole reprezentują absolutne adresy danych bieżącego zestawu rejestrów, PC C AB AR0 - AR7 $ bieżąca wartość licznika rozkazów bieżącego segmentu. Przykład: MSG: DB LEN, 'To jest komunikat', 0 LEN EQU $ - MSG - 1 HALT: SJMP $ ; skocz do HALT TABLE: DW $, $, $, $ Operatory Operatory arytmetyczne +, - +5, -1, -0Ah znak liczby lub wyrażenia +, dodawanie, odejmowanie * 1200H * 7 mnożenie / 17 / 4 dzielenie MOD 17 MOD 4 reszta z dzielenia (, ) (2 + 8) * 12 zmiana porządku obliczania wartości wyrażenia Operatory binarne NOT NOT 5 negacja bitów HIGH HIGH 1234 wybierz starszy bajt operandu LOW LOW 1234 wybierz młodszy bajt operandu SHR, SHL 2 SHL 4 2 pzesuń w lewo 4-razy AND 0FFh and 12h iloczyn bitów OR 12h or 177Q suma bitów XOR 12h XOR 15 różnica symetryczna bitów Opratory relacji >= / GTE 55 >= 17 większe lub równe <= / LTE 55 <= 17 mniejsze lub równe <> / NE 55 <> 17 nie równe = / EQ 55 = 17 równe < / LT 55 < 17 mniejsze > / GT 55 > 17 większe Priorytet operacji 1 (wyrażenie) nawiasy 2 NOT, HIGH, LOW 3 +, - znak 4 *, /, MOD, ^ 5 +, - dodawanie, odejmowanie 6 SHR, SHL 7 AND, OR, XOR 8 >=, <=, =, <, > Wyrażenia numeryczne Wyrażenia numeryczne są kombinacjami operatorów i operandów które są obliczane przez assembler. Efektywny typ wyrażenia zależy od rodzaju stosowanych operandów: NUMBER, CSYM, DSYM, ISYM, XSYM, BSYM.

5 Adresy i operatory wyrażeń adresowych Dane adresowane bezpośrednio Dane adresowane bezpośrednio występują w instrukcjach assemblera jako bezpośrednie operatory. Liczby lub wyrażenia numeryczne tych operatorów poprzedzone są znakiem #. Np.: MOV A, #0E0h ; do akumulatora wstaw 0E0h MOV DPTR, #8000h ; do DPTR wstaw 8000h ANL A, #128 ; maskuj najstarszy bit akumulatora MOV R0, #BUFFER ; do R0 wstaw wartość BUFFER Adresowanie danych Układy serii 8051 stosują dwie metody adresowania danych: Adresowanie bezpośrednie. Adres bezpośredni jest 8-bitowym słowem występującym w kodzie maszynowym. Adresy bezpośrednie z zakresu 0 do 7Fh adresują wewnętrzną pamięć RAM, natomiast adresy większe od 7Fh adresują rejestry specjalne modułów mikrokontrolera (np. interfejs transmisji szeregowej, układy liczników/zegarów). Adresowanie pośrednie. Adres pośredni operandu przechowywany jest w rejestrze R0 lub R1. Adresy pośrednie z zakresu 0 do 7Fh adresują wewnętrzną pamięć RAM. Adresy większe od 7Fh są dostępne dla układów typu Assembler A51 (MOD51) stosuje predefiniowane symbole rejestrów hardwarowych układu 8051: SYMBOL OPIS ADRES P0* port P0 80H SP wskaźnik stosu 81H DPL wskażnik danych (mniej znaczący bajt) 82H DPH wskaźnik danych (bardziej znaczący bajt) 83H PCON stan zasilania 87H TCON* słowo sterujące licznikiem/zegarem T0 i T1 88H TMOD słowo rodzaju pracy licznika/zegara T0 i T1 89H TL0 licznik/zegar 0 (mł. bajt) 8AH TL1 licznik/zegar 1 (mł. bajt) 8BH TH0 licznik/zegar 0 (st. bajt) 8CH TH1 licznik/zegar 1 (st. bajt) 8DH P1* port 1 90H SCON* słowo kontrolne interfejsu szeregowego 98H SBUF bufor we/wy interfejsu szeregowego 99H P2* port 2 0A0H IE* zezwolenie obsługi przerwań 0A8H P3* port 3 0B0H IP* priorytet przerwań 0B8H PSW* słowo statusu programu 0D0H ACC* akumulator 0E0H B* rejestr pomocniczy operacji mnożenia/dzielenia 0F0H (symbolem * oznaczono rejestry adresowane bajtowo i bitowo) Przykłady instrukcji z adresowaniem bezpośrednim: MOV P1, A ; przenieś zawartość akumulatora do Portu 1 (90H) ORL A, 20H ; sumuj bitowo akumulator z wartością adresowaną bezpośrednio (20H) INC COUNTER ; zwiększ o 1 zwartość COUNTER INC 32 ; zwiększ o 1 zwartość bajtu adresowanego liczbą 32 (20H) MOV P2, B ; przenieś zawartość rejestru B do portu 2 Adresowanie bitów Adresy bitów wskazują na odpowiednie lokacje w pamięci RAM lub hardwarowe bity modułów funkcjonalnych mikrokomputera. Wskazywanie odpowiedniego adresu może odbywać się dwoma drogami: Przez wskazanie wyrażeniem numerycznym bajtu bazowego zawierającego wskazywany bit i po kropce dziesiętnej wskazanie bitu wyrażeniem numerycznym o wartości od 0 do 7, np: FLAGS.3, P0.6, 25H.7, ACC.2, FLAGS.ON, ALARM.SHUT Bajty bazowe muszą być adresowane wyrażeniami wskazującymi na lokacje wewnętrznej pamięci RAM, natomiast wskazania bitów muszą być wyrażeniami z zakresu 0 do 7. Adresy bitów mogą być wskazywane bezpośrednio (explicity) wartością wyrażenia od 0 do 255, przy czym bity wskazywane wartościami od 0 do 127 leżą w przestrzeni wewnętrznej pamięci RAM od 20H do 2FH. Natomiast bity wskazywane wartościami od 128 do 255 leżą w przestrzeni rejestrów specjanych. Przykłady adresowania bitów: SETB TR1 ; ustaw bit startu timera 1 SETB ALARM ; ustaw bit 'ALARM'

6 SETB 88H.6 ; ustaw bit startu timera 1 CPL FLAGS.ON ; zaneguj bit 'ON' bajtu 'FLAGS' JB ACC.0 ; skocz jeśli bit 0 akumulatora = 1 Assembler A51 (MOD51) stosuje również predefiniowane symbole bitów związane z strukturą hardwarową układu Np.: CY PSW.7 0D7H flaga przeniesienia EA IE.7 0AFH zezwolenie przerwań AC PSW.6 0D6H flaga przen. poł. 0AEH F0 PSW.5 0D5H flaga 0 0ADH RS1 PSW.4 0D4H reg. bank sel. ES IE.4 0ACH zezwolenie przerwania USART RS0 PSW.3 0D3H reg. bank sel. ET1 IE.3 0ABH zezwolenie przerwania TIMER 1 OV PSW.2 0D2H bit przepełnienia EX1 IE.2 0AAH zezwolenie przerwania EXT INT 1 0D1H ET0 IE.1 0A9H zezwolenie przerwania TIMER 0 P PSW.1 0D0H bit parzystości EX0 IE.0 0A8H zezwolenie przerwania EXT INT 0 Adresowanie programu Adresy kodu programu związane są z relokowalnym segmentem typu CODE lub określane bezwzględnie wyrażeniem numerycznym z zakresu 0 do Trzy typy instrukcji wymagają kodu adresu jako ich operandów: Relatywne skoki. Zakres argumentu obejmuje wartości od -128 do +127 (np. instrukcja typu SJMP). Skoki i wywołania procedur wewnątrż strony. Akceptowane wartości argumentu to liczby z zakresu 0 do 2047 (np. AJMP i ACALL). Skoki i wywołania dalekie. Rozkazy obejmują obszar adresowania od 0 do DYREKTYWY ASSEMBLERA Dyrektywy assemblera A51 można podzielić na dyrektywy definiujące symbole (SEGMENT, EQU, SET, DATA, IDATA, XDATA, BIT, CODE), dyrektywy rezerwujące i inicjalizujące przestrzeń pamięci (DS, DB, DW, DBIT), dyrektywy służące do łączenia modułów (PUBLIC, EXTERN, NAME) i dyrektywy organizujące procesy segmentacji i assemblacji (ORG, END, RSEG, CSEG, DSEG, XSEG, ISEG, BSEG, USING). DYREKTYWA TWORZĄCE SYMBOLE Dyrektywa deklaracji segmentu Dyrektywy deklarujące relokowalny segment posiadają następującą strukturę: Rel_Seg_Name SEGMENT Seg_Typ [Rel_Typ] Rel_Seg_Name - jest unikalną nazwą segmentu, Seg_Typ - specyfikuje rodzaj pamięci w której rezyduje segment: CODE, przestrzeń kodu programu, XDATA, przestrzeń danych zewnętrznych (external RAM), DATA, przestrzeń danych wewnętrznych adresowanych bezpośrednio (internal RAM 0 do 127), IDATA, przestzreń danych wewnętrznych adresowanych pośrednio przez R0 lub R1 (internal RAM 0-127/255), BIT, przestrzeń danych bitowych(internal RAM 20H-32H). Opcjonalny parametr Rel_Typ wykorzystywany jest przez program Linker/Locater L51 do okrelenia sposobu przydziału pamięci: PAGE - specyfikacja segmentu stronicowanego, adres startowy lest początkiem strony (dotyczy typu CODE i XDATA), INPAGE - specyfikuje, że segment musi zawierać się wewnątrz 256-bajtowego bloku (dotyczy typu CODE i XDATA), INBLOCK - specyfikuje, że segment musi zawierać wewnątrz strony (2048 bajtów, dotyczy tylko typu CODE), BITADDRESABLE - specyfikuje, że segment zawiera się w obszarze adresowania bitowego (20H do 2Fh), UNIT - standardowa nazwa segmentu, OVERLAYABLE - specyfikuje segment, który może być nakładkowany z innym segmentem. Przykład wykorzystania segmentu typu DATA lub IDATA jako segmentu rezerwującego obszar stosu programu:

7 STACK SEGMENT IDATA RSEG STACK ; wybierz segment STACK DS 10H ; rezerwuj 16 bajtów... MOV SP, #STACK-1 ; inicjalizuj wskaźnik stosu Dyrektywa EQU Dyrektywa EQU przyporządkowywuje wyrażenie numeryczne lub symbol rejestru do specyfikowanej nazwy symbolu. Deklaracja ta może mieć 2 postacie: Symbol_Name EQU expression Symbol_Name EQU register_symbol Przykłady: LIMIT EQU 1200 VALUE EQU LIMIT 'A' SERIAL EQU SBUF AKKU EQU A COUNT EQU R5 Dyrektywa SET Dyrektywa SET jest podobna do dyrektywy EQU z tym, że symbole mogą być w programie powtórnie redefiniowane. Deklaracja ta może mieć 2 postacie: Symbol_Name SET expression Symbol_Name SET register_symbol Przykłady: VALUE SET 100 VALUE SET VALUE / 2 COUNTER SET R1 TEMP SET COUNTER TEMP SET VALUE * VALUE Dyrektywa BIT Dyrektywa BIT przydziela adres bitowy specyfikowanej nazwie: Symbol_Name BIT Bit_Addres Przykład: RSEG DATA_SEG CTRL: DS 1 ALARM BIT CTRL.0 ; umieść bit ALARM na pozycji CTRL.0 SHUT BIT ALARM+1 ; następny bit X_ON BIT 60H ; umieść bit absolutnie X_OFF BIT 24H.2 ; j.w. Dyrektywa DATA Dyrektywa DATA przydziela do specyfikowanej nazwy obszar wewnętrznej pamięci RAM. Wyrażenie numeryczne musi być z zakresu 0 do 255. Symbol definiowany dyrektywą nie może być powtórnie redefiniowany w programie. Symbol_Name DATA expression Dyrektywa XDATA Dyrektywa XDATA przydziela do specyfikowanej nazwy obszar zewnętrznej pamięci RAM. Symbol_Name XDATA expression Dyrektywa IDATA Dyrektywa IDATA przydziela do specyfikowanej nazwy obszar wewnętrznej pamięci RAM. Symbol_Name IDATA expression Dyrektywa CODE Dyrektywa CODE przydziela do specyfikowanej nazwy adres programu. Symbol_Name CODE expression Przykład: RESTART CODE 0H INTVEC_0 CODE RESTART + 3H INTVEC_1 CODE RESTART + 0BH INTVEC_2 CODE RESTART + 1BH

8 DYREKTYWY INICJALIZACJI I REZERWACJI Dyrektywa DS Dyrektywa DS rezerwuje deklarowany obszar w zewnętrznej lub wewnętrznej pamięci RAM. [etykieta:] DS <wyrażenie_numeryczne> Przykład: GAP: DS (($ + 16) AND 0FFF0H) - $ DS 20 TIME: DS 8 Dyrektywa DBIT Dyrektywa DBIT rezerwuje przestrzeń w segmencie BIT: [etykieta:] DBIT wyrażenie Dyrektywa DB Dyrektywa DB inicjalizuje pamięć kodu kolejnymi wartościami: [etykieta:] DB wyrażenie [, wyrażenie,... ] Przykład: REQUEST: DB 'WCISNIJ DOWOLNY KLAWISZ', 0 TABLE: DB 0, 1, 8, 'A', Low(Table), ';' ZERO: DB 0, ''''' CASE_TAB: DB Low(REQUEST), Low(TABLE), Low(Zero) Dyrektywa DW Dyrektywa DW inicjalizuje pamięć kodu programu wartościami 16-bitowymi: [etykieta:] DW wyrażenie [, wyrażenie [,... ] ] DYREKTYWY ŁĄCZENIA MODUŁÓW Dyrektywa PUBLIC Dyrektywa udostępnia zdefiniowane symbole innnym modułom prgramowym, które mogą się powoływać na te symbole po uprzednim zadeklarowaniu tych symboli jako EXTERN. PUBLIC Symbol, [Symbol [,... ] ] Dyrektywa EXTERN Dyrektywa listuje symbole które są zdefiniowane w innych modułach. EXTERN Segment_Type( Symbol_list ) [,... ] Przykład: EXTRN EXTRN EXTRN CODE(PUT_CRLF), DATA( BUFFER) CODE(BINASC, ASCBIN) NUMBER(TABLE_SIZE) Dyrektywa NAME Dyrektywa jest używana do identyfikacji nazwy bieżącego modułu programu. NAME Nazwa_modułu_programowego DYREKTYWY ORGANIZUJĄCE i WYBORU SEGMENTÓW Dyrektywa END Dyrektywa musi być umieszczona w ostatniej linii programu źródłowego, jest warunkiem zakończenia procesu assemblacji. Dyrektywa ORG Dyrektywa jest stosowane do ustalania licznika adresu kodu programu bieżącego segmentu absolutnego lub relokowaklnego. ORG wyrażenie Dyrektywa RSEG

9 Dyrektywa wybiera segment relokawalny i czyni go segmentem bieżącym. RSEG Nazwa_Segmentu Dyrektywa IDATA Dyrektywa IDATA przydziela do specyfikowanej nazwy obszar wewnętrznej pamięci RAM. Symbol_Name IDATA expression Dyrektywy: CSEG, DSEG, XSEG, ISEG, BSEG Dyrektywy służą do deklarowania segmentów absolutnych: CSEG [AT Absolutny adres] DSEG [AT Absolutny adres] XSEG [AT Absolutny adres] ISEG [AT Absolutny adres] BSEG [AT Absolutny adres] Przykład: DATA_SEG1 SEGMENT DATA ; relokowalny segment danych CODE_SEG1 SEGMENT CODE ; relokowalny segment kodu BSEG AT 70H ; absolutny segment bitów DECMODE: DBIT 1 CHARMODE: DBIT 1 RSEG DATA_SEG1 ; wybierz aktywny segment danych TOTAL: DS 1 COUNT: DS 2 RSEG CODE_SEG1 ; wybierz aktywny segment kodu START: MOV SP, #12... END ; koniec programu Dyrektywa USING Dyrektywa informuje assembler który bank rejestrów 8051 jest aktualnie używany. Wyrażenie jest jest z zakresu 0 do 3. USING wyrażenie MAKROINSTRUKCJE i MAKROWYWOŁANIA DYREKTYWY MACRO - /ENDM - /EXITM Macro_Nazwa MACRO [parametr formalny] LOCAL Nazwa_Symbolu [,... ] [etykieta:] REPT wyrażenie [etykieta:] IRP parametr formalny, <lista> [etykieta:] IRPC parametr formalny, parametr aktualny Operatory specjane makroinstrukcji & <> ;;! NUL Przykład deklaracji: MEMCLR MACRO G1, G2, G3 LOCAL LOOP MOV R0, #G1 MOV A, #G2 MOV R7, #G3 LOOP: A INC R0 DJNZ R7, LOOP ENDM Przykład wywołania: CLEAR 20H, 0 CLEAR 5, 'A'

10 REPT 3 A INC DPTR ENDM MOVX INC MOVX INC MOVX A A A DPTR IRP MOV MOV ENDM X, <VAR1, VAR2> R1, ACC MOV MOV MOV MOV R1, ACC R1, ACC IRPC X, 1987 ADDC A,#X ENDM ADDC ADDC ADDC ADDC A,#1 A,#9 A,#8 A,#7 STEROWANIE PROCESEM ASEMBLACJI Opcje kompilacji Sterowanie procesem asemblaci odbywa się przy pomocy specjalnych słów sterujących. Można je podzielić na dwie kategorie: opcje główne i opcje poboczne kompilacji. Opcje kompilacji mogą być podawane przy wywołaniu asemblera z poziomu MS-DOS lub mogą być umieszczone w programie źródłowym, przy czym pierwszym znakiem w linii jest wówczas znak $ a w linii może być umieszczona więcej niż jedna opcja. A51 SAMPLE.A51 XREF DEBUG NOMOD51 $ XREF $ DEBUG $ NOMOD51 Jeżeli programista nie określi opcji kompilacji to kompillator przyjmie jej wartość domyślną. Można również posługiwać się wartościami skróconymi. Opcje główne kompilacji Wartość skrócona Wartość domniemana Przykład DATE DA data systemowa MS-DOS Np. $ DATE DEBUG/NODEBUG DB/NODB NODEBUG ERRORPRINT/NOERRORPRINT EP/NOEP NOERRORPRINT $ERRORPRINT(tst.err) OBJECT/NOOBJECT OJ/NOOJ OBJECT(file.OBJ) $ OJ(C:\SAMP\tst.obj) PAGELENGTH PL PAGELENGTH(132) $PL(75) PAGEWIDTH PW PAGEWIDTH(120) $PW(79) PRINT/NOPRINT PR/NOPR PRINT(file.LST) $ PR(:CO:) SYMBOLS/NOSYMBOLS SB/NOSB SYMBOLS $ NOSB XREF/NOXREF XR/NOXR NOXREF $ XREF TITLE TT $ TITLE(Wersja 2.2) MOD51/NOMOD51 MO/NOMO MOD51 $ NOMOD51 COND/NOCOND brak COND $ NOCOND MACRO/NOMACRO brak MACRO REGISTERBANK/NOREGISTERBANK RB/NORB REGISTERBANK(0) $RB(0,2) Opcje poboczne kompilacji Wartość skrócona Wartość domniemana Przykład EJECT EJ $ EJ INCLUDE IC $IC(REG552.DCL) LIST/NOLIST LI/NOLI LIST $ NOLI GEN/NOGEN brak GEN $ NOGEN SAVE/RESTORE SA/RS $ SAVE NOLIST Wyrażenia sterujące procesem kompilacji W programie źródłowym programista może stosować (definiować) własne symbole i konstruować w oparciu o nie wyrażenia. Ponadto możliwe jest realizowanie kompilacji warunkowych dla wybranych fragmentów tekstu źródłowego. Nazwa wyrażenia Argument wyrażenia Przykład

11 SET/RESET (<zmienna>[,<zmienna>[,...]]) (<zmienna>=<wartość num.> [,...]) (<zmienna,<zmienna>=<wartość num>, <zmienna [,...]) $ SET(TMP,TMP1=55, TMP2, TMP3) $ RESET(TMP,VAR,TMP3) $ SET(TEST, ITER=3) IF <wyrażenie numeryczne> $ IF (ITER=3) ET3: MOV DPTR, #TABLE $ ENDIF ELSEIF <wyrażenie numeryczne> $ IF (TMP2) <linie tekstu źródłowego> $ ELSEIF (TMP3) <linie tekstu źródłowego> $ ENDIF ENDIF -

12 JĘZYK PROGRAMOWANIA C51 DLA MIKROPROCESORÓW RODZINY MCS51 TYPY DANYCH ROZMIAR Zakres wartości TYP DANEJ bit 1 bit 0 lub 1 signed char 1 bajt -128 do +127 unsigned char 1 bajt 0 do 255 signed int 2 bajty do unsigned int 2 bajty 0 do signed long 4 bajty do unsigned long 4 bajty 0 do float 4 bajty ±1.176e-38 do ±3.40e+38 pointer 1 3 bajty adres objektu TYPY DANYCH DLA DOSTĘPU DO SFR sbit 1 bit 0 lub 1 sfr 1 bajt 0 do 255 sfr16 2 bajty 0 do TYPY PAMIĘCI Opis TYP PAMIĘCI data bdata idata pdata xdata code pamięć wewnętrzna bezpośrednio adresowalna, najszybszy dostęp do zmiennej (128 bajtów) pamięć wewnętrzna adresowana bitowo, umożliwia dostęp bitowy i bajtowy pamięć wewnętrzna adresowana pośrednio, dostęp do całej przestrzeni wewnętrznej pamięci (256 bajtów) stronicowana (256 bajtów) pamięć zewnętrzna, dostępna przy pomocy instrukcji zewnętrzna pamięć danych (64k), dostępna przy pomocy instrukcji pamięć programu (64k); dostępna tylko do odczytu instrukcją ZMIENNE deklaracja zmiennych, inicjalizacja zmiennych (zmienne po zadeklarowaniu mogą zawierać przypadkowe wartości) int x, y;

13 int z = 10; x= y +10; // jaką wartość ma teraz x=??? z = 3; // inicjalizacja w trybie wykonywania Przykłady deklaracji zmiennych: char data var1, var2; char code text[]= WPROWADZ PARAMETR: ; unsigned long xdata array [100]; float idata x,y,z; unsigned int pdata rozmiar; unsigned char xdata vector[10][4][4]; sfr P0=0x80; sbit RI=0x98; char bdata znaczniki; sbit fl0=znaczniki^0; Modele pamięci: Opis MODEL SMALL COMPACT LARGE parametry i zmienne automatyczne są umieszczane w wewnętrznej pamięci danych, jeśli rejestry robocze nie są dostępne (max. 120 bajtów pamięci typu DATA) parametry i zmienne automatyczne są umieszczane w stronicowanej zewnętrznej pamięci danych, jeśli rejestry robocze nie są dostępne (max. 256 bajtów pamięci typu PDATA), parametry i zmienne automatyczne są umieszczane w zewnętrznej pamięci danych, jeśli rejestry robocze nie są dostępne (max. 64K pamięci typu XDATA) Do adresowania wykorzystywane są rejestry DPTRx Wskazania (pointers): ROZMIAR Wskaźnik wskazuje na... DEKLARACJA float *p; 3 bajty... float we wszystkich typach pamięci char data *p; 1 bajt... char w pamięci typu data int idata *ip; 1 bajt... int w pamięci typu idata long pdata *pp; 1 bajt... long w pamięci typu pdata char xdata *xp; 2 bajty... char w pamięci typu xdata int code *cp; 2 bajty... int w pamięci typu code REPREZENTACJA ZMIENNYCH bit signed/unsigned char; data/idata/pdata pointer signed/unsigned int; xdata/code pointer przykład wartości typu integer 0x1234 adres zawartość 0x12 0x34 signed/unsigned long przykład wartości typu long integer 0x adres zawartość 0x12 0x34 0x56 0x78 wskaźnik główny adres

14 zawartość typ pamięci High-offset Low-offset typy pamięci są kodowane następująco: typ pamięci idata xdata pdata data code wartość przykład: #define XBYTE ((char *) 0x20000L) XBYTE[0x8000]=0x41; operacje na wskaźnikach: operacja przykład operacja porównania if (p0==p1)...; if (p0!=p1)...; if (p0<=p1)...; dodawanie (wsaźnik+int) p0+=5; p1+=i; p1=p0+(2*i); odejmowanie(wsk.-int) p0-=8; p1-=i; p0=p1-100; przeniesienie p0=p1; p5=0x50100l; zwiększenie p0++; ++p1; zmniejszenie p1--; --p0; float (4 bajty, standardu IEEE-754, 24 bit. precyzji, najst. bit mantysy zawsze równy 1) 1 Bit znaku (S, 1-ujemny, 0-dodatni) 8 Bit wykładnik (E liczba 23 Bit mantysa adres zawartość MMMM MMMM MMMM MMMM E MMM MMMM S EEE EEEE przykład weryfikacji błędów w arytmetyce zmiennopozycyjnej: #define NaN 0xFFFFFFFF /* blad - to nie jest liczba */ #define plusinf 0x7F /* dodatnie przepelnienie */ #define minusinf 0xFF /* ujemne przepełnienie */ union f { float f; /* wartość zmiennorzecinkowa */ unsigned long ul; /* wartość całkowitoliczbowa długa */ } main() { float a, b; union f x; } x.f = a*b; if (x.ul==nan x.ul==pusinf x.ul==minusinf) { /* obsluga bledu */ } else { /* rezultat obliczenia poprawny */ } TABLICE Alokacja tablic w przestrzeni pamięci RAM lub ROM: float mtab[5]; mtab[0] mtab[1] mtab[2] mtab[3] mtab[4] basseaddr basseaddr+4 basseaddr+8 basseaddr+12 basseaddr+16 float mdtb[3][5]; mdtb[][0] mdtb[][1] mdtb[][2] mdtb[][3] mdtb[][4] mdtb[0][] baseaddr baseaddr+4 baseaddr+8 baseaddr+12 baseaddr+16 mdtb[1][] BaseAddr+20 BaseAddr+24 BaseAddr+28 BaseAddr+32 BaseAddr+36 mdtb[2][] BaseAddr+40 BaseAddr+44 BaseAddr+48 BaseAddr+52 BaseAddr+56 TABLICE ZNAKOWE char text[]= To jest string. ; T o j e s t s t r i n g. \0

15 OPERATORY JĘZYKA C51 Operator Opis Przykład Operatory matematyczne + Dodawanie x=y+z; - Odejmowanie x=y-z; * Mnożenie x=y*z; / Dzielenie x=y/z; Operatory przydzielenia wartości = przedziel wartość z=10; += sumuj i przydziel x+=10; (równoważne: x=x+10;) -= odejmij i przydziel x-=8; *= mnóż i przydziel x*=10; /= podziel i przydziel x/=10; &= iloczyn log. bitów i przydziel x&=10; (ANL x,#0ah) = suma log. bitów i przydziel x =10; (ORL x,#0ah) ^= różn. sym. bitów i przydziel x^=10; (XRL x,#0ah) Operatory wyrażeń logicznych && iloczyn logiczny wyrażeń if (x && 0x07) {... } suma logiczna wyrażeń if (x 0x0F) {... } Operatory porównań == Równe if (x<10) {... }!= nie równe if (x!=10) {... } < Mniejsze if (x<10) {... } > Większe if (x>10) {... } <= mniejsze lub równe if (x<=10) {... } >= większe lub równe if (x>=10) {... } Operatory * wskazanie pośrednie char *p; x=*p; & Adres p=&x; ~ negacja bitów x &= ~0x02! logiczne nie if (!valid) {... } ++ Zwiększenie x++; (tak samo jak: x=x+1;) -- Zmniejszenie x--; --x; Operatory -> x->s. x.w.lo Ogólna postać funkcji w C51: typ_powrotu nazwa_fukcji ( [par[,... ]] ) [model] [reentrant] [interrupt n] [using n] przykład: void rb_func(void) using 3 { /*... ciało funkcji... */ } Zawsze przed użyciem funkcji musi wystąpić deklaracja funkcji lub deklaracja jej prototypu.

16 przykład użycia using stmt level source 1 extern bit alarm; 2 int alarm_count; 3 extern void alfunc (bit b0); 4 5 void flarm(void) using 3 { 6 1 alarm_count++; 7 1 alfunc(alarm=1); 8 1 } ASSEMBLY LISTING OF GENERATED OBJECT CODE ; FUNCTION flarm (BEGIN) 0000 C0D0 PUSH PSW D018 MOV PSW,#018H R INC alarm_count+01h 0007 E500 R MOV A,alarm_count+01H JNZ?C B 0500 R INC alarm_count 000D?C0002: 000D D3 SETB C 000E 9200 E MOV alarm,c E MOV?alfunc?BIT,C E ACALL alfunc 0014 D0D0 POP PSW RET ; FUNCTION flarm (END) DEKLARACJA STRUKTURY struct nazw_typ dekl_skł_1; dekl_skł_2;. dekl_skł_n; } nazwa; ; SOURCE LINE # 5 ; SOURCE LINE # 6 ; SOURCE LINE # 7 ; SOURCE LINE # 8 ŁĄCZENIE PROGRAMÓW C51 Z PROGRAMAMI W J. ASSEMBLERA przekazywanie parametrów Typ parametru char, 1-bajt ptr int, 2-bajt ptr long, float generic ptr 1. Parametr R7 R6,R7 R4 R7 R1, R2, R3 2. Parametr R5 R4,R5 R4 R7 R1, R2, R3 3. Parametr R3 R2,R R1. R2, R3

17 SYNTAKTYKA WYRAŻEŃ JĘZYKA C51 if (wyr_war) { wyrażenia_prawdy; } else { wyrażenia_fałszu; } for (inicjowanie; wyr_war; adjustacja) { wyrażenia; } while (wyr_war) { wyrażenia; } do { wyrażenia; } while (wyr_war); goto label;. label: switch (wyrażenie) { case wartość_1: wyrażenia_1; break;. case wartość_n: wyrażenia_n; break; default: wyrażenia; }

18 BIBLIOTEKI C-51 stdio.h extern char _getkey(); extern char getchar(); extern char *gets(char *s, int n); extern char ungetchar(char); extern putchar(char); extern int printf(const char *,...); %[flags][width][.precision]type flags: -,+,, #, b, B, l, L, * type: d, u, o, x, X, f, e, E, g, G, c, s, p extern int sprintf(char s, const char *,...); extern int puts(const char *s); extern int scanf(const char *,...); %[flags][width]type flags: *, b, h, l type: d, i, u, o, x, f, e, g, c, s

19 Opcja CODE COMPACT DEBUG DEFINE LARGE LISTINCLUDE NOAREGS NOCOND NOEXTEND NOINTVECTOR Funkcja dołącza kod assemblera do pliku listingu wybiera model pamięci typu COMPACT dołącza informacje symboli do pliku wynikowego (obj) definiuje symbol preprocesora wybiera model pamięci typu LARGE dołącza do pliku listingu zawartość plików dołączanych (INCLUDE) zabrania generowania typu dostępu do rejestrów roboczych ARx Zakazuje zabrania stosowania rozszerzeń języka C51 zabrania generować wektor przerwań

20 Rozszerzenia standardu języka ANSI C (Cx51) związane bezpośrednio z architekturą mikroprocesorów rodziny 8951 Rodzaj pamięci i obszarów specjalnych w 8051 Modele pamięci Specyfikacja rodzajów pamięci Specyfikacja typów danych Dane bitwe i adresowanie obszarów bitowych Rejestry funkcji specjalnych (SFR - Special Function Register) Wskaźniki Atrybuty funkcji Słowa kluczowe _at_ alien bdata bit code compact data far idata interrupt large pdata _priority_ reentrant sbit sfr sfr16 small _task_ using xdata (dyrektywa NOEXTEND procesu kompilacji może zabronić stosowania rozszerzeń języka) Obszary pamięci 8051 Pamięć programu modyfikator code Pmięć danych wewnętrzna (internal data menory) 128 (256) bajtów, modyfikatory: data data bdata Pamięć danych zewnętrzna (external) modyfikatory: xdata pdata

21 PL/M-51 Język PL/M jest językiem programowania wysokiego poziomu posiadającym szereg cennych cech języka asemblerowego, takich jak: programowy dostęp do do rejestrów mikroprocesora, portów we/wy oraz możliwość operowania na pojedynczych bitach. Struktura programu. Elementy języka. linie deklaracji, linie instrukcji sterujących, procedury wbudowane, operacje wejścia/wyjścia. ELEMENTY JĘZYKA PL/M-51 Zbiór znaków pisarskich języka, ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz =./()+-'*,:;$_<> Identyfikatory (do 31 znaków), Słowa kluczowe, Stałe, - liczbowe, - tekstowe, Komentarze /* [tekst] */ TYPY DANYCH I ICH DEKLARACJE Typy danych (Bit, Bajt, Word), Operatory relacji, Operatory adresowe, Deklarowanie zmiennych, - deklaracja prosta {Declare ZMIENNA Byte; }, - deklaracja faktoryzowana {Declare (x, y) byte, z Word; } - zmienna tablicowa { Declare Buf(32) Word Auxiliary; }, - zmienna strukturowa {Declare REC(5) Structure(B1 Byte, W1 Word) IDATA; } - odwołania do zmiennych tablicowych i zmiennych strukturowych { x=zmienna; y=rec(2).b1; } - odwołania kwalifikowane i niekwalifikowane { z=.buf; } - zmienne bazowane i zmienne bazowe {Declare Ref Byte, ZM based Ref Byte IDATA; } Atrybuty deklaracji zmiennych, - atrybuty inicjujące { DECLARE zmienna typ INITIAL (lista_inicjująca); } - atrybut inicjujący DATA (stałe wykonawcze) { DECLARE zmienna typ DATA(lista_inicjująca) }, - deklaracja tablicy z niejawną specyfikacją rozmiaru { DECLARE text(*) BYTE DATA('Kazio',0); }, - atrybut adresowy AT { DECLARE zmienna typ AT(adres) }. Deklarowanie stałych kompilacyjnych { DECLARE nazwa LITERALLY 'sekwencja znaków'; }, Deklarowanie etykiet { DECLARE nazwa LABEL [atrybut_łączący] }, Deklarowanie procedur nazwa: PROCEDURE [(parametry)] [typ] [atrybuty]; [ciało procedury] END [nazwa]; OPERATORY i WYRAŻENIA ARYTMETYCZNE Operandy (stałe, identyfikatory zmiennych, adresy zmiennych), Operatory - arytmetyczne (+, -, /, *, MOD, PLUS, MINUS), - relacyjne (<, >, <=, >=, <>, = ), - logiczne (not, and, or, xor), Priorytet wykonywania operacji, Wyznaczanie wartości wyrażeń, INSTRUKCJE Instrukcja podstawienia, zmienna = wyrażenie; Instrukcja podstawienia wielokrotnego, zmienna_1, zmienna_2,... zmienna_n = wyrażenie; Operator przypisania, zmienna := wyrażenie;

22 Instrukcja pusta, (;) Instrukcja skoku, GOTO identyfikator; GOTO identyfikator; Instrukcja wywołania procedury, CALL identyfikator(a1,..., an); CALL identyfikator; Instrukcja powrotu z procedury, RETURN; RETURN w; Instrukcje aktywacji i deaktywacji przerwań, ENABLE; DISABLE; INSTRUKCJE STRUKTURALNE Instrukcja grupująca, [etykieta_1:... [tykieta_n]] Do; [deklaracja_0;... deklaracja_n; ] instrukcja_0;... instrukcja_n; End [etykieta_n]; Instrukcja wyboru DO CASE [etykieta_1:...[etykieta_n:]] DO CASE exp; instrukcja_0; instrukcja_1;... instrukcja_n; End [etykieta_n]; Instrukcja cyklu repetycyjnego DO WHILE [etykieta_1:...[etykieta_n:]] DO WHILE instrukcja_0; instrukcja_1;... instrukcja_n; End [etykieta_n]; Instrukcja cyklu iteracyjnego DO [etykieta_1:...[etykieta_n:]] DO licznik=st_exp TO limit_exp [BY step_exp] instrukcja_0; instrukcja_1;... instrukcja_n; End [etykieta_n]; Instrukcja warunkowa IF IF exp THEN instrukcja_1; [ELSE instrukcja_2;] PROCEDURY Deklarowanie procedur {nagłówek procedury} {ciało procedury} Procedury funkcyjne i niefunkcyjne, Bezpośrednie wywołanie procedury, Pośrednie wywołanie procedury niefunkcyjnej Zakończenie wykonywania procedury, Procedury o rozszerzonym zakresie dostępności - atrybuty PUBLIC i EXTERNAL, Procedury opbsługi przerwań - atrybut INTERRUPT INTERRUPT n; Atrybut - USING USING n; /* n=0-3 */ nazwa: PROCEDURE [(lista_parametrów_form.)] [typ] [atrybuty]; [deklaracje_parametrów_formalnych;] [deklaracje_zmiennych_lokalnych;] [deklaracje procedur zagnieżdżonych;] [instrukcje_procedury;] END [nazwa;] CALL nazwa [(lista_parametrów_aktualnych)]; zmienna = nazwa [(lista_parametrów_aktualnych)]; CALL zmienna; RETURN; RETURN exp; PROCEDURY i FUNKCJE WBUDOWANE Funkcje dotyczące deklaracji zmiennych Funkcja LENGTH, {liczba elementów; typ WORD; postać: x=length(zmienna); } Funkcja LAST, {numer ostatniego elementu; typ WORD; postać: x=last(zmienna tabl.); } Funkcja SIZE, {liczba bajtów; typ WORD; postać: x=size(zmienna); } Funkcje konwersji typów danych { LOW(wyraż.), HIGH(wyraż.), DOUBLE(wyraż.),.BOOLEAN(wyraż.), PROPAGATE(bit), EXPAND(bit) }

23 Funkcje logiczne Funkcje ROL i ROR Funkcje SHL i SHR Procedury i funkcje ogólne Procedura TIME { call TIME(wyraż.); /* wyraż. * 100us */ Procedura TESTCLEAR Procedury i funkcje zorientowane sprzętowo Instrukcje ENABLE i DISABLE Funkcja CARRY, SIGN, ZERO, PARITY Operatory PLUS i MINUS Funkcje SCL i SCR Funkcja DEC KOMPILATOR JĘZYKA PL/M-51 Wiersz zlecenia kompilacji: [directory] PLM51 sourcepatch [controls] [& <CR> [controls]] <CR> directory - urządzenie i ścieżka dostępu do kompilatora języka, sourcepatch - urządzenie, ścieżka dostępu oraz nazwa pliku źródłowego, controls - identyfikatory opcji kompilacji oddzielone znakami spacji, Opcje główne i poboczne kompilacji Opcje sterujące formatem raportu kompilacji (PAGING/NOPAGING, PAGELENGTH, PAGEWIDTH, TITLE, SUBTITLE, EJECT) Opcje sterujące zawartością raportu kompilacji (PRINT/NOPRINT, LIST/NOLIST, CODE/NOCODE, XREF/NOXREF, SYMBOLS/NOSYMBOLS), Opcje sterujące generacją kodu wynikowego (OBJECT/NOOBJECT, INTVECTOR/NOINTVECTOR, DEBUG/NODEBUG, ROM, RAM) Opcje optymalizacji kodu OPTIMIZE(0, 1, 2, 3) Wybór modelu pamięci ROM(SMAL, MEDIUM, LARGE) Włączanie plików pobocznych (pomocniczych), - opcja INCLUDE - opcja SAVE, RESTORE Kompilacja warunkowa (SET/RESET) Słowa kluczowe języka PL/M-51 ADDRES AND AT AUXILIARY BASED BIT BY BYTE CALL CASE CONSTANT DECLARE DISABLE DO ELSE ENABLE END EXTERNAL GO GOTO IDATA IF INDIRECTLY_CALLABLE INTERRUPT LABEL LITERALLY MAIN MINUS MOD NOT OR PLUS PROCEDURE PUBLIC REGISTER RETURN STRUCTURE THEN TO USING WHILE WORD XOR Predefiniowane identyfikatory BOOLEAN DEC DOUBLE EXPAND HIGH LAST LENGTH LOW PROPAGATE ROL ROR SCL SCR SHL SHR SIZE TESTCLEAR TIME

24 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 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.

25 Schemat blokowy ADSP-21xx. Generator adresu danych Generator adresu danych Szyna PMA Szyna DMA Rejestr instrukcji Sekwenser programu Pamięć Programu SRAM lub ROM Pamięć Danych SRAM Generator Adresu boota Flagi Tylko ADSP 2111 zegar Szyna adresowa zewnętrzna Szyna PMD Szyna DMD Wymiana szyny Zewnętrzna szyna danych Rejestr wej. Rejestr wyj. Rejestr wej. Rejestr wyj. Rejestr wej. Przesuwnik Rejestr wyj. Szyna R Rejestr transmisji Rejestr odbioru Port szeregowy 0 (nie na ADSP- 2105) Kompansja zespołu obwodów Rej. transmisji Rej. odbioru Port szere Kontrolny port hosta Port danych hosta Port interfejsu zarządzania (tylko ADSP-2111) Zewnętrzna szyna portu hosta 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

26 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 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 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ą

27 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 ADSP 2105 Przerwanie, Adresy wektorowe RESET rozpoczęcie pracy IRQ2 0x0004 SPORT1 transmitowanie lub IRQ1 SPORT1 odbiór lub IRQ0 Zegar 0x0000 0x0004 (wysoki priorytet) 0x0010 0x0014 0x0018 (niski priorytet) ADSP-2101/2103/2115/216x RESET rozpoczęcie pracy IRQ2 0x0004 SPORT0 transmitowanie lub IRQ1 SPORT0 odbiór lub IRQ0 SPORT1 transmitowanie lub IRQ1 SPORT1 odbiór lub IRQ0 Zegar 0x0000 0x0004 (wysoki priorytet) 0x0008 0x000C 0x0010 0x0014 0x0018 (niski priorytet)

28 ADSP-2111 RESET rozpoczęcie pracy IRQ2 0x0004 HIP zapis z hosta HIP odczyt z hosta SPORT0 transmitowanie lub IRQ1 SPORT0 odbiór lub IRQ0 SPORT1 transmitowanie lub IRQ1 SPORT1 odbiór lub IRQ0 Zegar 0x0000 0x0004 (wysoki priorytet) 0x0008 0x000C 0x0010 0x0014 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.

29 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 RFS TFS DR DT Zegar (wej/wyj) Synchronizacja ram odbioru (wej/wyj) Synchronizacja ram nadawania (wej/wyj) Odbiór szeregowy danych 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

30 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ń. PMD bus DMD bus Schemat blokowy ALU AX0, AX1 AY0, AY1 AZ AN AC AV AS AQ ALU CI AF AR R bus

31

32 \

33 Rdzeń Procesora DAG1 adresowanie tylko DM możliwość odwracania bitów DAG2 adresowanie DM i PM 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 L3 M ALU I7 L7 M MAC AX0 AX1 AY0 AY1 MX0 MX1 MY0 MY1 AR AF MR0 MR1 MR2 MF SHIFTER PM<->DM SI SE SB 8 PX SR1 SR0 SEKWENCER PROGRAMU 18 LOOP STACK 4 18 OWRCNTR CNTR COUNT STACK ICNTL IFC 18 PC STACK IMASK MSTAT ASTAT 8 8 STATUS STACK * SSTAT

34 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 PAMIĘĆ PROGRAMU 16/32K x ZEGAR CLKIN Adres pamięci programu Dane pamięci programu ADSP CLKOUT Adres pamięci danych Dane pamięci danych RESET HALT TRAP IRQ BR BG Adres Dane Adres Dane PAMIĘĆ DANYCH 16K x 16 PERYFERIA Rys. Zmodyfikowana architektura Harvard na przykładzie ADSP-2100

35 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; {zmienna do przechowywania adresu dostępu } I3=DM(addr_ptr); {I3 załaduj przy użyciu adresowania bezpośredniego} L3=0; {zabroń adresowania cyklicznego, adresowanie liniowe} M1=0; {nie stosuj modyfikacji z I3} AX0=DM(I3,M1); {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 2 n lub wielokrotnością 2 n oraz ograniczeniu: Przykład: I0=5, M0=1, L0=3, adres bazowy B=4. (I0+M0-B) mod L0 + B = (5+1-4) mod = 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,... n n 2 1 L 2.

36 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 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=1234 H, PX=00 H, PM(I4,M4)= H 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)=1F2C3D H, po operacji SI=1F2C H a PX=3D H.

37 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 20mV RMS AC, analogowe wyjścia - para sprzężonych, dwukanałowych wyjść liniowych 1V RMS AC zasilanie - 8 do 10V DC przy 300mA

38 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 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.

39 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 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 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.

40 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 ( I max = 140mA). Interfejs równoległy AD1848J AD1848K Interfejs szeregowy AD1849J AD1846 AD1847 AD1849K AD184x AD1845 AD1845 Kodek multimedialny Kodek multimedialny AD1843 Procesor audio AD181x AD1819 AC 98 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).

41 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 F s (F s 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ą MHz i MHz. Dzięki nim można ustawić następujące możliwe częstotliwości próbkowania (Tabela)

42 Dostępne częstotliwości próbkowania Tabela. Częstotliwości próbkowania w AD1847 XTAL MHz XTAL MHz 8 khz khz 9.6 khz khz 16 khz khz khz 18.9 khz 32 khz khz 48 khz 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

43 Krok 1. OKREŚLENIE ARCHITEKTURY Program budowy systemu Plik.ACH Krok 2. GENERACJA KODU Plik.C Kompilator ANSI C Plik.DSP Program asemblujący Program konsolidujący Plik.EXE Krok 3. PROGRAMY TESTUJĄCE EZ-LAB Evaluation Board lub specjalistyczne karty PC Symulator programowy Krok 4. TESTY W SYSTEMIE DOCELOWYM Pełno wymiarowy emulator lub emulator EZ-ICE Płytka docelowa Krok 5. KOŃCOWY SYSTEM PRODUKCYJNY Przetestowana płytka DSP 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 PLIK OPISUJĄCY ARCHITEKTURĘ (.ACH) KOMUNIKATY BŁĘDÓW LUB STRESZCZENIE ARCHITEKTURY Rys. Program budowy systemu (Użyj komend systemu operacyjnego by zobaczyć wyjście) 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 {nazwa system}

44 .ADSP2181;.SEG/PM/RAM/ABS=0/CODE/DATA ext_pm[2048];.seg/dm/ram/abs=14336/data int_dm[1024];.endsys; {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}

45 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.

46 ASM21 PLIKI INICJALIZACJI DANYCH (.INT) PREPROCESOR C PLIKI KODU (.CDE) PLIKI OBIEKTOWY (.OBJ) PREPROCESOR ASEMBLERA PLIKI INICJALIZACJI BUFORA DANYCH (.DAT) JĄDRO ASEMBLERA PLIK OPISUJĄCY ARCHITEKTURE (.ACH) PROGRAM KONSOLIDUJĄCY PLIK.CDE PLIK.OBJ PLIK OBRAZU PAMIĘCI (.EXE) PLIK.INT PLIK LISTINGU MAPY PAMIĘCI (.MAP) PLIK.LST PLIK TABLICY SYMBOLI (.SYM) Rys. Schemat procesu kompilacji 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.

47 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.

48 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) k0 gdzie: x(n) oznacza sygnał wejściowy, y(n) sygnał wyjściowy, N to rząd filtru, zaś b k (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) xk ( n) ak y( n k) k0 gdzie: x(n) oznacza sygnał wejściowy, y(n) sygnał wyjściowy, N to rząd filtru, a k (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

49 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

50 ostatnich próbek, procesor wykorzystuje bufor roboczy. Po nadejściu z przetwornika analogowo-cyfrowego 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

51 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 otrzymując funkcję zbliżoną do h( n) 1 N sin ( x) f ( x) ; x N / 2 H( m) e m ( N / 2) 1 3. Wymnożenia obliczonego h(n) z założoną funkcją okna; 4. Przesunięciu wyliczonych współczynników w prawo o N/2. Wybrane funkcje okien j2mn / N Okno prostokątne: w(n) = 1 Okno trójkątne: n w(n) = N / 2 n w(n) = 2- N / 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 f pass częstotliwość początkowa pasma zaporowego f stop. Dodatkowo ustalany jest parametr nierównomierności pasma przepustowego i zaporowego. Tak zadaną charakterystykę amplitudową A p () aproksymuje się za pomocą sumy kosinusoid wziętych ze współczynnikami wagowymi c n. 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) n 0 m 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. Przyjęcie wejściowych pulsacji m; 2. Rozwiązaniu układu równań i wyliczeniu współczynników c n i parametru

52 ) ( ) ( : ) ( ) ( : ) ( / 1) ( ) cos(... ) cos( 1 ) ( / 1) ( ) cos(... ) cos( 1 : : :. : : ) ( 1/ ) cos(... ) cos( 1 ) ( 1/ ) cos(... ) cos( M p M p p p M M M M M M M M M A A A A c c c W M W M W M W M 3. 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 c n. 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. 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: H c (z) = H a (s), gdzie: 2) / ( 1 2) / ( 1 ) (2/ ) (2/ T s T s s T s T z jest funkcją przekształcenia filtru cyfrowego na analogowy. H c (z) transmitancja filtru cyfrowego, H a (s)- transmitancja filtru analogowego, zaś T jest okresem próbkowania sygnału dyskretnego. Transformacja odwrotna ma postać: z z T s Kolejność projektowania rekursywnego filtru metodą biliniową jest następująca: 1. zadanie pulsacji granicznych filtru cyfrowego przedziału [0, ] oraz wymaganych wartości tłumienia w paśmie zaporowym i przepustowym. 2. wyznaczenie pulsacji g dla filtru analogowego H a (s), związanego z filtrem cyfrowym H c (z): 2) / ( 2 g g tg T 3. zaprojektowanie filtru analogowego zdefiniowanego przez zbiór parametrów (pulsacje graniczne, tłumienia w pasmach zaporowych i przepustowych)

53 4. wyznaczenie współczynników transmitancji filtru cyfrowego na podstawie transmitancji filtru analogowego H c ( z) H a ( s) s (2/ T ) ( z1) / ( z1) 5. Następnie obliczana jest odwrotna transformata Fourier a, pozwalająca uzyskać współczynniki filtru h(n).

54 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

55 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,

56 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: B3F00 0FBE FBE00 0B3F Są to współczynniki dla filtru opartego na oknie prostokątnym, rząd filtru wynosi 10, zaś częstotliwość odcięcia 4000 Hz.

57 Program konwersji kodu q15.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 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 0x x7FFF xFFFF x 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 Kod FFF Liczby dziesiętne 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 Wartość w kodzie 1.15 Wartość dziesiętna po

58 przeliczeniem przeliczeniu x7FFF x xB 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 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 Rys. Diagram programu 1q15.vi

59 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, 0xc102, { Rejestr sterowania lewego wejścia ustawienia: wybrane liniowe lewe wejście #1 wzmocnienie lewego wejścia 3dB } { 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 0xc680, 0xc780, 0xc85c, 0xc909, 0xca00, 0xcc40, ustawienia: brak wzmocnienia/tłumienia kanał pomocniczy wyciszony } { Rejestr sterowania lewego przetwornika DAC ustawienia: lewy DAC wyciszony brak tłumienia } { Rejestr sterowania prawego przetwornika DAC ustawienia: prawy DAC wyciszony brak tłumienia } { Rejestr formatu danych ustawienia: 16-bitowe liniowe przetwarzanie PCM przetwarzanie dwukanałowe próbkowanie 48kHz zegar XTAL1= MHz; } { Rejestr konfiguracji interfejsu ustawienia: umożliwiona auto-kalibracja włączone odtwarzanie } { Rejestr sterowania portami ustawienia: stan niski na bitach XCTL1 i XCTL0 } { Rejestr innych informacji ustawienia: 32 bity w ramce transmisji synchronicznej, system dwu przewodowy

60 0xcd00; } { 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;

61 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 EZ-KIT Lite WE 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. Procedury zaprojektowania filtru przy pomocy opracowanego programu FIR_designer.vi, 2. Wygenerowano współczynniki filtru, 3. Skompilowano źródło DSP filtru wraz z otrzymanymi współczynnikami, 4. 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

62 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 f c 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: f c (-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: f c (-3 db) = 4,678 khz f = 2,27 khz

63 A [db] A [db] f [Hz] Rys. Teoretyczna charakterystyka amplitudowo-częstotliwościowa filtru cyfrowego dolnoprzepustowego 32 go rzędu z oknem prostokątnym 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

64 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, [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, [10] Sophocles J. Orfanidis "ADSP-2181 Experiments" wiosna 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] [14] [15]

65 INTERFEJS SZEREGOWY DLA PROGRAMOWALNEJ APARATURY POMIAROWEJ (Standard IEEE 1174 ) Standard IEEE 1174 definiuje sposób implementacji popularnego interfejsu szeregowego RS 232 dla potrzeb sprzętu pomiarowego przeznaczonego do budowy systemów pomiarowych. Kontroler Urządzenie Aplikacja pomiarowa Aplikacja Aplikacja pomiarowa Rozkazy i zapytania SCPI Komunikaty SCPI Rozkazy i zapytania SCPI Kontroler IEEE Sk ł adnia i struktury danych Kontroler IEEE IEEE 1174 GPIB VXI P o ł ą c z e n i e f i z y c z n e IEEE 1174 GPIB VXI Rys. 1. Wzajemne relacje standardów łączy interfejsowych aparatury pomiarowej. DTE DCE DCE DTE DTE DTE Rys.2. Połączenie null modem. Oznaczenia: TxD - Transmit Data (transmisja danych) RxD - Receive Data (odbiór danych) DTE - Data Terminal Equipment (urządzenie końcowe danych, np. komputer) DCE - Data Circuit-terminating Equipment (urządzenie komunikacji danych, np. modem) DSR - Data Set Ready (gotowość odbioru danch) RTS - Request to Send Data (gotowość portu - żądanie transmisji) CTS - Clear to Send Data (sygnał kasowania transmisji) DCD - Data Carrier Detected (sygnalizacja wykrycia nośnej) SCPI - Standard Commands for Programmable Instruments (język programowania przyrządów pomiarowych) W połączeniu z modemami wykorzystuje się protokół CTS/RTS. Urządzenie końcowe DTE wysyłając dane musi uzyskać od swojego modemu DCE potwierdzenie nawiązania połączenia z oddalonym modemem. Wystawia więc sygnał RTS - żądając w ten sposób od swojego modemu nawiązania komunikacji z oddalonym DCE. Modem potwierdza nawiązanie łączności wystawiając sygnał CTS skierowany do swojego DTE w stan ON. Oznacza to, że DTE może transmitować dane. Linie danych (logika ujemna) 1 logiczna od -15V do -3V 0 logiczne od +15V do +3V Linie sterujące (logika dodatnia) 1 logiczna od +15V do +3V 0 logiczne od -15V do -3V

66 Protokoły sterowania przepływem danych Do sterowania przepływem danych standard IEEE 1174 wykorzystuje dwa podstawowe protokóły: 1. Sterowanie sprzętowe, używające obwodu CTS/RFR 2. Sterowanie programowe, używające znaków XON/XOFF. Rys.3. Sprzętowe sterowanie przepływem danych (RFR - Ready For Receiving) Procedura sprzętowa używa obwodu RFR oraz obwodu CTS. Przez kabel null modem obwód RFR jednego urządzenia jest połączony z obwodem CTS drugiego. Urządzenie DTE odbierające dane obwodem RxD może ustawić : RFR=ON w celu zasygnalizowania oddalonemu DTE, że jest zdolne do przyjmowania danych. RFR=OFF w celu zatrzymania wysyłania danych przez oddalone DTE. Ustawienie RTS w stanie OFF musi nastąpić przed przepełnieniem bufora wejściowego. Urządzenie musi mieć możliwość odebrania jeszcze przynajmniej 6 znaków. Urządzenie DTE zdolne do transmitowania danych przez obwód TxD monitoruje z kolei swój obwód CTS. Stan : DTE RxD TxD RFR CTS 8 Dane Dane DTE CTS=ON oznacza możliwość nadawania danych. CTS=OFF oznacza konieczność natychmiastowego wstrzymania nadawania. Zwłoka czasowa pomiędzy pojawieniem się stanu OFF a przerwaniem transmisji dopuszcza wysłanie maksymalnie 4 znaków. (Standardy implementacyjne jak RS 232 często nie wykorzystują obwodu RFR tylko obwód RTS. Uwzględniając potrzeby bezpośredniej komunikacji DTE-DTE najnowsze rewizje standardu RS 232 pozwalają zastąpić obwód RTS przez RFR, gdy jest wymagane sterowanie przepływem danych. Standard IEEE 1174 używa tego obwodu i wymaga jego implementacji w celu zapewnienia możliwości sprzętowego sterowania przepływem danych) 2 3 RxD TxD 7 RFR 8 CTS DTE RxD 2 TxD 3 XOFF Dane XON 2 3 RxD TxD DTE Programowe sterowanie przepływem danych Rys.4. Programowe sterowanie przepływem danych. Metoda wykorzystuje specjalne znaki XON i XOFF kodu ASCII przesyłane obwodami TxD i RxD używanymi do przesyłania zwykłych danych. XON jest znakiem sterującym DC1 (11 HEX ) a XOFF znakiem DC3 (13 HEX ). Urządzenie DTE odbierające dane przez obwód RxD może wysłać swoim obwodem TxD znak : XOFF w celu powstrzymania wysyłania danych przez oddalone DTE. Wysłanie XOFF musi nastąpić przed przepełnieniem swojego bufora wejściowego. Po wysłaniu znaku XOFF urządzenie musi mieć możliwość odebrania jeszcze przynajmniej 60 znaków (nadawca musi mieć czas zdekodować i zaakceptować polecenie wstrzymania transmisji, parametr ten można uzależnić od szybkości transmisji i urządzeń współpracujących). XON w celu wznowienia uprzednio zatrzymanej transmisji. Urządzenie DTE nadające dane, które odebrało przez obwód RxD polecenie : XOF zawiesza nadawanie. Po pojawieniu się rozkazu XOF w czasie transmisji ciągu znaków, nadawca może nadać jeszcze maksymalnie 30 znaków.

67 XON może wznowić zawieszony transfer danych. Podczas transmisji istnieje możliwość nadawania i odbioru danych w tym samym czasie, wobec czego komunikaty XON/XOFF wysłane są wewnątrz strumienia zwykłych danych. Z tego powodu sterowanie znakowe może być stosowane tylko w przypadku przekazywania danych tekstowych a nie binarnych (dla danych binarnych należy wykorzystywać metodę sprzętową RFR/CTS).

68 Interfejs Komunikacyjny IEE488 IEC-625 IEE-488 GPIB HP-IB IEE IEE 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)

69 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 t ważny 10 nieważny ważny t niektóre gotowe wszystkie gotowe 7 8 niektóre potwierdziły żaden nie jest gotowy wszystkie potwierdziły niektóre gotowe żaden nie potwierdził 15 wszystkie gotowe 17 wszystkie potwierdziły 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

70 Charakterystyka ogólna systemu IEEE-488 Specyfikacja mechaniczna złącze konfiguracja okablowania Magistrala sygnałowa IEEE-488 Funkcje interfejsowe Komunikaty interfejsu IEEE-488 Funkcjonalny podział komunikatów zdalnych Rozkazy uniwersalne (UC) Rozkazy adresowane (AC) Adresy (AD) Komunikaty synchronizacji (HS) Komunikaty zależne od urządzenia (DD) Komunikaty stanu (ST) Komunikaty wtórne (SE) Cykl synchronizacji (Handshake) Budowa interfejsu IEEE-488 Funkcjonalny schemat blokowy interfejsu Parametry nadajników i odbiorników linii Żądania obsługi przyrządów Kontrola szeregowa Kontrola równoległa Kontroler systemu w/ standardu IEEE-488.2

71 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 pomiarowo-kontrolnymi i interpretacji danych. Standard umożliwia ujednolicenie sterowania urządzeniami pochodzącymi od różnych wytwórców. Stanowi warstwę programową normy IEEE 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),

72 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 )

73 SCPI zakłada zgodność urządzeń ze specyfikacją IEEE Polecenia wspólne IEEE 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 *ESE <NRf> *ESE? *ESR? *IDN? *OPC *OPC? *RST *SRE <NRf> *SRE? *STB? *TST? *WAI - Zerowanie systemu statusowego. - Ustawienie maski standardowego rejestru zdarzeń. - Zapytanie o maskę standardowego rejestru zdarzeń. - Zapytanie o zawartość standardowego rejestru zdarzeń. - Zapytanie o dane identyfikacyjne. - Zgłoszenie wykonania operacji bitem OPC. - Zgłoszenie wykonania operacji odpowiedzią '1'. - Zerowanie urządzenia. - Ustawienie maski rejestru statusowego. - Zapytanie o maskę rejestru statusowego. - Zapytanie o zawartość rejestru statusowego. - Wykonaj testowanie i podaj wynik testowania. - Czekaj na zakończenie operacji nakładkowych.

74

75

76 Architektura systemów pomiarowych - interfejsy R T SEGMENT SIECI PRZEMYSŁOWEJ R T Nadajnik/ odbiornik RX TX Węzeł A MIKROPROCESOR Aplikacja + protokół komunikacyjny Nadajnik/ odbiornik Rx Tx Układ specjalizowany realizujący protokół Węzeł B Nadajnik/ odbiornik Rx Tx Węzeł C Protokół komunikacyjny MIKROPROCESOR APLIKACJA Rys. Struktury węzłów sieci przemysłowych PROTOKOŁY KOMUNIKACYJNE (wybrane) CAN (Controller Area Network BOSCH ISO 11898) INTERBUS-S (Phoenix Contact) LONWORKS PROFIBUS

77 ARCHITEKTURA MULTIPLEKSEROWA A/C 4-20 ma 4-20 ma Węzeł anal. 1 Węzeł anal. n ARCHITEKTURA MIESZANA (SIECIOWO-MULTIPLEKSEROWA) Protokół komunikacyjny A/C 4-20 ma 4-20 ma Węzeł anal. 1 Węzeł anal. n Węzeł 2 Węzeł n ARCHITEKTURA SIECIOWA Protokół komunikacyjny Węzeł 1 Węzeł 2 Węzeł n

78 HOST RS - 232C RS-485 RS - 232C Termination Resistor DATA OUTPUT TXD+ TXD- RXD+ RXD- Isolation Barrier Isolated COM GND Opto Coupler PWR GND DATA INPUT RXD+ TXD+ TXD- HOST COMPUTER RXD- RXD+ MAC-1060 #1 Isolation Barrier RXD- Isolated COM GND Opto Coupler PWR GND TXD+ TXD- Connected to earth ground MAC-1060 #2 RXD+ RXD- Isolated COM GND Opto Coupler TXD+ PWR GND TXD- MAC-1060 #8 DATA OUTPUT TXD+ TXD- RXD+ RXD- Isolation Barrier Isolated COM GND Opto Coupler PWR GND DATA INPUT HOST COMPUTER RXD+ RXD- TXD+ TXD- MAC-1060 Opto Coupler Connected to earth ground

79 Akwizycja danych pomiarowych (ADP) data acquisition (DAQ) Dokumentacje 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)..

80 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 10s. 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 SYSTEMY POMIAROWE WIELKOŚCI FIZYCZNYCH 80

81 rys. Moduł 1B21 konwerter napięcie prąd z izolacją elektryczną Rys. 5B37 Functional Block Diagram SYSTEMY POMIAROWE WIELKOŚCI FIZYCZNYCH 81

82 Analogowe wejścia AI rys. Schemat blokowy obwodów analogowych wejść systemów ADP. Obwody analogowych wejść Mux Each E Series device has one analog-to-digital converter (ADC). The multiplexer (mux) routes one AI channel at a time to the ADC through the NI-PGIA. The mux also gives you the ability to use three different analog input terminal configuration. For more information, refer to the Analog Input Terminal Configuration section. Instrumentation Amplifier (NI-PGIA) The NI programmable gain instrumentation amplifier (NI-PGIA) is a measurement and instrument class amplifier that guarantees minimum settling times at all gains. The NI-PGIA can amplify or attenuate an AI signal to ensure that you use the maximum resolution of the ADC. E Series devices use the NI-PGIA to deliver full 16- and 12-bit accuracy when sampling multiple channels at high gains and fast rates. E Series devices can sample channels in any order at the maximum conversion rate, and you can individually program each channel with a different input polarity and range, as discussed in the Input Polarity and Range section. A/D Converter The analog-to-digital converter (ADC) digitizes the AI signal by converting the analog voltage into a digital number. AI FIFO A large first-in-first-out (FIFO) buffer holds data during A/D conversions to ensure that no data is lost. E Series devices can handle multiple A/D conversion operations with DMA, interrupts, or programmed I/O. Analog Trigger Refer to the Analog Input Triggering section for information about the trigger circuitry of E Series devices. AI Timing Signals Refer to the Analog Input Timing Signals section for information about the analog input timing signals available on E Series devices. SYSTEMY POMIAROWE WIELKOŚCI FIZYCZNYCH 82

83 Polaryzacja sygnałów wejściowych i zakres Konfiguracja złącza analogowego wejścia To be flexible enough to interface with various signal sources, E Series devices have three different terminal configurations, also referred to as input modes: Non-Referenced Single-Ended (NRSE) input, Referenced Single-Ended (RSE) input, and differential (DIFF) input. Konfiguracja złącza AI DIFF RSE NRSE Opis A channel configured in DIFF mode uses two AI lines. One line connects to the positive input of the device programmable gain instrumentation amplifier (PGIA), and the other connects to the negative input of the PGIA. A channel configured in RSE mode uses one AI line, which connects to the positive input of the PGIA. The negative input of the PGIA is internally tied to AI ground (AI GND). A channel configured in NRSE mode uses one AI line, which connects to the positive input of the PGIA. The negative input of the PGIA connects to the AI sense (AI SENSE) input. SYSTEMY POMIAROWE WIELKOŚCI FIZYCZNYCH 83

84 Input Signal Source Type Floating Signal Sources (Not Connect To Building Ground) Examples Ungrounded thermocouples Signal conditioning with isolated outputs Battery devices Ground-Referenced Signal Sources Examples Plug-in instruments with non-isolated outputs Differential (DIFF) Single-Ended Ground Referenced (RSE) NOT RECOMMENDED Ground-loop losses, Vg, are added to measured signal. Single-Ended Non-Referenced (NRSE) Types of Signal Sources When configuring the input channels and making signal connections, first determine whether the signal sources are floating or ground-referenced. Floating Signal Sources A floating signal source is not connected to the building ground system, but has an isolated ground-reference point. Some examples of floating signal sources are outputs of transformers, thermocouples, battery-powered devices, optical isolators, and isolation amplifiers. An instrument or device that has an isolated output is a floating signal source. You must connect the ground reference of a floating signal to the AI ground of the device to establish a local or onboard reference for the signal. Otherwise, the measured input signal varies as the source floats outside the common-mode input range. Ground-Referenced Signal Sources A ground-referenced signal source is connected to the building system ground, so it is already connected to a common ground point with respect to the device, assuming that the computer is plugged into the same power system as the source. Non-isolated outputs of instruments and devices that plug into the building power system fall into this category. The difference in ground potential between two instruments connected to the same building power system is typically between 1 and 100 mv, but the difference can be much higher if power distribution circuits are improperly connected. If a grounded signal source is incorrectly measured, this difference can appear as measurement error. Follow the connection instructions for grounded signal sources to eliminate this ground potential difference from the measured signal. SYSTEMY POMIAROWE WIELKOŚCI FIZYCZNYCH 84

85 Differential Connection Considerations A DIFF connection is one in which the AI signal has its own reference signal or signal return path. These connections are available when the selected channel is configured in DIFF input mode. The input signal is connected to the positive input of the PGIA, and its reference signal, or return, is connected to the negative input of the PGIA. When you configure a channel for DIFF input, each signal uses two multiplexer inputs one for the signal and one for its reference signal. Therefore, half as many DIFF channel pairs are available compared to individual channels. Use DIFF input connections for any channel that meets any of the following conditions: The input signal is low-level (less than 1 V). The leads connecting the signal to the device are greater than 3 m (10 ft.). The input signal requires a separate ground-reference point or return signal. The signal leads travel through noisy environments. DIFF signal connections reduce noise pickup and increase common-mode noise rejection. DIFF signal connections also allow input signals to float within the common-mode limits of the PGIA. Differential Connections for Ground-Referenced Signal Sources Figure 2-9 shows how to connect a ground-referenced signal source to a channel on the device configured in DIFF mode. Figure 2-9. Differential Connections for Ground-Referenced Signal Sources With this type of connection, the PGIA rejects both the common-mode noise in the signal and the ground potential difference between the signal source and the device ground, shown as Vcm in this figure. Common-Mode Signal Rejection Considerations Ground-referenced signal sources with differential connections to the device are referenced to some ground point with respect to the device. In this case, the PGIA can reject any voltage caused by ground potential differences between the signal source and the device. In addition, with DIFF input connections, the PGIA can reject common-mode noise pickup in the leads connecting the signal sources to the device. The PGIA can reject common-mode signals as long as AI + and AI (input signals) are both within ±11 V of AI GND. Differential Connections for Non-Referenced or Floating Signal Sources Figure 2-10 shows how to connect a floating signal source to a channel configured in DIFF mode. SYSTEMY POMIAROWE WIELKOŚCI FIZYCZNYCH 85

86 Figure Connecting a Floating Signal Source to a DIFF Mode Channel The previous figure shows two bias resistors connected in parallel with the signal leads of a floating signal source. If you do not use the resistors and the source is truly floating, the source is not likely to remain within the commonmode signal range of the PGIA. The PGIA then saturates, causing erroneous readings. You must reference the source to AI GND. The easiest way to make this reference is to connect the positive side of the signal to the positive input of the PGIA and connect the negative side of the signal to AI GND as well as to the negative input of the PGIA, without using resistors. This connection works well for DC-coupled sources with low source impedance (less than 100 ). However, for larger source impedances, this connection leaves the DIFF signal path significantly off balance. Noise that couples electrostatically onto the positive line does not couple onto the negative line because it is connected to ground. Hence, this noise appears as a DIFF-mode signal instead of a common-mode signal, and the PGIA does not reject it. In this case, instead of directly connecting the negative line to AI GND, connect the negative line to AI GND through a resistor that is about 100 times the equivalent source impedance. The resistor puts the signal path nearly in balance, so that about the same amount of noise couples onto both connections, yielding better rejection of electrostatically coupled noise. This configuration does not load down the source (other than the very high input impedance of the PGIA). You can fully balance the signal path by connecting another resistor of the same value between the positive input and AI GND, as shown in this figure. This fully balanced configuration offers slightly better noise rejection but has the disadvantage of loading the source down with the series combination (sum) of the two resistors. If, for example, the source impedance is 2 kand each of the two resistors is 100 k, the resistors load down the source with 200 kand produce a 1% gain error. Both inputs of the PGIA require a DC path to ground in order for the PGIA to work. If the source is AC coupled (capacitively coupled), the PGIA needs a resistor between the positive input and AI GND. If the source has lowimpedance, choose a resistor that is large enough not to significantly load the source but small enough not to produce significant input offset voltage as a result of input bias current (typically 100 kto 1 M). In this case, connect the negative input directly to AI GND. If the source has high output impedance, balance the signal path as previously described using the same value resistor on both the positive and negative inputs; be aware that there is some gain error from loading down the source Single-Ended Connection Considerations A single-ended connection is one in which the device AI signal is referenced to a ground that it can share with other input signals. The input signal connects to the positive input of the PGIA, and the ground connects to the negative input of the PGIA. When every channel is configured for single-ended input, up to 64 AI channels are available. You can use single-ended input connections for any input signal that meets the following conditions: The input signal is high-level (greater than 1 V). The leads connecting the signal to the device are less than 10 ft. (3 m). The input signal can share a common reference point with other signals. DIFF input connections are recommended for greater signal integrity for any input signal that does not meet the preceding conditions. SYSTEMY POMIAROWE WIELKOŚCI FIZYCZNYCH 86

87 Using the DAQ Assistant, you can configure the channels for RSE or NRSE input modes. RSE mode is used for floating signal sources; in this case, the device provides the reference ground point for the external signal. NRSE input mode is used for ground-referenced signal sources; in this case, the external signal supplies its own reference ground point and the device should not supply one. Refer to the DAQ Assistant Help for more information about the DAQ Assistant. In the single-ended modes, more electrostatic and magnetic noise couples into the signal connections than in DIFF configurations. The coupling is the result of differences in the signal path. Magnetic coupling is proportional to the area between the two signal conductors. Electrical coupling is a function of how much the electric field differs between the two conductors. With this type of connection, the PGIA rejects both the common-mode noise in the signal and the ground potential difference between the signal source and the device ground, shown as Vcm in Figure Common-Mode Signal Rejection Considerations Ground-referenced signal sources with single-ended connections to a device are referenced to some ground point with respect to the device. In this case, the PGIA can reject any voltage caused by ground potential differences between the signal source and the device. Single-Ended Connections for Floating Signal Sources (RSE Configuration) Figure 2-11 shows how to connect a floating signal source to a channel configured for RSE mode. Figure Single-Ended Connections for Floating Signal Sources (RSE Configuration) Single-Ended Connections for Grounded Signal Sources (NRSE Configuration) To measure a grounded signal source with a single-ended configuration, you must configure your device in the NRSE input configuration. Connect the signal to the positive input of the PGIA, and connect the signal local ground reference to the negative input of the PGIA. The ground point of the signal, therefore, connects to the AI SENSE pin, as shown in Figure Any potential difference between the device ground and the signal ground appears as a common-mode signal at both the positive and negative inputs of the PGIA, and this difference is rejected by the amplifier. If the input circuitry of a device were referenced to ground, as it is in the RSE input configuration, this difference in ground potentials would appear as an error in the measured voltage. SYSTEMY POMIAROWE WIELKOŚCI FIZYCZNYCH 87

88 Figure Single-Ended Connections for Grounded Signal Sources (NRSE Configuration) Field Wiring Considerations Environmental noise can seriously affect the measurement accuracy of the device if you do not take proper care when running signal wires between signal sources and the device. The following recommendations apply mainly to AI signal routing to the device, although they also apply to signal routing in general. Minimize noise pickup and maximize measurement accuracy by taking the following precautions: Use DIFF AI connections to reject common-mode noise. Use individually shielded, twisted-pair wires to connect AI signals to the device. With this type of wire, the signals attached to the positive and negative input channels are twisted together and then covered with a shield. You then connect this shield only at one point to the signal source ground. This kind of connection is required for signals traveling through areas with large magnetic fields or high electromagnetic interference. Refer to the NI Developer Zone document, Field Wiring and Noise Considerations for Analog Signals, for more information. Configuring AI Modes in Software You can program channels on an E Series device to acquire in different modes, but once a channel mode is specified, it cannot be reused for another mode. For example, to configure AI 0 for DIFF mode and AI 1 for RSE mode, configure AI 0 and AI 8 in DIFF mode and AI 1 and AI GND in RSE mode. In this configuration, AI 8 is not used in a single-ended configuration Traditional NI-DAQ (Legacy) NI-DAQmx SYSTEMY POMIAROWE WIELKOŚCI FIZYCZNYCH 88

Język programowania C51 dla mikroprocesorów rodziny MCS51

Język programowania C51 dla mikroprocesorów rodziny MCS51 Język programowania C51 dla mikroprocesorów rodziny MCS51 Typy danych Typ danej Rozmiar Zakres wartości bit 1 bit 0 lub 1 signed char 1 bajt -128 do +127 unsigned char 1 bajt 0 do 255 signed int 2 bajty

Bardziej szczegółowo

petla:... ; etykieta określa adres w pamięci kodu (docelowe miejsce skoku) DJNZ R7, petla

petla:... ; etykieta określa adres w pamięci kodu (docelowe miejsce skoku) DJNZ R7, petla Asembler A51 1. Symbole Nazwy symboliczne Symbol jest nazwą, która może być użyta do reprezentowania wartości stałej numerycznej, wyrażenia, ciągu znaków (tekstu), adresu lub nazwy rejestru. Nazwy symboliczne

Bardziej szczegółowo

Wstęp do assemblera MA51

Wstęp do assemblera MA51 Wstęp do assemblera MA51 Ryszard J. Barczyński, 2017 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego Assembler Assembler to język programowania

Bardziej szczegółowo

CYKL ROZKAZOWY = 1 lub 2(4) cykle maszynowe

CYKL ROZKAZOWY = 1 lub 2(4) cykle maszynowe MIKROKONTROLER RODZINY MCS 5 Cykl rozkazowy mikrokontrolera rodziny MCS 5 Mikroprocesory rodziny MCS 5 zawierają wewnętrzny generator sygnałów zegarowych ustalający czas trwania cyklu zegarowego Częstotliwość

Bardziej szczegółowo

architektura komputerów w 1 1

architektura komputerów w 1 1 8051 Port P2 Port P3 Transm. szeregowa Timery T0, T1 Układ przerwań Rejestr DPTR Licznik rozkazów Pamięć programu Port P0 Port P1 PSW ALU Rejestr B SFR akumulator 8051 STRUKTURA architektura komputerów

Bardziej szczegółowo

1. Dyrektywy asemblerowe

1. Dyrektywy asemblerowe 1. Dyrektywy asemblerowe Asembler A51 ma kilka dyrektyw, które pozwalają na definiowanie symboli, wartości, rezerwację i inicjalizację pamięci oraz sterowanie umiejscowieniem kodu programu. Dyrektywy nie

Bardziej szczegółowo

Assembler A A 51 ASSEMBLER

Assembler A A 51 ASSEMBLER Assembler A51-1 - A 51 ASSEMBLER Operatory, adresowanie i wyrażenia Programy asemblera dla procesorów 8051 składają się ze zbioru instrukcji. Pojedyncza linia programu może zawierać najwyżej jedną instrukcję

Bardziej szczegółowo

Mikrokontroler ATmega32. Język symboliczny

Mikrokontroler ATmega32. Język symboliczny Mikrokontroler ATmega32 Język symboliczny 1 Język symboliczny (asembler) jest językiem niskiego poziomu - pozwala pisać programy złożone z instrukcji procesora. Kody instrukcji są reprezentowane nazwami

Bardziej szczegółowo

Wstęp. do języka C na procesor 8051. (kompilator RC51)

Wstęp. do języka C na procesor 8051. (kompilator RC51) Wstęp do języka C na procesor 8051 (kompilator RC51) Kompilator języka C Kompilator RC51 jest kompilatorem języka C w standardzie ANSI Ograniczeń w stosunku do ANSI jest niewiele głównie rzadkie operacje

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Wykład 3 Jan Kazimirski 1 Podstawowe elementy komputera. Procesor (CPU) 2 Plan wykładu Podstawowe komponenty komputera Procesor CPU Cykl rozkazowy Typy instrukcji Stos Tryby adresowania

Bardziej szczegółowo

MIKROKONTROLERY I MIKROPROCESORY

MIKROKONTROLERY I MIKROPROCESORY PLAN... work in progress 1. Mikrokontrolery i mikroprocesory - architektura systemów mikroprocesorów ( 8051, AVR, ARM) - pamięci - rejestry - tryby adresowania - repertuar instrukcji - urządzenia we/wy

Bardziej szczegółowo

Struktura i działanie jednostki centralnej

Struktura i działanie jednostki centralnej Struktura i działanie jednostki centralnej ALU Jednostka sterująca Rejestry Zadania procesora: Pobieranie rozkazów; Interpretowanie rozkazów; Pobieranie danych Przetwarzanie danych Zapisywanie danych magistrala

Bardziej szczegółowo

PMiK Programowanie Mikrokontrolera 8051

PMiK Programowanie Mikrokontrolera 8051 PMiK Programowanie Mikrokontrolera 8051 Wykład 3 Mikrokontroler 8051 PMiK Programowanie mikrokontrolera 8051 - wykład S. Szostak (2006) Zmienna typu bit #define YES 1 // definicja stałych #define NO 0

Bardziej szczegółowo

Lista rozkazów mikrokontrolera 8051

Lista rozkazów mikrokontrolera 8051 Lista rozkazów mikrokontrolera 8051 Spis treści: Architektura mikrokontrolera Rozkazy Architektura mikrokontrolera Mikrokontroler 8051 posiada trzy typy pamięci: układ zawiera pamięć wewnętrzną (On-Chip

Bardziej szczegółowo

Kompilator języka C na procesor 8051 RC51 implementacja

Kompilator języka C na procesor 8051 RC51 implementacja Kompilator języka C na procesor 8051 RC51 implementacja Implementowane typy danych bit 1 bit char lub char signed 8 bitów char unsigned 8 bitów int lub signed int 16 bitów unsigned int 16 bitów long lub

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Architektura komputerów. Asembler procesorów rodziny x86

Architektura komputerów. Asembler procesorów rodziny x86 Architektura komputerów Asembler procesorów rodziny x86 Architektura komputerów Asembler procesorów rodziny x86 Rozkazy mikroprocesora Rozkazy mikroprocesora 8086 można podzielić na siedem funkcjonalnych

Bardziej szczegółowo

MIKROPROCESORY architektura i programowanie

MIKROPROCESORY architektura i programowanie Systematyczny przegląd. (CISC) SFR umieszczane są w wewnętrznej pamięci danych (80H 0FFH). Adresowanie wyłącznie bezpośrednie. Rejestry o adresach podzielnych przez 8 są też dostępne bitowo. Adres n-tego

Bardziej szczegółowo

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2 Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2 Literatura: www.zilog.com Z80 Family, CPU User Manual Cykle magistrali w mikroprocesorze Z80 -odczyt kodu rozkazu, -odczyt-zapis pamięci,

Bardziej szczegółowo

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

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne Spis treści 5 Spis treœci Co to jest mikrokontroler? Wprowadzenie... 11 Budowa systemu komputerowego... 12 Wejścia systemu komputerowego... 12 Wyjścia systemu komputerowego... 13 Jednostka centralna (CPU)...

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

Dyrektywy asemblerowe

Dyrektywy asemblerowe Dyrektywy asemblerowe Asembler A51 ma kilka dyrektyw, które pozwalają na definiowanie symboli, wartości, rezerwację i inicjalizację pamięci oraz sterowanie umiejscowieniem kodu programu. Dyrektywy nie

Bardziej szczegółowo

Instytut Teleinformatyki

Instytut Teleinformatyki Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i mikrokontrolery Obsługa portu szeregowego laboratorium: 05 autor: mgr inż. Michal Lankosz dr hab.

Bardziej szczegółowo

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW Projektowanie urządzeń cyfrowych przy użyciu układów TTL polegało na opracowaniu algorytmu i odpowiednim doborze i zestawieniu układów realizujących różnorodne funkcje

Bardziej szczegółowo

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji

Bardziej szczegółowo

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia

Bardziej szczegółowo

PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA

PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje Deklaracja zmiennych Zmienne łańcuchowe

Bardziej szczegółowo

Obszar rejestrów specjalnych. Laboratorium Podstaw Techniki Mikroprocesorowej Instytut Mikroelektroniki i Optoelektroniki PW

Obszar rejestrów specjalnych. Laboratorium Podstaw Techniki Mikroprocesorowej Instytut Mikroelektroniki i Optoelektroniki PW Laboratorium Podstaw Techniki Mikroprocesorowej Instytut Mikroelektroniki i Optoelektroniki PW MIKROKONTROLER 85 - wiadomości podstawowe. Schemat blokowy mikrokontrolera 85 Obszar rejestrów specjalnych

Bardziej szczegółowo

MIKROPROCESORY architektura i programowanie

MIKROPROCESORY architektura i programowanie Struktura portów (CISC) Port to grupa (zwykle 8) linii wejścia/wyjścia mikrokontrolera o podobnych cechach i funkcjach Większość linii we/wy może pełnić dwie lub trzy rozmaite funkcje. Struktura portu

Bardziej szczegółowo

Instytut Teleinformatyki

Instytut Teleinformatyki Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i mikrokontrolery Przerwania laboratorium: 04 autor: mgr inż. Michał Lankosz dr hab. Zbisław Tabor,

Bardziej szczegółowo

Start Bity Bit Stop 1 Bit 0 1 2 3 4 5 6 7 Par. 1 2. Rys. 1

Start Bity Bit Stop 1 Bit 0 1 2 3 4 5 6 7 Par. 1 2. Rys. 1 Temat: Obsługa portu komunikacji szeregowej RS232 w systemie STRC51. Ćwiczenie 2. (sd) 1.Wprowadzenie do komunikacji szeregowej RS232 Systemy bazujące na procesorach C51 mogą komunikować się za pomocą

Bardziej szczegółowo

Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe

Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe Ryszard J. Barczyński, 2009 2013 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego

Bardziej szczegółowo

Programowanie mikrokontrolera 8051

Programowanie mikrokontrolera 8051 Programowanie mikrokontrolera 8051 Podane poniżej informacje mogą pomóc w nauce programowania mikrokontrolerów z rodziny 8051. Opisane są tu pewne specyficzne cechy tych procesorów a także podane przykłady

Bardziej szczegółowo

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów Marcin Stępniak Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów 1. Informacje Poniższe laboratoria zawierają podsumowanie najważniejszych informacji na temat

Bardziej szczegółowo

Technika mikroprocesorowa I Wykład 2

Technika mikroprocesorowa I Wykład 2 Technika mikroprocesorowa I Wykład 2 Literatura: www.zilog.com Z80 Family, CPU User Manual Cykle magistrali w mikroprocesorze Z80 -odczyt kodu rozkazu, -odczyt-zapis pamięci, -odczyt-zapis urządzenia we-wy,

Bardziej szczegółowo

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Poradnik programowania procesorów AVR na przykładzie ATMEGA8 Poradnik programowania procesorów AVR na przykładzie ATMEGA8 Wersja 1.0 Tomasz Pachołek 2017-13-03 Opracowanie zawiera opis podstawowych procedur, funkcji, operatorów w języku C dla mikrokontrolerów AVR

Bardziej szczegółowo

architektura komputerów w 1 1

architektura komputerów w 1 1 8051 Port P2 Port P3 Serial PORT Timers T0, T1 Interrupt Controler DPTR Register Program Counter Program Memory Port P0 Port P1 PSW ALU B Register SFR accumulator STRUCTURE OF 8051 architektura komputerów

Bardziej szczegółowo

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)

Bardziej szczegółowo

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h> Szablon programu: /* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include /* opcjonalne: deklaracja typów o rozmiarze jednego i dwóch

Bardziej szczegółowo

Przerwania w architekturze mikrokontrolera X51

Przerwania w architekturze mikrokontrolera X51 Przerwania w architekturze mikrokontrolera X51 (przykład przerwanie zegarowe) Ryszard J. Barczyński, 2009 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku

Bardziej szczegółowo

Struktura programu w asemblerze mikrokontrolera 8051

Struktura programu w asemblerze mikrokontrolera 8051 Struktura programu w asemblerze mikrokontrolera 8051 Program w asemblerze, dający ten sam kod wynikowy, może być napisany na wiele sposobów. Źle napisany program po pewnym czasie (a być może już w czasie

Bardziej szczegółowo

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C Grzegorz Cygan Wstęp do programowania mikrosterowników w języku C Mikrosterownik Inne nazwy: Microcontroler (z języka angielskiego) Ta nazwa jest powszechnie używana w Polsce. Mikrokomputer jednoukładowy

Bardziej szczegółowo

Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne

Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne Ryszard J. Barczyński, 2016 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego

Bardziej szczegółowo

Podstawy programowania w języku C

Podstawy programowania w języku C Podstawy programowania w języku C WYKŁAD 1 Proces tworzenia i uruchamiania programów Algorytm, program Algorytm przepis postępowania prowadzący do rozwiązania określonego zadania. Program zapis algorytmu

Bardziej szczegółowo

TECHNIKA MIKROPROCESOROWA

TECHNIKA MIKROPROCESOROWA LABORATORIUM TECHNIKA MIKROPROCESOROWA Port transmisji szeregowej USART MCS'51 Opracował: Tomasz Miłosławski 1. Cel ćwiczenia Celem ćwiczenia jest zapoznanie się ze sposobami komunikacji mikrokontrolera

Bardziej szczegółowo

Zmienne, stałe i operatory

Zmienne, stałe i operatory Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe

Bardziej szczegółowo

2 Przygotował: mgr inż. Maciej Lasota

2 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania

Bardziej szczegółowo

Wstępdo assemblera MA51

Wstępdo assemblera MA51 no MACRO yes Wstępdo assemblera MA51 c.d. makrodefinicje Ryszard J. Barczyński, 2017 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego Assembler

Bardziej szczegółowo

Architektura mikrokontrolera MCS51

Architektura mikrokontrolera MCS51 Architektura mikrokontrolera MCS51 Ryszard J. Barczyński, 2017 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego Architektura mikrokontrolera

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki Komputer jest urządzeniem, którego działanie opiera się na wykonywaniu przez procesor instrukcji pobieranych z pamięci operacyjnej

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Architektura mikrokontrolera MCS51

Architektura mikrokontrolera MCS51 Architektura mikrokontrolera MCS51 Ryszard J. Barczyński, 2018 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego Architektura mikrokontrolera

Bardziej szczegółowo

Hardware mikrokontrolera X51

Hardware mikrokontrolera X51 Hardware mikrokontrolera X51 Ryszard J. Barczyński, 2016 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego Hardware mikrokontrolera X51 (zegar)

Bardziej szczegółowo

Język C zajęcia nr 11. Funkcje

Język C zajęcia nr 11. Funkcje Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji

Bardziej szczegółowo

Organizacja typowego mikroprocesora

Organizacja typowego mikroprocesora Organizacja typowego mikroprocesora 1 Architektura procesora 8086 2 Architektura współczesnego procesora 3 Schemat blokowy procesora AVR Mega o architekturze harwardzkiej Wszystkie mikroprocesory zawierają

Bardziej szczegółowo

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika Rejestry procesora Procesor podczas wykonywania instrukcji posługuje się w dużej części pamięcią RAM. Pobiera z niej kolejne instrukcje do wykonania i dane, jeżeli instrukcja operuje na jakiś zmiennych.

Bardziej szczegółowo

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41 Programowanie w C++ Wykład 2 Katarzyna Grzelak 5 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41 Reprezentacje liczb w komputerze K.Grzelak (Wykład 1) Programowanie w C++ 2 / 41 Reprezentacje

Bardziej szczegółowo

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Temat 1: Podstawowe pojęcia: program, kompilacja, kod Temat 1: Podstawowe pojęcia: program, kompilacja, kod wynikowy. Przykłady najprostszych programów. Definiowanie zmiennych. Typy proste. Operatory: arytmetyczne, przypisania, inkrementacji, dekrementacji,

Bardziej szczegółowo

organizacja procesora 8086

organizacja procesora 8086 Systemy komputerowe Procesor 8086 - tendencji w organizacji procesora organizacja procesora 8086 " # $ " % strali " & ' ' ' ( )" % *"towego + ", -" danych. Magistrala adresowa jest 20.bitowa, co pozwala

Bardziej szczegółowo

Przykładowe pytania DSP 1

Przykładowe pytania DSP 1 Przykładowe pytania SP Przykładowe pytania Systemy liczbowe. Przedstawić liczby; -, - w kodzie binarnym i hexadecymalnym uzupełnionym do dwóch (liczba 6 bitowa).. odać dwie liczby binarne w kodzie U +..

Bardziej szczegółowo

Wstęp...9. 1. Architektura... 13

Wstęp...9. 1. Architektura... 13 Spis treści 3 Wstęp...9 1. Architektura... 13 1.1. Schemat blokowy...14 1.2. Pamięć programu...15 1.3. Cykl maszynowy...16 1.4. Licznik rozkazów...17 1.5. Stos...18 1.6. Modyfikowanie i odtwarzanie zawartości

Bardziej szczegółowo

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania Architektura Systemów Komputerowych Jednostka ALU Przestrzeń adresowa Tryby adresowania 1 Jednostka arytmetyczno- logiczna ALU ALU ang: Arythmetic Logic Unit Argument A Argument B A B Ci Bit przeniesienia

Bardziej szczegółowo

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

ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM ĆWICZENIE 5 TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM Wiadomości wstępne: Port szeregowy może pracować w czterech trybach. Tryby różnią się między sobą liczbą bitów

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania wykład 2 Piotr Cybula Wydział Matematyki i Informatyki UŁ 2012/2013 http://www.math.uni.lodz.pl/~cybula Język programowania Każdy język ma swoją składnię: słowa kluczowe instrukcje

Bardziej szczegółowo

Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów

Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów Operacje na stosie Stos jest obszarem pamięci o dostępie LIFO (Last Input First Output). Adresowany jest niejawnie przez rejestr segmentowy SS oraz wskaźnik wierzchołka stosu SP. Używany jest do przechowywania

Bardziej szczegółowo

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 6 Wskaźniki Krzysztof Banaś Podstawy programowania 1 Adresy zmiennych Język C pozwala na operowanie adresami w pamięci stąd, między innymi, kwalifikowanie C jako języka relatywnie

Bardziej szczegółowo

Liczniki, rejestry lab. 08 Mikrokontrolery WSTĘP

Liczniki, rejestry lab. 08 Mikrokontrolery WSTĘP Liczniki, rejestry lab. 08 PODSTAWY TECHNIKI CYFROWEJ I MIKROPROCESOROWEJ EIP KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII WWW.KEIASPE.AGH.EDU.PL AKADEMIA GÓRNICZO-HUTNICZA WWW.AGH.EDU.PL

Bardziej szczegółowo

end start ; ustawienie punktu startu programu i koniec instrukcji w assemblerze.

end start ; ustawienie punktu startu programu i koniec instrukcji w assemblerze. Struktura programu typu program.com ; program według modelu tiny name "mycode" ; nazwa pliku wyjściowego (maksymalnie 8 znaków) org 100h ; początek programu od adresu IP = 100h ; kod programu ret ; koniec

Bardziej szczegółowo

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

Pośredniczy we współpracy pomiędzy procesorem a urządzeniem we/wy. W szczególności do jego zadań należy: Współpraca mikroprocesora z urządzeniami zewnętrznymi Urządzenia wejścia-wyjścia, urządzenia których zadaniem jest komunikacja komputera z otoczeniem (zwykle bezpośrednio z użytkownikiem). Do najczęściej

Bardziej szczegółowo

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe Oprócz zmiennych w programie mamy też stałe, które jak sama nazwa mówi, zachowują swoją wartość przez cały czas działania programu. Można

Bardziej szczegółowo

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu

Bardziej szczegółowo

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4 Przedmiot : Programowanie w języku wewnętrznym Ćwiczenie nr 4 str. 1. 1. Użycie Asemblera. Polecenie JMP. Polecenie nakazuje procesorowi wykonywanie kodu programu od nowego innego miejsca. Miejsce to jest

Bardziej szczegółowo

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED Ćwiczenie 2 Siedmiosegmentowy wyświetlacz LED 2-1. Cel ćwiczenia Celem ćwiczenia jest zapoznanie się studentów ze sposobem obsługi wielopozycyjnego 7-segmentowego wyświetlacza LED multipleksowanego programowo

Bardziej szczegółowo

Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna

Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna Architektura komputerów. Literatura: 1. Piotr Metzger, Anatomia PC, wyd. IX, Helion 2004 2. Scott Mueller, Rozbudowa i naprawa PC, wyd. XVIII, Helion 2009 3. Tomasz Kowalski, Urządzenia techniki komputerowej,

Bardziej szczegółowo

Programowanie mikrokontrolerów (CISC)

Programowanie mikrokontrolerów (CISC) Repertuar instrukcji Operacje arytmetyczne Operacje logiczne Operacje logiczne na bitach Przesyłanie danych Operacje sterujące (skoki) NOTACJA: Rr rejestry R0... R7 direct - wewnętrzny RAM oraz SFR @Ri

Bardziej szczegółowo

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO Rozdział 1. Wybór i instalacja kompilatora języka Pascal 1.1. Współczesne wersje kompilatorów Pascala 1.2. Jak zainstalować

Bardziej szczegółowo

Język programowania PASCAL

Język programowania PASCAL Język programowania PASCAL (wersja podstawowa - standard) Literatura: dowolny podręcznik do języka PASCAL (na laboratoriach Borland) Iglewski, Madey, Matwin PASCAL STANDARD, PASCAL 360 Marciniak TURBO

Bardziej szczegółowo

Programowanie niskopoziomowe

Programowanie niskopoziomowe Programowanie niskopoziomowe ASSEMBLER Teodora Dimitrova-Grekow http://aragorn.pb.bialystok.pl/~teodora/ Program ogólny Rok akademicki 2011/12 Systemy liczbowe, budowa komputera, procesory X86, organizacja

Bardziej szczegółowo

Podstawy programowania w języku C i C++

Podstawy programowania w języku C i C++ Podstawy programowania w języku C i C++ Część czwarta Operatory i wyrażenia Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Logiczny model komputera i działanie procesora. Część 1.

Logiczny model komputera i działanie procesora. Część 1. Logiczny model komputera i działanie procesora. Część 1. Klasyczny komputer o architekturze podanej przez von Neumana składa się z trzech podstawowych bloków: procesora pamięci operacyjnej urządzeń wejścia/wyjścia.

Bardziej szczegółowo

Programowanie hybrydowe C (C++) - assembler. MS Visual Studio Inline Assembler

Programowanie hybrydowe C (C++) - assembler. MS Visual Studio Inline Assembler Programowanie hybrydowe C (C++) - assembler MS Visual Studio Inline Assembler Wprowadzenie Możliwość wprowadzania kodu asemblerowego bezpośrednio w kodzie źródłowym w języku C lub C++ Nie wymagany MASM

Bardziej szczegółowo

Mikroprocesor Operacje wejścia / wyjścia

Mikroprocesor Operacje wejścia / wyjścia Definicja Mikroprocesor Operacje wejścia / wyjścia Opracował: Andrzej Nowak Bibliografia: Urządzenia techniki komputerowej, K. Wojtuszkiewicz Operacjami wejścia/wyjścia nazywamy całokształt działań potrzebnych

Bardziej szczegółowo

Wykład 4. Przegląd mikrokontrolerów 16-bit: - PIC24 - dspic - MSP430

Wykład 4. Przegląd mikrokontrolerów 16-bit: - PIC24 - dspic - MSP430 Wykład 4 Przegląd mikrokontrolerów 16-bit: - PIC24 - dspic - MSP430 Mikrokontrolery PIC Mikrokontrolery PIC24 Mikrokontrolery PIC24 Rodzina 16-bitowych kontrolerów RISC Podział na dwie podrodziny: PIC24F

Bardziej szczegółowo

PMiK Programowanie Mikrokontrolera 8051

PMiK Programowanie Mikrokontrolera 8051 PMiK Programowanie Mikrokontrolera 8051 Wykład 2 Mikrokontroler 8051 PMiK Programowanie mikrokontrolera 8051 - wykład S. Szostak (2006) Mikrokontroler Czyli - wszystko w jednym (EPROM, FLASH) Central Processing

Bardziej szczegółowo

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać MatLab część III 1 Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać komentarze poprzedzone znakiem % Skrypty

Bardziej szczegółowo

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop. 2010 Spis treści Wstęp 11 Część I PASCAL - wprowadzenie do programowania strukturalnego

Bardziej szczegółowo

Sprzęt i architektura komputerów

Sprzęt i architektura komputerów Radosław Maciaszczyk Mirosław Łazoryszczak Sprzęt i architektura komputerów Laboratorium Temat: Mikroprocesory i elementy asemblera Katedra Architektury Komputerów i Telekomunikacji 1. MIKROPROCESORY I

Bardziej szczegółowo

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Turbo Pascal jest językiem wysokiego poziomu, czyli nie jest rozumiany bezpośrednio dla komputera, ale jednocześnie jest wygodny dla programisty,

Bardziej szczegółowo

interfejs szeregowy wyświetlaczy do systemów PLC

interfejs szeregowy wyświetlaczy do systemów PLC LDN SBCD interfejs szeregowy wyświetlaczy do systemów PLC SEM 08.2003 Str. 1/5 SBCD interfejs szeregowy wyświetlaczy do systemów PLC INSTRUKCJA OBSŁUGI Charakterystyka Interfejs SBCD w wyświetlaczach cyfrowych

Bardziej szczegółowo

2. Architektura mikrokontrolerów PIC16F8x... 13

2. Architektura mikrokontrolerów PIC16F8x... 13 Spis treści 3 Spis treœci 1. Informacje wstępne... 9 2. Architektura mikrokontrolerów PIC16F8x... 13 2.1. Budowa wewnętrzna mikrokontrolerów PIC16F8x... 14 2.2. Napięcie zasilania... 17 2.3. Generator

Bardziej szczegółowo

Politechnika Warszawska

Politechnika Warszawska Politechnika Warszawska Wydział Elektryczny Laboratorium Podstaw Techniki Mikroprocesorowej Skrypt do ćwiczenia M.38 Zbieranie pomiarów w czasie rzeczywistym - asembler 1.Wstęp W ćwiczeniach od M.38 do

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

Programowanie strukturalne i obiektowe

Programowanie strukturalne i obiektowe Programowanie strukturalne i obiektowe Język C część I Opracował: Grzegorz Flesik Literatura: A. Majczak, Programowanie strukturalne i obiektowe, Helion, Gliwice 2010 P. Domka, M. Łokińska, Programowanie

Bardziej szczegółowo

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6 JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona

Bardziej szczegółowo

Ćwiczenie nr 6. Programowanie mieszane

Ćwiczenie nr 6. Programowanie mieszane Ćwiczenie nr 6 Programowanie mieszane 6.1 Wstęp Współczesne języki programowania posiadają bardzo rozbudowane elementy językowe, co pozwala w większości przypadków na zdefiniowanie całego kodu programu

Bardziej szczegółowo

Algorytmika i Programowanie VBA 1 - podstawy

Algorytmika i Programowanie VBA 1 - podstawy Algorytmika i Programowanie VBA 1 - podstawy Tomasz Sokół ZZI, IL, PW Czas START uruchamianie środowiska VBA w Excelu Alt-F11 lub Narzędzia / Makra / Edytor Visual Basic konfiguracja środowiska VBA przy

Bardziej szczegółowo

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory Poniżej pozwoliłem sobie za cytować za wikipedią definicję zmiennej w informatyce.

Bardziej szczegółowo

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje. Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using

Bardziej szczegółowo