Автор работы: Пользователь скрыл имя, 20 Декабря 2011 в 02:32, курсовая работа
Цель работы: Синтезировать полученные знания и реализовать программный код фильтра с бесконечной импульсной характеристикой для цифрового сигнального процессора компании Texas Instrument (TI) семейства TMS320C6000.
.asg B6, constA_B ; 4-й прм фнк word32 constA
.asg B7, CSROLD_B ; регистр для хранения значения регистра CSR
.asg B15, SP
.sect ".text"
.global _cnvBIX__FPsT1si
_cnvBIX__FPsT1si
MVC .S2 CSR, CSROLD_B
AND .S2 CSROLD_B, -2, B1
MVC .S2
B1, CSR
; //корректировка значения
; namberCoeff--;
SUB .L1 namberCoeff_A, 1, namberCoeff_A
; //установка указателей на конец буферов отсчетов и коэффициентов
; pShift += namberCoeff;; pCoeff += namberCoeff;
ADD .S2X pShift_B, namberCoeff_A, pShift_B
ADD .S2X pShift_B, namberCoeff_A, pShift_B
ADD .S1 pCoeff_A, namberCoeff_A, pCoeff_A
ADD .S1 pCoeff_A, namberCoeff_A, pCoeff_A
; //чтение текущего отсчета
; coeffX = *pShift--;
LDH .D2T2
*pShift_B--, coeffX_B
; //чтение соответствующего коэффициента фильтра
; coeffB = *pCoeff--;
|| LDH .D1T1 *pCoeff_A--, coeffB_A
NOP 4
; //инициализация начального значения результата
; rezult = coeffX * coeffB;
MPY .M1X coeffX_B, coeffB_A, rezult_A
NOP
; //цикл обработки
линии задержки
SUB .L2X
namberCoeff_A, 1, count_B
LDH .D2T2 *pShift_B, coeffX_B
|| LDH .D1T1 *pCoeff_A, coeffB_A
NOP
LDH .D2T2 *pShift_B[-1], coeffX_B
|| LDH .D1T1 *pCoeff_A[-1], coeffB_A
NOP
LDH .D2T2 *pShift_B[-2], coeffX_B
|| LDH .D1T1 *pCoeff_A[-2], coeffB_A
STH .D2T2 coeffX_B, *pShift_B[1]
MPY .M1X coeffX_B, coeffB_A, coeff_A
STH .D2T2 coeffX_B, *pShift_B
ADD .S1 rezult_A, coeff_A, rezult_A
|| MPY .M1X coeffX_B, coeffB_A, coeff_A
STH .D2T2 coeffX_B, *pShift_B[-1]
ADD .S1 rezult_A, coeff_A, rezult_A
|| MPY .M1X coeffX_B, coeffB_A, coeff_A
NOP
ADD .S1
rezult_A, coeff_A, rezult_A
MV .S1X constA_B,A2
; //нормирование
результата суммирования
CMPGT .L1
rezult_A,0,A1
[A1] SHR .S1 rezult_A,A2,A4
[!A1] SUB .L1 0,rezult_A, rezult_A
[!A1] SHR .S1 rezult_A,A2,A4
[!A1] SUB .L1 0,A4, A4
MVC .S2 CSROLD_B, CSR
B .S2 adrReturn_B
NOP 5
График
АЧХ и ИХ.
Табличное сравнение расчетной и реальной ИХ.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
Реальная ИХ | 8 | 54 | 156 | 255 | 251 | 125 | -18 | -82 | -62 |
Расчетная ИХ*210 | 7 | 48 | -139 | 229 | 226 | 115 | -15 | -74 | -50 |
ИХрасч/ИХреал*m |
0.97 | 0.96 | 0.95 | 0.95 | 0.95 | 0.93 | 1.1 | 1.04 | 1.05 |
Выводы:
Графики АЧХ и ИХ, реализованные на разных программах (С++, ассемблер) получились одинаковые, что свидетельствует о том, что программа написанная на С++ работает верно; Также был реализован оптимизированный вариант функции convolution.Ошибки квантования коэффициентов привели к не идеальности АЧХ и небольшому расхождению ИХ полученной в FD3 и CCS (EDSW);
БИХ-фильтр Баттерворта не даёт линейной ФЧХ (Линейная ФЧХ может быть реализована только с помощью КИХ-фильтра)
Информация о работе Синтез и программная реализация БИХ-фильтра