RF Complex Add (A+B)
Per-sample complex adder for two I/Q baseband streams. Adds the two complex inputs component-wise (Y = A + B) with one guard bit of growth. Typical use: signal combining / summing junction inside a feedback loop or a beam-former.
Introduction
The Complex Add block sums two complex baseband samples per clock:
OUT_I[n] = A_I[n] + B_I[n]
OUT_Q[n] = A_Q[n] + B_Q[n]
Equivalently, with A = A_I + j*A_Q and B = B_I + j*B_Q,
OUT = A + B
Both inputs are treated as signed two’s complement. The output is one
bit wider than the inputs (InputSize + 1) so the sum never overflows.
Pin Description
Properties
Bit width of each I/Q sample (signed). Output is InputSize+1.
Bit width of each signed I / Q input sample. Range 4 to 32, default 16. The output width isInputSize + 1.
Default: 16
Options: 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
Max = InputSize+1 (full precision, holds the carry). Same as input = InputSize (no growth along a chain; the result is SATURATED if it exceeds the input range).
Default: Max (In+1)
Options: Max (In+1) Same as input
Usage
Bit widths
Data is signed two’s complement.
A_I,A_Q,B_I,B_Q: signedInputSizebits.OUT_I,OUT_Q: signedInputSize + 1bits.
The extra output bit holds the carry of the worst-case sum
(+full_scale + full_scale), so the result is always exact. Truncate or
round downstream if you need to return to InputSize bits.
Latency and throughput
#pragma HLS PIPELINE II=1: one sample pair per clock.- 1-clock latency.
- All data ports use the
ap_noneinterface (no ready/valid handshake); the core is free-running (ap_ctrl_none).
Reset
RESET is the HLS synchronous reset (ap_rst).
Typical applications
- Summing junction for combining two baseband paths (e.g. adding a correction / feedback term to a signal).
- Beam-forming : coherent sum of two complex channels.
- Complex accumulate stage when paired with a register / delay.
Resources & Timing
-
Latency: 1 clock cycle
-
Throughput: 1 sample per clock (II=1)
No multipliers or DSPs: two adders only. Implemented with Vitis HLS. Free-running core (ap_ctrl_none), no handshake logic.