UKŁAD EDMA I MODULACJA AMPLITUDOWA



Podobne dokumenty
PROCESORY SYGNAŁOWE - LABORATORIUM. Ćwiczenie nr 05

PROCESORY SYGNAŁOWE - LABORATORIUM. Ćwiczenie nr 03

Mikroprocesor Operacje wejścia / wyjścia

organizacja procesora 8086

PROCESORY SYGNAŁOWE - LABORATORIUM. Ćwiczenie nr 04

Instytut Teleinformatyki

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

Hardware mikrokontrolera X51

Organizacja typowego mikroprocesora

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

Standard transmisji równoległej LPT Centronics

Podstawy Informatyki DMA - Układ bezpośredniego dostępu do pamięci

LEKCJA TEMAT: Zasada działania komputera.

Architektura komputerów

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

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

Instytut Teleinformatyki

Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt

Komunikacja w mikrokontrolerach Laboratorium

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

Mikroprocesory i Mikrosterowniki Magistrala szeregowa I2C / TWI Inter-Integrated Circuit Two Wire Interface

Urządzenia zewnętrzne

Rozdział ten zawiera informacje na temat zarządzania Modułem Modbus TCP oraz jego konfiguracji.

Start Bity Bit Stop 1 Bit Par Rys. 1

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

Parametryzacja przetworników analogowocyfrowych

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Przetwornik ADC procesora sygnałowego F/C240 i DAC C240 EVM

Metody obsługi zdarzeń

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

Magistrala systemowa (System Bus)

Bit 11 pierwszego słowa komunikacji acyklicznej ustawny jest na wartość 0 i nie podlega modyfikacji.

Mikrokontroler ATmega32. System przerwań Porty wejścia-wyjścia Układy czasowo-licznikowe

Architektura komputerów

Komunikacja w mikrokontrolerach. Magistrala szeregowa I2C / TWI Inter-Integrated Circuit Two Wire Interface

Technika mikroprocesorowa I Wykład 2

Instrukcja obsługi czytnika MM-R32

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

ad a) Konfiguracja licznika T1 Niech nasz program składa się z dwóch fragmentów kodu: inicjacja licznika T1 pętla główna

Pomoc dla użytkowników systemu asix 6. Strategia buforowa

Opis procedur asemblera AVR

Architektura Systemów Komputerowych. Bezpośredni dostęp do pamięci Realizacja zależności czasowych

Przerwania, polling, timery - wykład 9

asix5 Podręcznik użytkownika Strategia buforowa

Zastosowania mikrokontrolerów w przemyśle

Działanie systemu operacyjnego

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

Mikrooperacje. Mikrooperacje arytmetyczne

Instytut Teleinformatyki

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Programowanie na poziomie sprzętu. Tryb chroniony cz. 1

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

Spis treści. 1 Moduł Modbus TCP 4

Działanie systemu operacyjnego

TRX API opis funkcji interfejsu

Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej. Instrukcja do zajęć laboratoryjnych z przedmiotu:

Programowanie Niskopoziomowe

Instytut Teleinformatyki

Obługa czujników do robota śledzącego linie. Michał Wendland czerwca 2011

Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej

Procesy pojęcia podstawowe. 1.1 Jak kod źródłowy przekształca się w proces

1 Moduł Modbus ASCII/RTU

MARM Odtwarzacz plików MP3 z kardy SD

Instrukcja uruchomienia i obsługi Programu Użytkownika Kas Posnet PUK

ADVANCE ELECTRONIC. Instrukcja obsługi aplikacji. Modbus konfigurator. Modbus konfigurator. wersja 1.1

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej

Podstawy techniki cyfrowej Układy wejścia-wyjścia. mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

Instytut Teleinformatyki

ARCHITEKTURA PROCESORA,

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

Przykładowe pytania DSP 1

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

Instrukcja do ćwiczenia : Matryca komutacyjna

PRZERWANIA. 1. Obsługa zdarzeń, odpytywanie i przerwania Obsługa zdarzeń jest jedną z kluczowych funkcji w prawie każdym systemie czasu rzeczywistego.

Programowanie w językach asemblera i C

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

WPROWADZENIE Mikrosterownik mikrokontrolery

1 Moduł Modbus ASCII/RTU 3

Instytut Teleinformatyki

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

Wyjście do drukarki Centronix

Konfiguracja parametrów pozycjonowania GPS /5

asix4 Podręcznik użytkownika DMS500 - drajwer protokołu analizatorów DURAG DMS 500 Podręcznik użytkownika

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

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Funkcje sterownika CellBOX-UxR ModBUS RTU

Konfigurator Modbus. Instrukcja obsługi programu Konfigurator Modbus. wyprodukowano dla

Działanie systemu operacyjnego

Programowanie mikrokontrolerów. 8 listopada 2007

Licznik rewersyjny MD100 rev. 2.48

Przetwornik analogowo-cyfrowy

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

dokument DOK wersja 1.0

Materiały dodatkowe Krótka charakterystyka protokołu MODBUS

Architektury Komputerów - Laboratorium Informatyka III rok studia dzienne

Industrial Ethernet Dokumentacja techniczna połączenia Sterowniki S7-400(300) firmy Siemens - System PRO-2000 firmy MikroB

Komunikacja w mikrokontrolerach Laboratorium

Politechnika Warszawska

Transkrypt:

1. Pytania na kartkówkę POLITECHNIKA WROCŁAWSKA WYDZIAŁ ELEKTRONIKI MIKROSYSTEMÓW I FOTONIKI\ LABORATORIUM PROCESORÓW SYGNAŁOWYCH UKŁAD EDMA I MODULACJA AMPLITUDOWA zadeklarować odpowiednie zmienne globalne i napisać funkcję obsługi przerwania służącą do generacji efektu echa zadeklarować odpowiednie zmienne globalne i napisać funkcję obsługi przerwania do filtracji SOI zadeklarować odpowiednie zmienne globalne i napisać funkcję obsługi przerwania do filtracji NOI wymienić po kolei instrukcje biblioteki csl, niezbędne do uruchomienia portu szeregowego (podać typ przyjmowanych parametrów i zwracanych wartości) wymienić po kolei instrukcje biblioteki csl niezbędne do konfiguracji układu licznika (podać typ przyjmowanych parametrów i zwracanych wartości) wymienić po kolei instrukcje niezbędne do konfiguracji układu przerwań (podać typ przyjmowanych parametrów i zwracanych wartości) 2. Opis zadania do wykonania Celem laboratorium jest napisanie programu wykonującego modulację amplitudową sygnału mowy pochodzącego z mikrofonu. Modulacja amplitudowa jest jednym z najprostszych sposobów modulacji sygnału. Polega ona na przemnożeniu sygnału modulowanego przez funkcję sinusoidalną o zadanej częstotliwości, nazywanej częstotliwością modulacji. W pierwszym krokiem do osiągnięcia tego celu jest napisanie programu, który wykorzystując bufor kołowy, będzie generował sygnał sinusoidalny, który należy zaobserwować na oscyloskopie. Następnym krokiem będzie modulacja sygnału mowy generowaną funkcją sinusoidalną. Ostatnim elementem będzie oprogramowanie układu licznika, który będzie źródłem sygnału synchronizacji dla zmian częstotliwości modulacji. Program ramowy jest do pobrania na stronie internetowej przedmiotu. W komentarzach są podane instrukcje w jaki sposób modyfikować pobranych kod. Sygnał wyjściowy do portu szeregowego, będzie generowany przez układ bezpośredniego dostępu do pamięci EDMA. W tym celu należy skonfigurować układ EDMA, tak aby pobierał dane z bufora kołowego i kopiował je do rejestru zapisu portu szeregowego. Konieczne jest uruchomienie mechanizmu transferów łączonych (ang. link transfer), aby po zakończeniu transmisji całej zawartości bufora, układ rozpoczął ponowne kopiowanie danych od początku.

2. Układ EDMA Układ EDMA jest to układ tzw. bezpośredniego dostępu do pamięci. Bezpośredniość ta polega na tym, że do kopiowania danych z jednego miejsca pamięci do drugiego nie jest w najmniejszym nawet stopniu wykorzystywany rdzeń procesora. Dane przesyłane są po magistrali danych z jednego miejsca pamięci do drugiego. W klasycznym kopiowaniu danych natomiast dana jest pobierana do rejestru mikroprocesora i za pomocą drugiego rozkazu zapisywana z rejestru do pamięci. Przepływ danych zatem odbywa się poprzez mikroprocesor. Przesyłanie danych za pomocą układu DMA jest efektywne wtedy, gdy mikroprocesor w tym samym czasie realizuje inne zadania. Typową sytuacją, w której wykorzystywany jest układ DMA jest akwizycja danych z przetworników analogowo cyfrowych i wysyłanie przetworzonych danych do przetworników cyfrowo analogowych. Zaangażowanie układu DMA do odbierania i nadawania danych jest w takiej sytuacji niezwykle efektywne, ponieważ procesor, pracujący zwykle z częstotliwością wielokrotnie większą niż układy przetworników, nie musi czekać aż przetwornik będzie gotowy do odebrania nadawanej danej. Zamiast tego umieszcza on przetworzoną próbkę w specjalnym buforze obsługiwanym przez układ DMA i zaczyna kolejny cykl przetwarzania, pozostawiając zadanie wysłania próbki układowi DMA. Jeszcze bardziej efektywnym sposobem wykorzystania układu DMA jest zastosowanie podwójnego buforowania albo inaczej buforowania typu ping pong. Metoda ta polega na takim oprogramowaniu układu DMA, aby zapisywał dane naprzemiennie do dwóch buforów bufora ping i bufora pong. Wówczas układ DMA synchronizuje się procesorem po przesłaniu całego jednego bufora. W czasie gdy układ DMA zapisuje lub odczytuje dane z bufora ping, mikroprocesor przetwarza bufor pong, a potem odwrotnie. W tej metodzie układ DMA pracuje najefektywniej, dlatego jest ona wykorzystywana do przetwarzania sygnałów VIDEO. Dla każdego kanału DMA w danym momencie wykorzystywana jest tylko jedna konfiguracja, która jest zapisana w specjalnej tablicy w pamięci parametrów układu DMA(ang. parameters RAM). Jest to obszar pamięci, który dzieli się na dwie części. Pierwsza z nich jest wykorzystywana przez aktualnie wykonywany transfer do zapisu bieżących stanów rejestrów. W drugiej części są zapisywane parametry(konfiguracje) do przeładowania po zakończeniu transferu i tego obszaru układ DMA nie może modyfikować. W momencie gdy Array/Frame count i Element count są równe odpowiednio 0 i 1, następuje zakończenie transferu, załadowanie następnej konfiguracji spod adresu wskazanego w rejestrze Link address oraz wywołanie przerwania. Oczywiście, jeżeli nie jest to potrzebne, linkowanie może nie być wykonane(gdy Link address=0000h) oraz przerwanie nie musi być wykonane.

BUFOROWANIE TYPU PING-PONG 0180h, PING 01B0h, PONG KONFIGURACJE TRANSFERÓW Options (LINK=1) Source (SRC) addresss Array/Frame count Destination (DST) address = &Bufor_ping Array/Frame index reload Options (LINK=1) Element index Link address = 01B0h Source (SRC) addresss Array/Frame count Destination (DST) address = &Bufor_pong Array/Frame index reload Element index Link address = 0180h KANAŁY 0 DSPINT 1 TINT0 2 TINT1 3 SD_INT 4 EXT_INT4 5 EXT_INT5 6 EXT_INT6 8 EDMA_TCC8 9 EDMA_TCC9 10 EDMA_TCC10 11 EDMA_TCC11 12 XEVT0 13 REVT0 14 XEVT1 15 REVT1 Rys. 1 Buforowanie typu ping pong W obsłudze przerwania od układu DMA należy sprawdzać, dla którego kanału został zakończony transfer. Aby to sprawdzić, należy użyć funkcji EDMA_intTest(Uint32 tccintnum) która sprawdza, czy dla podanego argumentu został ustawiony odpowiadający mu bit w rejestrze CIPR(Complete Interrupt Pending Register) czyli czy został już zakończony transfer. Po sprawdzeniu, należy koniecznie wyzerować ten bit używając funkcji EDMA_intClear(Uint32 tccintnum). Jest to niezbędne, gdyż zapobiega ponownemu wywołaniu przerwania dla obsłużonego już transferu. Numer bitu odpowiada przetłumaczonemu TCC(Transfer Complete Code) na kod 1 z 16. TCC jest to 4-bitowy kod przydzielany każdemu transferowi i jest on jego identyfikatorem. Na przykład indeksowi 12 (w rejestrze CIPR) odpowiada TCC równe 1100b w systemie binarnym. Aby nastąpiło wywołanie przerwania muszą być ustawione następujące bity: ustawiony bit CIEn w rejestrze CIER ustawiony bit TCINT w rejestrze OPT TCC ustawione na wartość n

Przykładowo, jeżeli TCC = 1100b, a bit CIPR[12] jest ustawiony na 1 po zakończeniu transferu, to procesor wykona przerwanie tylko gdy CIER[12] = 1. Tab. 1 Opcje transferu zawatość pola OPT parametrów transferu Bity field symval Wartość Opis 31 29 PRI 0 7h Priorytety dla zdarzeń DMA. 0 Zarezerwowane dla żądań od pamięci cache L2. HIGH 1h Wysoki priorytet. LOW 2h Niski priorytet. 3h 7h Zarezerwowane. 28 27 ESIZE 0 3h Rozmiar elementu. 32BIT 0 32-bity. 16BIT 1h 16-bitów 8BIT 2h 8-bitów. 3h Zarezerwowane. 26 2DS Bit wymiaru źródła NO 0 1-wymiarowe źrodło. YES 1 2-wymiarowe źródło. 25 24 SUM 0 3h Aktualizacja adresu źródła NONE 0 Tryb stałego adresu. Adres źródła nie jest zmieniany. INC 1h Inkrementacja adresu źródła zależna od bitów 2DS i FS. DEC 2h Dekrementacja adresu źródła zależna od bitów 2DS i FS. IDX 3h Adres źródła modyfikowany przez index/frame index zależny od bitów 2DS i FS. 23 2DD Wymiary NO 0 Przeznaczenie 1-wymiarowe YES 1 Przeznaczenie 2-wymiarowe 22 21 DUM 0 3h Aktualizacja adresu prze. NONE 0 Tryb stałego adresu. Adres prze nie jest zmieniany. INC 1h Inkrementacja adresu prze zależna od bitów 2DS i FS. DEC 2h Dekrementacja adresu prze zależna od bitów 2DS i FS. IDX 3h Adres prze modyfikowany przez index/frame index zależny od bitów 2DS i FS. 20 TCINT Bit Transfer complete interrupt NO 0 Transfer complete indication jest wyłączone. Bity w rejestrze CIPR nie będą ustawiane po zakończeniu transferu. YES 1 Rejestr CIPR jest ustawiony według kodu TCC. 19 16 TCC OF(value) 0 Fh Kod TCC używany jako identyfikator kanału. 15 2 Reserved 0 Zarezerwowane. Odczyt zawsze da w wyniku 0, natomiast zapis również da 0 niezależnie od argumentu. 1 LINK Łączenie transferów. NO 0 Łączenie transferów wyłączone. YES 1 Łączenie transferów włączone. Po zakończeniu transferu konfiguracja kanału zostaje przeładowana przez konfigurację spod Link w rejestrze RLD. 0 FS Synchronizacja ramki NO 0 Kanał jest zsynchronizowany z elementem/tablicą YES 1 Kanał jest zsynchronizowany z ramką. field i symval są nazwami używanymi przez bibliotekę CSL.

Tab. 2 Znaczenie bitów SUM/DUM (ang. source/destination update mode) SUM/DUM Modyfikacja adresów Transfer 1-wymiarowy Transfer 2-wymiarowy 00 brak Wszystkie elementy są pod tym samym adresem 01 inkrementacja Elementy następują po sobie w sposób ciągły, a każdy kolejny element jest pod wyższym adresem 10 dektrementacja Elementy następują po sobie w sposób ciągły, a każdy kolejny element jest pod niższym adresem 11 przesunięcie (offset) Wszystkie elementy w ramce są oddalone od siebie o ELEIDX. Wszystkie ramki są oddalone od siebie o FRMIDX Wszystkie elementy w tablicy są pod tym samym adresem Elementy w ramce następują po sobie w sposób ciągły, a każdy kolejny element jest pod wyższym adresem. Ramki są oddalone od siebie o wartość FRMIDX. Elementy w ramce następują po sobie w sposób ciągły, a każdy kolejny element jest pod niższym adresem. Ramki są oddalone od siebie o wartość FRMIDX. Zarezerwowane a) Parametry początkowe transferu Array/Frame count = 0002h = reload = b) Parametry po przesłaniu jednego elementu Array/Frame count = 0002h = 0003h reload = c) Parametry po przesłaniu całej ramki Array/Frame count = 0001h = reload = d) Parametry końcowe transferu Array/Frame count = 0000h = 0001h reload = Rys. 2 Przykład transferu 1D-1D 3 ramek po 4 elementy (SUM 00, DUM 01, FS 0)

Z rys. 2 wynika, że mamy do czynienia z transferem ze źródła o stałym adresie (np. portu szeregowego) do jednowymiarowej tablicy prze. reload wpisywany jest do po zakończeniu każdej ramki i informuje ile przypada na nią elementów, a Element count ile jeszcze zostało do przesłania. Natomiast Array/Frame count mówi, ile tablic/ramek zostało do przesłania. Należy zwrócić uwagę, że dla liczenie zaczyna się od 4 i kończy na 1, a dla Array/Frame count zaczyna się od 2 i kończy na 0. Osiągnięcie końcowych wartości powoduje wywołanie przerwania, pod warunkiem że ustawione są odpowiednie bity (patrz tabelka wyżej). Opis funkcji do konfiguracji układu EDMA hedma_handle EDMA_open(int chanum, Uint32 flags) Aktywowanie miejsca w pamięci do przechowywania parametrów aktualnie wykonywanego transferu. hedma_handle EDMA_allocTable(int tablenum); Alokuje miejsce dla konfiguracji, która będzie przeładowywana po wykonaniu transferu. Aby wybrać pierwsze wolne miejsce, należy wywołać funkcję z argumentem -1. Układ DMA nie może modyfikować zawartości tej tablicy. gedmaconfigxmt.dst = MCBSP_getXmtAddr(hMcbsp1); pobiera adres rejstru nadajnika portu szeregowego i wpisuje go do adresu prze dla DMA. int EDMA_intAlloc(int tcc); Alokuje Transfer Completion Code. Jest to kod zgłaszany po zakończeniu transferu i jest indywidualny dla każdego kanału DMA. Aby wybrać pierwszy wolny kod należy użyć argumentu -1. gedmaconfigxmt.opt = EDMA_FMK(OPT,TCC,gXmtChan); Zapisanie kodu TCC dla kanału nadawczego. EDMA_config(EDMA_Handle hedma, EDMA_Config *config); Wpisanie konfiguracji pod wskazany adres. gedmaconfigxmt.src= EDMA_SRC_OF(gBufferXmtPong); Wskazanie źródła(buforu), z którego kopiowane są dane.

EDMA_link(EDMA_Handle parent,edma_handle child); Linkowanie konfiguracji(transferów). Pierwszy argument funkcji to rodzic, a drugi to dziecko. Najpierw należy użyć wskaźnika który był używany z EDMA_open, aby przypisać go do konkretnego urządzenia(czyli McBSP1). Następnie wpisujemy konfiguracje do tablicy parameters RAM. Do konfiguracji Pong linkowana jest struktura Ping, a Ping jest łączone z Pong, czyli wracamy następuje zapętlenie. W późniejszej fazie wzajemne linkowanie następuje tylko dla transferów zainicjowanych funkcją EDMA_allocTable. Należy również zwrócić uwagę na zamianę miejsc pomiędzy parent i child w następnych linkowaniach. EDMA_intEnable(intNum); Aktywuje przerwanie dla wybranego kodu TCC poprzez modyfikację rejestru CIER. EDMA_enableChannel(EDMA_Handle hedma); Musi nastąpić jawne aktywowanie kanału. Przyjmuje tylko uchwyty od EDMA_open.