FLOATING POINT - RECIPROCAL (1/X)
Computes the reciprocal (1/x) of IEEE-754 floating-point numbers with configurable DSP usage. Supports both single-precision (32-bit) and double-precision (64-bit) formats. Built on Xilinx Floating-Point IP core with blocking flow control and 30-cycle latency.
Introduction
The block computes the reciprocal of IEEE-754 floating-point inputs.
On every rising edge of CLK, if CE = 1, the reciprocal unit computes
$$ \mathrm{F}(n) = \frac{1}{\mathrm{A}(n)}, $$
where input A and output F follow IEEE-754 single or double
precision format.
The reciprocal is implemented with the Xilinx floating_point IP core configured for Reciprocal operation using Newton-Raphson iteration with blocking flow control, fixed 30-cycle latency, and configurable DSP primitive usage.
Pin Description
CE = 1 and READY_OUT = 1.
CE = 1, input A is accepted and reciprocal computation begins. Can be tied to ‘1’ for continuous operation.
DV = 1.
Result = 1/A.
F contains a valid reciprocal.
Asserts 30 clock cycles after corresponding CE = 1.
Properties
Select between single precision 32 bit and double precision 64 bit
Floating-point precision for both input and output:
- Single → 32-bit (8-bit exponent, 24-bit mantissa including implicit bit)
- Double → 64-bit (11-bit exponent, 53-bit mantissa including implicit bit)
The operation preserves the precision format end-to-end.
Default: Single
Options: Single Double
DSP Usage. Single precision: No [0], Full[8]. Double precision: No[0], Full[14]
DSP primitive allocation for Newton-Raphson iterations:
- No_Usage → LUT-only implementation (0 DSPs, lower speed)
- Full_Usage → DSP-optimized (8/14 DSPs for Single/Double, recommended, higher speed)
Full usage provides significantly better timing performance.
Default: Full_Usage
Options: No_Usage Full_Usage
Functional description
The component computes the multiplicative inverse:
$$ F = \frac{1}{A} $$
The implementation uses Newton-Raphson iteration to refine an initial approximation:
$$ x_{n+1} = x_n (2 - A \cdot x_n) $$
converging to $1/A$. This is often faster than full division when the numerator is constant (1).
Special cases
IEEE-754 special value handling:
1/1 = 11/0 = ±Inf(division by zero, sign preserved)1/(±Inf) = ±01/NaN = NaN(NaN propagation)
DSP Usage
The DSP Usage property controls Newton-Raphson iteration resources:
Single precision:
- No_Usage → Pure LUT implementation (0 DSPs, lower speed)
- Full_Usage → DSP-optimized (8 DSPs, higher speed)
Double precision:
- No_Usage → Pure LUT implementation (0 DSPs, lower speed)
- Full_Usage → DSP-optimized (14 DSPs, higher speed)
Full DSP usage significantly improves timing at the cost of DSP48 primitives.
Timing
The IP has a fixed 30-cycle pipeline latency:
| Clock cycle | Event |
|---|---|
| 0 | Input A presented with CE = 1 |
| 30 | Output F valid with DV = 1 |
The READY_IN/READY_OUT handshake signals enable backpressure control for streaming applications.
Typical use cases
- Normalization (x / max = x × (1/max))
- Inverse scaling operations
- Precomputing division constants
- Iterative algorithms requiring repeated division by same value
Performance note
For general A/B division, use the dedicated division block. Use reciprocal when:
- Dividing many values by the same constant (compute 1/constant once)
- Implementing
x/yasx × (1/y)in multiply-heavy pipelines