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

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

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

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

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

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

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

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

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

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

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

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

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

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

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ę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

Ć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

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

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

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

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

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

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

Ć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

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

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

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych: Zmienna i typ Pascal typy danych Zmienna to obiekt, który może przybierać różne wartości. Typ zmiennej to zakres wartości, które może przybierać zmienna. Deklarujemy je w nagłówku poprzedzając słowem kluczowym

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

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych Ćwiczenie nr 3 Wyświetlanie i wczytywanie danych 3.1 Wstęp Współczesne komputery przetwarzają dane zakodowane za pomocą ciągów zerojedynkowych. W szczególności przetwarzane liczby kodowane są w systemie

Bardziej szczegółowo

Mikrokontroler Intel 8051. dr inż. Wiesław Madej

Mikrokontroler Intel 8051. dr inż. Wiesław Madej Mikrokontroler Intel 8051 dr inż. Wiesław Madej Mikrokontroler Intel 8051 Wprowadzony na rynek w 1980 roku Następca rodziny 8048 Intel zakooczył produkcję w marcu 2006 Obecnie produkowany przez różne firmy

Bardziej szczegółowo

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Jak napisać program obliczający pola powierzchni różnych figur płaskich? Część IX C++ Jak napisać program obliczający pola powierzchni różnych figur płaskich? Na początku, przed stworzeniem właściwego kodu programu zaprojektujemy naszą aplikację i stworzymy schemat blokowy

Bardziej szczegółowo

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki. Literatura 1. D. Gajski, Principles of Digital Design, Prentice- Hall, 1997 2. C. Zieliński, Podstawy projektowania układów cyfrowych, PWN, Warszawa 2003 3. G. de Micheli, Synteza i optymalizacja układów

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Wykład 12 Jan Kazimirski 1 Magistrale systemowe 2 Magistrale Magistrala medium łączące dwa lub więcej urządzeń Sygnał przesyłany magistralą może być odbierany przez wiele urządzeń

Bardziej szczegółowo

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów Adresowanie obiektów Bit - stan pojedynczego sygnału - wejście lub wyjście dyskretne, bit pamięci Bajt - 8 bitów - wartość od -128 do +127 Słowo - 16 bitów - wartość od -32768 do 32767 -wejście lub wyjście

Bardziej szczegółowo

Podstawy programowania C. dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/

Podstawy programowania C. dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/ Podstawy programowania C dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/ Tematy Struktura programu w C Typy danych Operacje Instrukcja grupująca Instrukcja przypisania Instrukcja warunkowa Struktura

Bardziej szczegółowo

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

Zagadnienia zaliczeniowe z przedmiotu Układy i systemy mikroprocesorowe elektronika i telekomunikacja, stacjonarne zawodowe

Zagadnienia zaliczeniowe z przedmiotu Układy i systemy mikroprocesorowe elektronika i telekomunikacja, stacjonarne zawodowe Zagadnienia zaliczeniowe z przedmiotu Układy i systemy mikroprocesorowe elektronika i telekomunikacja, stacjonarne zawodowe System mikroprocesorowy 1. Przedstaw schemat blokowy systemu mikroprocesorowego.

Bardziej szczegółowo

Szkolenia specjalistyczne

Szkolenia specjalistyczne Szkolenia specjalistyczne AGENDA Programowanie mikrokontrolerów w języku C na przykładzie STM32F103ZE z rdzeniem Cortex-M3 GRYFTEC Embedded Systems ul. Niedziałkowskiego 24 71-410 Szczecin info@gryftec.com

Bardziej szczegółowo

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński ppelczynski@swspiz.pl

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński ppelczynski@swspiz.pl Programowanie niskopoziomowe dr inż. Paweł Pełczyński ppelczynski@swspiz.pl 1 Literatura Randall Hyde: Asembler. Sztuka programowania, Helion, 2004. Eugeniusz Wróbel: Praktyczny kurs asemblera, Helion,

Bardziej szczegółowo

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

4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD. 13 4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD. Zagadnienia do przygotowania: - budowa i działanie interfejsu szeregowego UART, - tryby pracy,

Bardziej szczegółowo

Architektura Systemów Komputerowych

Architektura Systemów Komputerowych Jarosław Kuchta Architektura Systemów Komputerowych ćwiczenie 3 Arytmetyka całkowita instrukcja laboratoryjna Wprowadzenie Celem ćwiczenia jest zapoznanie się z budową i sposobem działania jednostki arytmetyczno-logicznej

Bardziej szczegółowo

LEKCJA TEMAT: Zasada działania komputera.

LEKCJA TEMAT: Zasada działania komputera. LEKCJA TEMAT: Zasada działania komputera. 1. Ogólna budowa komputera Rys. Ogólna budowa komputera. 2. Komputer składa się z czterech głównych składników: procesor (jednostka centralna, CPU) steruje działaniem

Bardziej szczegółowo

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors. Wykład 3 ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors. Waldi Ravens J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 75 / 146 deklaracje zmiennych instrukcja podstawienia

Bardziej szczegółowo

Lista instrukcji mikroprocesora 8086. Programowanie w assemblerze

Lista instrukcji mikroprocesora 8086. Programowanie w assemblerze Lista instrukcji mikroprocesora 8086 Programowanie w assemblerze Lista instrukcji mikroprocesora 8086 Lista instrukcji mikroprocesora 8086 Lista instrukcji mikroprocesora 8086 Lista instrukcji mikroprocesora

Bardziej szczegółowo

Język programowania: Lista instrukcji (IL Instruction List)

Język programowania: Lista instrukcji (IL Instruction List) Język programowania: Lista instrukcji (IL Instruction List) Wykład w ramach przedmiotu: Sterowniki programowalne Opracował dr inż. Jarosław Tarnawski 08.12.2009 Norma IEC 1131 Języki tekstowe Języki graficzne

Bardziej szczegółowo

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak JAVA Wstęp do programowania w języku obiektowym Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Platforma JSE: Opracował: Andrzej Nowak JSE (Java Standard

Bardziej szczegółowo

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float

Bardziej szczegółowo

Elementy oprogramowania sterowników. Instrukcje podstawowe, funkcje logiczne, układy czasowe i liczenia, znaczniki

Elementy oprogramowania sterowników. Instrukcje podstawowe, funkcje logiczne, układy czasowe i liczenia, znaczniki Elementy oprogramowania sterowników. Instrukcje podstawowe, funkcje logiczne, układy czasowe i liczenia, znaczniki Norma IEC-61131-3 definiuje typy języków: graficzne: schematów drabinkowych LD, schematów

Bardziej szczegółowo

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

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej Struktura stanowiska laboratoryjnego Na rysunku 1.1 pokazano strukturę stanowiska laboratoryjnego Z80 z interfejsem częstościomierza- czasomierz PFL 21/22. Rys.1.1. Struktura stanowiska. Interfejs częstościomierza

Bardziej szczegółowo

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa... 9. Wstęp... 11

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa... 9. Wstęp... 11 Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1 Spis treúci Przedmowa... 9 Wstęp... 11 1. Komputer PC od zewnątrz... 13 1.1. Elementy zestawu komputerowego... 13 1.2.

Bardziej szczegółowo

Mikrokontroler AVR ATmega32 - wykład 9

Mikrokontroler AVR ATmega32 - wykład 9 SWB - Mikrokontroler AVR ATmega32 - wykład 9 asz 1 Mikrokontroler AVR ATmega32 - wykład 9 Adam Szmigielski aszmigie@pjwstk.edu.pl SWB - Mikrokontroler AVR ATmega32 - wykład 9 asz 2 CechyµC ATmega32 1.

Bardziej szczegółowo

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++ Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

Mikrokontrolery 8 bit - wprowadzenie

Mikrokontrolery 8 bit - wprowadzenie Mikrokontrolery 8 bit - wprowadzenie TECHNIKA MIKROPROCESOROWA 3EB KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII WWW.KEIASPE.AGH.EDU.PL AKADEMIA GÓRNICZO-HUTNICZA WWW.AGH.EDU.PL

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Wykład 8 Jan Kazimirski 1 Assembler x86 2 Podstawowe instrukcje x86 Instrukcje transferu danych Arytmetyka binarna i dziesiętna Instrukcje logiczne Instrukcje sterujące wykonaniem

Bardziej szczegółowo

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj

Bardziej szczegółowo

1. Wprowadzanie danych z klawiatury funkcja scanf

1. Wprowadzanie danych z klawiatury funkcja scanf 1. Wprowadzanie danych z klawiatury funkcja scanf Deklaracja int scanf ( const char *format, wskaźnik, wskaźnik,... ) ; Biblioteka Działanie stdio.h Funkcja scanf wczytuje kolejne pola (ciągi znaków),

Bardziej szczegółowo

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24 Wymagania proceduralnych języków wysokiego poziomu ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH modele programowe procesorów ASK MP.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad.

Bardziej szczegółowo

4 Standardy reprezentacji znaków. 5 Przechowywanie danych w pamięci. 6 Literatura

4 Standardy reprezentacji znaków. 5 Przechowywanie danych w pamięci. 6 Literatura ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH reprezentacja danych ASK.RD.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 1 2 Standardy reprezentacji wartości całkowitoliczbowych

Bardziej szczegółowo

Programowanie Niskopoziomowe

Programowanie Niskopoziomowe Programowanie Niskopoziomowe Wykład 8: Procedury Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Wstęp Linkowanie z bibliotekami zewnętrznymi Operacje na stosie

Bardziej szczegółowo

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C Opublikowano w: WEREWKA J..: Podstawy programowana dla automatyków. Skrypt AGH Nr 1515, Kraków 1998 20. i łączenie podprogramów a z programem napisanym w Ze względu na duże rozpowszechnienie języka, szczególnie

Bardziej szczegółowo

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

Kurs Podstawowy S7. Spis treści. Dzień 1 Spis treści Dzień 1 I System SIMATIC S7 - wprowadzenie (wersja 1401) I-3 Rodzina sterowników programowalnych SIMATIC S7 firmy SIEMENS I-4 Dostępne moduły i ich funkcje I-5 Jednostki centralne I-6 Podstawowe

Bardziej szczegółowo

Funkcja (podprogram) void

Funkcja (podprogram) void Funkcje Co to jest funkcja? Budowa funkcji Deklaracja, definicja i wywołanie funkcji Przykłady funkcji definiowanych przez programistę Przekazywanie argumentów do funkcji Tablica jako argument funkcji

Bardziej szczegółowo

PROGRAMOWANIE NISKOPOZIOMOWE. Systemy liczbowe. Pamięć PN.01. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

PROGRAMOWANIE NISKOPOZIOMOWE. Systemy liczbowe. Pamięć PN.01. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012 PROGRAMOWANIE NISKOPOZIOMOWE PN.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 1 2 4 c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 1 / 27 c Dr

Bardziej szczegółowo

Programowanie mikrokontrolerów AVR

Programowanie mikrokontrolerów AVR Programowanie mikrokontrolerów AVR Czym jest mikrokontroler? Mikrokontroler jest małym komputerem podłączanym do układów elektronicznych. Pamięć RAM/ROM CPU wykonuje program Układy I/O Komunikacje ze światem

Bardziej szczegółowo

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

Bardziej szczegółowo

Pamięci EEPROM w systemach mikroprocesorowych, część 2

Pamięci EEPROM w systemach mikroprocesorowych, część 2 Pamięci EEPROM w systemach mikroprocesorowych, część 2 Tym artyku³em koòczymy prezentacjí sposobûw programowania szeregowych pamiíci EEPROM. Poniewaø najwiíksz¹ popularnoúci¹ ciesz¹ sií wúrûd uøytkownikûw

Bardziej szczegółowo

KURS C/C++ WYKŁAD 6. Wskaźniki

KURS C/C++ WYKŁAD 6. Wskaźniki Wskaźniki KURS C/C++ WYKŁAD 6 Każda zmienna ma unikalny adres wskazujący początkowy obszar pamięci zajmowany przez tą zmienną. Ilość pamięci zajmowanej przez zmienną zależy od typu zmiennej. Adres można

Bardziej szczegółowo

Właściwości i metody obiektu Comment Właściwości

Właściwości i metody obiektu Comment Właściwości Właściwości i metody obiektu Comment Właściwości Właściwość Czy można zmieniać Opis Application nie Zwraca nazwę aplikacji, która utworzyła komentarz Author nie Zwraca nazwę osoby, która utworzyła komentarz

Bardziej szczegółowo

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014 Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014 Temat 1. Algebra Boole a i bramki 1). Podać przykład dowolnego prawa lub tożsamości, które jest spełnione w algebrze Boole

Bardziej szczegółowo

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami Rok akademicki 2015/2016, Wykład nr 6 2/21 Plan wykładu nr 6 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2015/2016

Bardziej szczegółowo

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu Programowanie V Dariusz Skibicki Wydział Inżynierii Mechanicznej Uniwersytet Technologiczno-Przyrodniczy im. Jana i Jędrzeja Śniadeckich w Bydgoszczy dariusz.skibicki(at)utp.edu.pl Programowanie Projektowanie

Bardziej szczegółowo

Systemy wbudowane Mikrokontrolery

Systemy wbudowane Mikrokontrolery Systemy wbudowane Mikrokontrolery Budowa i cechy mikrokontrolerów Architektura mikrokontrolerów rodziny AVR 1 Czym jest mikrokontroler? Mikrokontroler jest systemem komputerowym implementowanym w pojedynczym

Bardziej szczegółowo

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer Realizacja algorytmu przez komputer Wstęp do informatyki Wykład UniwersytetWrocławski 0 Tydzień temu: opis algorytmu w języku zrozumiałym dla człowieka: schemat blokowy, pseudokod. Dziś: schemat logiczny

Bardziej szczegółowo

Języki programowania zasady ich tworzenia

Języki programowania zasady ich tworzenia Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie

Bardziej szczegółowo

I - Microsoft Visual Studio C++

I - Microsoft Visual Studio C++ I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i

Bardziej szczegółowo

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

Kurs SIMATIC S7-300/400 i TIA Portal - Podstawowy. Spis treści. Dzień 1. I System SIEMENS SIMATIC S7 - wprowadzenie (wersja 1503) Spis treści Dzień 1 I System SIEMENS SIMATIC S7 - wprowadzenie (wersja 1503) I-3 Rodzina sterowników programowalnych SIMATIC S7 firmy SIEMENS I-4 Dostępne moduły i ich funkcje I-5 Jednostki centralne I-6

Bardziej szczegółowo

Delphi Laboratorium 3

Delphi Laboratorium 3 Delphi Laboratorium 3 1. Procedury i funkcje Funkcja jest to wydzielony blok kodu, który wykonuje określoną czynność i zwraca wynik. Procedura jest to wydzielony blok kodu, który wykonuje określoną czynność,

Bardziej szczegółowo

Ćwiczenie 3. Konwersja liczb binarnych

Ćwiczenie 3. Konwersja liczb binarnych 1 Laboratorium Architektury Komputerów Ćwiczenie 3 Konwersja liczb binarnych Komputery wykonują operacje przetwarzania danych na wartościach binarnych, podczas gdy współczesna cywilizacja posługuje się

Bardziej szczegółowo

Języki skryptowe w programie Plans

Języki skryptowe w programie Plans Języki skryptowe w programie Plans Warsztaty uŝytkowników programu PLANS Kościelisko 2010 Zalety skryptów Automatyzacja powtarzających się czynności Rozszerzenie moŝliwości programu Budowa własnych algorytmów

Bardziej szczegółowo

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe Podstawy programowania Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe 1 I. Składnia Składnia programu Program nazwa; Uses biblioteki; Var deklaracje zmiennych;

Bardziej szczegółowo

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor

Bardziej szczegółowo

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

ĆWICZENIE. TEMAT: OBSŁUGA PRZETWORNIKA A/C W ukontrolerze 80C535 KEILuVISON ĆWICZENIE TEMAT: OBSŁUGA PRZETWORNIKA A/C W ukontrolerze 80C535 KEILuVISON Wiadomości wstępne: Wszystkie sygnały analogowe, które mają być przetwarzane w systemach mikroprocesorowych są próbkowane, kwantowane

Bardziej szczegółowo

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI Inż. Kamil Kujawski Inż. Krzysztof Krefta Wykład w ramach zajęć Akademia ETI Metody programowania Assembler Język C BASCOM Assembler kod maszynowy Zalety: Najbardziej efektywny Intencje programisty są

Bardziej szczegółowo

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI Arytmetyka komputera Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka Opracował: Kamil Kowalski klasa III TI Spis treści 1. Jednostki informacyjne 2. Systemy liczbowe 2.1. System

Bardziej szczegółowo

Cw.12 JAVAScript w dokumentach HTML

Cw.12 JAVAScript w dokumentach HTML Cw.12 JAVAScript w dokumentach HTML Wstawienie skryptu do dokumentu HTML JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.skrypty Java- Script mogą być zagnieżdżane

Bardziej szczegółowo

Sterowniki Programowalne (SP)

Sterowniki Programowalne (SP) Sterowniki Programowalne (SP) Wybrane aspekty procesu tworzenia oprogramowania dla sterownika PLC Podstawy języka funkcjonalnych schematów blokowych (FBD) Politechnika Gdańska Wydział Elektrotechniki i

Bardziej szczegółowo

2. PORTY WEJŚCIA/WYJŚCIA (I/O)

2. PORTY WEJŚCIA/WYJŚCIA (I/O) 2. PORTY WEJŚCIA/WYJŚCIA (I/O) 2.1 WPROWADZENIE Porty I/O mogą pracować w kilku trybach: - przesyłanie cyfrowych danych wejściowych i wyjściowych a także dla wybrane wyprowadzenia: - generacja przerwania

Bardziej szczegółowo

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

Wydział Elektryczny. Katedra Telekomunikacji i Aparatury Elektronicznej. Konstrukcje i Technologie w Aparaturze Elektronicznej. Politechnika Białostocka Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej Konstrukcje i Technologie w Aparaturze Elektronicznej Ćwiczenie nr 5 Temat: Przetwarzanie A/C. Implementacja

Bardziej szczegółowo

Wstęp do Programowania, laboratorium 02

Wstęp do Programowania, laboratorium 02 Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite

Bardziej szczegółowo

Metodyki i Techniki Programowania 1 1 1. MECHANIZM POWSTAWANIA PROGRAMU W JĘZYKU C PODSTAWOWE POJĘCIA

Metodyki i Techniki Programowania 1 1 1. MECHANIZM POWSTAWANIA PROGRAMU W JĘZYKU C PODSTAWOWE POJĘCIA Metodyki i Techniki Programowania 1 1 ZAJ CIA 3. 1. MECHANIZM POWSTAWANIA PROGRAMU W JĘZYKU C PODSTAWOWE POJĘCIA IDE zintegrowane środowisko programistyczne, zawierające kompilator, edytor tekstu i linker,

Bardziej szczegółowo

KURS C/C++ WYKŁAD 7. struct Punkt { int x, y; int kolor; };

KURS C/C++ WYKŁAD 7. struct Punkt { int x, y; int kolor; }; Typy pochodne. Referencje Referencja jest inną nazwą zmiennej. KURS C/C++ WYKŁAD 7 Referencje tworzymy przy pomocy unarnego operatora &: int a; int &refer = a; // referencja musi być inicjowana Powyższe

Bardziej szczegółowo

Ćwiczenie 9 Częstościomierz oparty na µc 8051(8052)

Ćwiczenie 9 Częstościomierz oparty na µc 8051(8052) Laboratorium Techniki Mikroprocesorowej Informatyka studia dzienne Ćwiczenie 9 Częstościomierz oparty na µc 8051(8052) Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z możliwościami zastosowania mikrokontrolerów

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

. III atyka, sem, Inform Symulator puterów Escape rchitektura kom A

. III atyka, sem, Inform Symulator puterów Escape rchitektura kom A Symulator Escape Konfiguracja ogólna Enable MUL and DIV Complete Set of Comp.Oper Sign Extension of B/H/W Memory Oper on B/H/W Program Program Dane Dane Załaduj konfigurację symulatora (File -> OpenFile)

Bardziej szczegółowo

Wprowadzenie do podstaw programowania AVR (na przykładzie mikrokontrolera ATmega 16 / 32)

Wprowadzenie do podstaw programowania AVR (na przykładzie mikrokontrolera ATmega 16 / 32) Wprowadzenie do podstaw programowania AVR (na przykładzie mikrokontrolera ATmega 16 / 32) wersja 0.4 (20 kwietnia 2015) Filip A. Sala W niniejszym, bardzo krótkim opracowaniu, postaram się przedstawić

Bardziej szczegółowo

Programowanie niskopoziomowe

Programowanie niskopoziomowe Programowanie niskopoziomowe Programowanie niskopoziomowe w systemie operacyjnym oraz poza nim Tworzenie programu zawierającego procedury asemblerowe 1 Programowanie niskopoziomowe w systemie operacyjnym

Bardziej szczegółowo

Programowanie Niskopoziomowe

Programowanie Niskopoziomowe Programowanie Niskopoziomowe Wykład 11: Procedury zaawansowane Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Wstęp Ramki stosu Rekurencja INVOKE, ADDR, PROC,

Bardziej szczegółowo