Fast square-root extractor |
Fast square-root extractor |
We want to get rid of the carry propagation thanks to the use of the "BS" notation, the same "head" and "tail" cells and an architecture similar to the fast division. We bump into three difficulties when trying to use the fast divider for extraction of square roots. |
Square root converter |
The first difficulty is the root feedback. Like the division circuit, the extractor supplies a partial root Qj
in "BS" notation ( '0', '1' and '-1'
). On the other hand, the "head" and "tail" cell of the divider only accepts a partial root
in conventional binary representation ( '0' and '1' ). A
subtractor could be used to convert each Qj from "BS" to conventional, but that would be both
slow and expensive. The converter below use a 4-input, 2-output "trc" cell, derived from the "BK" cell and takes advantage of the delayed inputs. |
Square root conversion cell |
Check whether you are acquainted with the logic of the "trc" cell, which convert "on the fly"
from "BS" notation into standard binary notation.
|
Carry-propagation free square root extractor |
The fast square-root extractor makes use of the same cell as the fast divider to execute at each step one of the following arithmetic operations:
The second difficulty with respect to division lies in the subtraction of 22j-1 whenever qj =
'-1' or qj = '1' . Those cases are detected
by an "or" gate the output of which is connected to a negative input of the least significant "tail" cell of each row. |
Each "head" cell selects the value of one digit qj thanks to the sign of an estimate ![]() The third and last difficulty is lying in the range. Indeed each Qj must start with a "1" in the most significant position (implicit). This condition is fulfilled if the two most significant bits of the radicand A are not both zero. In other word, A must be "normalized". This "1" is subtracted once from A in the first row thanks to a negative "head" input. |
Divider and square root extractor |
The same circuit can execute either the division or the square root extraction thanks to multiplexers "2 Þ1" inserted into the inputs of some "tail" cells. The arrow ![]() |