|
Округление и отбрасываение разрядности |
|
|
|
Jun 14 2016, 17:35
|
Участник

Группа: Участник
Сообщений: 38
Регистрация: 2-02-16
Из: Санкт-Петербург
Пользователь №: 90 315

|
Всем привет.
Допустим, у меня есть вектор 48 бит, из которых мне надо только 16 бит. Известно, что вектор 48 бит получается из перемножения векторов 32 бита и 16 бит, при этом вектор 32 бита - беззнаковое число (максимум 32000, 2 в какой-то там степени), а 16 бит - число знаковое, и диапазон от -32000 до 32000 (та же степень двойки). Мне надо, чтобы оставляемый от 48 битного вектор в 16 бит был также в диапазоне от -32000 до 32000.
Идея в том, что тот 16 битный вектор, который умножается на 32 битный вектор - это отсчеты синуса, я не могу менять его амплитуду. Вектор 32 бита - амплитуда синуса, и хочу, чтобы выходной вектор (который также будет синусом) имел близкую амплитуду (близкую к тому значению, что записано в 32 битный вектор).
Рассматривал на таком примере: допустим,есть 4 битный вектор. Диапазон от -8 до 7. Если убрать младший разряд, то останется 3 бита, и диапазон будет от -4 до 3. То есть, убрать младший разряд - это практически эквивалентно тому, чтобы поделить записанное в вектор число на 2. Как я понимаю, удаление старшего бита будет иметь схожий эффект.
Я попробовал покрутить это все дело, но особо не вышло. Подскажите пожалуйста, как выбрать разрядность.
PS. Я знаю, что просто отбросить разряды нельзя и знаю что делать дальше, но вопрос сейчас именно в выборе разрядности.
|
|
|
|
|
 |
Ответов
|
Jun 14 2016, 18:23
|
Участник

Группа: Участник
Сообщений: 38
Регистрация: 2-02-16
Из: Санкт-Петербург
Пользователь №: 90 315

|
Цитата(Maverick @ Jun 14 2016, 17:54)  Для ответа необходимо знать (для случая простого FIR с нормированными коэффициентами):
разрядность входных данных - N (с учетом знака) разрядность коэффициентов - M тип представления коэффициентов (тип умножения) - со знаком S=1, или без S=0 МАКСИМАЛЬНЫЙ коэффициент передачи фильтра K (вернее округленный в большую сторону Lk=log2(K) максимальная длинна фильтра D (вернее округленный в большую сторону Ld=log2(D)
Старший бит выходного слова будет находится в позиции MSB аккумулятора MSB=(M*N)-S+Lk-1 Спасибо. Эта формула вызывает вопросы. Видимо, там в скобках должно быть сложение, а не умножение. "МАКСИМАЛЬНЫЙ коэффициент передачи фильтра K (вернее округленный в большую сторону Lk=log2(K)"Не совсем понимаю, как это применить к моему случаю. Можно считать, что я отсчеты синуса умножаю на константу. Диапазон синуса -32000 до 32000, константа может принимать целые значения от 0 до 32000.
|
|
|
|
|
Jun 14 2016, 18:34
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Цитата(dak @ Jun 14 2016, 21:23)  Спасибо.
Эта формула вызывает вопросы. Видимо, там в скобках должно быть сложение, а не умножение.
"МАКСИМАЛЬНЫЙ коэффициент передачи фильтра K (вернее округленный в большую сторону Lk=log2(K)" Не совсем понимаю, как это применить к моему случаю. Можно считать, что я отсчеты синуса умножаю на константу. Диапазон синуса -32000 до 32000, константа может принимать целые значения от 0 до 32000. можно реализовать - первый абзац - например Цитата (accval/constmaxval)*2^adc_width
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
Сообщений в этой теме
dak Округление и отбрасываение разрядности Jun 14 2016, 17:35 GREGOR_812 Если честно, не понял, в чём суть проблемы)
Что Вы... Jun 14 2016, 17:41 dak Цитата(GREGOR_812 @ Jun 14 2016, 17:41) Е... Jun 14 2016, 17:46 Maverick Цитата(dak @ Jun 14 2016, 20:46)
В общем... Jun 14 2016, 17:54 GREGOR_812 Если Ваши числа записываются в дополнительном коде... Jun 14 2016, 18:45 dak Я тут вот о чем подумал. Для меня не критично, есл... Jun 18 2016, 23:53
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|