Procesor DSP Sharc ADSP21161 firmy Analog Devices

Slides:



Advertisements
Podobne prezentacje
Połączenia oporników a. Połączenie szeregowe: R1 R2 Rn i U1 U2 Un U.
Advertisements

Wykład 1: Technika DSP Wstęp
Rekurencja 1 Podprogram lub strukturę danych nazywamy rekurencyjną, (recursive subprogram, recursive data structure) jeżeli częściowo składa się z samej.
Sieć jednokierunkowa wielowarstwowa
Język ANSI C Funkcje Wykład: Programowanie komputerów
Wykład 6: Stałoprzecinkowe mikroprocesory sygnałowe: architektura
Metoda simpleks Simpleks jest uniwersalną metodą rozwiązywania zadań programowania liniowego. Jest to metoda iteracyjnego poprawiania wstępnego rozwiązania.
6. Układy kształtujące funkcje odcinkami prostoliniowymi
Wykład 3: Jak działa typowy mikroprocesor?
Inteligencja Obliczeniowa Perceptrony o dużym marginesie błędu
typy całkowite (całkowitoliczbowe)
PROGRAMOWANIE STRUKTURALNE
CPU.
Sztuczne sieci neuronowe
Zamiana GWIAZDA-TRÓJKĄT
Twierdzenie Thevenina-Nortona
1 RISC – nasze założenia Podstawowe cechy: Wszystkie operacje są realizowane na rejestrach, Tylko operacje typu load i store wymagają dostępu do pamięci,
ZŁOŻONOŚĆ OBLICZENIOWA
Makroekonomia I Ćwiczenia
Turbo pascal – instrukcje warunkowe, iteracyjne,…
Wykład 7: Zmiennoprzecinkowe mikroprocesory sygnałowe firmy Analog Devices: zastosowania i rodziny architektura podstawowe operacje ALU.
Wykład 5: Mikroprocesory sygnałowe -wstęp: zastosowania i rodziny
Podstawowe składniki funkcjonalne procesora i ich rola.
Programowanie Procesorów Sygnałowych
Wykład 3: Adresowanie i jednostki obliczeniowe w ADSP 21161N
Wykład 5: Program Sequencer i struktura pamięci
Wykład 4: Podstawowe operacje ALU, MACC, SHIFTER i DAG
Wykład nr 7: Synchronizacja procesów
INFORMATYKA Wykładowca: mgr Tadeusz Ziębakowski p. 126 I piętro (naprzeciw dziekanatu)
FIZYKA dla studentów POLIGRAFII Wykład 5
Metoda simpleks opracowanie na podstawie „Metody wspomagające podejmowanie decyzji w zarządzaniu” D. Witkowska, Menadżer Łódź Simpleks jest uniwersalną.
Komunikacja z arkuszem. Iteracje. Funkcje.
Systemy Wbudowane Bascom
Schemat Hornera Mgr inż. Michał Szucki.
CUDA (Compute Unified Device Architecture)
Matematyka.
Podstawy programowania
Programowanie parametryczne CNC SINUMERIK-810T
Automatyka Wykład 3 Modele matematyczne (opis matematyczny) liniowych jednowymiarowych (o jednym wejściu i jednym wyjściu) obiektów regulacji.
Teoria sterowania Wykład 3
Automatyka Wykład 4 Modele matematyczne (opis matematyczny) liniowych jednowymiarowych (o jednym wejściu i jednym wyjściu) obiektów regulacji (c.d.)
Automatyka Wykład 3 Modele matematyczne (opis matematyczny) liniowych jednowymiarowych (o jednym wejściu i jednym wyjściu) obiektów, elementów i układów.
Synteza układów sekwencyjnych z (wbudowanymi) pamięciami ROM
Sztuczne Sieci Neuronowe
Programowanie w języku Matlab
TABLICE C++.
UKŁADY MIKROPROGRAMOWANE
Architektura komputerów
Jerzy F. Kotowski1 Informatyka I Wykład 15 PIERWSZE KROKI.
Budowa programu w asemblerze W ogólnym przypadku linia programu w asemblerze ma następującą budowę: na przykład: tuskocz:adda,r0 ;dodanie do akumulatora.
Tablice w Turbo Pascalu.
Wnioskowanie w stylu Takagi - Sugeno.
Analiza danych przy pomocy funkcji • przegląd wybranych funkcji Excela (m.in. wyszukaj.pionowo, jeżeli, suma.jeżeli) • przypisywanie nazw zakresom komórek.
Opracowanie ćwiczeń dotyczących zapewniania niezawodności baz danych na przykładzie Oracle Opiekun : dr inż. Agnieszka Landowska Dyplomant : Tomasz Krzyżanowski.
Wykład 7 Synchronizacja procesów i wątków
Ogólna struktura programu w TP
D. Ciołek BADANIA OPERACYJNE – wykład 2
ZAPIS BLOKOWY ALGORYTMÓW
Asembler MCS51. Budowa programu w asemblerze W ogólnym przypadku linia programu w asemblerze ma następującą budowę: na przykład: tuskocz:adda,r0 ;dodanie.
Algorytmika Iteracje autor: Tadeusz Lachawiec.
Algorytmy i Struktury Danych
567.Jakie prądy płyną przez poszczególne opory na schemacie poniżej, jeśli R 1 =3 , R 2 =7 , R 3 =20 , U=20V, a galwanometr wskazuje i G =0? B R1R1.
603.Baterię o SEM E=12V i oporze wewnętrznym r=1  zwarto dwoma oporami R 1 =10  i R 2 =20  połączonymi równolegle. Jakie prądy płyną przez te opory?
WYKŁAD 06 Programowanie dynamiczne Grażyna Mirkowska.
I T P W ZPT Konwerter BIN2BCD 1 LK „8” DEC LK = 0 LOAD1 R3R2R1  K S3 S2S1 A B „5” K  5 MUX 1 0 A R4 LOAD2 Y = LD B LB „3” US Układ wykonawczy Układ sterujący.
Pętle – instrukcje powtórzeń
© Kazimierz Duzinkiewicz, dr hab. inż. Katedra Inżynierii Systemów Sterowania Modelowanie i podstawy identyfikacji 2015/2016 Modele neuronowe – podstawy,
Informatyka Transport Matlab c.d. Macierze cd. Wykresy graficzne
Wykład 3: Adresowanie i jednostki obliczeniowe w ADSP 21161N
Informacje ogólne Mgr Inż. Jerzy Orlof
Zapis prezentacji:

Procesor DSP Sharc ADSP21161 firmy Analog Devices Wykład 8: Procesor DSP Sharc ADSP21161 firmy Analog Devices Sterowanie działaniem programu (Program Sequencer) Skoki bezwarunkowe i warunkowe Skoki opóźnione Pętle Podstawowe algorytmy

Jednostka obliczeniowa procesora Sharc

Instrukcje skoków bezwarunkowych i warunkowych JUMP etykieta //skok bezwarunkowy CALL etykieta //bezwarunkowe wywołanie podprogramu IF NE JUMP etykieta //skok warunkowy IF AC CALL etykieta //warunkowe wywołanie podprogramu Niektóre pozostałe instrukcje także mogą być wykonywane warunkowo, np. : IF EQ DM(I0,M0) = R2; IF EQ R8 = R2;

Instrukcje skoków bezwarunkowych i warunkowych - dozwolone warunki instrukcji warunkowych

... dozwolone warunki instrukcji warunkowych

... dozwolone warunki instrukcji warunkowych

Skoki opóźnione - Delayed Branch Skok nastąpi po wykonaniu jeszcze dwóch instrukcji (występujących za instrukcją skoku) JUMP (db) etykieta //skok bezwarunkowy CALL (db) etykieta //bezwarunkowe wywołanie podprogramu Przykład: R0 = DM(I0,M0); JUMP (db) etykieta R1 = R2 + R3; R8 = 0; ... //ta instrukcja już się nie wykona ! ... Etykieta:

Podstawowe algorytmy Suma wartości bezwzględnych elementów tablicy wyszukiwanie MIN,MAX w tablicy mnożenie macierzy: macierz x wektor suma ważona wejść (model neuronu z liniową funkcją aktywacji)

Suma wartości bezwzględnych elementów tablicy I0 = tablica; //adres tablicy M0 = 1; //zwiększanie adresu o 1 L0 = 0; //nie ma bufora kołowego R0 = 0; //wartość początkowa sumy LCNTR = 30, DO the_end UNTIL LCE; //Pętla powtarzana 30 razy R1 = DM(I0,M0); R1 = ABS(R1); the_end: R0 = R0 + R1; // ostatnia instrukcja w pętli

Suma wartości bezwzględnych 30 elementów tablicy wariant II I0 = tablica; //adres tablicy M0 = 1; //zwiększanie adresu o 1 L0 = 0; //nie ma bufora kołowego R0 = 0; //wartość początkowa sumy R1 = DM(I0,M0); //pierwsza dana LCNTR = 30-1, DO the_end UNTIL LCE;//Pętla powtarzana 29 razy R2 = ABS(R1), R1 = DM(I0,M0); nop; // wymagana instrukcja dodatkowa !!! // (potok o głębokości 3 instrukcji  minimalna liczba instrukcji w pętli sprzętowej = 3 ) the_end: R0 = R0 + R2; // ostatnia instrukcja w pętli R2 = ABS(R1); // instrukcje wykonywane jeden raz R0 = R0 + R2;

Suma wartości bezwzględnych 30 elementów tablicy wariant III I0 = tablica; //adres tablicy M0 = 1; //zwiększanie adresu o 1 L0 = 0; //nie ma bufora kołowego R0 = 0; //wartość początkowa sumy R1 = DM(I0,M0); //pierwsza dana R2 = ABS(R1), R1 = DM(I0,M0); //druga dana R0 = R0 + R2; LCNTR = 15-1, DO the_end UNTIL LCE;//Pętla powtarzana 14 razy R2 = ABS(R1), R1 = DM(I0,M0); the_end: R0 = R0 + R2; // ostatnia instrukcja w pętli R2 = ABS(R1); // instrukcje wykonywane jeden raz R0 = R0 + R2;

Wyszukiwanie MIN,MAX w tablicy vector_maximum: bit set MODE1 RND32 | PEYEN; b0 = INPUT; //address of vector INPUT i0 = b0; l0 = 0; m0 = 1; f4=0.0; f0=dm(i0,m0); lcntr=N-1, do Vecmax until lce; // vector maximum loop f1 = dm(i0,m0); f0 = max( f0, f1); nop; Vecmax: rts (db); bit clr MODE1 PEYEN;

Wyszukiwanie MIN,MAX w tablicy - wersja II (wersja SIMD – Single Instruction Multipple Data, oraz określenie numeru próbki zawierającej największą wartość (r2)) vector_maximum: bit set MODE1 RND32 | PEYEN; b0 = INPUT; //address of vector INPUT i0 = b0; l0 = 0 f4=0.0; f0=dm(i0,2); lcntr=r1, do vecmax until lce; // vector maximum loop comp(f4,f0), f8=dm(i0,2); if lt f4=pass f0, r2=i0; comp(f4,f8), f0=dm(i0,2); vecmax: if lt f4=pass f8, r2=i0; r2=r2-r0, r0=b0; r2=r2-r0, r0=s4; comp(f4,f0); if lt f4=pass f0, r2<->s2; rts (db); bit clr MODE1 PEYEN; nop; vector_maximum.end:

macierz x wektor: Y = A x B Mnożenie macierzy macierz x wektor: Y = A x B I0 = MA; //adres początku macierzy A M0 = 1; //zwiększanie adresu o 1 po każdym odczycie L0 = 0; //nie ma bufora kołowego I1 = MB; //adres początku wektora B M1 = 1; //zwiększanie adresu o 1 po każdym odczycie L1 = N; //bufor kołowy o rozmiarze N B1 = MB; I3 = MY; //adres początku wektora Y M3 = 1; //zwiększanie adresu o 1 po każdym odczycie L3 = 0; //nie ma bufora kołowego LCNTR = N, Do wiersze UNTIL LCE; MRF = 0; //wartość początkowa sumy LCNTR = N, DO kolumny UNTIL LCE; R1 = DM(I0,M0); R2 = DM(I1,M1); kolumny: MRF = MRF +R1 * R2; // ostatnia instrukcja w pętli wewn. DM(I3,0) = MR1; //zapisanie wyniku (kolejnego wiersza) nop; //instrukcja dodatkowa Wiersze: nop;

(model neuronu z liniową funkcją aktywacji) Suma ważona wejść (model neuronu z liniową funkcją aktywacji) I0 = WX; //adres początku wektora wejściowego WX M0 = 1; //zwiększanie adresu o 1 po każdym odczycie L0 = N; //bufor kołowy (rozmiar wektora wejść) B0 = WX; I1 = MB; //adres początku warstwy wyjściowej neuronów M1 = 1; //zwiększanie adresu o 1 po każdym zapisie L1 = 0; //bez bufora kołowego I2 = MY; //adres początku wag neuronu M2 = 1; //zwiększanie adresu o 1 po każdym odczycie L2 = 0; //nie ma bufora kołowego R0 = DM(I2,M2); //waga zerowa MRF = R0; //wartość początkowa sumy LCNTR = N, Do wejscia UNTIL LCE; R1 = DM(I0,M0); //kolejne wejście R2 = DM(I2,M2); //i odpowiednia waga wejscia: MRF = MRF +R1 * R2; // ostatnia instrukcja w pętli wewn. DM(I1,M1) = MR1; //zapisanie wyniku (suma ważona neuronu)

- wersja zmiennoprzecinkowa Suma ważona wejść - wersja zmiennoprzecinkowa I0 = WX; //adres początku wektora wejściowego WX (pamięć DM) M0 = 1; //zwiększanie adresu o 1 po każdym odczycie L0 = N; //bufor kołowy (rozmiar wektora wejść) B0 = WX; I1 = MB; //adres początku warstwy wyjściowej neuronów M1 = 1; //zwiększanie adresu o 1 po każdym zapisie L1 = 0; //bez bufora kołowego I2 = MY; //adres początku wag neuronu (pamięć PM) M2 = 1; //zwiększanie adresu o 1 po każdym odczycie L2 = 0; //nie ma bufora kołowego F0 = DM(I2,M2); //waga zerowa =wartość początkowa sumy LCNTR = N, Do wejscia UNTIL LCE; F1 = DM(I0,M0); F2 = PM(I2,M2); //kolejne wejście i waga F3 = F1 * F2; wejscia: F0 = F0 + F3; // ostatnia instrukcja w pętli wewn. DM(I1,M1) = F0; //zapisanie wyniku (suma ważona neuronu)