Procesory Sygnałowe i Logika Programowalna Laboratorium Ćw. 2. Zajęcia wprowadzające II

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

LABORATORIUM Komputery przemysłowe i systemy wbudowane

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

KONFIGURACJA NOWEGO PROJEKTU W CODE COMPOSER STUDIO

Procesory Sygnałowe i Logika Programowalna Laboratorium Ćw. 1. Zajęcia wprowadzające I

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

EiT_S_I_PADSP_AEwT Projektowanie aplikacji DSP Designing of DSP Applications

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Funkcja (podprogram) void

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

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

Wykład 1

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Projektowanie i implementacja filtru FIR

VisualDSP++ Pierwsze kroki

Co nie powinno być umieszczane w plikach nagłówkowych:

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

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

Wstęp do Programowania, laboratorium 02

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

2 Przygotował: mgr inż. Maciej Lasota

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

Konfiguracja pakietu CrossStudio for MSP

Laboratorium 1. Wprowadzenie do środowiska GnuRadio. I. Wprowadzenie

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.

Informatyka I : Tworzenie projektu

Schemat blokowy architektury AVR

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

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

Filtry cyfrowe i procesory sygnałowe

Programowanie I C / C++ laboratorium 01 Organizacja zajęć

Tworzenie projektu asemblerowego dla środowiska Visual Studio 2008.

Projekt procesora NIOSII w strukturze programowalnego układu logicznego CYCLONEII EP2C35F672C6 podłączenie i obsługa wyświetlacza LCD.

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

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

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Laboratorium: Systemy operacyjne czasu rzeczywistego. Temat: Wprowadzenie do karty DS1102 i oprogramowania Control Desk.

Funkcje zawarte w bibliotece < io.h >

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

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

Funkcje zawarte w bibliotece < io.h >

Wybieramy File->New->Project Wybieramy aplikację MFC->MFC Application jak na rysunku poniżej:

Programowanie strukturalne i obiektowe

Programowanie mikrokontrolerów AVR

Języki programowania - podstawy

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

KURS C/C++ WYKŁAD 1. Pierwszy program

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Podstawy programowania C. dr. Krystyna Łapin

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

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

Wprowadzenie do języka Java

Zastosowanie Procesorów Sygnałowych

Podstawy programowania w języku C++

Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej

1 Podstawy c++ w pigułce.

Laboratorium 10 Temat: Zaawansowane jednostki testowe. Operacje na plikach. Funkcje.

LABORATORIUM Architektura systemów wbudowanych

1 Podstawy c++ w pigułce.

Pobieranie argumentów wiersza polecenia

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

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Funkcje standardowej biblioteki wejść-wyjść do wyświetlania i pobierania danych

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Wykład 3: Implementacja programów wbudowanych

PMiK Programowanie Mikrokontrolera 8051

Języki i metodyka programowania. Wprowadzenie do języka C

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

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

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

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

Lab 1. Wstęp do programowania w C. Zintegrowane środowisko programistyczne Visual Studio.

Elementarne wiadomości o języku C

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

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

Wstęp do programowania 1

2. Kliknij Insert->Userform. Jeżeli Toolbox nie pojawi się automatycznie, kliknij View -> Toolbox. Otrzymany widok powinien być jak poniżej.

Wprowadzenie do programowania na procesorze sygnałowym

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Ćwiczenia z S Komunikacja S z miernikiem parametrów sieci PAC 3200 za pośrednictwem protokołu Modbus/TCP.

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia

Sterowniki Programowalne (SP)

SPRZĘTOWA REALIZACJA FILTRÓW CYFROWYCH TYPU SOI

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

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

Laboratorium 1 - Programowanie proceduralne i obiektowe

Instytut Politechniczny Państwowa Wyższa Szkoła Zawodowa TECHNIKI REGULACJI AUTOMATYCZNEJ

Programowanie Proceduralne

DYNAMICZNE PRZYDZIELANIE PAMIECI

1.Wstęp. 2.Generowanie systemu w EDK

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

Transkrypt:

Procesory Sygnałowe i Logika Programowalna Laboratorium Ćw. 2 Zajęcia wprowadzające II 1. Wstęp Cwiczenie jest drugim etapem praktycznego zapoznawania się studentów z własnościami i metodami programowania zmiennoprzecinkowych procesorów sygnałowych Texas Instruments TMS320C6713 (C6713). Zadaniem studentów będzie implementacja przykładowych programów napisanych w języku C, na TI DSP Starter Kit'cie (DSK) przy wykorzystaniu oprogramowania narzędziowego Code Composer Studio (CCS) wersji 3.1. Punktem wyjścia będzie projekt loop_stereo.pjt przeanalizowany i rozszerzony w ramach Ćw. Nr 1. Wydruk rozbudowanego pliku loop_stereo.c zamieszczono poniżej. ***************************************************************************** //Loop_stereo.c Stereo input/output to/from both channels #include "C:\CCStudio_v3.1\C6000\dsk6713\include\dsk6713_aic23.h" //codec-dsk support file Uint32 fs=dsk6713_aic23_freq_8khz; sampling rate //set #define LEFT 0 #define RIGHT 1 union Uint32 combo; short channel[2]; AIC23_data; interrupt void c_int11() AIC23_data.combo = input_sample(); sample if ( DSK6713_DIP_get(0) == 0 ) output_left_sample(aic23_data.channel[left]); DSK6713_LED_on(0); DSK6713_LED_off(3); else output_right_sample(aic23_data.channel[right]); DSK6713_LED_on(3); DSK6713_LED_off(0); //interrupt service routine //input 32-bit //I/O left channel //I/O rigrt channel // output_sample(aic23_data.combo); //I/O left & right channels return;

void main() comm_intr(); DSK6713_DIP_init(); DSK6713_LED_init(); while(1); //infinite loop //init DSK, codec, McBSP //main function ****************************************************************************** Program pozwala na sterowanie za pomocą DIP Switch'a nr 0 odsłuchem sygnału stereofonicznego wczytywanego na wejście DSK. Gdy DIP Switch nr 0 nie jest wciśnięty ( DSK6713_DIP_get(0) zwraca 1 ), świeci dioda nr 3 i słychać w prawym kanale sygnał z prawego wejścia. Gdy DIP Switch nr 0 wciśnięty ( DSK6713_DIP_get(0) zwraca 0 ), świeci dioda nr 0 i słychać w prawym kanale sygnał z prawego wejścia. 2. Funkcje GEL CCS posiada mechanizm sterowania wykonywaniem programu za pomocą obiektów GEL (ang. General Extention Language). Aby stworzyć Slider - regulator Należy utworzyć plik z rozszerzeniem *.gel. Przykładowy plik loop_stereo.gel zamieszczono poniżej *********************************************************************** menuitem "Wzmocnienie" slider Gain1(1,9,1,2,gain_parameter) /*zmiany od 1 do 9 co 1 przy klikaniu w slider skoki co 2 */ ngain = gain_parameter; /*zmiana poziomu syglału*/ ngain -= 5; slider KanalLewy(0,1,1,1,channel_parameter) /*zmiany od 0 do 1 co 1 przy klikaniu w slider skoki co 1 */ bleft = channel_parameter; /*zmiana kanału*/ ******************************************************************************

i dodać go do projektu klikając File->Load GEL. W przypadku jakichkolwiek zmian w pliku konieczne jest przeładowanie pliku (klikamy prawym klawiszem myszy na nazwę pliku w projekcie i wybieramy RELOAD). Zaproponowane regulatory posłużą do zmiany poziomu sygnału wysyłanego na wyjście oraz zmianie odsłuchiwanego kanału. Do programu należy wprowadzić następujące zmienne. short bleft = FALSE; short ngain = -4; float fgain = 0.2; float faux; oraz w odpowiednich miejscach poniżej podane instrukcje (szczegóły poda prowadzący): fgain = ( ngain >= 0 )? ( ( float )( ngain + 1 ) ) :( 1.0 / ( ( float )( -ngain + 1 ) ) ); faux = ( float )( AIC23_data.channel[LEFT] ) * fgain; output_left_sample( (short) faux ); //I/O left channel faux = ( float )( AIC23_data.channel[RIGHT] ) * fgain; output_right_sample( ( short ) faux ); //I/O rigrt channel 3. Źledzenie zmian wartości zmiennych Wszystkie zmienne programu można oglądać w trakcie jego wykonywania. W tym celu należy kliknąć na View->Quick Watch i wybrać zmiena, którą chcemy obserwować.

4. Debugowanie programu CCS pozwala na łatwe debagowanie programów. Większość opcji można znaleźć w zakładce Debug 5. Zapis danych do pliku Dane zgromadzone w tablicach i pojedynczych zmiennych można zapisywać do plików np. za pomocą funkcji fprintf jak również wysyłać na ekran do standardowego strumienia wyjściowego jakim jest okienko stdout do programu należy dodać plik nagłówkowy funkcji we/wy #include <stdio.h> oraz trzy zmienne: short nbuf[ BUFSIZE ]; short ii = 0, jj; FILE *fptr;

oraz odpowiedni fragment kodu (szczegóły poda prowadzący). if ( ii < BUFSIZE ) nbuf[ ii ] = ( short ) faux; ii++; if (ii > BUFSIZE) ii = BUFSIZE; bzapisano = TRUE; DSK6713_LED_off(1); DSK6713_LED_on(2); if ( DSK6713_DIP_get(3) == 0 ) ii = 0; DSK6713_LED_on(1); DSK6713_LED_off(2); ********************************************************************** while(1) //infinite loop if ( DSK6713_DIP_get(0) == 0 ) fptr = fopen("sygnal.dat", "w"); for (jj=0; jj<bufsize; jj++) fprintf( fptr, "%d. %d\n", jj, nbuf[ jj ] ); if ( jj < 128 ) printf( "%d. %d\n", jj, nbuf[ jj ] ); fclose(fptr); ************************************************************************ 6. Wykresy Aby oglądać wykresy czasowe oraz widma FFT danych zgromadzonych w tablicach należy wykonać komendę View->Graph->Time /frequency, a następnie wypełnić stosowne formularze.

7. Wykorzystanie pamięci SDRAM Aby można umieszczać dane w pamięci zewnętrznej SDRAM, należy skorzystać z dyrektywy preprocesora #pragma i skojarzyć zmienna, np dużą tablicę, z określonym adresem w pamięci zewnętrznej. W programie utworzono jedną duża tablicę, odpowiednie modyfikacje kodu zamieszczono poniżej. #define N 65536 short nbufsdram[ N ]; #pragma DATA_SECTION( nbufsdram, ".EXT_RAM" ) /*C6713dsk.cmd Linker command file*/ MEMORY IVECS: org=0h, len=0x220 IRAM: org=0x00000220, len=0x0002fde0 /*internal memory*/ SDRAM: org=0x80000000, len=0x00100000 /*external memory*/ FLASH: org=0x90000000, len=0x00020000 /*flash memory*/ SECTIONS.EXT_RAM :> SDRAM.vectors :> IVECS /*in vector file*/.text :> IRAM /*Created by C Compiler*/.bss :> IRAM.cinit :> IRAM.stack :> IRAM.sysmem :> IRAM.const :> IRAM.switch :> IRAM.far :> IRAM.cio :> IRAM.csldata :> IRAM ****************************************************************************** ******************************************************************************* BIBLIOGRAFIA R. Chassaing, Digital Signal Processing and Applications with the C6713 and C6416 DSK, Wiley & Sons, Inc., 2005,