Испытание программы «Рекурсивный фильтр». Классификация цифровых фильтров. Принципы реализации цифровых фильтров, страница 2

6.4. Время установления переходной характеристики фильтра, найденное из графика по формуле t у = t 0.9 – t 0.1,  и его  расчётное значение.

7. Контрольные вопросы

7.1. Дайте классификацию цифровых фильтров.

7.2. Что такое дельта-функция  и единичный скачок?  Изобразите их для t ¹ 0.

7.3. Связь между представлениями сигнала во временной и частотной областях.

7.4. Какие характеристики используют для описания свойств фильтров, какова связь между ними?

7.5. Какие испытательные сигналы нужно подать на вход фильтра для получения  импульсной, переходной и частотной  характеристик фильтра?

7.6. Опишите механизм подачи входного сигнала на моделируемый фильтр  в испытанной  программе.

7.7. Сравните варианты вывода и отображения на экране  массива результатов работы имитатора, использовавшиеся в этой и предыдущей лабораторных работах.

7.8. Расскажите о целях и предпочтительном месте использования многофункциональных инструкций  в программе.

7.9. Расскажите об инструкциях, обеспечивающих работу с массивами данных.

7.10. Расскажите о форматах данных, которые поддерживает процессор ADSP-21xx  и  которые выбраны для использования в данной работе.

7.11. Опишите особенности программирования, работу и ценные свойства цикла DO в ЦСП.

7.12. Расскажите о построении графиков в VisualDSP++.

ПРИЛОЖЕНИЕ

Программа к ЛР № 4

/*    ADSP-2181  Recursive Filter Program                                      файл Rec_Filt.asm 

Эта программа реализует рекурсивный фильтр первого порядка по формуле

y(n)= b*x(n)+(1-b)*y(n-1),

где  y(n) - выходная последовательность,

x(n) - входная последовательность.

Выражение приводится к алгоритму

z: = x - y;

              y := y + z * b;

Входная последовательность xin.dat является цифровым представлением или импульса типа дельта-функции, или единичного скачка. В первом случае выходная последовательность есть импульсная характеристика фильтра, во втором - переходная характеристика этого фильтра. Первые 12 отсчётов выходной последовательности вычисляются и сохраняются в памяти данных.

Эта программа написана для имитатора. Используется файл описания архитектуры ЦСП ADSP-2181.ldf.

*/

#define  samples  12                                                   // Количество обрабатываемых отсчётов 10

#define  b  0x4000                                                      // Параметр фильтра b = 0.5

.section/data   data1;

.VAR   dm_y[samples];                                  // Выходной буфер данных в DM с именем dm_y

.section/pm       pm_da;

.VAR    x_input[samples] = "xin.dat";                       // Буфер данных в PM с именем x_input

.section/pm interrupts;                                                    // ---- Таблица векторов прерываний ---_reset: JUMP start; NOP; NOP; NOP;                       // Прерывание по сбросу процессора

RTI; NOP; NOP; NOP;                                   // Отсутствие других прерываний

RTI; NOP; NOP; NOP;

RTI; NOP; NOP; NOP;

RTI; NOP; NOP; NOP;

RTI; NOP; NOP; NOP;

RTI; NOP; NOP; NOP;

RTI; NOP; NOP; NOP;

RTI; NOP; NOP; NOP;

RTI; NOP; NOP; NOP;

RTI; NOP; NOP; NOP;

RTI; NOP; NOP; NOP;

.section/pm program;

start:    I4 = x_input;                                       // I4 указывает на начальный адрес x

L4 = 0;                                                // Буфер линейный (не кольцевой)

I0 = dm_y;                                          // I0 указывает на начальный адрес y

L0 = 0;                                                // Буфер линейный (не кольцевой)

M0 = 1;  M4 = 1;                                // Пост-модификация на 1

MY0 = b;                                            // Загрузить коэффициент b в регистр MY0

MR = 0;                                              // Установить исходное состояние  y(0)=0

CNTR = samples;                               // Установка счетчика для LOOP1

AY0 = PM(I4,M4);                            // Ввод первого значения x

DO loop1 UNTIL CE;                

AR=AY0-MR1, AY0=PM(I4,M4);     // Вычисление z=x-y и ввод следующего x

loop1:  DM(I0,M0)=MR1, MR=MR+AR*MY0(SS);    // Вывод отсчёта y, расчёт у = y+z*b

IDLE;                                                                // Останов

// Конец  программыRec_Filt.asm