Перейти к содержанию
    

Снова о z-преобразовании

Понадобилось мне в одном проекте реализовать много БИХ-фильтров первого порядка с такой структурой:

image.png.f0f1d5897a6e8357e90943b802eef994.png

Его передаточная функция H(z) = (1 - z^-1) / (1 - K*z^-1);          (1)

Для реализации в FPGA добавил пару регистров с целью повысить максимальную тактовую:

image.png.4e52a0f37c70886d47cfbaccec9e233f.png

Вывел новую передаточную функцию H(z) = (1 - z^-2) / (1 - z^-2 + (1 - K)*z^-3);        (2)

АЧХ нового фильтра конечно немного изменилась, но в пределах допустимого.

А теперь вопрос: как проверить правильность вывода формулы новой ПФ (2)?

Ведь при выводе очень легко допустить ошибку и в итоге получить неправильное значение ПФ.

Или только ручками несколько раз выводить новую формулу в надежде обнаружить вероятную ошибку?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 07.03.2023 в 11:20, _sda сказал:

А теперь вопрос: как проверить правильность вывода формулы новой ПФ (2)?

Странный вопрос... наверно поэтому все молчат... А в чем проблема сравнить по АЧХ? Для начала...

 

В 07.03.2023 в 11:20, _sda сказал:

Вывел новую передаточную функцию H(z) = (1 - z^-2) / (1 - z^-2 + (1 - K)*z^-3);        (2)

АЧХ нового фильтра конечно немного изменилась, но в пределах допустимого.

АЧХ то может и немного изменилась, а вот фильтр стал неустойчивым, т.к. появился полюс снаружи единичной окружности.

Нельзя вот так просто взять ©® и добавить в БИХ фильтр задержек по вкусу... 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 08.03.2023 в 15:00, Самурай сказал:

Странный вопрос... наверно поэтому все молчат... А в чем проблема сравнить по АЧХ? Для начала...

Сравнить что с чем? Ведь я не уверен что формула (2) выведена верно. Строить АЧХ по ней вроде как рановато.

 

В 08.03.2023 в 15:00, Самурай сказал:

АЧХ то может и немного изменилась, а вот фильтр стал неустойчивым, т.к. появился полюс снаружи единичной окружности.

Анализ устойчивости я не делал, т.к. не был уверен в правильности формулы (2). 

Подумалось что может средствами матлаба  можно выводить ПФ по заданной схеме узла, вот бы и проверил свою формулу.

Если такой возможности нет, конечно придётся искать другие методы проверки.

 

p.s. А Вы когда проверяли устойчивость исходили из того что формула (2) выведена верно? Или вывели сами и у вас совпало?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

подойдёт ли для Ваших целей, с учётом необходимости зарегистрить для реализации в FPGA, вот такой фильтр?

image.png.3198fafdd27547f702e4b52b3f230f60.png

с передаточной функцией H(z) = (1 - z^-2) / (1 - K*z^-2);

и такой АЧХ

K1 = 1-1/10;
K2 = 1-1/100;
b1 = [1,0,-1];
a1 = [1,0,-K1];
b2 = [1,0,-1];
a2 = [1,0,-K2];
fvtool(b1,a1,b2,a2);

image.thumb.png.4beac52ae115c6da65695c46a90bfc94.png

или нужен именно ФВЧ и способ зарегистрить именно исходный ФВЧ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, у меня нет привязки к исходному фильтру. Действительно Ваш фильтр прекрасно ложится на FPGA, а ширину переходной области можно легко изменять.

Завтра проверю его на применимость в моём проекте, мне ещё очень важна реакция на входную ступеньку (ПХ). Большое спасибо!

А всё-таки вопрос о нахождении H(z) заданной схемы с помощью матлаба в общем случае остаётся открытым. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 3/7/2023 at 11:20 AM, _sda said:

Понадобилось мне в одном проекте реализовать много БИХ-фильтров первого порядка с такой структурой:

Его передаточная функция H(z) = (1 - z^-1) / (1 - K*z^-1);          (1)

Для реализации в FPGA добавил пару регистров с целью повысить максимальную тактовую

Стандартный подход основан на использовании Polyphase Decomposition:

 

\(H(z)=\frac{1-z^{-1}}{1-K\cdot z^{-1}}=\frac{(1-z^{-1})\cdot(1+K\cdot z^{-1})}{1-K^2\cdot z^{-2}}=\frac{1-z^{-1}+K\cdot z^{-1}-K\cdot z^{-2}}{1-K^2\cdot z^{-2}}=\)

 

\(=\frac{1-K\cdot z^{-2}-(1-K)\cdot z^{-1}}{1-K^2\cdot z^{-2}}=\frac{1-K\cdot z^{-2}}{1-K^2\cdot z^{-2}}-\frac{1-K}{1-K^2\cdot z^{-2}}\cdot z^{-1}=H_1(z^2)-H_2(z^2)\cdot z^{-1}\)

 

Семплы на выходе обоих фильтров \(H_1(z^2)\) и \(H_2(z^2)\) вычисляются не в каждом такте, а только в четных тактах клока.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 08.03.2023 в 18:44, blackfin сказал:

Стандартный подход основан на использовании Polyphase Decomposition:

Буду разбираться, большое спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 08.03.2023 в 17:06, _sda сказал:

Сравнить что с чем? Ведь я не уверен что формула (2) выведена верно. Строить АЧХ по ней вроде как рановато.

Сравнить АЧХ выведенной формулы (в Матлабе) и соответствующего ей блока (в Симулинке). Тем более, если не уверены... 

 

В 08.03.2023 в 17:06, _sda сказал:

Подумалось что может средствами матлаба  можно выводить ПФ по заданной схеме узла, вот бы и проверил свою формулу.

Ну можно вот так например:

image.thumb.png.167cf56a6014e78d3fb982ef178c0863.png

 

П.С. Уважаемый blackfin немного сократил промежуточные выкладки, не показав, что первым этапом и числитель и знаменатель умножаются на (1+K*z^-1), что и дает в знаменателе (1-K^2*z^-2)...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 08.03.2023 в 18:58, Самурай сказал:

Ну можно вот так например:

О, большое спасибо! Поизучаю эту функцию, никогда не приходилось с ней работать.

 

В 08.03.2023 в 18:58, Самурай сказал:

П.С. Уважаемый blackfin немного сократил промежуточные выкладки, не показав, что первым этапом и числитель и знаменатель умножаются на (1+K*z^-1), что и дает в знаменателе (1-K^2*z^-2)...

Не, ну это было видно с первого взгляда...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 08.03.2023 в 18:58, Самурай сказал:

Ну можно вот так например:

Нет, не выходит каменный цветок. Нет ли у Вас примера как от рисунка перейти к передаточной функции с помощью tf и feedback? Например для моей второй картинки? 

Думаю тема интересна не только мне.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 09.03.2023 в 11:07, _sda сказал:

Нет, не выходит каменный цветок. Нет ли у Вас примера как от рисунка перейти к передаточной функции с помощью tf и feedback? Например для моей второй картинки? 

image.thumb.png.4735159698095e41d24c36c3fa932983.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...