Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Расчёт импульсной характеристикиСодержание книги
Поиск на нашем сайте Проектирование КИХ-фильтра начинается с расчета комплексного коэффициента передачи. Для расчета комплексного коэффициента передачи следует аппроксимировать заданные АЧХ и ФЧХ:
Используя выражения (1) и (2) построим заданные АЧХ и ФЧХ посредством среды MATLAB: Рисунок 2. АЧХ КИХ-фильтра Рисунок 3. ФЧХ КИХ-фильтра
Перейдём к дискретным значениям частоты АЧХ и ФЧХ фильтра с шагом Рисунок 4. Дискретные значения АЧХ КИХ-фильтра Рисунок 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; просмотров: 229; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.006 с.) |