Capturing a real radio environment so a device under test can face it again, identically, as many times as the investigation takes.
Some receiver failures only happen in the real world, and the real world is a poor test fixture: it does not repeat, cannot be scheduled, and will not hold still while one variable changes. Record and playback resolves that by turning the environment into a file. This paper sets out the complex baseband representation, the error terms that limit fidelity in a two-instrument capture-and-replay chain, the storage arithmetic that governs how long a scene can be, what synchronizing two generator channels actually requires, and how to prove a replay is faithful.
Receiver and system test engineers reproducing field failures on a bench. GNSS, automotive and cellular validation teams building repeatable scenario libraries. EW and radar warning receiver engineers who need range environments in the laboratory.
A receiver bug that appears once an hour at one intersection cannot be bisected against a radio environment that never recurs. The scene at any antenna is the superposition of every emitter in view, each with its own traffic, power control and mobility, and two successive observations of the same place differ in interferer timing, channel occupancy and fading state.
The obvious alternative fails the other way. A standards-compliant generated waveform repeats perfectly and contains nothing: no co-channel clutter, no adjacent-channel leakage, no unplanned transients. Receivers pass synthetic tests and fail in the field precisely because the field contains what the synthesis omitted.
Record and playback is the one method that is simultaneously real and repeatable at a chosen point in space. Capture the environment once as complex samples; replay it on the bench indefinitely, identically, on demand. The recording becomes a portable, versionable test asset: a scene that can be shared between teams, replayed against every firmware candidate, and attached to a bug report as the reproduction recipe.
The chain in this paper is deliberately split. A calibrated analyzer digitizes the air interface to a file; a separate vector signal generator modulates that file back onto a carrier. Neither instrument is the other, and their error terms do not combine the way a single-box datasheet implies. This paper keeps the two halves apart throughout, and names an instrument for either half only once the fidelity budget has said what each half has to do.
A real band-limited signal at carrier frequency fc can be written as an in-phase term on a cosine and a quadrature term on a negative sine. Those two real streams, taken together, carry both the amplitude and the phase of the modulation, and the generator reverses the operation exactly:
A real signal has a conjugate-symmetric spectrum, so each real sample carries one degree of freedom and unambiguous representation up to bandwidth B needs a sample rate of twice B. A complex sample carries two degrees of freedom, and a complex sequence at rate fs represents a full span of width fs about the tuned center without any symmetry requirement. So bandwidth B needs complex sample rate B rather than 2B. No information is gained: B complex samples per second is 2B real numbers per second either way.
Usable bandwidth is always narrower than sample rate, because the anti-alias and decimation filters need a transition band. A ratio around 0.8 is typical, which is why quoting a file's sample rate as its bandwidth is a standard and avoidable error.
Figure 1 is that pair on a real instrument: the two traces are the same signal a quarter cycle apart, and the rate field underneath them is the ratio this section just derived, shown on a screen as a setting rather than in an equation.
Every impairment appears twice in a two-instrument chain, once in the analyzer and once in the generator, and where the two are uncorrelated they combine as a root sum of squares in error-vector terms. Images and spurs at related offsets do not obey that and can add coherently at the worst frequency in the scene. The two ends are not symmetric, and which end you spend money on follows from that.
A replay can never be cleaner than its capture. The analyzer's noise, spurs, imbalance and phase noise are burned into the file, and to the generator they are indistinguishable from signal, so they are reproduced faithfully. The capture instrument sets the ceiling on scene fidelity. The generator only determines how little is lost from it.
Ideal quantization of a full-scale sine into b bits gives a signal to noise ratio of 6.02b plus 1.76 decibels. Real converters fall short, and the honest figure is the effective number of bits derived from measured signal to noise and distortion:
Two consequences follow immediately. Headroom costs bits: every decibel of unused input range below full scale is a decibel of signal to noise forfeited, so reference level at capture is a fidelity decision rather than a convenience, and a multi-emitter scene with a high peak to average ratio forces that headroom on you. And decimation buys it back, at ten times the log of the ratio between the original and final bandwidths: recording a 5 MHz emission out of a 100 MHz span is a factor of twenty, or 13.0 dB, which is more than two bits returned for the cost of a filter setting.
Gain imbalance and quadrature phase error between the I and Q paths produce an image of the signal mirrored about the center frequency, with a rejection ratio of approximately:
Table 1 shows how little imbalance it takes to cap image rejection.
| Gain imbalance | Phase error | Image rejection |
|---|---|---|
| 0.05 dB | 0.5 degrees | about 45.6 dB |
| 0.1 dB | 1 degree | about 39.6 dB |
| 0.2 dB | 2 degrees | about 33.6 dB |
| 0.5 dB | 5 degrees | about 25.6 dB |
| 1.0 dB | 10 degrees | about 19.5 dB |
Figure 2 plots the relation across the range that matters in practice, and the reading to take is the left-hand end. Each curve flattens onto a ceiling set by its gain imbalance alone, 50.8 dB at 0.05 dB and 24.3 dB at 1.0 dB, which no amount of phase correction gets past. That is why correcting one term and not the other buys so little.
Spectral asymmetry about a carrier is a genuine modulation feature: it is how single sideband differs from double, and it appears in asymmetric channel allocations. An imbalance image is spectral asymmetry manufactured by the instrument. In a replayed scene, the image of a strong emitter can land on top of a weak wanted signal mirrored about the center, and nothing downstream can tell the two apart. That is a corruption unique to record and playback, and it is worth checking for deliberately.
A reference offset of x parts per million displaces the carrier by x times ten to the minus six times the carrier frequency, and it does so twice, in different ways. An offset at capture is frozen into the file as an apparent frequency error common to every emitter in the scene. An offset at replay shifts the reconstructed scene. Locking both instruments to a shared 10 MHz reference removes the second and can never remove the first. The same offset also stretches time: one part per million lengthens a sixty second recording by sixty microseconds and scales every modulation rate by the same factor.
Figure 3 is the distinction a purchase specification has to force, and section 6 turns it into a numbered requirement. The arithmetic behind both bars is the same one line:
Table 2 turns that rate into scene duration.
| Usable bandwidth | Sample rate | Rate | One minute | One hour |
|---|---|---|---|---|
| 1 MHz | 1.25 MSPS | 5 MB/s | 300 MB | 18 GB |
| 10 MHz | 12.5 MSPS | 50 MB/s | 3 GB | 180 GB |
| 25 MHz | 31.25 MSPS | 125 MB/s | 7.5 GB | 450 GB |
| 100 MHz | 125 MSPS | 500 MB/s | 30 GB | 1.8 TB |
This is why an honest datasheet quotes two different bandwidths. Burst capture writes into instrument memory at fabric speed and is bounded by capacity: the ICX-FieldHawk family publishes a 128 Mbyte buffer, which at 100 MHz and 16-bit components is about 0.26 seconds. Continuous capture has to sustain the slowest link in the chain indefinitely, and is published at 25 MHz. Filling a buffer and sustaining a transfer are different constraints.
Three levers manage the arithmetic. Decimate at capture and record the emission's bandwidth rather than the survey's, which is where the 13 dB of section 3 is actually spent. Trigger rather than stream, with enough pre-trigger depth to hold the leading edge, since the turn-on transient is exactly where emitter fingerprints live. Choose the format deliberately: 32-bit float doubles the file for no information gained over 16-bit integers, and lossless compression on near-noise IQ achieves very little.
Lossy compression is available and should be ruled out explicitly for anything that will be replayed or used to train a classifier. It changes the data in precisely the dimensions that matter, and it does so invisibly.
Multi-antenna receivers, wanted-plus-interferer scenarios and receiver blocking tests all need two generator outputs at once. The word synchronized covers three quite different requirements, and conflating them is the usual source of disappointment.
Table 3 separates the three rungs, in ascending cost and ascending capability.
| Rung | What it means | What it needs | Sufficient for |
|---|---|---|---|
| Baseband synchronous | no drift in rate between channels | one shared 10 MHz reference | nothing on its own |
| Time aligned | first sample out together, to the sample | a common trigger with deterministic latency, plus measured and nulled skew | throughput and interferer scenarios |
| Phase coherent | known and stable carrier phase between channels | shared or phase-locked local oscillators, phase-stable cabling, recalibration after every retune | angle of arrival and beamforming |
Figure 4 draws the arrangement. The reference and the trigger appear as separate lines because they solve separate problems, and a setup with one and not the other fails in a way that looks like a fault in the device under test.
Figure 5 is worth holding against the fidelity budget above. Each of those panels is a different projection of one array of complex samples, so an impairment introduced at capture appears in all four and can be removed from none. That is the asymmetry of section 3, seen from the operator's side of the glass.
The wanted-plus-interferer case is worth naming because it solves a problem a single channel cannot. In a single recorded scene the ratio between the wanted signal and the interference is frozen at capture. Splitting them across two channels lets the operator sweep interferer power while the wanted carrier stays put, which is exactly what a blocking or desensitization test requires. Using a recorded real aggressor rather than a clean modulated blocker also reproduces mechanisms, reciprocal mixing, converter overload and gain-control pumping, that an idealized blocker understates.
Sections 3 to 5 were a fidelity budget. Turned into requirements, they are what to put on a purchase specification for a record and playback bench, and Table 4 states each one with the term it comes from. Note which half of the chain each requirement lands on: that split is the whole reason this paper keeps the two instruments apart. R2, R3 and R4 are the ones a datasheet rarely answers directly, which is why section 8 measures them rather than reading them.
| # | Requirement | Falls on | Derived from |
|---|---|---|---|
| R1 | Complex sample rate at least 1.25 times the scene bandwidth | Both | Complex Nyquist, §2 |
| R2 | Effective number of bits stated as SINAD at the record bandwidth, not as converter bit depth | Capture | §3, quantization |
| R3 | Image rejection stated, or gain and quadrature imbalance stated so it can be computed | Both, worse end dominates | §3, Eq. 3 |
| R4 | Phase noise at the offsets the modulation occupies, and a reference input | Both | §3, reference offset |
| R5 | Sustained record depth at the scene bandwidth, distinguished from burst depth | Capture | §4 |
| R6 | Common reference and a hardware trigger, with carrier phase stated separately | Playback | §5, Table 3 |
A requirements table nobody scores is a rubric, not an argument, so here is the capture half against the three of its own that a datasheet can answer. The ICX-FieldHawk family, driven by SpectraCore or by the published interfaces beneath it, publishes IQ sample rates to 125 MSPS with decimation from 1 to 4096, which satisfies R1 for any scene up to 100 MHz with the 1.25 factor in hand and gives the R5 lever directly. R5 itself is published as two separate figures rather than one flattering figure, which is the behavior the requirement was written to detect: burst recording to 100 MHz into 128 Mbyte, and continuous recording to a host at 25 MHz. R4 is answered in part: the reference input and the reference specification are published, TCXO below 1 ppm with an OCXO option below 0.15 ppm, and phase noise is published at a 10 kHz offset. One offset is not the offsets the modulation occupies, so R4 is a partial pass on any datasheet in this class, this one included.
Two of the six cannot be scored from any datasheet, ours or anyone else's, and saying so is the point of the exercise. R2 is not published as SINAD at the record bandwidth by any vendor in this class, so the effective bits behind a capture are a measurement the buyer has to make. R3 is not published as image rejection either, so the gain and quadrature imbalance that set it have to be measured with a single-sideband tone and Equation 3. Both take an afternoon on a bench that already exists, and both are worth more than a week of datasheet comparison, because they are the two terms that section 3 showed cannot be corrected out afterwards.
Take a single job and run it down the table. A cellular device fails intermittently in one city and nowhere else, and the team cannot reproduce it. The scene is the 2.4 GHz band at a specific junction: an access point, a microwave oven, several handsets and a Bluetooth headset, all of them moving. R1 fixes the sample rate at 1.25 times the 83.5 MHz that holds the whole band, so 104 MSPS. Decimation runs in powers of two, so 104 is not a rate you can select: the choice is 125 MSPS or 62.5, and 62.5 carries only 50 MHz usable, so the whole band forces the full 125 and the file is a fifth larger than R1 alone implies. That is the ordinary way a requirement meets hardware. R5 then fixes the duration: at 500 MB/s a one-minute scene is 30 Gbyte, which the burst buffer cannot hold and the sustained path cannot reach at that bandwidth, so either the scene is decimated to the 25 MHz that actually carries the suspects, which is exactly the sustained figure R5 publishes and therefore buys unlimited duration, or it is cut to the seconds around the failure that the burst buffer holds. That is a decision about the experiment, forced by the R5 row of Table 4, and it is better made before the site visit than after. Decimation has one exception and this scene contains it: the headset hops across the whole 79 MHz, so a 25 MHz window keeps the access point and loses the hopper. For a frequency-hopping emitter the emission bandwidth is the survey bandwidth, and the only lever left is duration.
R6 decides the rest. Reproducing the failure only proves it reproduces; finding the threshold means sweeping the interferer while the wanted signal stays put, which a single recorded scene cannot do because the ratio was frozen at capture. Two channels, a common reference and a hardware trigger turn the recording into an experiment with a variable in it. The scene answers what happened; the second channel answers how much margin was missing. R2 and R3 apply to both, because an image or a lifted noise floor introduced at capture will be replayed as though the city had produced it.
Fidelity is demonstrated, not assumed. Close the loop: replay the file into the same analyzer under SpectraCore, capture it again, and compare against the original. Because the same instrument bounds both captures, this measures what the generation and recapture chain added, which is a slightly pessimistic bound on the generator alone and an honest one.
Every step above is arithmetic on a complex array, which is worth saying plainly because it decides who can do it. The ICX-FieldHawk presents itself through SoapySDR, the vendor-neutral hardware abstraction layer, so the capture side of this loop can be driven from GNU Radio or from any other SoapySDR application, with the instrument calibration already applied to the samples. The cross-correlation, the residual-offset estimator and the Welch comparison are then existing blocks rather than a development project, and the amplitude reference underneath the fidelity number remains traceable. This path is demonstrated rather than specified; see the verification note.
One requirement recurs often enough to be worth naming: two generators under a single control port rather than two separately addressable instruments. It sounds like a packaging preference and it is not. Two channels that must be commanded separately are two instruments with two time bases, and section 5 is the reason a buyer who has run this loop before asks for one port. The synchronization rung a test needs is decided at purchase, not at setup, and it is the hardest thing to add afterwards.
Table 5 is the block to lift into an evaluation matrix.
| Quantity | Relation or value | Condition |
|---|---|---|
| Complex sampling | fs ≥ B, not 2B | usable BW about 0.8 fs |
| Data rate | fs × 2 × b/8 | 500 MB/s at 125 MSPS, 16-bit |
| Effective bits | (SINAD − 1.76) / 6.02 | measured, not nominal |
| Image rejection | 4 / (ε2 + φ2) | about 39.6 dB at 0.1 dB and 1 degree |
| Reference offset | Δf = x × 10−6 × fc | also scales elapsed time |
| Reference stability | TCXO < 1 ppm; OCXO option 01 < 0.15 ppm | published as a frequency bound, not as holdover drift |
| Phase noise | −107.5 dBc/Hz (400); −101.6 (090) | 1 GHz carrier, 10 kHz offset; one offset does not answer R4, which asks for the offsets the modulation occupies |
| Burst capture | 128 Mbyte, about 0.26 s at 100 MHz | 16-bit components |
| Continuous capture | 25 MHz | sustained to host; the host and its storage have to keep up, so confirm the interface and the sustained write rate before relying on it |
| IQ sample rate | up to 125 MSPS, decimation 1 to 4096 | powers of two |
| Capture values from the ICX-FieldHawk datasheets. Vector signal generation is a separate Berkeley Nucleonics instrument and is not an ICX capability. | ||
| Symbol | Meaning | Units |
|---|---|---|
| fc, B | Center frequency, signal bandwidth | Hz |
| fs | Complex sample rate | samples per second |
| b | Bits per IQ component | bits |
| ε, φ | Gain imbalance, quadrature phase error | fraction, radians |
| IRR | Image rejection ratio | dB |
| SINAD, ENOB | Signal to noise and distortion; effective number of bits | dB, bits |
| R | Data rate | bytes per second |
If you are building a scenario library and want the fidelity budget worked against your own device under test, our application engineers would be glad to go through it with you, including the cases where a channel emulator rather than a replay is the right answer.
The following values in this paper are not yet confirmed against a published Berkeley Nucleonics datasheet and are marked verify in the text. They must be confirmed before this paper is released.