1 / 24

Programowanie Procesorów Sygnałowych

Programowanie Procesorów Sygnałowych. Krzysztof Bikonis binio@eti.pg.gda.pl p. 738 tel. 347 1326. Architektura procesorów stałoprzecinkowych z rodziny 21xx. Architektura procesorów stałoprzecinkowych z rodziny 21xx. Jednostka arytmetyczno-logiczna

cree
Télécharger la présentation

Programowanie Procesorów Sygnałowych

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programowanie Procesorów Sygnałowych Krzysztof Bikonis binio@eti.pg.gda.pl p. 738 tel. 347 1326

  2. Architektura procesorów stałoprzecinkowych z rodziny 21xx

  3. Architektura procesorów stałoprzecinkowych z rodziny 21xx • Jednostka arytmetyczno-logiczna • wykonywane operacje: dodawanie, dodawanie z przeniesieniem, odejmowanie, odejmowanie z „pożyczką”, zmiana znaku, operacje logiczne AND, OR, XOR, NOT • 16-bitowe rejestry AX0 i AX1 – pierwszy argument operacji, AY0 i AY1 – drugi argument operacji, AR i AF – wynik operacji (AR -> DMD BUS, AF -> drugi argument operacji) • R BUS -> wyjścia innych układów jako drugi argument operacji • rejestry mogą być odczytywane i zapisywane w jednym cyklu rozkazowym (odczyt na początku, zapis na końcu cyklu) • argumenty stałoprzecinkowymi liczbami ułamkowymi w formacie 1.15

  4. Architektura procesorów stałoprzecinkowych z rodziny 21xx • Jednostka arytmetyczno-logiczna • wykonywane operacje: dodawanie, dodawanie z przeniesieniem, odejmowanie, odejmowanie z „pożyczką”, zmiana znaku, operacje logiczne AND, OR, XOR, NOT • 16-bitowe rejestry AX0 i AX1 – pierwszy argument operacji, AY0 i AY1 – drugi argument operacji, AR i AF – wynik operacji (AR -> DMD BUS, AF -> drugi argument operacji) • R BUS -> wyjścia innych układów jako drugi argument operacji • rejestry mogą być odczytywane i zapisywane w jednym cyklu rozkazowym (odczyt na początku, zapis na końcu cyklu) • argumenty stałoprzecinkowymi liczbami ułamkowymi w formacie 1.15 10000000000000000B = -1 11000000000000000B = -0.5 00000000000000000B = 0 00111111111111111B = 0.5 01111111111111111B = 1

  5. Architektura procesorów stałoprzecinkowych z rodziny 21xx • Jednostka arytmetyczno-logiczna • wykonywane operacje: dodawanie, dodawanie z przeniesieniem, odejmowanie, odejmowanie z „pożyczką”, zmiana znaku, operacje logiczne AND, OR, XOR, NOT • 16-bitowe rejestry AX0 i AX1 – pierwszy argument operacji, AY0 i AY1 – drugi argument operacji, AR i AF – wynik operacji (AR -> DMD BUS, AF -> drugi argument operacji) • R BUS -> wyjścia innych układów jako drugi argument operacji • rejestry mogą być odczytywane i zapisywane w jednym cyklu rozkazowym (odczyt na początku, zapis na końcu cyklu) • argumenty stałoprzecinkowymi liczbami ułamkowymi w formacie 1.15 • Znaczenie bitów rejestru stanu ASTAT • AZ – oznacza AR=0 • AN – oznacza AR ujemne • AC – oznacza przeniesienie z najbardziej znaczącej pozycji wyniku dodawania • AV – oznacza przepełnienie AR • AS – znak argumentu pierwszego (X) dla ALU • AQ – bit wyniku generowany podczas dzielenia • Znaczenie bitów rejestru trybu MSTAT • 3 – ALU przechodzi do pracy z „nasyceniem” (gdy wystąpi przepełnienie -> AR największa/najmniejsza możliwa liczba dla tego rej.) • 2 – zatrzaskiwanie stanu przepełnienia • 0 – wybór zbioru rejestrów ALU 0 = pierwszy 1 = drugi 10000000000000000B = -1 11000000000000000B = -0.5 11111111111111111B = 0 00111111111111111B = 0.5 01111111111111111B = 1

  6. Architektura procesorów stałoprzecinkowych z rodziny 21xx • Układ mnożąco-akumulujący • wykonywane operacje: mnożenie liczb stałoprzecinkowych oraz mnożenie i akumulacja (dodawanie lub odejmowanie) • 16-bitowe rejestry MX0 i MX1 – pierwszy argument operacji, MY0 i MY1 – drugi argument operacji, 40-bitowy rejestr MR (MR2 8 bitów, MR1 i MR0 16 bitów) – rejestr wyjściowy • rejestr MR ma własność „nasycenia”, czyli jeśli zostanie wykryte przepełnienie to do MR zostanie zapisana największa/najmniejsza 32-bitowa liczba (Czy rejestr MR zostanie „nasycony”, czy nie, jest częścią kodu instrukcji) • możliwość zaokrąglania 40-bitowego wyniku obliczeń do 16 bitów, wynik zaokrąglenia do rejestru MF, lub MR1 (znak powielony w rejestrze MR2) • 16-bitowy rejestr MF – rejestr pośredniczący, można go wykorzystać w następnym rozkazie mnożenia przez podanie na wejście Y układu mnożącego • rejestry mogą być odczytywane i zapisywane w jednym cyklu rozkazowym (odczyt na początku, zapis na końcu cyklu)

  7. Architektura procesorów stałoprzecinkowych z rodziny 21xx • Układ mnożąco-akumulujący • wykonywane operacje: mnożenie liczb stałoprzecinkowych oraz mnożenie i akumulacja (dodawanie lub odejmowanie) • 16-bitowe rejestry MX0 i MX1 – pierwszy argument operacji, MY0 i MY1 – drugi argument operacji, 40-bitowy rejestr MR (MR2 8 bitów, MR1 i MR0 16 bitów) – rejestr wyjściowy • rejestr MR ma własność „nasycenia”, czyli jeśli zostanie wykryte przepełnienie to do MR zostanie zapisana największa/najmniejsza 32-bitowa liczba (Czy rejestr MR zostanie „nasycony”, czy nie, jest częścią kodu instrukcji) • możliwość zaokrąglania 40 bitowego wyniku obliczeń do 16 bitów, wynik zaokrąglenia do rejestru MF, lub MR1 (znak powielony w rejestrze MR2) • 16-bitowy rejestr MF – rejestr pośredniczący, można go wykorzystać w następnym rozkazie mnożenia przez podanie na wejście Y układu mnożącego • rejestry mogą być odczytywane i zapisywane w jednym cyklu rozkazowym (odczyt na początku, zapis na końcu cyklu) • Znaczenie bitów rejestru stanu ASTAT • MV – oznacza przepełnienie MR • Jeśli wynik operacji mnożenia i akumulacji nie mieści się w parze rejestrów MR1, MR0, to najbardziej znaczący bity wyniku znajdują się w rejestrze MR2 i ustawiana jest flaga MV przepełnienia akumulatora MR • Znaczenie bitów rejestru trybu MSTAT • 0 – wybór zbioru rejestrów 0 = pierwszy 1 = drugi • 4 – tryb pracy • 0 = liczby ułamkowe (1.15) • 1 = liczby całkowite (16.0) • Dla liczb 1.15 32-bitowy wynik mnożenia jest rozszerzany do 40 bitów poprzez powielenie bitu znaku, przesuwany w lewo o jeden bit i podawany na wejście układu sumatora • Dla liczb 16.0 rozszerzony do 40 bitów wynik jest bezpośrednio podawany na wejście układu sumatora

  8. Architektura procesorów stałoprzecinkowych z rodziny 21xx • Przesuwnik • pozwala jednym rozkazem umieścić 16-bitowy argument w dowolnym miejscu 32-bitowego rejestru wyjściowego, łącznie z sytuacją gdy argument pozostaje poza rejestrem wyjściowym (49 położeń w rejestrze wyjściowym) • 16-bitowy rejestr wejściowy SI – przesuwana liczba, 8-bitowy rejestr SE – liczba pozycji binarnych do przesunięcia (SE dodatnie – w lewo, SE ujemne – w prawo), 8-bitowy rejestr SB – argument w przypadku normalizacji lub denormalizacji bloku liczb, 32-bitowy rejestr SR (SR1 i SR0 po 16 bitów) – wynik operacji • rejestry mogą być odczytywane i zapisywane w jednym cyklu rozkazowym (odczyt na początku, zapis na końcu cyklu), są zdublowane (wybór poprzez bit 0 rejestru MSTAT)

  9. Architektura procesorów stałoprzecinkowych z rodziny 21xx • Generatory adresowe • I – rejestry indeksowe, M – rejestry modyfikacji, L – rejestry długości • wykorzystując rejestr długości L można zorganizować w pamięci bufor kołowy, wtedy rejestr indeksowy I jest używany jako wskaźnik, natomiast rejestr L przechowuje długość bufora, a kiedy wskaźnik I przekroczy górną granicę bufora, to do rejestru I zostanie załadowany adres bazowy bufora

  10. Architektura procesorów stałoprzecinkowych z rodziny 21xx • Sterowanie procesorem • instrukcje są pobierane z kolejnych komórek pamięci programu wskazywanych przez licznik programu PC • każda instrukcja jest wykonywana w jednym cyklu zegarowym • zmiana kolejności realizacji instrukcji dokonuje się w wyniku wykonania instrukcji skoku, instrukcji skoku ze śladem (wywołanie podprogramu) lub instrukcji organizującej pętlę DO UNTIL (możliwość zagnieżdżania do czterech poziomów) • przerwania w sposób sztywny mają przypisany priorytet, mogą być maskowane (IMASK) • STATUS STACK stos sprzętowy, w trakcie obsługi przerwania są tam przechowywane rejestry ASTAT,MSTAT, IMASK • PC STACK stos sprzętowy, w trakcie obsługi przerwania przechowuje licznik rozkazów • tablica wektorów przerwań zaczyna się od adresu 0x0000, a program obsługi przerwania nie może przekraczać czterech instrukcji • powrót z obsługi przerwania za pomocą instrukcji RTI • ICNTL rejestr konfiguracji trybu pracy systemu przerwań, w ten sposób można uzyskać przerwania zewnętrzne czułe na wartość poziomu sygnału lub na jego zbocze lub zagnieżdżania przerwań • IFC rejestr za pomocą którego można programowo wymusić przerwanie sprzętowe lub wyzerować zamaskowane przerwanie oczekujące na obsługę

  11. Architektura procesorów stałoprzecinkowych z rodziny 21xx

  12. Rodzina stałoprzecinkowych procesorów sygnałowych ADSP21xx

  13. Architektura procesorów zmiennoprzecinkowych z rodziny 2106x

  14. Architektura procesorów zmiennoprzecinkowych z rodziny 2106x • Core Processor • rdzeń systemu, jednostka odpowiedzialna za wykonanie programu i wszystkie operacje obliczeniowe • trzy jednostki obliczeniowe (computation units) • sekwencera programu (program sequencer) • dwa generatory adresów dla danych (data adress generators DAG) • pamięci cache dla instrukcji (instruction cache) • zbioru rejestrów (data register file)

  15. Architektura procesorów zmiennoprzecinkowych z rodziny 2106x • Core Processor • rdzeń systemu, jednostka odpowiedzialna za wykonanie programu i wszystkie operacje obliczeniowe • trzy jednostki obliczeniowe (computation units) • sekwencera programu (program sequencer) • dwóch generatorów adresów dla danych (data adress generators DAG) • pamięci cache dla instrukcji (instruction cache) • zbioru rejestrów (data register file) • Jednostki obliczeniowe • ALU • jednostka mnożąca (multipler) • jednostka przesuwająca (shifter) • Jednostki te mogą przetwarzać dane • 32-bitowe stałoprzecinkowe • 32-bitowe zmiennoprzecinkowe • 40-bitowe zmiennoprzecinkowe • Właściwości jednostek obliczeniowych • wykonują obliczenia w jednym cyklu • dana wyjściowe z jednej jednostki mogą stanowić daną wejściową dla drugiej jednostki • możliwość równoległego wykonywania operacji np. dodawania i mnożenia, ze względu na to, że wykonywane są przez różne jednostki obliczeniowe (wymagany jest wtedy określony wybór rejestrów przechowujących argumenty operacji)

  16. 31 30 23 22 0 27 ………. 20 2-1 ………………………. 2-23 cecha mantysa znak –1znak * 2cecha – 127 * 1.mantysa 2 = 1*2128-127*1.0 = 01000000 00000000 00000000 00000000 = 40 00 00 00 440 = 1*2135-127*1.7188 = 01000011 11011100 00000000 00000000 = 43 DC 00 00 Architektura procesorów zmiennoprzecinkowych z rodziny 2106x • Core Processor • rdzeń systemu, jednostka odpowiedzialna za wykonanie programu i wszystkie operacje obliczeniowe • trzy jednostki obliczeniowe (computation units) • sekwencera programu (program sequencer) • dwóch generatorów adresów dla danych (data adress generators DAG) • pamięci cache dla instrukcji (instruction cache) • zbioru rejestrów (data register file) • Jednostki obliczeniowe • ALU • jednostka mnożąca (multipler) • jednostka przesuwająca (shifter) • Jednostki te mogą przetwarzać dane • 32-bitowe stałoprzecinkowe • 32-bitowe zmiennoprzecinkowe • 40-bitowe zmiennoprzecinkowe • Właściwości jednostek obliczeniowych • wykonują obliczenia w jednym cyklu • dana wyjściowe z jednej jednostki mogą stanowić daną wejściową dla drugiej jednostki • możliwość równoległego wykonywania operacji np. dodawania i mnożenia, ze względu na to, że wykonywane są przez różne jednostki obliczeniowe (wymagany jest wtedy określony wybór rejestrów przechowujących argumenty operacji)

  17. Architektura procesorów zmiennoprzecinkowych z rodziny 2106x • Core Processor • rdzeń systemu, jednostka odpowiedzialna za wykonanie programu i wszystkie operacje obliczeniowe • trzy jednostki obliczeniowe (computation units) • sekwencera programu (program sequencer) • dwóch generatorów adresów dla danych (data adress generators DAG) • pamięci cache dla instrukcji (instruction cache) • zbioru rejestrów (data register file) Zbiór rejestrów (data register files) Zawarte w „rdzeniu” rejestry są rejestrami ogólnego przeznaczenia i wykorzystywane są do przesyłania danych pomiędzy jednostkami obliczeniowymi a magistralami danych oraz do przechowywania wyników pośrednich. Zbiór rejestrów składa się z dwóch zestawów po 16 rejestrów 40-bitowych każdy.

  18. Architektura procesorów zmiennoprzecinkowych z rodziny 2106x • Core Processor • rdzeń systemu, jednostka odpowiedzialna za wykonanie programu i wszystkie operacje obliczeniowe • trzy jednostki obliczeniowe (computation units) • sekwencera programu (program sequencer) • dwóch generatorów adresów dla danych (data adress generators DAG) • pamięci cache dla instrukcji (instruction cache) • zbioru rejestrów (data register file) Sekwencer programu i generator adresów Dwa dedykowane generatory adresów oraz sekwencer programu wyznaczają adresy wykorzystywane w trakcie dostępu do pamięci. Pozwala to na wykonywanie operacji obliczeniowych z maksymalną efektywnością. Wykorzystując pamięć cache programu procesor jest w stanie w tym samym czasie pobrać instrukcję oraz dwa operandy z pamięci.

  19. Architektura procesorów zmiennoprzecinkowych z rodziny 2106x • Core Processor • rdzeń systemu, jednostka odpowiedzialna za wykonanie programu i wszystkie operacje obliczeniowe • trzy jednostki obliczeniowe (computation units) • sekwencera programu (program sequencer) • dwóch generatorów adresów dla danych (data adress generators DAG) • pamięci cache dla instrukcji (instruction cache) • zbioru rejestrów (data register file) Pamięć cache dla instrukcji Sekwencer programu zawiera 32-słowowy cache instrukcji, który pozwala w efekcie na trzymagistralową operację pobrania kodu rozkazu oraz dwóch argumentów.

  20. Architektura procesorów zmiennoprzecinkowych z rodziny 2106x • Core Processor • rdzeń systemu, jednostka odpowiedzialna za wykonanie programu i wszystkie operacje obliczeniowe • trzy jednostki obliczeniowe (computation units) • sekwencera programu (program sequencer) • dwóch generatorów adresów dla danych (data adress generators DAG) • pamięci cache dla instrukcji (instruction cache) • zbioru rejestrów (data register file) Timer Programowany timer pozwala na cykliczne generowanie przerwania. Wyposażony jest w 32-bitowy rejestr, który jest dekrementowany w każdym cyklu. Gdy osiągnie 0, generowane jest przerwanie

  21. Architektura procesorów zmiennoprzecinkowych z rodziny 2106x Magistrale procesora „Rdzeń” procesora wyposażony jest w cztery magistrale: 24-bitową magistralę adresową pamięci programu (PMA), 32-bitową magistralę adresową pamięci danych (DMA), 48-bitową magistralę danych pamięci programu (PMD) i 32/40-bitową magistralę danych pamięci danych (DMD). Pamięć danych przeznaczona jest do przechowywania wartości zmiennych, natomiast pamięć programu przechowuje zarówno program, jak też dane nie ulegające zmianie w trakcie działania programu np. tablice współczynników.

  22. Architektura procesorów zmiennoprzecinkowych z rodziny 2106x Dwuportowa pamięć wewnętrzna Procesor ADSP-21061 wyposażony jest w 1 Mb pamięci RAM w dwóch blokach po 0.5 Mb. Każdy blok pamięci ma dostęp dwuportowy co pozwala na jednoczesny dostęp „rdzenia” procesora oraz procesora wejścia/wyjścia lub sterownika DMA. Cała pamięć może być zorganizowana w słowa o długości 16, 32 lub 48 bitów. W procesorze ADSP-21061 pamięć może być skonfigurowana jako 32K słów 32-bitowych, 64K słów 16-bitowych lub 20K słów 48-bitowych dla instrukcji i 40-bitowych dla danych. Każdy z bloków pamięci może przechowywać zarówno dane jak i program. Jednak zalecana jest taka organizacja, w której jeden blok przechowuje program, a drugi dane. Wtedy magistrale danych obsługują jeden blok, a magistrale programu drugi.

  23. Architektura procesorów zmiennoprzecinkowych z rodziny 2106x Pamięć zewnętrzna i interfejs urządzeń peryferyjnych Procesor ADSP-2106x jest wyposażony w interfejs komunikacyjny z pamięcią zewnętrzną i urządzeniami peryferyjnymi. Zewnętrzna pamięć może być rozbudowana do 4G słów. Wszystkie wewnętrzne magistrale są multipleksowane i przetwarzane na32-bitową zewnętrzną magistralę adresową i 48-bitową zewnętrzną magistralę danych. Zewnętrzna magistrala danych może być 16, 32 lub 48-bitowa. Interfejs procesora nadrzędnego Procesor ADSP-2106x może być w łatwy sposób dołączony do standardowej magistrali mikroprocesora tak 16 jak i 32-bitowego. Transmisja może być realizowana z prędkościami do szybkości zegara procesora DSP włącznie. Do połączenia tego dedykowane są cztery kanały DMA. Procesor nadrzędny może dzięki temu bezpośrednio odczytywać i zapisywać pamięć DSP.

  24. Architektura procesorów zmiennoprzecinkowych z rodziny 2106x • Procesor wejścia/wyjścia • dwa synchroniczne porty szeregowe – pozwalają na połączenie z szeroką gamą cyfrowych i cyfrowo- analogowych urządzeń zewnętrznych. Mogą one działać z maksymalną prędkością odpowiadającą szybkości zegara procesora (do 40Mb/s). Funkcje nadawcze i odbiorcze każdego portu są niezależne. Dane z portów szeregowych mogą być transmitowane via DMA do lub z pamięci • porty równoległe – wykorzystywane najczęściej do komunikacji w systemach wieloprocesorowych. Każdy o wielkości 4 bitów, mogą być taktowane dwa razy na cykl procesora co pozwala na przesył 8 bitów na cykl. Procesor ADSP-21061 nie jest wyposażony w porty równoległe • sterownik DMA – procesor ADSP-21061 jako wersja uproszczona jest wyposażony w 6 kanałów (normalnie 10). Sterownik DMA pracuje niezależnie i niewidocznie dla „rdzenia” procesora, pozwalając (dzięki dwuportowej konstrukcji pamięci) na jednoczesny dostęp „rdzenia” procesora i DMA do pamięci. Poprzez DMA do procesora mogą być przesyłane zarówno dane jak i program. Możliwe są przesyły poprzez DMA pomiędzy pamięcią wewnętrzną i zewnętrzną lub urządzeniem zewnętrznym lub procesorem nadrzędnym. Również dane z/do portów szeregowych i równoległych mogą być przesyłane z wykorzystaniem DMA

More Related