47 lines
2.1 KiB
Plaintext
47 lines
2.1 KiB
Plaintext
|
|
Module 'divSqrtRecFN_small' computes a division or square root for standard
|
|
floating-point in recoded form, at the rate of one cycle per significand
|
|
bit.
|
|
|
|
------------------------------------------------------------------------------
|
|
Function interface
|
|
|
|
Module 'divSqrtRecFN_small' performs only one division or square root at a
|
|
time, except that the last cycle of the previous operation can overlap with
|
|
the first cycle of the next one. A new operation can be started in any
|
|
clock cycle for which the output 'inReady' is true. An operation is started
|
|
in any clock cycle for which 'inValid && inReady' is true. The operation
|
|
will be a division if 'sqrtOp' is false and a square root if 'sqrtOp' is
|
|
true.
|
|
|
|
When a division is started, the values of inputs 'a', 'b', and
|
|
'roundingMode' in the same clock cycle are interpreted as the dividend,
|
|
divisor, and rounding mode, respectively. (The division is thus 'a'/'b'.)
|
|
For a square root, 'a' provides the function argument, and 'roundingMode'
|
|
is again the rounding mode. Arguments 'a' and 'b' are supplied in recoded
|
|
form, which is documented elsewhere.
|
|
|
|
Input 'detectTininess' specifies whether tininess is to be detected before
|
|
or after rounding. This input must be held constant while an operation
|
|
is being computed. (Usually 'detectTininess' is permanently tied true or
|
|
false.)
|
|
|
|
In each clock cycle, input 'inValid' is expected to be stable very early
|
|
in the cycle. When 'inValid' is asserted, all other inputs are expected to
|
|
be stable very early in the cycle as well. Once an operation has started,
|
|
inputs other than 'detectTininess' do not need to be held constant while the
|
|
operation is being computed.
|
|
|
|
When a division result is ready, 'outValid_div' is true, and when a square
|
|
root result is ready, 'outValid_sqrt' is true. In either case, 'out' is
|
|
the function result in recoded form (same as the 'a' and 'b' inputs), and
|
|
'exceptionFlags' is a bit vector of the exception flags, with this format:
|
|
|
|
{ invalid, infinity, overflow, underflow, inexact }
|
|
|
|
(The "infinity" exception is also known as "divide-by-zero".)
|
|
|
|
Outputs 'out' and 'exceptionFlags' are expected to be stable only late in a
|
|
clock cycle.
|
|
|