Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: fdatool | quantization parameters
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
ilo
Мне с недавних пор пришлось заняться реализацией БИХ-фильтров на м/к, либо DSP, либо ПЛИС. Собственно, для выбора конкретной платформы сейчас нужно оценить необходимую разрядность составляющих цифрового фильтра. В связи с этим мероприятием мне, конечно же, попался в руки fdatool, а именно его раздел "quantization parameters". Данные будут представляться в формате с фиксированной запятой, а вот влияние различных вариантов разрядостей на точность фильтра и нужно оценить.
Так вот, в fdatool есть пункты State word length и соответственно State fraction length, назначение которых оказалось недоступно моему пониманию, а тем временем, цифры, вписанные в эти поля, кардинально меняют шум округления, вычисляемый тулом.
Что же всё-таки означают эти загадочные пункты? Поделитесь информацией, кто сталкивался.
adnega
Цитата из КиТа: "Моделирование ЦФ с ФТ средствами GUI FDATool предполагает обязательное знакомство с моделированием ЦФ с ФТ программными средствами MATLAB [ссылка сюда: КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 3 '2009 стр. 114 и далее.]"
ilo
Цитата(adnega @ Mar 30 2015, 19:13) *
[ссылка сюда: КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 3 '2009 стр. 114 и далее.]"

в этой статье во всех девяти частях ничего по нужному вопросу не нашлось, кроме "Подробную информацию о свойствах объектов dfilt с различными структурами можно получить с помощью справочной системы MATLAB в формате HTML, используя поиск по ключевой фразе ”Quantized Filters” и обращаясь к разделам, описывающим объекты dfilt с различными структурами."
Это навело на мысль поискать описание dfilt в справке матлаба. Только там наконец нашлась схема с упоминанием "State". Оказалось, что State хранит предыдущее значения (z[-1]) для некоторых видов фильтров. Как именно оно влияет, пока правда непонятно...

В общем, спасибо за наводку)
adnega
Цитата(ilo @ Mar 31 2015, 13:37) *
В общем, спасибо за наводку)

Сам пытался разобраться с квантованием в fdatool - в итоге перешел на FPU одинарной точности.
Хотелось бы четко, "на пальцах" получить объяснение что, да как, но увы.
litv
Если надо разобраться как устроен в разрядах бих фильтр в Матлаб 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 вашим фильтром в умножителях сумматорах и разрядностью в каждом элементе.
ilo
Цитата(litv @ Mar 31 2015, 17:40) *
Если надо разобраться как устроен в разрядах бих фильтр в Матлаб 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.
litv
Тут как с парашютом, если один раз не получилось - может лучше не продолжать sm.gif
ilo
Цитата(litv @ Apr 1 2015, 12:06) *
Тут как с парашютом, если один раз не получилось - может лучше не продолжать sm.gif

да уж. и ручками-ручками и головой, по-старинке )
Skryppy
С арифметикой с фиксированой точкой все на самом деле просто:
пусть есть число 0.25 , чтобы его представить в двоичном виде надо зарезервировать 1 бит под знак,
0 бит под целую часть и столько бит, чтобы корректно представить число 25 , т.е. 5 бит. итого имеем:
word length=1+0+5=6, fraction length=5.
Обычно точности в 16 бит хватает для нормальной работы фильтров.
andyp
Цитата(Skryppy @ Apr 19 2015, 20:23) *
С арифметикой с фиксированой точкой все на самом деле просто:
пусть есть число 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 от положительных (на это нужен старший разряд)
qwa
А.И.Солонина, С.М.Арбузов - "Цифровая обработка сигналов. Моделирование в Matlab" - тут все подробно написано.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.