Чтение онлайн

на главную - закладки

Жанры

Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++

Вальпа Олег Дмитриевич

Шрифт:

/*====================================================================

Файл:DFT.ASM Процессор:ADSP-218х Дискретное Преобразование Фурье (ДПФ)

Эта программа выполняет ДПФ для N точек согласно следующему уравнению:

N-1

real(k)+j *imag(k) = SUM input(n) [С - j*S]; k=0 до N-1

n=0

где: C=cos(2*pi*k*n/N), S=sin(2*pi*k*n/N), j=sqrt(-1)

====================================================================*/

#define N 64 /*
Константа - количество входных отсчетов * /

#define COS 0x000C1 /* Адрес буфера временных данных COS */

#define SIN 0x000C5 /* Адрес буфера временных данных SIN */

.section/data data1;

.VAR input[N]=etest64.date; /* Таблица данных тестируемого сигнала */

.VAR real[N]; /* Буфер действительных значений спектра * /

.VAR imag[N]; /* Буфер мнимых значений спектра */

.section/pm pm_da;

.VAR sine[N]="sine64.dat";/* Таблица данных гармонического сигнала */

.section/pm interrupts;

__reset: JUMP start; rti; rti; rti; /* 0x0000: reset */

rti; rti; rti; rti; /* 0x0004: IRQ2 */

rti; rti; rti; rti; /* 0x0008: IRQL1 */

rti; rti; rti; rti; /* 0x000c: IRQL0 */

rti; rti; rti; rti; /* 0x0010: SPORT0 tx */

rti; rti; rti; rti; /* 0x0014: SPORT1 rx */

rti; rti; rti; rti; /* 0x0018: IRQE */

rti; rti; rti; rti; /* 0x001c: BDMA */

rti; rti; rti; rti; /* 0x0020: SPORT1 tx or IRQ1 */

rti; rti; rti; rti; /* 0x0024: SPORT1 rx or IRQ0 */

rti; rti; rti; rti; /* 0x0028: timer */

rti; rti; rti; rti; /* 0x002c: power down */

.section/pm seg_code; /* Пример установки программы ДПФ */

start:

M1=1;

M2=0;

M7=1;

M5=0;

I0=input;

L0=64; /* Входной буфер циклический */

I1=imag;

L1=0; /* Нециклический буфер Image */

I2=real;

L2=0; /* Нециклический буфер Real */

/* ______________Подпрограмма ДПФ_____________________ */

dft:

I6=sine; /*
Указатель на Sine */

L6=64; /* Для N=64 значений */

I7=sine + N/4; /* Получение косинуса из синуса */

L7=64; /* Сдвиг указателя на pi/2 */

/* и использование циклического буфера.*/

I4=COS;

L4=2;

I3=SIN;

L3=2;

I5=0;

L5=0;

CNTR=N;

DO outer UNTIL CE;

 M6=I5;

 DM(I4,M7)=0; DM(I4,M7)=0;/* Очистка буфера временных данных COS */

 DM(I3,M1)=0; DM(I3,M1)=0;/* Очистка буфера временных данных SIN */

 CNTR=N;

 DO calc UNTIL CE;

MX0=DM(I0,M1), MY0=PM(I7,M6); /* Чтение input, чтение COS */

MX1=MX0 /* Копирование input */

MY1=PM(I6,M6); /* Чтение SIN */

MR1=DM(I4,M7); /* Чтение текущего значения COS и суммирование */

MR0=DM(I4,M7);

MR=MR+MX0*MY0(SS);/* Мультисуммирование COS */

DM(I4,M7)=MR1; /* Запись нового накопленного значения COS */

DM(I4,M7)=MR0;

MR1=DM(I3,M1); /* Чтение текущего значения SIN и суммирование */

MR0=DM(I3,M1);

MR=MR-MX1*MY1(SS);/* Мультисуммирование SIN */

DM(I3,M1)=MR1; /* Запись нового накопленного значения SIN */

 calc : DM(I3,M1)=MR0;

 AR=DM(I4,M5);

 DM(I2,M1)=AR; /* Запись результата действующей величины * /

 AR=DM(I3,M2);

 DM(I1,M1)=AR; /* Запись результата мнимой величины */

outer: MODIFY(I5,M7); /* Модификация указателей циклической таблицы */

end: IDLE;

Как видно из текста программы, в ней задействованы регистры генераторов адреса DAG для задания указателей на буфер данных тестируемого сигнала, таблицу значений гармонического сигнала, буферы результата и другие вспомогательные буферы. Вычисление значений спектра производится в двух циклах, счетчики которых инициализируются числом отсчетов N = 64. Вся программа выполняется за N*N групп операций. Результат работы программы заносится в выходные буферы действительных значений real и мнимых значений imag спектра.

Поделиться:
Популярные книги

Кодекс Крови. Книга III

Борзых М.
3. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга III

Отчий дом. Семейная хроника

Чириков Евгений Николаевич
Проза:
классическая проза
5.00
рейтинг книги
Отчий дом. Семейная хроника

Скандальная свадьба

Данич Дина
1. Такие разные свадьбы
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Скандальная свадьба

Путанабус. Трилогия

Старицкий Дмитрий
Фантастика:
боевая фантастика
6.93
рейтинг книги
Путанабус. Трилогия

Идеальный мир для Лекаря 25

Сапфир Олег
25. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 25

Кодекс Крови. Книга ХVI

Борзых М.
16. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХVI

Проданная невеста

Wolf Lita
Любовные романы:
любовно-фантастические романы
5.80
рейтинг книги
Проданная невеста

Потомок бога

Решетов Евгений Валерьевич
1. Локки
Фантастика:
попаданцы
альтернативная история
аниме
сказочная фантастика
5.00
рейтинг книги
Потомок бога

С Д. Том 16

Клеванский Кирилл Сергеевич
16. Сердце дракона
Фантастика:
боевая фантастика
6.94
рейтинг книги
С Д. Том 16

Переиграть войну! Пенталогия

Рыбаков Артем Олегович
Переиграть войну!
Фантастика:
героическая фантастика
альтернативная история
8.25
рейтинг книги
Переиграть войну! Пенталогия

От Советского Информбюро - 1941-1945 (Сборник)

Неизвестен 3 Автор
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
От Советского Информбюро - 1941-1945 (Сборник)

Санек 3

Седой Василий
3. Санек
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Санек 3

Прометей: повелитель стали

Рави Ивар
3. Прометей
Фантастика:
фэнтези
7.05
рейтинг книги
Прометей: повелитель стали

Отмороженный 14.0

Гарцевич Евгений Александрович
14. Отмороженный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Отмороженный 14.0