Есть довольно интересный метод решения задачи:
double dabble.
Двоичный код мы превращаем в двоично-десятичный: каждая цифра числа представлена в виде 4х битов. Способ решения может показаться не самым оптимальным, но определенно является оригинальным и к тому же не требует от железа использования операции деления и использования функции остатка от деления. В самой статье есть код и на VHDL и на C.