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

fdatool | quantization parameters

Мне с недавних пор пришлось заняться реализацией БИХ-фильтров на м/к, либо DSP, либо ПЛИС. Собственно, для выбора конкретной платформы сейчас нужно оценить необходимую разрядность составляющих цифрового фильтра. В связи с этим мероприятием мне, конечно же, попался в руки fdatool, а именно его раздел "quantization parameters". Данные будут представляться в формате с фиксированной запятой, а вот влияние различных вариантов разрядостей на точность фильтра и нужно оценить.

Так вот, в fdatool есть пункты State word length и соответственно State fraction length, назначение которых оказалось недоступно моему пониманию, а тем временем, цифры, вписанные в эти поля, кардинально меняют шум округления, вычисляемый тулом.

Что же всё-таки означают эти загадочные пункты? Поделитесь информацией, кто сталкивался.

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


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

Цитата из КиТа: "Моделирование ЦФ с ФТ средствами GUI FDATool предполагает обязательное знакомство с моделированием ЦФ с ФТ программными средствами MATLAB [ссылка сюда: КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 3 '2009 стр. 114 и далее.]"

fir_matlab5.pdf

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


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

[ссылка сюда: КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 3 '2009 стр. 114 и далее.]"

в этой статье во всех девяти частях ничего по нужному вопросу не нашлось, кроме "Подробную информацию о свойствах объектов dfilt с различными структурами можно получить с помощью справочной системы MATLAB в формате HTML, используя поиск по ключевой фразе ”Quantized Filters” и обращаясь к разделам, описывающим объекты dfilt с различными структурами."

Это навело на мысль поискать описание dfilt в справке матлаба. Только там наконец нашлась схема с упоминанием "State". Оказалось, что State хранит предыдущее значения (z[-1]) для некоторых видов фильтров. Как именно оно влияет, пока правда непонятно...

 

В общем, спасибо за наводку)

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

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


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

В общем, спасибо за наводку)

Сам пытался разобраться с квантованием в fdatool - в итоге перешел на FPU одинарной точности.

Хотелось бы четко, "на пальцах" получить объяснение что, да как, но увы.

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


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

Если надо разобраться как устроен в разрядах бих фильтр в Матлаб fdatool:

1)quantanization parameter - filter arithmetic - Fixed point

в Filter precision можете выбрать разрядности коэффиенты входы выходы и внутреннюю разрядность

apply

2)слева 4 сверху маленькая иконка Realize model нажимаем

выбираем

build model using basic elements

и затем

Realize model

через некоторой время откроется окно Simulink Untitled c вашим фильтром в умножителях сумматорах и разрядностью в каждом элементе.

 

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


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

Если надо разобраться как устроен в разрядах бих фильтр в Матлаб fdatool:

1)quantanization parameter - filter arithmetic - Fixed point

в Filter precision можете выбрать разрядности коэффиенты входы выходы и внутреннюю разрядность

apply

2)слева 4 сверху маленькая иконка Realize model нажимаем

выбираем

build model using basic elements

и затем

Realize model

через некоторой время откроется окно Simulink Untitled c вашим фильтром в умножителях сумматорах и разрядностью в каждом элементе.

 

после Realize Model ошибка:

FDATool Error

Subscript out of bounds. Can grow a UDD vector only one element at a time.

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


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

Тут как с парашютом, если один раз не получилось - может лучше не продолжать :)

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


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

Тут как с парашютом, если один раз не получилось - может лучше не продолжать :)

да уж. и ручками-ручками и головой, по-старинке )

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


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

С арифметикой с фиксированой точкой все на самом деле просто:

пусть есть число 0.25 , чтобы его представить в двоичном виде надо зарезервировать 1 бит под знак,

0 бит под целую часть и столько бит, чтобы корректно представить число 25 , т.е. 5 бит. итого имеем:

word length=1+0+5=6, fraction length=5.

Обычно точности в 16 бит хватает для нормальной работы фильтров.

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


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

С арифметикой с фиксированой точкой все на самом деле просто:

пусть есть число 0.25 , чтобы его представить в двоичном виде надо зарезервировать 1 бит под знак,

0 бит под целую часть и столько бит, чтобы корректно представить число 25 , т.е. 5 бит. итого имеем:

word length=1+0+5=6, fraction length=5.

Обычно точности в 16 бит хватает для нормальной работы фильтров.

 

Вообще-то для числа 0.25 в бинарном представлении достаточно 2 знаков после точки 0.25 = 1/2/2.

 

Битам справа от точки соответствуют степени 2^(-L) L= 1...fraction_length, слева - степени 2^(M) M=0...word_length - fraction_length - 1. Отрицательные числа получаются как 2's complement от положительных (на это нужен старший разряд)

 

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


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

А.И.Солонина, С.М.Арбузов - "Цифровая обработка сигналов. Моделирование в Matlab" - тут все подробно написано.

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


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

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

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

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

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

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

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

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

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

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