6.4. Время установления переходной характеристики фильтра, найденное из графика по формуле t у = t 0.9 – t 0.1, и его расчётное значение.
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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.