Разработка устройств на основе цифровых сигнальных процессоров фирмы 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 спектра.
Поделиться:
Популярные книги
Адвокат Империи 3
3. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Кротовский, может, хватит?
3. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
7.50
рейтинг книги
Дурная жена неверного дракона
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Вонгозеро
1. Вонгозеро
Детективы:
триллеры
9.19
рейтинг книги
Ведьма Вильхельма
Любовные романы:
любовно-фантастические романы
8.67
рейтинг книги
Папина дочка
4. Самбисты
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Законы Рода. Том 6
6. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Как я строил магическую империю 7
7. Как я строил магическую империю
Фантастика:
попаданцы
постапокалипсис
аниме
фантастика: прочее
5.00
рейтинг книги
Лучший из худший 3
3. Лучший из худших
Фантастика:
городское фэнтези
попаданцы
аниме
6.00
рейтинг книги
Штурмовик из будущего 3
3. Небо в огне
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Последний попаданец 2
2. Последний попаданец
Фантастика:
юмористическая фантастика
попаданцы
рпг
7.50
рейтинг книги
Идеальный мир для Лекаря 14
14. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Безумный Макс. Поручик Империи
1. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
7.64
рейтинг книги
Вдова на выданье
Любовные романы:
любовно-фантастические романы
5.00