Олег Вальпа - Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++
Рис. 24.5
Нажмите в этом окне кнопку создания нового каталога и задайте ему новое имя. Теперь откройте вновь созданный каталог и задайте имя нового проекта. После чего нажмите кнопку «Save» (сохранить). При этом откроется окно свойств проекта «Project Options» (рис. 24.6). Выберите в этом окне в списке «Processor» тип ADSP-2181 и закройте окно с помощью кнопки «OK».
Рис. 24.6
Далее создайте новый файл программы с помощью команды «File→New» и введите в него текст программы, подобный тому, что приведен ниже:
.section/pm interrupts;
__reset: JUMP start; NOP; NOP; NOP; /*reset vector*/
RTI; NOP; NOP; NOP; /*IRQ2*/
RTI; NOP; NOP; NOP; /*IRQL1*/
RTI; NOP; NOP; NOP; /*IRQL2*/
RTI; NOP; NOP; NOP; /*SPORT0 transmit*/
RTI; NOP; NOP; NOP; /*SPORT0 receive*/
RTI; NOP; NOP; NOP; /*IRQE*/
RTI; NOP; NOP; NOP; /*BDMA*/
RTI; NOP; NOP; NOP; /*SPORT1 transmit*/
RTI; NOP; NOP; NOP; /*SPORT1 receive*/
RTI; NOP; NOP; NOP; /*Timer*/
RTI; NOP; NOP; NOP; /*Power down*/
.section/pm program;
start: nop;
jump start;
Этот текст в дальнейшем можно использовать в качестве шаблона (заготовки) новой программы для сигнального процессора. Сохраните созданный файл с каким-либо допустимым именем и расширением «asm» и выполните команду Project→Add to Project→File(s). Выберите сохраненный файл с программой и нажмите кнопку «Add». Теперь необходимо добавить в каталог с проектом файл Adsp-2189.ldf, который можно взять из рассмотренных ранее каталогов с примерами проектов. Данный файл необходим для определения типа процессора и трансляции программы. После этого программу можно транслировать и запускать на выполнение. При успешной компиляции проекта, в подкаталоге «Debug» проекта должен появиться исполняемый файл с расширением «dxe», который автоматически загружается в отладчик-симулятор при запуске программы.
Для получения файла в рассмотренном нами ранее формате «lda» можно воспользоваться специальной утилитой elf2aexe.exe, входящей в состав Visual DSP++. С целью автоматизации этого процесса предлагаю использовать командный файл, имеющий следующее содержание:
cls
elf2aexe.exe %1.dxe %1
del %1.lda
del %1.sym
ren %1.exe %1.lda
Здесь вначале производится очистка дисплея, затем вызывается утилита elf2aexe.exe с именем преобразовываемого файла в качестве входного параметра. После чего выполняются операции удаления вспомогательных файлов и переименования полученного файла. Данный командный файл можно назвать именем dxe_lda.bat и использовать для его вызова команду: dxe_lda.bat имя_файла.
Полученный таким образом файл с расширением «lda» можно использовать для загрузки в аппаратный эмулятор или тестовую плату через интерфейс IDMA.
Глава 25. Спектральный анализ сигнала в среде Visual DSP++
В этой главе рассматривается программный метод спектрального анализа цифрового сигнала на примере программы, выполняемой в среде разработки Visual DSP++.
Наиболее распространенной и актуальной задачей цифровой обработки сигналов является спектральный анализ сигнала. Полученный в результате анализа спектр сигнала позволяет получить такие важные характеристики сигнала как частоту и амплитуду гармоник, из которых состоит сигнал. Имея эти данные, можно проводить анализ сигнала, на содержание в нем той или иной частоты с определенной амплитудой и длительностью.
Одним из наиболее распространенных и известных методов получения спектра является метод дискретного преобразования Фурье (ДПФ). Этот метод активно применяется в анализаторах спектра, устройствах обработки звука и изображений, распознавания образов и т.п.
ДПФ позволяет преобразовать N комплексных отсчетов сигнала во временной области в N комплексных отсчетов спектра в частотной области. Из многих теоретических источников известно, что во временной области входному сигналу с частотой, равной f, в частотной области соответствует спектр сигнала, отображаемый в диапазоне от -f/2 до f/2, где отрицательные значения составляют мнимую, а положительные значения — действительную часть спектра сигнала. Причем действительная часть спектра обладает четной симметрией, а мнимая часть нечетной. С целью сокращения количества операций и ускорения тем самым расчетов спектра сигнала, обычно ограничиваются вычислением модуля спектра сигнала в области частот от 0 до f/2.
Вычисление N отсчетов спектра сигнала с помощью ДПФ производится с помощью уравнения, приведенного на рис. 25.1. Здесь X(k) являются искомыми отсчетами спектра сигнала, а x(n) — исходными отсчетами сигнала во временной области. N представляет собой количество отсчетов при вычислении ДПФ.
Рис. 25.1. Вычисление N отсчетов спектра сигнала с помощью ДПФ
В квадратных скобках уравнения присутствуют коэффициенты для действительной и мнимой частей.
Рассмотрим очередной пример программы, демонстрирующей реализацию метода дискретного преобразования Фурье для получения спектра сигнала в среде Visual DSP++. Откройте в программном пакете Visual DSP++ очередной проект из каталога C:Program FilesAnalogDevicesVisualDSP218xExamplesExample4 и разверните в нем программу, находящуюся в файле с именем «Dft.asm». В этой программе производится расчет спектра сигнала по N отсчетам сигнала, используя алгоритм дискретного преобразования Фурье. Текст этой программы с переведенными автором книги комментариями приведен ниже:
/*====================================================================
Файл: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; /* Запись результата мнимой величины */
Откройте для себя мир чтения на siteknig.com - месте, где каждая книга оживает прямо в браузере. Здесь вас уже ждёт произведение Олег Вальпа - Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++, относящееся к жанру Справочники. Никаких регистраций, никаких преград - только вы и история, доступная в полном формате. Наш литературный портал создан для тех, кто любит комфорт: хотите читать с телефона - пожалуйста; предпочитаете ноутбук - идеально! Все книги открываются моментально и представлены полностью, без сокращений и скрытых страниц. Каталог жанров поможет вам быстро найти что-то по настроению: увлекательный роман, динамичное фэнтези, глубокую классику или лёгкое чтение перед сном. Мы ежедневно расширяем библиотеку, добавляя новые произведения, чтобы вам всегда было что открыть "на потом". Сегодня на siteknig.com доступно более 200000 книг - и каждая готова стать вашей новой любимой. Просто выбирайте, открывайте и наслаждайтесь чтением там, где вам удобно.


