Целочисленное проектирование фильтров
- Santik
- Сообщения: 609
- Зарегистрирован: 28 дек 2010, 08:04
- Откуда: Мирный (Якутия)
- Контактная информация:
Re: Целочисленное проектирование фильтров
ФЧХ полученного ФНЧ сохранила линейность в полосе пропускания:
- Santik
- Сообщения: 609
- Зарегистрирован: 28 дек 2010, 08:04
- Откуда: Мирный (Якутия)
- Контактная информация:
Re: Целочисленное проектирование фильтров
"Сдвинуть" ФНЧ по частоте удалось без проблем:
Но сохранить линейность ФЧХ при этом не удалось!
Но сохранить линейность ФЧХ при этом не удалось!
-
- Сообщения: 92
- Зарегистрирован: 06 апр 2015, 10:09
- Откуда: г, Нижний Новгород (rif27@bk.ru)
Re: Целочисленное проектирование фильтров
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: Целочисленное проектирование фильтров
Не очень понятно почему ФНЧ проще... Но если это так, что мешает сначала разработать ФНЧ с линейной фазой с частотой (1- Fs фвч) , а потом просто перейти к ФВЧ элементарной инверсией знаков a1, b1 во всех звеньях?Vlad27 писал(а): Ну, естественно. Но зачем так сложно? ЦНП-синтез ФНЧ с линейной фазой идёт гораздо проще,
чем ФВЧ ...
Линейность фазы при этом сохраняется!
Вы наверное, не посмотрели страницу 3.Vlad27 писал(а): А вот что касается подвигать частоту среза, то ОЧЕНЬ сомневаюсь, что в ручную это
возможно. Думаю фаза посыпется.
Частота среза сдвигается без проблем. Только сначала приходится от H(z) перейти к H(S), там сдвинуть частоту и вернуться обратно к H(z). С использованием матриц z- преобразования это сделать очень легко. Тем более, что матрица z- преобразования ФВЧ равна своей обратной матрице с точностью до множителя 2^{-N}, где N - порядок фильтра.
Я конечно не "вручную" всё это проделал, а в Exсel, т.к. программу пока лень писать
А с фазой Вы совершенно правы. Фаза становиться нелинейной после сдвига. Картинки см. выше.
И тогда вопрос: а имеет какое-либо значение в ЦНП- синтезе хорошее "первое приближение"?
Если "Да", то алгоритм расчёта может быть и такой - берём известный фильтр (с линейной ФЧХ), сдвигаем на заданную новую частоту - и считаем это первым приближением - далее оптимизация.
-
- Сообщения: 92
- Зарегистрирован: 06 апр 2015, 10:09
- Откуда: г, Нижний Новгород (rif27@bk.ru)
Re: Целочисленное проектирование фильтров
Ну, если мы заставим разработчика писать матрцы z-преобразования - я думаю,
он убежит далеко-далеко... А по сути. Проектировать цифровой фильтр
через H(s) - это прошлый век. К тому же эта зависимость (1- Fs фвч) и обратно
очень сильное ограничение - надо уметь обеспечить любую, наперёд заданную
частоту среза при гарантированном сохранении линейности фазы.
Ведь современное проектирование 21-го века - это проектирование по
СОВОКУПНОСТИ требуемых функциональных показателей (характеристик -
ведь каждой характеристикие в соответствие может быть поставлен скалярный функ.показатель - стандартно это СКО выполнения требований по каждой
хар-ке). То есть мы имеем многокритериальную задачу с принципиально противоречивыми критериями, вот этими самыми функциональными показателями,
СКО по АЧХ,ФЧХ,ГВЗ. Ну, например, СКО по АЧХ и ФЧХ для прамой и последовательной форм построения ЦФ связаны преобразованием Гильберта, т.е. обратной пропорцией
и не существует решения (вектора коэфф-ов), при котором эти показатели
выполнялись бы ОДНОВРЕМЕННО.
И это типичная ситуация для многофункционального проектирования. Попытка решать такие задачи через аппроксимацию отдельных хар-тик абсурдна. Ведь аппроксимация, скажем, АЧХ по Чебышеву даст лучшее решение только для АЧХ. А аппроксимация по Бесселю ФЧХ даст лучшее решение только по ФЧХ, наплевав на все остальные хар-ки. Единственную научную возможность решения таких задач даёт только теория
векторной оптимизации, принятия решений, основы которой заложил ещё
Вильфредо Парето, сформулировав понятие эффективного решения
многофункциональной задачи с противоречивыми показателями.
Парето-эффективное решение - это компромиссное решение, единственно
возможное научное решение такой проектной задачи. И чтобы найти такое
эффективное решение, надо связать требования по ВСЕМ необходимым хар-кам
в единой скалярной функции качества проектиоуемого фильтра,которую чаще
называют целевой функцией F(X). Самое простое - просто сложить СКО желательно
с весами (значимостями реализуемых характеристик).
Затем ставится экстремальная задача мат.программирования (МП) относительно F(X), позволяющая найти парето-эффективное решение исходной задачи. Причём,
решение современных задач МП возможно только численными поисковыми
методами. При этом начальное приближение - какое-то частное решение,
скажем по АЧХ, не только не помогает решить мнгокритериальную задачу МП,
а обычно только препятствует её решению, заталкивая начальную точку в
локальный экстремум F(X), из которого поисковому алгоритму выбраться гораздо
сложнее, чем идти "с горки", т.е. с произвольной н.т. Именно такая научная
идеология и реализована при ЦНП-синтезе ЦЦФ по совокупности их требуемых
характеристик .
он убежит далеко-далеко... А по сути. Проектировать цифровой фильтр
через H(s) - это прошлый век. К тому же эта зависимость (1- Fs фвч) и обратно
очень сильное ограничение - надо уметь обеспечить любую, наперёд заданную
частоту среза при гарантированном сохранении линейности фазы.
Ведь современное проектирование 21-го века - это проектирование по
СОВОКУПНОСТИ требуемых функциональных показателей (характеристик -
ведь каждой характеристикие в соответствие может быть поставлен скалярный функ.показатель - стандартно это СКО выполнения требований по каждой
хар-ке). То есть мы имеем многокритериальную задачу с принципиально противоречивыми критериями, вот этими самыми функциональными показателями,
СКО по АЧХ,ФЧХ,ГВЗ. Ну, например, СКО по АЧХ и ФЧХ для прамой и последовательной форм построения ЦФ связаны преобразованием Гильберта, т.е. обратной пропорцией
и не существует решения (вектора коэфф-ов), при котором эти показатели
выполнялись бы ОДНОВРЕМЕННО.
И это типичная ситуация для многофункционального проектирования. Попытка решать такие задачи через аппроксимацию отдельных хар-тик абсурдна. Ведь аппроксимация, скажем, АЧХ по Чебышеву даст лучшее решение только для АЧХ. А аппроксимация по Бесселю ФЧХ даст лучшее решение только по ФЧХ, наплевав на все остальные хар-ки. Единственную научную возможность решения таких задач даёт только теория
векторной оптимизации, принятия решений, основы которой заложил ещё
Вильфредо Парето, сформулировав понятие эффективного решения
многофункциональной задачи с противоречивыми показателями.
Парето-эффективное решение - это компромиссное решение, единственно
возможное научное решение такой проектной задачи. И чтобы найти такое
эффективное решение, надо связать требования по ВСЕМ необходимым хар-кам
в единой скалярной функции качества проектиоуемого фильтра,которую чаще
называют целевой функцией F(X). Самое простое - просто сложить СКО желательно
с весами (значимостями реализуемых характеристик).
Затем ставится экстремальная задача мат.программирования (МП) относительно F(X), позволяющая найти парето-эффективное решение исходной задачи. Причём,
решение современных задач МП возможно только численными поисковыми
методами. При этом начальное приближение - какое-то частное решение,
скажем по АЧХ, не только не помогает решить мнгокритериальную задачу МП,
а обычно только препятствует её решению, заталкивая начальную точку в
локальный экстремум F(X), из которого поисковому алгоритму выбраться гораздо
сложнее, чем идти "с горки", т.е. с произвольной н.т. Именно такая научная
идеология и реализована при ЦНП-синтезе ЦЦФ по совокупности их требуемых
характеристик .
Последний раз редактировалось Vlad27 28 окт 2015, 11:52, всего редактировалось 2 раза.
-
- Сообщения: 92
- Зарегистрирован: 06 апр 2015, 10:09
- Откуда: г, Нижний Новгород (rif27@bk.ru)
Re: Целочисленное проектирование фильтров
Забыл привести, в качестве иллюстрации, примеры разрезов
целевых функций современных зхадач многофункционального
проектирования
целевых функций современных зхадач многофункционального
проектирования
- Santik
- Сообщения: 609
- Зарегистрирован: 28 дек 2010, 08:04
- Откуда: Мирный (Якутия)
- Контактная информация:
Re: Целочисленное проектирование фильтров
Предлагаю методом ЦНП-синтеза разработать 2 фильтра 10 порядка с линейной фазой:Vlad27 писал(а): Ну, если мы заставим разработчика писать матрицы z- преобразования - я думаю, он убежит далеко-далеко... А по сути. Проектировать цифровой фильтр через H(s) - это прошлый век. К тому же эта зависимость
(1- Fs фвч) и обратно очень сильное ограничение - надо уметь обеспечить любую, наперёд заданную
частоту среза при гарантированном сохранении линейности фазы.
ФНЧ с частотой среза 0.2/FN и ФВЧ с частотой среза 0.8/ FN. Будет интересно сравнить результаты
А удаётся ли строго доказать оптимальность полученных таким образом фильтров? Я думаю, что нет. И целочисленность коэффициентов, вероятно, предназначена, только для того, чтобы скрыть этот неприглядный факт.Vlad27 писал(а): Ведь современное проектирование 21-го века - это проектирование по СОВОКУПНОСТИ требуемых
функциональных показателей ... Именно такая научная идеология и реализована при ЦНП-синтезе ЦЦФ по совокупности их требуемых характеристик .
И во что интересно "обходится" целочисленность ( в порядках фильтра)?
-
- Сообщения: 92
- Зарегистрирован: 06 апр 2015, 10:09
- Откуда: г, Нижний Новгород (rif27@bk.ru)
Re: Целочисленное проектирование фильтров
А что понимается под доказательсвом оптимальности? Если это то, что не существует
решений, лучших, чем найденное - то в современных нелинейных многокритериальных
задачах аналитического доказательства сходимости минимизирующей последовательности
к оптимальному в вышеприведённом аспекте решению нет и быть не может (это можно
сделать только в простеньких унимодальных задачах без функ-ых ограничений
и дискретности параметров-коэффициентов). Доказательсво такой сходимости может
быть только статистическое. Я перевожу, например, минимизатор в режим, близкий
к полному перебору (модель non stop, непрерывная random-генерация новых нач.точек)
и показываю, что нет лучшего решения (времени конечно уйдёт много - но
это единственный путь). Но для практического пректирования это всё и не нужно
(лучшее - нелучшее), а нужно просто выполнять ТЗ и всё. Оптимальность в этом плане -
пустое наукообразие. Вот пускай кто сомневается - тот и найдёт решение лучше,
если оно конечно существует. Ведь алтернатива здесь простая: либо иметь чёткое,
удовлетворяющее ТЗ решение многофункциональной проектной задачи (пусть и с
недоказанной оптимальностью в вышеприведённом смысле), либо не иметь вообще
никакого решения. И здесь, конечно, всё решает опыт разработчика в
методологии поискового проектирования ну и хорошее ПО, конечно. Ведь поисковое
решение сложных проектных задач - исключительно творческий процесс,
это интеллектуальное проектирование в самом высоком смысле этого слова.
Множество сценариев решения исходной задачи здесь существует. Владение ими
всё и решает. Это ведь не пресловутая "большая красная кнопка" MATLABа,
где достаточно ввести данные и нажатать родимую.
А целочисленность решения (коэф-ов) - это не сокрытие чего-то, а железное
требование современных цифровых платформ (ПЛИС конечно в первую очередь),
где может быть реализовано только целочисленное решение и никакое другое.
Многие проектирвщики цифровых фильтров почему-то считают, что главное-
найти значения коэффициентов фильтра под требование ТЗ, а будет ли всё
это работать "в железе", при физической реализации фильтра - нас не касается.
Но можно привести множество примеров, когда, скажем, рекурсивный фильтир
теоретически устойчив, все полюса внутри единичной окружности, а при
практической реализации в реальном времени - фильтр возбуждается, "гудит"
по полной программе на всём частотном интервале, либо в определённой области
частот (обычно на частотах полюсов с максимальной добротностью - радиусом).
Ниже приведены конкретные примеры таких практических реализаций. При ЦНП-синтезе
можно активно управлять добротностью полюсов (их радиусом в z-плоскости). Поэтому
если возбуждение имеется, то фильтр пересинтезируется под меньший радиус
полюсов коэф-та передачи. Уменьшение добротности полюсов, конечно, понижает
селективность фильтра, но делает его работу устойчивой уже при практической
реализации на конкретной цифровой платформе.
А целочисленную (дискретную) задачу конечно решать значительно сложней, особенно
на малой разрядности представления данных(вплоть до 4-х бит). Именно на малой
разрядности (менее 8 бит) приходится увеличивать порядок фильтра, хотя начиная
с 10 бит и выше этого эффекта практически не наблюдается.
Вот интересно, как и на чём вы собираетесь реализовывать ваше непрерывное
вещественное решение - только на DSP с FPU, хотя современные ТЗ - только кристалл,
ПЛИС или СБИС.
решений, лучших, чем найденное - то в современных нелинейных многокритериальных
задачах аналитического доказательства сходимости минимизирующей последовательности
к оптимальному в вышеприведённом аспекте решению нет и быть не может (это можно
сделать только в простеньких унимодальных задачах без функ-ых ограничений
и дискретности параметров-коэффициентов). Доказательсво такой сходимости может
быть только статистическое. Я перевожу, например, минимизатор в режим, близкий
к полному перебору (модель non stop, непрерывная random-генерация новых нач.точек)
и показываю, что нет лучшего решения (времени конечно уйдёт много - но
это единственный путь). Но для практического пректирования это всё и не нужно
(лучшее - нелучшее), а нужно просто выполнять ТЗ и всё. Оптимальность в этом плане -
пустое наукообразие. Вот пускай кто сомневается - тот и найдёт решение лучше,
если оно конечно существует. Ведь алтернатива здесь простая: либо иметь чёткое,
удовлетворяющее ТЗ решение многофункциональной проектной задачи (пусть и с
недоказанной оптимальностью в вышеприведённом смысле), либо не иметь вообще
никакого решения. И здесь, конечно, всё решает опыт разработчика в
методологии поискового проектирования ну и хорошее ПО, конечно. Ведь поисковое
решение сложных проектных задач - исключительно творческий процесс,
это интеллектуальное проектирование в самом высоком смысле этого слова.
Множество сценариев решения исходной задачи здесь существует. Владение ими
всё и решает. Это ведь не пресловутая "большая красная кнопка" MATLABа,
где достаточно ввести данные и нажатать родимую.
А целочисленность решения (коэф-ов) - это не сокрытие чего-то, а железное
требование современных цифровых платформ (ПЛИС конечно в первую очередь),
где может быть реализовано только целочисленное решение и никакое другое.
Многие проектирвщики цифровых фильтров почему-то считают, что главное-
найти значения коэффициентов фильтра под требование ТЗ, а будет ли всё
это работать "в железе", при физической реализации фильтра - нас не касается.
Но можно привести множество примеров, когда, скажем, рекурсивный фильтир
теоретически устойчив, все полюса внутри единичной окружности, а при
практической реализации в реальном времени - фильтр возбуждается, "гудит"
по полной программе на всём частотном интервале, либо в определённой области
частот (обычно на частотах полюсов с максимальной добротностью - радиусом).
Ниже приведены конкретные примеры таких практических реализаций. При ЦНП-синтезе
можно активно управлять добротностью полюсов (их радиусом в z-плоскости). Поэтому
если возбуждение имеется, то фильтр пересинтезируется под меньший радиус
полюсов коэф-та передачи. Уменьшение добротности полюсов, конечно, понижает
селективность фильтра, но делает его работу устойчивой уже при практической
реализации на конкретной цифровой платформе.
А целочисленную (дискретную) задачу конечно решать значительно сложней, особенно
на малой разрядности представления данных(вплоть до 4-х бит). Именно на малой
разрядности (менее 8 бит) приходится увеличивать порядок фильтра, хотя начиная
с 10 бит и выше этого эффекта практически не наблюдается.
Вот интересно, как и на чём вы собираетесь реализовывать ваше непрерывное
вещественное решение - только на DSP с FPU, хотя современные ТЗ - только кристалл,
ПЛИС или СБИС.
Последний раз редактировалось Vlad27 28 янв 2016, 13:07, всего редактировалось 2 раза.
-
- Сообщения: 92
- Зарегистрирован: 06 апр 2015, 10:09
- Откуда: г, Нижний Новгород (rif27@bk.ru)
Re: Целочисленное проектирование фильтров
Ещё по поводу оптимальности и малоразрядных решений ЦЦФ.
Ниже приведено решение задачи ЦНП-синтеза рекурсивного ЦЦФ
с разрядностью представления данных в 4 бита (один из них знаковый).
При реализации на кристалле (ПЛИС или СБИС) такое малоразрядное
решение определяет резкое повышение быстродействия ЦЦФ,
впрочем, на МК и DSP без FPU так же.
ЦНП-синтез осуществлялся в стиле динамического программирования,
то есть как последовательность задач с поэтапным повышением
порядка фильтра, пока не было получено вполне приемлемое
решение по требуемой АЧХ и линейности фазы (см.графики).
И всё это на 4-битах вариации коэффициентов. Данное решение,
конечно, не претендует на "оптимальность" в вышерассмотренной
трактовке. Гонять машину пару дней, чтобы статистически это
доказать я, конечно, не собираюсь. Ведь решение на 4-х битах
уникально само по себе (а есть решение задачи и на
3-х битах - правда, характеристики похуже).
Хотелось бы посмотреть на решение этой задаи ЛЮБЫМИ
альтернативными способами. А потом уж можно и
поговорить о его "оптимальности".
Ниже приведено решение задачи ЦНП-синтеза рекурсивного ЦЦФ
с разрядностью представления данных в 4 бита (один из них знаковый).
При реализации на кристалле (ПЛИС или СБИС) такое малоразрядное
решение определяет резкое повышение быстродействия ЦЦФ,
впрочем, на МК и DSP без FPU так же.
ЦНП-синтез осуществлялся в стиле динамического программирования,
то есть как последовательность задач с поэтапным повышением
порядка фильтра, пока не было получено вполне приемлемое
решение по требуемой АЧХ и линейности фазы (см.графики).
И всё это на 4-битах вариации коэффициентов. Данное решение,
конечно, не претендует на "оптимальность" в вышерассмотренной
трактовке. Гонять машину пару дней, чтобы статистически это
доказать я, конечно, не собираюсь. Ведь решение на 4-х битах
уникально само по себе (а есть решение задачи и на
3-х битах - правда, характеристики похуже).
Хотелось бы посмотреть на решение этой задаи ЛЮБЫМИ
альтернативными способами. А потом уж можно и
поговорить о его "оптимальности".
- Santik
- Сообщения: 609
- Зарегистрирован: 28 дек 2010, 08:04
- Откуда: Мирный (Якутия)
- Контактная информация:
Re: Целочисленное проектирование фильтров
А что у Вас за машина? Не Тянь-Хэ-2 случайно? Или круче?Гонять машину пару дней, чтобы статистически это доказать я, конечно, не собираюсь.