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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



Проектирование КИХ-фильтра начинается с расчета комплексного коэффициента передачи.

Для расчета комплексного коэффициента передачи следует аппроксимировать заданные АЧХ и ФЧХ:

           (1)

                    (2)

Используя выражения (1) и (2) построим заданные АЧХ и ФЧХ посредством среды MATLAB:

Рисунок 2. АЧХ КИХ-фильтра

Рисунок 3. ФЧХ КИХ-фильтра

 

Перейдём к дискретным значениям частоты АЧХ и ФЧХ фильтра с шагом  , тогда:

Рисунок 4. Дискретные значения АЧХ КИХ-фильтра

Рисунок 5. Дискретные значения ФЧХ КИХ-фильтра

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

,                                 (3)

где , который определён в диапазоне  таким образом, что в диапазоне   его значения определены по АЧХ и ФЧХ как:

  ,                      (4)

На частоте  : . А в диапазоне  должны быть зеркально отражены значения (6):

,                           (5)

Рассчитаем комплексный коэффициент и изобразим его графически:

Рисунок 6. Комплексный коэффициент передачи

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

 

Re_K= [0, 6.25E-02, -1.25E-01, -3.75E-01, -2.50E-01, 3.13E-01, 7.50E-01, 4.38E-01, -4.96E-01, -8.19E-01, -3.34E-01, 2.74E-01, 4.61E-01, 4.11E-01, 4.01E-01, 4.00E-01, 4.00E-01, 4.00E-01, 4.00E-01, 4.00E-01, 4.00E-01, 1.50E-01, -1.00E-01, -1.00E-01, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, -1.00E-01, -1.00E-01, 1.50E-01, 4.00E-01, 4.00E-01, 4.00E-01, 4.00E-01, 4.00E-01, 4.00E-01, 4.01E-01, 4.11E-01, 4.61E-01, 2.74E-01, -3.34E-01, -8.19E-01, -4.96E-01, 4.38E-01, 7.50E-01, 3.13E-01, -2.50E-01, -3.75E-01, -1.25E-01, 6.25E-02]

Im_K = [0, -1.08E-01, -2.17E-01, 2.30E-16, 4.33E-01, 5.41E-01, -9.18E-16, -7.58E-01, -8.59E-01, 4.41E-15, 5.79E-01, 4.74E-01, -1.13E-15, -1.01E-15, -9.83E-16, -9.80E-16, -9.80E-16, -9.80E-16, -9.80E-16, -9.80E-16, -9.80E-16, 2.60E-01, 1.73E-01, -8.82E-16, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 8.82E-16, -1.73E-01, -2.60E-01, 9.80E-16, 9.80E-16, 9.80E-16, 9.80E-16, 9.80E-16, 9.80E-16, 9.83E-16, 1.01E-15, 1.13E-15, -4.74E-01, -5.79E-01, -4.41E-15, 8.59E-01, 7.58E-01, 9.18E-16, -5.41E-01, -4.33E-01, -2.30E-16, 2.17E-01, 1.08E-01]

Теперь рассчитаем импульсную характеристику (3) с использованием массива значений полученных в (4,5):

Рисунок 7. Импульсная характеристика КИХ-фильтра

 На рисунке 7 отражена действительная часть импульсной характеристики, значения которой масштабированы в диапазоне +32767…-32768 и переведены в целочисленный формат.

 Ниже представлены значения мнимой части импульсной характеристики:

Значения мнимой части не превышают , следовательно, можно сделать вывод, что импульсная характеристика рассчитана верно.

Разработка блок-схем программы

Рисунок 8. Блок-схема основной программы

Рисунок 9. Блок-схема подпрограммы фильтрации

Листинг программы

Release 5.1 Assembler Version 1.34 6/6/94

C:\ADI_DSP\21XX\BIN\C:\DOCUME~1\Admin\0016~1\Edit1.for Sun May 10 17:07:06 2020 Page   1

addr inst source line

                   1 .module/ram/abs = 0 kihfilter;

                   2 .var/dm/circ signal[80]; {кольцевой буфер для сигнала}

                   3 .init signal: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,

                   4                         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,

                   5                         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,

                   6                         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

                   7                             

                   8 .var/pm/circ impr[80]; {импульсная характеристика фильтра}

                   9       

                   10.init impr:

                   11.include <g.txt>;

                   12     

                   13 {Таблица векторов прерываний}

                   14 {RESET}

0000 18000Fu    22 jump start; rti; rti; rti;

0001 0A001F         

0002 0A001F         

0003 0A001F         

                   23 {IRQ2}

0004 0A001F     24 rti; rti; rti; rti;

0005 0A001F         

0006 0A001F         

0007 0A001F         

                   25 {IRQL1}

0008 0A001F     26 rti; rti; rti; rti;

0009 0A001F         

000A 0A001F         

000B 0A001F         

                   27 {IRQL0}

000C 0A001F     28 rti; rti; rti; rti;

000D 0A001F         

000E 0A001F         

000F 0A001F         

                   29 {SPORT0 ПД}

0010 0A001F     30 rti; rti; rti; rti;

0011 0A001F         

0012 0A001F         

0013 0A001F         

                   31 {SPORT0 ПМ}

0014 0A001F     32 rti; rti; rti; rti;

0015 0A001F         

0016 0A001F         

0017 0A001F         

                   33 {IRQE}

0018 0A001F     34 rti; rti; rti; rti;

0019 0A001F         

001A 0A001F         

001B 0A001F         

                   35 {BDMA}

001C 0A001F     36 rti; rti; rti; rti;

001D 0A001F         

001E 0A001F         

001F 0A001F         

                   37 {SPORT1 ПД}

Release 5.1 Assembler Version 1.34 6/6/94

C:\ADI_DSP\21XX\BIN\C:\DOCUME~1\Admin\0016~1\Edit1.for Sun May 10 17:07:06 2020 Page 2

addr inst source line

 

0020 0A001F     38 rti; rti; rti; rti;

0021 0A001F         

0022 0A001F         

0023 0A001F         

                   39 {SPORT1 ПМ}

0024 0A001F     40 rti; rti; rti; rti;

0025 0A001F         

0026 0A001F         

0027 0A001F         

                   41 {Timer}

0028 18000Fu    42 jump timer_proc; rti; rti; rti;

0029 0A001F         

002A 0A001F         

002B 0A001F         

                   43 {Power Down}

002C 0A001F     44 rti; rti; rti; rti;

002D 0A001F         

002E 0A001F         

002F 0A001F         

                   45 {Конец таблицы векторов прерываний}

                   46     

                   47     

                   48 {$$$$$$Начало основной программы$$$$$$$$$}

0030 000000       49 start:nop;

0031 40004A      50 ar = 4;

0032 93FFBA    51 dm(0x3ffb) = ar; {TSCALE - предделитель}

0033 403E7A     52 ar = 999;

0034 93FFCA    53 dm(0x3ffc) = ar; {TCOUNT - счётчик}

0035 93FFDA    54 dm(0x3ffd) = ar; {TPERIOD - период}

                   55     

                   56 {}

0036 380000u     57 i4=^impr; l4=%impr;

0037 380508           

0038 380014       58 m4 = 1; m5 = 0; {модификаторы ГАД 2}

0039 380005           

003A 400FF5      59 ay1 = 0x00ff; {маска обнуления старших разрядов}

003B 40000F      60 sr1 = 0; {формирование отсчётов в регистре Sr0 сдвигателя}

                   61     

003C 3C0505      62 cntr = 80;

003D 14000Eu    63 do perest until ce;

003E 500061       64             my0 = pm(i4,m5); {чтение из ячейки памяти программ отсчёта ИХ - старшие разряды}

003F 0D03A7     65             ar = px; {младшие разряды}

0040 238A0F     66             ar = ar and ay1; {обнуление 8 старших рязрядов}

0041 0D00EA    67             sr0 = ar; {формирование младших рязрядов отсчёта}

0042 0D0086      68             si = my0;

0043 0F1808      69             sr = sr or lshift si by 8(lo); {добавление 8 старших рязрядов}

0044 0D006E     70             my0 = sr0; {перенос значения отсчёта в регистр типа YOP, поскольку PM может работать только с ними}

0045 580060       71 perest: pm(i4,m4) = my0; {Запись в 16 старших рязрядов}

                   72     

                   73 {фильтр, установка регистров указателей и модификаторов}

0046 380000u     74 i4 = ^impr; l4=%impr; m4 = 1; {импульсная характеристика}

0047 380508           

0048 380014           

0049 340000u     75 i0 = ^signal; l0 = %signal; m0 = 0; m1=1; {сигнал}

004A 340508           

004B 340004           

004C 340015           

004D 500060       76 my0 = pm(i4,m4);

                   77     

004E 3C0FFC     78 ifc = 0x00ff; {сброс прерываний стоящих в очереди}

004F 000000       79 nop; {холостая операция}

Release 5.1 Assembler Version 1.34 6/6/94

C:\ADI_DSP\21XX\BIN\C:\DOCUME~1\Admin\0016~1\Edit1.for Sun May 10 17:07:06 2020 Page 3

addr inst source line

 

0050 0CC000     80 ena timer; {запуск таймера}

0051 3C0013      81 imask = b#0000000001; {разрешение таймерного прерывания}

0052 000000       82 nop;

0053 18000Fu    83 zacycl: jump zacycl;

                   84 {$$$$$$$$Конец основной программы$$$$$$$$$$$$$$$$$$$$$$$$}

                   85     

                   86     

 

 

                   87 {>>>>Таймерная подпрограмма<<<<<}

0054 000000       88 timer_proc:nop;

                   89     

0055 010002       90 mx0 = io(0);

0056 689821       91 dm(i0,m1) = mx0, mr = 0;

0057 3C04E5     92 cntr = 78;

0058 14000Eu    93 do filtr until ce;

0059 E90001      94 filtr: mr = mr +mx0*my0(ss), mx0 = dm(i0,m1), my0 = pm(i4,m4);

005A E90000      95 mr = mr + mx0*my0(ss), mx0=dm(i0,m0),my0=pm(i4,m4);

005B 510060       96 mr = mr+ mx0*my0(ss), my0 = pm(i4,m4);

005C 20580F      97 mr = mr(rnd);

005D 050000       98 if mv sat mr;

005E 01801C      99 io(1)=mr1;

005F 0A001F     100 rti;

                    101.endmod;

102


 

Отладка программы

Проведём оценку импульсной характеристики разработанного фильтра. Для этого создадим файл signal.dat с записью дельта-функции и подключим его в режиме симуляции к разработанной программе в качестве входного сигнала к порту IO(0) в знаковом формате. Запись выходного сигнала будет осуществляться с порта IO(1) в файл signal_out.dat так же в знаковом формате (Рисунок 10).

Рисунок 10. Подключение файла к порту входа и выхода

На рисунке 11 изображён процесс работы программы КИХ-фильтра. В секции Data Memory (память данных) записана дельта функция. В секции Timer состояния регистров TCOUNT, TPERIOD, TSCALE, которые являются в совокупности таймером, благодаря которому осуществляется таймерное прерывание каждые 125мкс.

Рисунок 11. Отладка программы КИХ-фильтра

Результат работы программы на дельта-импульс амплитудой 32767 шагов квантования представлен на рисунке 12. Очевидно сходство с рассчитанной ранее ИХ на рисунке 7. Соответствие расчетных и экспериментальных результатов свидетельствует лишь о правильности работы программы фильтра.

Рисунок 12. Импульсная характеристика фильтра (результат отладки программы)

 

 



Поделиться:


Последнее изменение этой страницы: 2021-07-18; просмотров: 142; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.183.150 (0.027 с.)