реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Вопрос про деление, как реализовать?
prom
сообщение Mar 3 2005, 15:35
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 49
Регистрация: 12-01-05
Пользователь №: 1 912



Возникла необходимость делить одно число на другое. ISE упорно ругается, что числа должны быть степенью 2. Подскажите, гуру, как реализовать (желательно меньшей кровью) деление с получением целой и дробной части (дробной до любого знака)... Пока сижу пыхчу сам smile3046.gif

Заранее спс
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Mar 3 2005, 15:40
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



На www.opencores.org есть некоторое количество готовых делителей. Можно еще в интернет поискать по ключевому слову radix2.
Go to the top of the page
 
+Quote Post
acex2
сообщение Mar 3 2005, 16:14
Сообщение #3


Адепт
****

Группа: Свой
Сообщений: 520
Регистрация: 15-02-05
Пользователь №: 2 656



Цитата(prom @ Mar 3 2005, 12:35)
Возникла необходимость делить одно число на другое. ISE упорно ругается, что числа должны быть степенью 2. Подскажите, гуру, как реализовать (желательно меньшей кровью) деление с получением целой и дробной части (дробной до любого знака)... Пока сижу пыхчу сам  smile3046.gif


Правильно ругается - все синтезаторы поддерживают только деление на степень 2, хотя в самом VHDL (Verilog) ограничений на делитель нет. Надо или самому писать (могу приаттачить соответствующую главу из книги "Computer Arithmetic: Algorithms and Hardware Design"), или, если у вас стандартное представление вещественных чисел, использовать готовую библиотеку, например fpuvhdl c opencores.
Go to the top of the page
 
+Quote Post
prom
сообщение Mar 3 2005, 16:44
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 49
Регистрация: 12-01-05
Пользователь №: 1 912



Цитата(acex2 @ Mar 3 2005, 19:14)
...могу приаттачить соответствующую главу из книги "Computer Arithmetic: Algorithms and Hardware Design"), или, если у вас стандартное представление вещественных чисел, использовать готовую библиотеку, например fpuvhdl c opencores.
*


если не затруднит, приаттачте! спасибо
Go to the top of the page
 
+Quote Post
acex2
сообщение Mar 3 2005, 18:17
Сообщение #5


Адепт
****

Группа: Свой
Сообщений: 520
Регистрация: 15-02-05
Пользователь №: 2 656



Цитата(prom @ Mar 3 2005, 13:44)
Цитата(acex2 @ Mar 3 2005, 19:14)
...могу приаттачить соответствующую главу из книги "Computer Arithmetic: Algorithms and Hardware Design"), или, если у вас стандартное представление вещественных чисел, использовать готовую библиотеку, например fpuvhdl c opencores.
*


если не затруднит, приаттачте! спасибо
*



Залил все главы про различные методы деления (главы 13-16) на местный FTP в /upload/DOC/Computer Arithmetic/. Полная книжка пробегала на электроде. Там 27 Мб, залью как-нибудь остальное на FTP.
Go to the top of the page
 
+Quote Post
Esquire
сообщение Mar 4 2005, 09:34
Сообщение #6


Эсквайр
*****

Группа: Почетный участник
Сообщений: 1 013
Регистрация: 19-06-04
Из: • ℮lectronﭑχ •
Пользователь №: 62



Цитата
Там 27 Мб, залью как-нибудь остальное на FTP.

Заливай, интересно wink.gif .


--------------------
Кто ищет, тот всегда найдет
Go to the top of the page
 
+Quote Post
ministrel
сообщение Mar 4 2005, 11:52
Сообщение #7





Группа: Новичок
Сообщений: 12
Регистрация: 4-03-05
Пользователь №: 3 060



Залил все главы про различные методы деления (главы 13-16) на местный FTP в /upload/DOC/Computer Arithmetic/. Полная книжка пробегала на электроде. Там 27 Мб, залью как-нибудь остальное на FTP.
*

[/quote]

А у меня нет доступа к FTP может ещё где есть инфа по делению на ПЛИС?
Go to the top of the page
 
+Quote Post
acex2
сообщение Mar 4 2005, 13:02
Сообщение #8


Адепт
****

Группа: Свой
Сообщений: 520
Регистрация: 15-02-05
Пользователь №: 2 656



Цитата(ministrel @ Mar 4 2005, 08:52)
А у меня нет доступа к FTP может ещё где есть инфа по делению на ПЛИС?


А вы вот здесь диссертации посмотрите - там очень хорошие обзоры с алгоритмами идут: http://arith.stanford.edu/phds.html
Еще поищите их отчет 1997 года "Modern Research in Computer Arithmetic" - там целая глава было про деление.
Go to the top of the page
 
+Quote Post
ministrel
сообщение Mar 4 2005, 19:03
Сообщение #9





Группа: Новичок
Сообщений: 12
Регистрация: 4-03-05
Пользователь №: 3 060



Цитата(acex2 @ Mar 4 2005, 16:02)
Цитата(ministrel @ Mar 4 2005, 08:52)
А у меня нет доступа к FTP может ещё где есть инфа по делению на ПЛИС?


А вы вот здесь диссертации посмотрите - там очень хорошие обзоры с алгоритмами идут: http://arith.stanford.edu/phds.html
Еще поищите их отчет 1997 года "Modern Research in Computer Arithmetic" - там целая глава было про деление.
*



Спасибо!
Go to the top of the page
 
+Quote Post
alex_elect
сообщение Mar 5 2005, 14:24
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 118
Регистрация: 22-06-04
Пользователь №: 115



К acex2
А не могли бы Вы туда же залить Part VI: Function Evaluation (Гл.21-24) из той же книги ( "Computer Arithmetic: Algorithms and Hardware Design")
Go to the top of the page
 
+Quote Post
acex2
сообщение Mar 5 2005, 14:45
Сообщение #11


Адепт
****

Группа: Свой
Сообщений: 520
Регистрация: 15-02-05
Пользователь №: 2 656



Цитата(alex_elect @ Mar 5 2005, 11:24)
К acex2
А не могли бы Вы туда же залить Part VI: Function Evaluation (Гл.21-24) из той же книги ( "Computer Arithmetic: Algorithms and Hardware Design")


Я сейчас как раз перегоняю всю книгу в .djvu - она должна поменьше раза в 3 получиться. Все-таки 9 мегабайт - не 27 wink.gif
Постарюсь на этих выходных все залить.
Go to the top of the page
 
+Quote Post
acex2
сообщение Mar 12 2005, 15:09
Сообщение #12


Адепт
****

Группа: Свой
Сообщений: 520
Регистрация: 15-02-05
Пользователь №: 2 656



Надоело возиться с глюками DocumentExpress, поэтому залил в ту же папку всю книгу в формате pdf.
Go to the top of the page
 
+Quote Post
belena7
сообщение Mar 17 2005, 09:04
Сообщение #13





Группа: Новичок
Сообщений: 10
Регистрация: 8-03-05
Пользователь №: 3 147



[quote=prom,Mar 3 2005, 18:35]
Возникла необходимость делить одно число на другое. ISE упорно ругается, что числа должны быть степенью 2. Подскажите, гуру, как реализовать (желательно меньшей кровью) деление с получением целой и дробной части (дробной до любого знака)... Пока сижу пыхчу сам smile3046.gif

ya ispol'zuyu serial'niy delitel'(t.e. takt na bit ratio) esli sakjesh' 4to nujno polu4it' mogu pomo4'
Go to the top of the page
 
+Quote Post
Wilde
сообщение Mar 18 2005, 18:34
Сообщение #14





Группа: Участник
Сообщений: 11
Регистрация: 18-03-05
Пользователь №: 3 477



Можно умножить на A и разделить на B. где B- степень двойки,
B/A ~=необходимому делителю. Если особо точность не требуется можно так сделать.
Go to the top of the page
 
+Quote Post
acex2
сообщение Mar 18 2005, 21:07
Сообщение #15


Адепт
****

Группа: Свой
Сообщений: 520
Регистрация: 15-02-05
Пользователь №: 2 656



Цитата(Wilde @ Mar 18 2005, 15:34)
Можно умножить на A и разделить на B. где B- степень двойки,
B/A ~=необходимому делителю. Если особо точность не требуется можно так сделать.


Такой метод с ограничениями подходит только для деления на константу. А переменную на переменную не разделишь, так как вычисление В/А тоже требует деления.
Go to the top of the page
 
+Quote Post
prom
сообщение Mar 20 2005, 10:36
Сообщение #16


Участник
*

Группа: Свой
Сообщений: 49
Регистрация: 12-01-05
Пользователь №: 1 912



Цитата(belena7 @ Mar 17 2005, 12:04)
ya ispol'zuyu serial'niy delitel'(t.e. takt na bit ratio) esli sakjesh' 4to nujno polu4it' mogu pomo4'


очень интересно... у меня после 2-х дней мучений получилось делить на ядре ISE (pipelined divider). При этом максимальное к-во тактов на деление получилось 8 (там можно только 1-2-4-8). При этом дивайдер (integer remainder, unsigned ) использует порядка 600 слайсов, что многовато (при 1 такте почти весь спартан 3 скушал blink.gif ).

Вообще читал алгоритмы деления и удивлялся - все сводится к умножению и вычитанию - откуда такие дикие размеры.

В моей задаче скорость деления вообще не критична (хоть 1000 тактов) - так что Вашей идеей заинтересован. Поясню что надо:

Число (32 бита) делится на переменную (которая храниться в регистре и может меняться). Результат деления необходим до 1-го десятичного знака (кстати будет интересно алгоритм floating point).

Как реализовал пока сам:
1. берем число и делим
2. запоминаем quotient
3. remainder умножаем на 10
4. делим рез-т на начальный дивизор
5. quotient2 прибавляем к п.2
получаем таким образом результат деления с точностью до 1 десятой
если дальше, то надо повторять до позеленения...

При этом плохо, что я не предусмотрел возможность переполнения. Т.е. пусть dividend изначально равен 2^33-1. Тогда максимальный quotient будет = dividend-1. При этом использовать дивайдер 32 на 32 бита глупо. Если я не ошибаюсь на FP процах все реализуется через 8-ми битные делители. Поправьте, коли не так...

Короче продолжаем дебаты )))
Всем спс за внимание
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 19:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.0148 секунд с 7
ELECTRONIX ©2004-2016