45096

Программирование КИХ-фильтра на языке ассемблера процессора ADSP-2181

Лабораторная работа

Информатика, кибернетика и программирование

Разработка программы КИХ-фильтра заданного типа и с заданными характеристиками на языке ассемблера ADSP-2181. Изучение характеристик спроектированного фильтра с использование программы DFT.ASM. Изучение преобразований типовых дискретных сигналов при прохождении через КИХ-фильтры.

Русский

2013-11-15

569.5 KB

34 чел.

Федеральное агентство образования РФ

РГРТУ

Кафедра РТС

 

Лабораторная работа № 4

по дисциплине «Техника цифровой обработки сигналов»

Программирование КИХ-фильтра на языке ассемблера процессора ADSP-2181

                                                                                                        Выполнил:

студент 514 группы                                                                                                      Андреев Р.Н.                                                                                                         Проверил:

Сальников Н.И.

Рязань 2009

Цель работы:

         Разработка программы КИХ-фильтра заданного типа и с заданными характеристиками на языке ассемблера ADSP-2181. Изучение характеристик спроектированного фильтра с использование программы DFT.ASM. Изучение преобразований типовых дискретных сигналов при прохождении через КИХ-фильтры.

Подготовка к работе.

Вариант №1:

         Для синтеза фильтра используем пакет расширения MATLAB. Получим коэффициенты фильтра, а также АЧХ/ФЧХ и импульсную характеристику:

АЧХ и ФЧХ:

Импульсная характеристика:

Текст программы.

/*___________________________________________________________________

DFT.ASM         ADSP-2181 Дискретное преобразование Фурье

 Программа выполняет преобразование

 исходной дискретной последовательности input(n) длиной N

 отсчётов в дискретный спектр real(k)+j*imag(k) длиной N

 спектральных отсчётов в соответствии с формулой

 

                  N-1

 real(k)+j*imag(k) = SUM input(n)[C - j*S]; k=0 to N-1,

                     n=0

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

 

___________________________________________________________________*/

#define N 64               // Определение символической константы N,

     //количество входных отсчётов N=64        

.section/data data1;    // DM, начало секции данных,

     // data1 - раздел, который содержит данные

//.VAR input[N]="test64_02.dat";    // Организовать в DM входной буфер с символи-

.VAR input[N]="1bp24.txt";        // ческим  именем input длиной N и загрузить

             // в буфер содержимое файла инициализации

 // "test ... .dat". Файл инициализации содержит

 // исходную последовательность отсчётов

         

.VAR real[N];   // Организовать в DM выходные буферы длиной N 

.VAR imag[N];    // для хранения вычисленных программой спект-

.VAR spectr[N];   // ральных отсчётов: real - для действительных

    // составляющая спектра, imag - для мнимых

     // составляющих, spectr - для амплитудных

     // значений дискретных спектральных отсчётов  

              

.section/pm   pm_da;    // PM, начало секции данных,  

     // pm_da - раздел, который содержит данные   

.VAR sine[N]="sine64_00.dat";  // Организовать в PM  буферы длиной N         

.VAR cos[N]="cos64_00.dat";  // c символическими именами sine и cos и за-  

          // грузить в них файлы инициализации

          // "sine64_00.dat" и "cos64_00.dat". Файлы

           // инициалиции содержат таблицы дискретных

           // значений синусов и косинусов              

           

.section/pm interrupts;    // PM, начало секции  для хранения

      // векторов прерываний                        

__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;       // PM, начало секции программного кода        

start:  M0=1;        // Содержимое регистров модификации, обеспе-   M1=1;                                     // чивающее последовательное обращение к со-  

 M2=1;        // седним ячейкам буферов                     

 M3=1;

 M7=1;

 I0=input;       // В индексном регистре адрес ячейки входного

         // буфера input, адрес входного отсчёта       

 L0=64;              // Длина входного буфера input, буфер

         // циклический                                

 I1=imag;       // В индексном регистре адрес ячейки выходного

         // буфера imag, адрес выходного отсчёта       

 L1=0;        // Выходной буфер нециклический               

 I2=real;       // В индексном регистре адрес ячейки выходного

         // буфера real, адрес выходного отсчёта       

 L2=0;         // Выходной буфер нециклический               

 I3=spectr;       // В индексном регистре адрес ячейки выходного

         // буфера spectr, адрес выходного отсчёта     

 L3=0;         // Выходной буфер нециклический               

 

dft:             I6=sine;             // В индексном регистре адрес ячейки буфера

     // sine, адрес дискретного значения синуса    

 L6=64;   // Длина буфера sine, буфер циклический       

 I7=cos;     // В индексном регистре адрес ячейки буфера

     // cos, адрес дискретного значения косинуса   

 L7=64;     // Длина буфера cos, буфер циклический        

 

 I5=0;

 L5=0;    

          

 CNTR=N; DO outre UNTIL CE; // Внешний цикл вычисления real (k)

                                                       // по изменению k                           

 

 

 M6=I5;               // Содержимое регистра модификации перемен-

                            // ное для реализации чтения таблицы cos

                            // с прореживанием при изменении k          

                               

 MR=0;               // Сброс выходного регистра МАС             

 

 CNTR=N; DO calcre UNTIL CE; // Внутренний цикл вычисления  real (k) по

                                                        // изменению n                             

 MX0=DM(I0,M0); MY0=PM(I7,M6);

calcre:               MR=MR+MX0*MY0(SS);

   

 DM(I2,M2)= MR1;            // Сохранение  real (k) в буфере              

 

outre:                MODIFY(I5,M7);          // Подготовка адреса таблицы cos 

                                                                  // в следующем внутреннем цикле             

 I5=0;

 L5=0;    

          

 CNTR=N; DO outim UNTIL CE; // Внешний цикл вычисления imag (k)

                                                        // по изменению k                           

 

 M6=I5;

 

 MR=0;

 

 CNTR=N; DO calcim UNTIL CE; // Внутренний цикл вычисления imag (k)

                                                         // по изменению n                          

 

 MX0=DM(I0,M0); MY0=PM(I6,M6);

calcim:               MR=MR-MX0*MY0(SS);

 

 DM(I1,M1)= MR1;                        // Сохранение  imag (k) в буфере           

  

outim:                MODIFY(I5,M7);                     // Подготовка адреса таблицы sine

                                                                             // в следующем внутреннем цикле            

 

 I1=imag;

 I2=real;    

 I3=spectr;  

 

 CNTR=N; DO outsp UNTIL CE; // Цикл вычисления spectr(k)= [real(k)]^2 +

                                                       // + [imag(k)]^2                            

 MR=0;

 MX0=DM(I1,M1); MY0=MX0;

 MR=MX0*MY0(SS);                   // Получение  [imag(k)]^2                   

 

 AX0=MR1;

 MX0=DM(I2,M2); MY0=MX0;

 MR=MX0*MY0(SS);                   // Получение  [real(k)]^2                   

 

 AY0=MR1;

 AR=AX0+AY0;

 

outsp:               DM(I3,M3)=AR;                           // Сохранение [real(k)]^2 + [imag(k)]^2

                                                       // в буфере spectr                          

               

                               

end:                     IDLE;                                     // Перевод в состояние ожидания прерывания,

                                                                          // в режим с малым потреблением

Выполнение работы.

5) Отредактированный файл, содержащий коэффициенты заданного фильтра, выглядит так:

6) Получим спектр импульсной характеристики проектируемого фильтра с помощью программы ДПФ:

После модификации в программе изменилась только одна строка:

//.VAR input[N]="test64_02.dat";   // старое значение

.VAR input[N]="1bp24.txt";        //новое

График окна input:

Содержимое окна input полностью соответствует импульсной характеристике, подсчитанной ранее, но т.к. коэффициентов было 25, а размер input соответствует 64, то оставшиеся заполняются нулями.

Графики построенные симулятором:

Реальная часть спектра:

C=cos(2*pi*k*n/N)

Мнимая часть спектра:

S=sin(2*pi*k*n/N)

Спектр  рассчитывается по формуле:

[real(k)]^2 + [imag(k)]^2

7-9) Откроем файл проекта LR4.dpj. Добавим к файлам инициализации файл с рассчитанными коэффициентами КИХ-фильтра из папки Exemple5. Вызовем пограмму FIR.asm и произведём её трансляцию. Далее выполним программу до её конца.

10) Графики входного и выходного сигналов, полученные после выполнения программы: 

 

 

11) Получим характеристики выполненной программы (время выполнения, объём):

В ADSP-2181 при частоте внешнего кварцевого резонатора 50МГц и напряжении питания 5В время выполнения одного цикла команд составляет 25нс. Так как CYCLES=1A8F16=679910, то время выполнения программы равно tпр=25нс*6799=169 мс. Объём программы оценим по количеству команд, содержащихся в промежутке от метки start до метки end (информационное окно Disassembly). Объем программы равен 24 команд.


 

А также другие работы, которые могут Вас заинтересовать

39628. УСТАНОВКА (АТТИТЮД) 44 KB
  В российской психологии разработка общепсихологической теории установки принадлежит Д. Объектом для установки может быть все на что реагирует человек: любой символ фраза лозунг лицо учреждение идея. Можно иметь установки в отношении определенной профессии Организации Объединенных Наций политической партии книги национального меньшинства марки стирального порошка блондинок и т. Новорожденный ребенок имеет установки лишь относительно тех стимулов на которые существует врожденная реакция удовольствие или боль.
39629. Требования и порядок создания информационно-развлекательной системы «Развлекательный портал» 9.07 MB
  Порядок оформления работы Стадии: Техническое задание а Обоснование перспективности реализуемого проекта: постановка задачи; сбор базовых материалов; установка критериев системы; необходимость проведения исследовательских работ; b Исследовательская работа: выбор оптимальных методов решения поставленной задачи; определение требований к техническим средствам; обоснование практической возможности реализации данного проекта; в Разработка и утверждение технического задания: определение требований к проекту; ...
39630. КОНСПЕКТ ЛЕКЦИЙ ПО ОСНОВАМ ОХРАНЫ ТРУДА 3.04 MB
  В соответствии с этой статьёй государство даёт гарантии каждому своему гражданину на надлежащие безопасные и здоровые условия труда и на заработную плату не ниже той которая определена законом. Таким образом в Конституции за государством закреплена забота об условиях труда его научной организации и это является одним из основных направлений его политики. Проблемами связанными с обеспечением здоровых и безопасных условий труда занимается охрана труда.
39631. Расчет газотурбинной установки мощностью 16 МВт 1.06 MB
  темы спроектирован регулируемый сопловой аппарат свободной силовой турбины найдены зависимости различных параметров при повороте сопловых лопаток. Также дипломный проект включает в себя: расчет тепловой схемы двигателя с последующим выбором Gв и к0 газодинамический расчет турбин по среднему диаметру расчет закона закрутки всех ступеней турбины высокого давления и силовой турбины расчеты на прочность рабочей лопатки 3й ступени силовой турбины технологию эксплуатации ГПА описание конструктивных особенностей экономическую частьрасчет...
39632. Компрессор высокого давления турбореактивного двухконтурного двигателя тягой 140 кН 1.65 MB
  Цели работы: ‒ разработка конструкции КВД; ‒ расчет на прочность и колебания основных элементов компрессора; ‒ в технологической части выполнить расчеты режимов резания для одной операции; ‒ в экономическом разделе рассчитать себестоимость затрат на проектирование промежуточного диска КВД; ‒ в разделе по безопасности жизнедеятельности провести оценку безопасности жизнедеятельности пассажиров самолета путем надежности и отказобезопасности КВД. В работе проведен сравнительный анализ конструкций КВД двигателей класса тяги 1218 тонн выбрана...
39633. Горные и маркшейдерские работы при строительстве тоннеля №3 Адлер-горноклиматический курорт «Альпика-Сервис» 21.63 MB
  Маркшейдерская служба призвана заниматься съёмками на земной поверхности и в горных выработках с целью изображения их на чертежах, а также для решения различных горно-геометрических задач, возникающих при освоении месторождения.
39634. Сайт бесплатных объявлений и рекламы 13.12 MB
  Задачей данной работы является реализация размещения объявлений и рекламы, используя Интернет. Структура интерфейса электронной доски объявлений должна быть понятна для обычного пользователя, в то же время необходимо позаботиться об наборе функциональных средств, обеспечивающих удобство работы с набором объявлений
39635. Особенности проведения аварийно-спасательных работ в учреждениях образования на примере Полоцкого государственного университета по адресу г. Полоцк ул. Стрелецкая д.4 305.28 KB
  Боевой участок участок на котором сосредоточены силы и средства объединенные конкретной задачей по тушению пожара. Зона теплового воздействия пожара прилегающая к зоне горения часть пространства в пределах которой протекают процессы теплообмена между поверхностью пламени и окружающей средой. Локализация пожара прекращение дальнейшего распространения пожара и создание условий для его успешной ликвидации имеющимися силами и средствами [3]. Ликвидация пожара прекращение горения на пожаре создание условий при которых нет...
39636. Проектирование газоперекачивающего агрегата мощностью 16 МВт на базе АЛ-31 СТ 618.91 KB
  Для определения основных размеров проточной части ТВД и ТНД произведен газодинамический расчет ступеней по среднему диаметру. Также для того, чтобы удельная работа по высоте ступени оставалась постоянной, были выбраны законы закрутки лопаток по радиусу и произведен расчет закрутки.