Фигней оказался этот Cordic - так как результат 1/U - очень маленькое число - пришлось увеличить разрядность после точки - у меня все данные только с фиксированной точкой. В итоге сгенерился настолько большой VHDL код, что компилятор сказал, что это в FPGA не поместится.
В итоге я плюнул на все это и запрограммировал предложеный Самураем алгоритм Ньютона

.
Так как диапазон результатов - от 1/4000 до 1/500, то проблем с выбором первого числа не было - взял наименьшее, что может получиться. В итоге получилась компактная и красивая реализация для FPGA с 2мя умножителями. При точности 1/2^21 результат 1/500 получился за 10 итераций. 1/3000 - за 4. У Cordica задержки получались от 30 циклов при меньшей точности.
Сообщение отредактировал syoma - Aug 5 2007, 08:43