В настоящее время я создаю 16-битный ALU с использованием Logisim (т.е. только логические вентили) и застрял в процессе деления. В настоящее время я просто использую простой стандартный «цикл алгоритма деления» (как показано ниже):
- Чтение входных значений;
- Сравните входные значения. Дождитесь завершения процесса сравнения;
- Если A‹B, перейдите к шагу 10. Если AB, перейдите к следующему шагу;
- Вычесть Б из А;
- Дождитесь завершения процесса вычитания;
- Добавьте один для подсчета;
- Дождитесь завершения процесса подсчета;
- Записать значение из процесса вычитания на вход;
- Перейти к шагу 1;
- Ответ: подсчет остатка A
Это, однако, занимает очень много времени для процессов с большими ответами (повторение цикла из 300 тиков 65 000 раз не весело). Мне просто интересно, есть ли аналогичные более быстрые алгоритмы (использующие исключительно сложение и/или вычитание и/или умножение и любую логическую логику), которые можно было бы реализовать с использованием логических вентилей. Будем признательны за любую помощь или идеи! Фрейзер