Junior
Статус: Не в сети Регистрация: 13.02.2006 Откуда: Воронеж
Собственно требуется поделить два числа. Прошу послать меня на литературу где имеются данные об алгоритмах деления(поиск ничего хорошего не дал), или, если не сложно, рассказать о том или ином способе деления известном Вам. Делением в столбик я владею чуть ли не в совершенстве, особенно с листочком и ручкой в руках , хотя если имеется другой способ, кроме школьного, деления в столбик ,хотелось бы знать и его, а вообще хотелось бы узнать наиболее быстрый алгоритм деления.
Junior
Статус: Не в сети Регистрация: 13.02.2006 Откуда: Воронеж
Проблема в том что мне нужно реализовать это не только, как программу на PC, но и как устройство на FPGA, деление в столбик не подходит потому критерию, что оно выполняется очень много тактов, для чисел с большой разрядностью. Поэтому я и прошу посоветовать, дать мне ссылки на другие алгоритмы деления, которые могли бы выполниться быстрее. Мне потребуется сделать модель которая полностью повторяла бы устройство на FPGA, и c=a/b, не совсем то что нужно. может я не в тот форум обратился?????
Junior
Статус: Не в сети Регистрация: 13.02.2006 Откуда: Воронеж
Dimakey Altera Stratix II , lpm_divider работает очень долго, а именно, для обеспечения необходимой частоты работы, длина конвеера у него должна быть не меньше разрядности делимого (установлено экспериментально), а если учесть что делимое (потенциально по т.з.) до 128 разрядов может быть, то мне кучу данных надо будет задерживать в фифо, поэтому и начал поиск более быстрого и эффективного алгоритма деления. Мое устройство будет не единственным в FPGA, будут другие компоненты которые будут довольно прожорливыми в плане памяти, так что использовать большие задержки не хотелось бы.
serj Спасибо!!! Добавлено спустя 40 минут, 36 секунд serj К кому можно обратиться о переносе темы?????
Member
Статус: Не в сети Регистрация: 17.06.2005 Откуда: [ХАРЬКОВ]
lumumba Ничего лучше ты не придумаешь. Тут всегда так - или быстро, но много памяти или мало памяти, но долго. Те, кто писал генератор, как следует подумали, прежде чем реализовать именно такой делитель.
_________________ Кольорова крейда це знаряддя деявола!
Junior
Статус: Не в сети Регистрация: 13.02.2006 Откуда: Воронеж
Dimakey Это достаточно спорный вопрос, особенно касается компонентов альтеры(ИМХО),встречался с компонентами которые работали с более высокой частотой и съедали меньше ресурсов чем то, что предлагала альтера, поэтому вполне может быть что найдется более эффективный метод деления.
2) M. D. Ercegovac, T. Lang, J.-M. Muller, and A. Tisserand, “Reciprocation, square root, inverse square root, and some elementary functions using small multipliers," IEEE Transactions on Computers, vol. 2, pp. 628-637, 2000
классика...
PS
Для второго нужен доступ, если не забуду на следующей неделе зайду с работы и подкину.
Junior
Статус: Не в сети Регистрация: 13.02.2006 Откуда: Воронеж
Спасибо за помощь, мне удалось распараллелить деление на два потока, в результате я получаю данные в два раза быстрее, чем при классическом делении в столбик, для данного проекта этого достаточно, однако тему хотелось бы продолжить, поскольку деление довольно часто встречающаяся операция, и хотелось бы знать как можно больше эффективных алгоритмов, на будущее, поэтому просьба к участникам форума и дальше высказывать свои идеи по данной теме, а также давать ссылки.
Junior
Статус: Не в сети Регистрация: 01.04.2004 Откуда: Питер
Не хотите попробовать перейти к экспоненте разности логарифмов? плавающая запятая устроит?
В своё время писал библиотеку для плавающей запятой с длинной мантиссой (48 бит). (исходники погибли вместе с винтом в 1997)
Там почти все функции сводились к итерационно вычисляемым рядам. приведение к FPGA должно прокатывать.
Junior
Статус: Не в сети Регистрация: 13.02.2006 Откуда: Воронеж
basileus будьте любезны, подробнее. Вы предлагаете мантиссу внести в показатель экспоненты ? У меня и так плавающая запятая, так что с экспонентами мне, все равно, приходится оперировать.
Прошу изложить вашу мысль более подробно, возможно я вас не понял.
Junior
Статус: Не в сети Регистрация: 01.04.2004 Откуда: Питер
Z=x/y=e(log(x)-log(y)); математика, средняя школа.
(ну и, естественно, десятичный или двоичный логарифм тоже проходят)
http://ru.wikipedia.org/wiki/CORDIC -даст отправную точку для ваших поисков.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения