Jednym z wielu zastosowań procesorów sygnałowych jest cyfrowa generacja sygnałów analogowych.

1. Sygnał sinusoidalny:

0x01 graphic

0x01 graphic

0x01 graphic

Przykładowy kod programu:

#define M_2PI 6.28318530717958647692

#define FS 48000

void main ( void )

{

float output, t, A, f, dt;

A=10000; // Amplituda

f=1000; // Czestotliwosc [Hz]

dt=f/(float)FS;

init_codec();

user_tx_ready = 0;

t=0;

for(;;)

{

user_rx_ready = 1;

idle();

while (user_tx_ready);

//---------------- Tu wpisz swoj kod -------------------

output=A*sin(M_2PI*t);

t+=dt;

if(t>=1)

t=0;

//------------------------------------------------------

user_tx_buf[RIGHT_CHNL] = output;

user_tx_buf[LEFT_CHANL] = output;

user_tx_buf[TAG] = DOUT_TAG;

user_tx_ready = 1;

};

}

2. Sygnał piłokształtny narastający

0x01 graphic

Przykładowy kod programu:

#define M_2PI 6.28318530717958647692

#define FS 48000

void main ( void )

{

float output, t, A, f, dt;

A=10000; // Amplituda

f=1000; // Częstotliwość [Hz]

dt=2*f/(float)FS;

init_codec();

user_tx_ready = 0;

t=0;

for(;;)

{

user_rx_ready = 1;

idle();

while (user_tx_ready);

//---------------- Tu wpisz swoj kod -------------------

output=A*t;

t+=dt;

if(t>=1)

t=-1;

//------------------------------------------------------

user_tx_buf[RIGHT_CHNL] = output;

user_tx_buf[LEFT_CHANL] = output;

user_tx_buf[TAG] = DOUT_TAG;

user_tx_ready = 1;

};

}

3. Zadania:

  1. Uruchom i sprawdź działanie programów z punktu 1 i 2

  2. Wykorzystując gotowy szkielet programu napisz programy generujące następujące przebiegi:

    1. Przebieg piłokształtny opadający

0x01 graphic

    1. Przebieg trójkątny

0x01 graphic

    1. Przebieg prostokątny o zmiennym współczynniku wypełnienia (0 -100%)

0x01 graphic

    1. Dla przebiegu sinusoidalnego napisz „wobulator” czyli przestrajanie częstotliwości w czasie np. od 20Hz -20kHz z zadanym skokiem częstotliwości.

    2. Napisz program umożliwiający „programowanie” kształtu przebiegu wyjściowego. Wskazówka, należy wykorzystać tablicę np.:

float signal[10]={0, 1000, -100,-25000, 30000,…};

Szkielet programu dostępny jest tutaj:

0x01 graphic

Procesory Sygnałowe

0x01 graphic

Laboratorium 2 - Generacja sygnałów 3

0x01 graphic

©D. Król, R. Wielgat - PWSZ Tarnów