|
Округление при сдвиговом делении, возможно, детский вопрос, но все же... |
|
|
|
Nov 20 2007, 16:26
|
Знающий
   
Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997

|
Итак, есть число, знаковое. Его надо разделить Вариант 1: на степень двойки. Сдвигаем вправо и все. Округление, на сколько я знаю, до ближайшего целого в сторону минус бесконечности. Вариант 2: не на степень двойки, а, скажем, на 1.6. Деление на 1.6 выполняем следующим образом: 1/1.6 = 0.625 = (1/2+1/8). Т.е. сдвигаем на один бит и прибавляем результат сдвига на 3 бита. Какое округление происходит в данном случае я даже не знаю.
А теперь вопрос: как выполнить деление по первому и второму варианту, но гарантировать округление до ближайшего целого (и для положительных, и для отрицательных)? Причем, в проекте это одно из самых узких мест, не хотелось бы накручивать сложную логику и плодить задержки. Заранее спасибо
|
|
|
|
|
 |
Ответов
|
Nov 21 2007, 06:12
|
Знающий
   
Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997

|
Цитата(rloc @ Nov 20 2007, 19:36)  В самом простом случае добавляете к числу +0.5 и для положительных и для отрицательных чисел, и откидываете дробную часть. Хм. Осталось только придумать, как это реализовать. Цитата(Гвоздик @ Nov 21 2007, 00:47)  Вы дробную арифметику самостоятельно в целочисленную приводите?!? Матлабом пользоваться не пробовали? Советую попробовать связку программ: AccelDSP + Matlab (HDL-код напишется автоматически) А что мне предлагается делать на матлабе? Мне нужно выполнить квантование на набор заранее рассчитанных коефициентов, округляя результат к ближайшему целому. Что мне тут сделать на матлабе и чем он мне поможет? Я сегодня проверю, но, на сколько помню, функции округления в матлабе - не hdl синтезируемые.
|
|
|
|
|
Nov 21 2007, 08:23
|
Знающий
   
Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997

|
Цитата(Волощенко @ Nov 21 2007, 09:45)  Похоже, Вы масштабируете на заранее известные коэффициенты: попробуйте заменить деление умножением. Или условия другие? Ну да, есть входной поток d0, d1, d2,..., d63. Есть набор значений, заранее известных и доступных небольшому варьированию q0, q1, q2,..., q63. На выходе нужно d0/q0, d1/q1, d2/q2, ..., d63/q34 с округлением к ближайшему целому. Можно пример замены деления умножением?
|
|
|
|
Сообщений в этой теме
RHnd Округление при сдвиговом делении Nov 20 2007, 16:26     RHnd Цитата(Волощенко @ Nov 21 2007, 11:48) Ес... Nov 21 2007, 15:05 Гвоздик Вы дробную арифметику самостоятельно в целочисленн... Nov 20 2007, 21:47 AsJohnAs Тут правельно сказано что надо добавлять 0,5. Реал... Nov 21 2007, 12:00 YuP Цитата(AsJohnAs @ Nov 21 2007, 16:00) Тут... Dec 11 2007, 14:52 Singer Цитата(AsJohnAs @ Nov 21 2007, 15:00) Тут... Dec 12 2007, 06:39 Евгений Николаев Методы существуют разные. Скажите - а какую ПЛИС В... Nov 23 2007, 08:58 alex5991 Цитата(RHnd @ Nov 20 2007, 20:26) Итак, е... Nov 23 2007, 10:47 syoma Кстати в матлаб+ system generator очень хорошо про... Nov 24 2007, 10:43
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|