Аппаратное обеспечение для "A div B" с фиксированной точкой A и B

Мне нужен способ вычислить, сколько раз число с фиксированной точкой B содержится в числе с фиксированной точкой A. Что-то вроде целочисленного деления, но для нецелых операндов. Мне нужно спроектировать аппаратный блок для этой операции. Мое первое предположение - использовать деление как сдвиг, вычитание и остановку, когда я достигну дробной части, но, возможно, вы знаете лучшие способы ее найти

1 ответ

Если я вас правильно понимаю, вы хотите целую часть дробного деления, т.е.

C = floor(A / B)

Теперь дробное деление ничем не отличается от целочисленного деления, кроме корректировки десятичной точки, если вы представляете A = a * 2^-n а также B = b * 2^-m ты получаешь

C = floor(A / B) = floor((a / b) * 2^(-n-m))

Таким образом, вы можете использовать алгоритм деления для целых чисел (который по существу сдвиг и вычитание) без изменений и игнорировать (округлить вниз) наименее значимый n+m биты или, что более эффективно, просто прекратите итерацию, как только вы достигнете десятичной точки.

Другие вопросы по тегам