prom 0 20 марта, 2005 Опубликовано 20 марта, 2005 · Жалоба 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: ). Вообще читал алгоритмы деления и удивлялся - все сводится к умножению и вычитанию - откуда такие дикие размеры. В моей задаче скорость деления вообще не критична (хоть 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-ми битные делители. Поправьте, коли не так... Короче продолжаем дебаты ))) Всем спс за внимание Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться