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

Разрядность в вычислениях в адаптивном фильтре

При реализации адаптивного фильтра (lms-алгоритм) на ПЛИС как работать (выбирать, маштабировать и т.п.) с разрядностью промежуточных вычислений и результата?

Например, длина фильтра 512, входные данные 12-разрядные, выходные данные тоже должны быть 12-разрядные.

Если в КИХ-фильтре коэффициенты постоянные, то можно вычислить разрядность максимально возможного значения выхода фильтра и взять нужное количество старших разрядов. Как действовать с переменными коэффициентами?

 

Изменено пользователем Michael358

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


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

Simulink и моделировать. С переменными будет плохо, планировать что они максимальные плохо. АРУ еще бы тогда на входе.

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


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

1 hour ago, Michael358 said:

При реализации адаптивного фильтра (lms-алгоритм) на ПЛИС как работать (выбирать, маштабировать и т.п.) с разрядностью промежуточных вычислений и результата?

Например, длина фильтра 512, входные данные 12-разрядные, выходные данные тоже должны быть 12-разрядные.

Если в КИХ-фильтре коэффициенты постоянные, то можно вычислить разрядность максимально возможного значения выхода фильтра и взять нужное количество старших разрядов. Как действовать с переменными коэффициентами?

Без всяких матлабо/симулинков: по логике здравого смысла. Задача эквалайзера - коррекция сигнала, узначит его усиление в положении сброса/адпатации должно быть равно единице. Из условия баланса мощностей по входу выходу и делаете вашу разрядность, положение плавающей точки и все остальное)

ЗЫ. Сам фильтр естественно делается на полной разрядности, без переполнений, Адаптация обязана учитывать переполнение коэффициентов.

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


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

3 hours ago, des00 said:

Без всяких матлабо/симулинков: по логике здравого смысла. Задача эквалайзера - коррекция сигнала, узначит его усиление в положении сброса/адпатации должно быть равно единице. Из условия баланса мощностей по входу выходу и делаете вашу разрядность, положение плавающей точки и все остальное)

ЗЫ. Сам фильтр естественно делается на полной разрядности, без переполнений, Адаптация обязана учитывать переполнение коэффициентов.

3 hours ago, litv said:

С переменными будет плохо, планировать что они максимальные плохо. АРУ еще бы тогда на входе.

 

А можно поподробнее для нуба:

Разве не проще в ПЛИС реализовывать целочисленную арифметику?

Полная разрядность - это: входные данные (х) с АЦП - 12-разрядов; под коэффициенты отводится тоже 12-разрядов; выход фильтра y = сумм(х * w) = 12 + 12 + log2(512) = 34 разряда, из них в выходные данные брать старшие 12 разрядов?

Далее ошибка е = d - y = 13 разрядов. Брать старшие 12 ?

Затем обновление коэффициентов w(k +1) = μ e(k) x(k)+ w(k).  e(k)=12 разрядов, x(k) = 12 разрядов, μ - ? (не знаю, сколько). Получается w(k +1) = ? + 12 + 12 + 1 >= 26 разрядов ? Как масштабировать до 12 разрядов?

Что есть усиление в цифровом фильтре?

Изменено пользователем Michael358

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


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

23 minutes ago, Michael358 said:

Разве не проще в ПЛИС реализовывать целочисленную арифметику?

Полная разрядность - это: входные данные (х) с АЦП - 12-разрядов; под коэффициенты отводится тоже 12-разрядов; выход фильтра y = сумм(х * w) = 12 + 12 + log2(512) = 34 разряда, из них в выходные данные брать старшие 12 разрядов?

Далее ошибка е = d - y = 13 разрядов. Брать старшие 12 ?

Затем обновление коэффициентов w(k +1) = μ e(k) x(k)+ w(k).  e(k)=12 разрядов, x(k) = 12 разрядов, μ - ? (не знаю, сколько). Получается w(k +1) = ? + 12 + 12 + 1 >= 26 разрядов ? Как масштабировать до 12 разрядов?

Ну так и делают, только не так как вы это написали. Вам нужна арифметика с фиксированной точкой(читать в любом более менее приличном учебнике). Например ваши 12 разрядов, представляем как s0.11, коэффииценты эквалайзера, например, как s8.8 и дальше понеслось. s0.11*s8.8 = ss8.19 и бла бла бла.

23 minutes ago, Michael358 said:

Что есть усиление в цифровом фильтре?

Тоже что и в любом устройстве: Kус = Uвых/Uвх.

ЗЫ. А если учесть что эквалайзер штука с обратной связью, то коэффиицентами по 12 бит вы точно не отделаетесь) Вангую что у вас там будет поряда 18 бит коэффициенты и 32-36 бит аккумуляторы.

UPD. И вообще, на 512 коэффициентов эквалайзер, может быть лучше на БПФ его сделать?

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


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

18 hours ago, des00 said:

Например ваши 12 разрядов, представляем как s0.11, коэффииценты эквалайзера, например, как s8.8 и дальше понеслось. s0.11*s8.8 = ss8.19 и бла бла бла

А, т.к. входные данные представляются числом < 1, то в результате умножения модуль числа будет только уменьшаться. Оставляем нужное количество разрядов после точки. Поэтому переполнения не будет. Верно понимаю?

Тогда почему

18 hours ago, des00 said:

А если учесть что эквалайзер штука с обратной связью, то коэффиицентами по 12 бит вы точно не отделаетесь) Вангую что у вас там будет поряда 18 бит коэффициенты и 32-36 бит аккумуляторы.

не хватит 12 бит, если после умножения/сложения оставлять нужное количество разрядов ?

 

18 hours ago, des00 said:

И вообще, на 512 коэффициентов эквалайзер, может быть лучше на БПФ его сделать?

Мне надо сделать эхокомпенсацию. Её можно реализовать на БПФ ?

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


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

On 4/26/2023 at 12:36 PM, Michael358 said:

А, т.к. входные данные представляются числом < 1, то в результате умножения модуль числа будет только уменьшаться. Оставляем нужное количество разрядов после точки. Поэтому переполнения не будет. Верно понимаю?

Нет не верно, все зависит от коэффициентов фильтра и требуемых характеристик. Например, вы можете в принципе не эквалайзировать сигнал, при ограничении коэффициентов фильтра < 1. Эквалайзер это же в том числе еще и АРУ, он тянет выходной сигнал к эталонному.

On 4/26/2023 at 12:36 PM, Michael358 said:

Мне надо сделать эхокомпенсацию. Её можно реализовать на БПФ ?

Ваш FIR фильтр это линейная свертка, ее можно посчитать с помощью БПФ. В любом более менее приличном учебнике есть оценки производительности. ЕМНП начиная с 64 порядка, линейная свертка на БПФ становится выгоднее чем в лоб.

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


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

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

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

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

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

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

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

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

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

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