Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Изучение алгоритмов формирования и обработки радиотехнических сигналов на цифровом сигнальном процессоре TMS320C5510. Практикум

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
799 Кб
Скачать

ПРИЛОЖЕНИЕ 3

Программа, создающая файл из 4096 (212) шестнадцатеричных значений синуса в формате 1.15

clear all, close all

N_sinpl=4096 (2^12); % установка количества отсчетов range_sin=floor(2^15); % точность вычисления koef=1/sqrt(2); % коэффициент нормировки

for i=1:N_sinpl; t(i)=(pi*2)/(N_sinpl)*(i-1); x1(i)=sin(t(i))*koef;

if x1(i)>=0 x11(i)=(floor((range_sin-1)*x1(i)));

else

x11(i)=range_sin*2-abs(floor((range_sin-1)*x1(i)));

end

end

figure(1); stem(x11), grid; saves=1; % флаг разрешения записи if saves==1

path_c='c:\CCStudio_v3.1\MyProjects\sine_tab.h';

fid

= fopen(path_c,'w');

k3=N_sinpl;

fprintf(fid,'int sineTable[SIZE_SINE_TABLE] = ');

for

i=1:k3-1;

fprintf(fid,'0x%x, ',x11(i));

 

if (fix(i/5)-i/5)==0

 

fprintf(fid,'\r\n

');

end

 

end

 

fprintf(fid,'0x%x\r\n',x11(k3));

 

fprintf(fid,'\r\n');

 

fclose(fid);

 

end

 

31

ПРИЛОЖЕНИЕ 4

/*Подключение заголовочных файлов */

#include <stdio.h> #include "volume.h"

/*Объявление переменных и буферов */

int inp_buffer[BUFSIZE]; /*входной буфер обработки данных */ int out_buffer[BUFSIZE]; /*выходной буфер обработки данных */ int gain = MINGAIN; /*переменная, управляющая усилением */ unsigned int processingLoad = BASELOAD; /* загрузка данных */ struct PARMS str =

{ 2934, 9432, 213, 9432, &str}; /* Объявление функций */

extern void load(unsigned int loadValue); static int processing(int *input, int *output); static void dataIO(void);

/* Объявление функций, переменных и буферов для подпрограммы фильтрации */

int fir(int data, int *_X, int *_xptr_p);

int

_XL[BUFSIZE],_XR[BUFSIZE];

int

_xptrL = 0,_xptrR = 0;

int data[BUFSIZE];

/* ======== основная программа (main) ======== */ void main()

{int *input = &inp_buffer[0]; /* Обновление указателя на входной буфер*/

int *output = &out_buffer[0]; /* Обновление указателя на выходной буфер*/

puts("volume example started\n"); /*Отображение в окне вывода сообщения "volume example started"*/

/* бесконечный цикл */ while(TRUE)

{/* чтение с использованием точки пробника, соединенной с заданным файлом. */ /* Запись выходных данных в окно визуализации, соединенное с точкой пробника.*/

dataIO(); #ifdef FILEIO

puts("begin processing"); #endif

/* Выполнение подпрограммы обработки данных */ processing(input, output);}

}

/* ======== подпрограмма обработки (processing) ======== *

ФУНКЦИИ: обработка входного сигнала. ПАРАМЕТРЫ: адреса входных и выходных буферов. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: TRUE. */

static int processing(int *input, int *output) {int size = BUFSIZE;

while(size--){

*output++ = *input++ * gain;

32

/* для цифрового фильтра реализуется следующая обработка */

/* == *output++ = fir(*input++,_XL,&_xptrL); ==*/}

/* ===== подпрограмма загрузки (используется load.asm)==== */ load(processingLoad);

return(TRUE);}

/* ======== ввод-вывод данных (dataIO) ======== */

ФУНКЦИИ: чтение входного сигнала и запись выходного сигнала. ПАРАМЕТРЫ: нет.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: нет. */ static void dataIO()

{/* выполняется ввод-вывод данных */ return;}

/* ======== подпрограмма цифровой фильтрации ======== */ int fir(int data, int *_X, int *_xptr_p)

{

long s; int k; int _xptr;

_xptr = *_xptr_p;

/* поместить значение во входной буфер */

_X[_xptr] = data; s = 0; for(k=0;k<BL;k++)

{

s+=(long)B[k] * _X[ (_xptr - k +BL) %BL ];

}

s = s>>16; /* масштабирование результата*/

_xptr++; _xptr%=BL; data = (int)s;

*_xptr_p = _xptr; return data;

}

33

Практикум

Изучение алгоритмов формирования и обработки радиотехнических сигналов на цифровом сигнальном процессоре

TMS320C5510

Подписано в печать 12.11.2015г. Формат 60х90 1/16. Объём 2,1 усл.п.л. Тираж 100 экз. Изд. № 62. Заказ 23.

ООО «Брис-М». Москва, ул. Авиамоторная, д. 8а.

34

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]