Целочисленное проектирование фильтров

Все что касается фильтрации
Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Целочисленное проектирование фильтров

Сообщение Santik »

ФЧХ полученного ФНЧ сохранила линейность в полосе пропускания:
ФЧХ.JPG

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Целочисленное проектирование фильтров

Сообщение Santik »

"Сдвинуть" ФНЧ по частоте удалось без проблем:
ФНЧ10.JPG
Но сохранить линейность ФЧХ при этом не удалось! :oops:
ФНЧ10фаза.JPG
ФНЧ10таб.JPG

Vlad27
Сообщения: 92
Зарегистрирован: 06 апр 2015, 10:09
Откуда: г, Нижний Новгород (rif27@bk.ru)

Re: Целочисленное проектирование фильтров

Сообщение Vlad27 »

Santik писал(а):Для начала сделаем самое простое преобразование: ФВЧ - ФНЧ.
Для этого изменим знаки нечётных коэффициентов Ai, Bi (отмечены в таблице жёлтым цветом) на противоположные.
На этом расчёт ФНЧ с частотой среза Fsфнч=(1-Fsфвч) закончен!
Таким образом удаётся элементарными преобразованиями превратить исходный ФВЧ в ФНЧ с частотой среза Fs= 1-Fsфвч, сохранив линейность ФЧХ в полосе пропускания и целочисленность коэффициентов.
В дальнейшем мы попытаемся изменить частоту среза ФНЧ на произвольную величину.

Ну, естественно. Но зачем так сложно? ЦНП-синтез ФНЧ с линейной фазой
идёт гораздо проще, чем ФВЧ (для примера привожу графики измерения
АЧХ и ФЧХ целочисленного ФНЧ 16-го порядка,рекурсивного естественно
(хотя и ЦЦФ КИХ-фильтр даст то же самое, но с примерно утроенным
порядком). Реализация данного ФНЧ была на МК MSP430F1611 с измерением
АЧХ и ФЧХ на автоматизированной панораме.
А вот что касается подвигать частоту среза, то ОЧЕНЬ сомневаюсь, что
вручную это возможно. Думаю фаза посыпется.
Вложения
Измерение ФЧХ ФНЧ только в полосе пропускания (наложена красная чистая лингия)
Измерение ФЧХ ФНЧ только в полосе пропускания (наложена красная чистая лингия)
_8_zv_Faza_Polosa_Pan_Col.gif (9.76 КБ) 4992 просмотра
Измерение ФЧХ на всём интервале
Измерение ФЧХ на всём интервале
_8_zv_FazaFull_Pan.gif (8.56 КБ) 4992 просмотра
Измерение АЧХ ФНЧ
Измерение АЧХ ФНЧ
_8_zv_Gain_Pan.gif (10.36 КБ) 4992 просмотра
Последний раз редактировалось Vlad27 28 окт 2015, 11:48, всего редактировалось 1 раз.

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Целочисленное проектирование фильтров

Сообщение Santik »

Vlad27 писал(а): Ну, естественно. Но зачем так сложно? ЦНП-синтез ФНЧ с линейной фазой идёт гораздо проще,
чем ФВЧ ...
Не очень понятно почему ФНЧ проще... Но если это так, что мешает сначала разработать ФНЧ с линейной фазой с частотой (1- Fs фвч) , а потом просто перейти к ФВЧ элементарной инверсией знаков a1, b1 во всех звеньях?
Линейность фазы при этом сохраняется!
Vlad27 писал(а): А вот что касается подвигать частоту среза, то ОЧЕНЬ сомневаюсь, что в ручную это
возможно. Думаю фаза посыпется.
Вы наверное, не посмотрели страницу 3. :D
Частота среза сдвигается без проблем. Только сначала приходится от H(z) перейти к H(S), там сдвинуть частоту и вернуться обратно к H(z). С использованием матриц z- преобразования это сделать очень легко. Тем более, что матрица z- преобразования ФВЧ равна своей обратной матрице с точностью до множителя 2^{-N}, где N - порядок фильтра.
Я конечно не "вручную" всё это проделал, а в Exсel, т.к. программу пока лень писать :oops:
А с фазой Вы совершенно правы. Фаза становиться нелинейной после сдвига. Картинки см. выше.

И тогда вопрос: а имеет какое-либо значение в ЦНП- синтезе хорошее "первое приближение"?
Если "Да", то алгоритм расчёта может быть и такой - берём известный фильтр (с линейной ФЧХ), сдвигаем на заданную новую частоту - и считаем это первым приближением - далее оптимизация.

Vlad27
Сообщения: 92
Зарегистрирован: 06 апр 2015, 10:09
Откуда: г, Нижний Новгород (rif27@bk.ru)

Re: Целочисленное проектирование фильтров

Сообщение Vlad27 »

Ну, если мы заставим разработчика писать матрцы z-преобразования - я думаю,
он убежит далеко-далеко... :) А по сути. Проектировать цифровой фильтр
через H(s) - это прошлый век. К тому же эта зависимость (1- Fs фвч) и обратно
очень сильное ограничение - надо уметь обеспечить любую, наперёд заданную
частоту среза при гарантированном сохранении линейности фазы.
Ведь современное проектирование 21-го века - это проектирование по
СОВОКУПНОСТИ требуемых функциональных показателей (характеристик -
ведь каждой характеристикие в соответствие может быть поставлен скалярный функ.показатель - стандартно это СКО выполнения требований по каждой
хар-ке). То есть мы имеем многокритериальную задачу с принципиально противоречивыми критериями, вот этими самыми функциональными показателями,
СКО по АЧХ,ФЧХ,ГВЗ. Ну, например, СКО по АЧХ и ФЧХ для прамой и последовательной форм построения ЦФ связаны преобразованием Гильберта, т.е. обратной пропорцией
и не существует решения (вектора коэфф-ов), при котором эти показатели
выполнялись бы ОДНОВРЕМЕННО.
И это типичная ситуация для многофункционального проектирования. Попытка решать такие задачи через аппроксимацию отдельных хар-тик абсурдна. Ведь аппроксимация, скажем, АЧХ по Чебышеву даст лучшее решение только для АЧХ. А аппроксимация по Бесселю ФЧХ даст лучшее решение только по ФЧХ, наплевав на все остальные хар-ки. Единственную научную возможность решения таких задач даёт только теория
векторной оптимизации, принятия решений, основы которой заложил ещё
Вильфредо Парето, сформулировав понятие эффективного решения
многофункциональной задачи с противоречивыми показателями.
Парето-эффективное решение - это компромиссное решение, единственно
возможное научное решение такой проектной задачи. И чтобы найти такое
эффективное решение, надо связать требования по ВСЕМ необходимым хар-кам
в единой скалярной функции качества проектиоуемого фильтра,которую чаще
называют целевой функцией F(X). Самое простое - просто сложить СКО желательно
с весами (значимостями реализуемых характеристик).
Затем ставится экстремальная задача мат.программирования (МП) относительно F(X), позволяющая найти парето-эффективное решение исходной задачи. Причём,
решение современных задач МП возможно только численными поисковыми
методами. При этом начальное приближение - какое-то частное решение,
скажем по АЧХ, не только не помогает решить мнгокритериальную задачу МП,
а обычно только препятствует её решению, заталкивая начальную точку в
локальный экстремум F(X), из которого поисковому алгоритму выбраться гораздо
сложнее, чем идти "с горки", т.е. с произвольной н.т. Именно такая научная
идеология и реализована при ЦНП-синтезе ЦЦФ по совокупности их требуемых
характеристик .
Вложения
Целевая функция многофункциональной задачи
Целевая функция многофункциональной задачи
Последний раз редактировалось Vlad27 28 окт 2015, 11:52, всего редактировалось 2 раза.

Vlad27
Сообщения: 92
Зарегистрирован: 06 апр 2015, 10:09
Откуда: г, Нижний Новгород (rif27@bk.ru)

Re: Целочисленное проектирование фильтров

Сообщение Vlad27 »

Забыл привести, в качестве иллюстрации, примеры разрезов
целевых функций современных зхадач многофункционального
проектирования
Вложения
razrez.jpg

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Целочисленное проектирование фильтров

Сообщение Santik »

Vlad27 писал(а): Ну, если мы заставим разработчика писать матрицы z- преобразования - я думаю, он убежит далеко-далеко... :) А по сути. Проектировать цифровой фильтр через H(s) - это прошлый век. К тому же эта зависимость
(1- Fs фвч) и обратно очень сильное ограничение - надо уметь обеспечить любую, наперёд заданную
частоту среза при гарантированном сохранении линейности фазы.
Предлагаю методом ЦНП-синтеза разработать 2 фильтра 10 порядка с линейной фазой:
ФНЧ с частотой среза 0.2/FN и ФВЧ с частотой среза 0.8/ FN. Будет интересно сравнить результаты :D
Vlad27 писал(а): Ведь современное проектирование 21-го века - это проектирование по СОВОКУПНОСТИ требуемых
функциональных показателей ... Именно такая научная идеология и реализована при ЦНП-синтезе ЦЦФ по совокупности их требуемых характеристик .
А удаётся ли строго доказать оптимальность полученных таким образом фильтров? Я думаю, что нет. И целочисленность коэффициентов, вероятно, предназначена, только для того, чтобы скрыть этот неприглядный факт.
И во что интересно "обходится" целочисленность ( в порядках фильтра)?

Vlad27
Сообщения: 92
Зарегистрирован: 06 апр 2015, 10:09
Откуда: г, Нижний Новгород (rif27@bk.ru)

Re: Целочисленное проектирование фильтров

Сообщение Vlad27 »

А что понимается под доказательсвом оптимальности? Если это то, что не существует
решений, лучших, чем найденное - то в современных нелинейных многокритериальных
задачах аналитического доказательства сходимости минимизирующей последовательности
к оптимальному в вышеприведённом аспекте решению нет и быть не может (это можно
сделать только в простеньких унимодальных задачах без функ-ых ограничений
и дискретности параметров-коэффициентов). Доказательсво такой сходимости может
быть только статистическое. Я перевожу, например, минимизатор в режим, близкий
к полному перебору (модель non stop, непрерывная random-генерация новых нач.точек)
и показываю, что нет лучшего решения (времени конечно уйдёт много - но
это единственный путь). Но для практического пректирования это всё и не нужно
(лучшее - нелучшее), а нужно просто выполнять ТЗ и всё. Оптимальность в этом плане -
пустое наукообразие. Вот пускай кто сомневается - тот и найдёт решение лучше,
если оно конечно существует. Ведь алтернатива здесь простая: либо иметь чёткое,
удовлетворяющее ТЗ решение многофункциональной проектной задачи (пусть и с
недоказанной оптимальностью в вышеприведённом смысле), либо не иметь вообще
никакого решения. И здесь, конечно, всё решает опыт разработчика в
методологии поискового проектирования ну и хорошее ПО, конечно. Ведь поисковое
решение сложных проектных задач - исключительно творческий процесс,
это интеллектуальное проектирование в самом высоком смысле этого слова.
Множество сценариев решения исходной задачи здесь существует. Владение ими
всё и решает. Это ведь не пресловутая "большая красная кнопка" MATLABа,
где достаточно ввести данные и нажатать родимую.
А целочисленность решения (коэф-ов) - это не сокрытие чего-то, а железное
требование современных цифровых платформ (ПЛИС конечно в первую очередь),
где может быть реализовано только целочисленное решение и никакое другое.
Многие проектирвщики цифровых фильтров почему-то считают, что главное-
найти значения коэффициентов фильтра под требование ТЗ, а будет ли всё
это работать "в железе", при физической реализации фильтра - нас не касается.
Но можно привести множество примеров, когда, скажем, рекурсивный фильтир
теоретически устойчив, все полюса внутри единичной окружности, а при
практической реализации в реальном времени - фильтр возбуждается, "гудит"
по полной программе на всём частотном интервале, либо в определённой области
частот (обычно на частотах полюсов с максимальной добротностью - радиусом). :(
Ниже приведены конкретные примеры таких практических реализаций. При ЦНП-синтезе
можно активно управлять добротностью полюсов (их радиусом в z-плоскости). Поэтому
если возбуждение имеется, то фильтр пересинтезируется под меньший радиус
полюсов коэф-та передачи. Уменьшение добротности полюсов, конечно, понижает
селективность фильтра, но делает его работу устойчивой уже при практической
реализации на конкретной цифровой платформе.
А целочисленную (дискретную) задачу конечно решать значительно сложней, особенно
на малой разрядности представления данных(вплоть до 4-х бит). Именно на малой
разрядности (менее 8 бит) приходится увеличивать порядок фильтра, хотя начиная
с 10 бит и выше этого эффекта практически не наблюдается.
Вот интересно, как и на чём вы собираетесь реализовывать ваше непрерывное
вещественное решение - только на DSP с FPU, хотя современные ТЗ - только кристалл,
ПЛИС или СБИС.
Вложения
Потеря устойчивости рекурсивного фильтра при его практической реализации на DSP
Потеря устойчивости рекурсивного фильтра при его практической реализации на DSP
Последний раз редактировалось Vlad27 28 янв 2016, 13:07, всего редактировалось 2 раза.

Vlad27
Сообщения: 92
Зарегистрирован: 06 апр 2015, 10:09
Откуда: г, Нижний Новгород (rif27@bk.ru)

Re: Целочисленное проектирование фильтров

Сообщение Vlad27 »

Ещё по поводу оптимальности и малоразрядных решений ЦЦФ.
Ниже приведено решение задачи ЦНП-синтеза рекурсивного ЦЦФ
с разрядностью представления данных в 4 бита (один из них знаковый).
При реализации на кристалле (ПЛИС или СБИС) такое малоразрядное
решение определяет резкое повышение быстродействия ЦЦФ,
впрочем, на МК и DSP без FPU так же.
ЦНП-синтез осуществлялся в стиле динамического программирования,
то есть как последовательность задач с поэтапным повышением
порядка фильтра, пока не было получено вполне приемлемое
решение по требуемой АЧХ и линейности фазы (см.графики).
И всё это на 4-битах вариации коэффициентов. Данное решение,
конечно, не претендует на "оптимальность" в вышерассмотренной
трактовке. Гонять машину пару дней, чтобы статистически это
доказать я, конечно, не собираюсь. Ведь решение на 4-х битах
уникально само по себе (а есть решение задачи и на
3-х битах - правда, характеристики похуже).
Хотелось бы посмотреть на решение этой задаи ЛЮБЫМИ
альтернативными способами. А потом уж можно и
поговорить о его "оптимальности".
Вложения
ЦНП синтез малоразрядного рекурсивного ЦЦФ
ЦНП синтез малоразрядного рекурсивного ЦЦФ

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Целочисленное проектирование фильтров

Сообщение Santik »

Гонять машину пару дней, чтобы статистически это доказать я, конечно, не собираюсь.
А что у Вас за машина? Не Тянь-Хэ-2 случайно? :-) Или круче?

Ответить