Синтез и программная реализация БИХ-фильтра

Автор работы: Пользователь скрыл имя, 20 Декабря 2011 в 02:32, курсовая работа

Описание

Цель работы: Синтезировать полученные знания и реализовать программный код фильтра с бесконечной импульсной характеристикой для цифрового сигнального процессора компании Texas Instrument (TI) семейства TMS320C6000.

Работа состоит из  1 файл

курсовик.doc

— 633.50 Кб (Скачать документ)

      .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);

БИХ-фильтр Баттерворта не даёт линейной ФЧХ (Линейная ФЧХ может быть реализована только с помощью КИХ-фильтра)

Информация о работе Синтез и программная реализация БИХ-фильтра