Jump to content

    
Sign in to follow this  
ilo

fdatool | quantization parameters

Recommended Posts

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

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

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

Share this post


Link to post
Share on other sites

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

fir_matlab5.pdf

Share this post


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

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

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

 

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

Edited by ilo

Share this post


Link to post
Share on other sites
В общем, спасибо за наводку)

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

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

Share this post


Link to post
Share on other sites

Если надо разобраться как устроен в разрядах бих фильтр в Матлаб 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 вашим фильтром в умножителях сумматорах и разрядностью в каждом элементе.

 

Share this post


Link to post
Share on other sites
Если надо разобраться как устроен в разрядах бих фильтр в Матлаб 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.

Share this post


Link to post
Share on other sites
Тут как с парашютом, если один раз не получилось - может лучше не продолжать :)

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

Share this post


Link to post
Share on other sites
С арифметикой с фиксированой точкой все на самом деле просто:

пусть есть число 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 от положительных (на это нужен старший разряд)

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this