Closing the gap between software-defined radio hardware and instrument-grade measurement.
Closing the gap between software-defined radio hardware and instrument-grade measurement.
Engineers building monitoring, signals intelligence and automated test systems choose between two classes of receiver: software-defined radio hardware, which is programmable to the sample and carries no published amplitude bound, and conventional instruments, which are calibrated and specified but expose neither their samples nor their processing. This paper sets out what separates a measurement from a reading, derives six requirements a programmable instrument has to meet, works through them against the published figures of one real-time analyzer, and shows that analyzer serving an open GNU Radio flowgraph with its calibration applied beneath the driver.
RF and systems engineers building on software-defined radio hardware who need results that hold up in review. Test engineers automating measurement. Integrators evaluating whether an instrument can be built into their own product.
An engineer asked to build a spectrum monitoring system, a survey rig or an automated test sequence has two places to start, and each lacks something the other has.
Software-defined radio hardware is inexpensive, programmable to the sample, and surrounded by a large open ecosystem. What it does not carry is a calibration certificate: its absolute amplitude accuracy is unstated, its gain stages drift with temperature, its phase noise is unspecified, and its image and IF rejection depend on a quadrature balance no datasheet characterizes. It returns a number without a bound on that number.
A conventional instrument is calibrated, specified and traceable, and its numbers hold up in review. What it does not provide is access: the processing is fixed, the measurement set is often licensed function by function, the command vocabulary changes between models, and an application that needs something the vendor did not anticipate has no route to the samples.
The open hardware can be calibrated by its user. Done to a traceable standard, that means a traceable source, a calibrated attenuator, a stable thermal environment, characterization across every frequency and gain state in use, and a repeat per unit and at intervals. The result is a correction table rather than a specification, and it carries no stated uncertainty unless the user derives one.
Three things separate an instrument result from a number on a screen, and none of them is a performance figure.
The instrument this paper works through, named in section 6, states its specifications after ten minutes of warm-up at 25 °C with spur rejection standard, and quotes amplitude accuracy as ±2.0 dB to 9.5 GHz and ±3.0 dB above. Those figures are representative of a field instrument, and they are bounded and conditioned. An uncalibrated receiver does not have a worse number; it has no published number.
The frequency reference is the simplest illustration. A fractional error produces an absolute error that scales with the carrier:
where
The standard oscillator is specified below 1 ppm, and so is the option 01 oven-controlled oscillator: 1 kHz of error at 1 GHz, invisible in most work, and 40 kHz at 40 GHz, which is not. What the OCXO adds is stability, under 0.15 ppm over temperature and under 1 ppm a year, which holds a correction once it is made. An accuracy of 0.15 ppm, 6 kHz at 40 GHz, is reached by locking the instrument to an external 10 MHz reference at its reference input or, on the IP68 tablet and the modules, to the option 06 GNSS-disciplined reference clock. Specify the reference for the top of the band, not the bottom.
Every receiving instrument has a line between hardware the user cannot change and processing that could in principle be rewritten. Over the last thirty years that line has moved toward the antenna, and more of what lies behind it has become the user's rather than the vendor's. Figure 1 draws it.
Figure 1 is a scoring device: ask where an instrument's boundary lies and whether the crossing is documented. Section 7 shows an instrument whose crossing is an open standard.
The conventional instrument does what it was designed to do: serve an operator making a bounded set of measurements on a bench. Three properties of that design limit it when it is asked to become part of a system.
The fourth property is the one that does not announce itself. A closed instrument answers the question asked of it and reports nothing about the questions it was not asked, and both kinds of result look the same. Asked for the level in a channel it returns a number; if a 2 microsecond transient fell inside the measurement window and the detector averaged across it, the number is low and nothing on the display says so. The reading is not flagged and not visibly wrong. It is the wrong quantity, reported with the same confidence as the right one.
A device is tested for spurious emissions and passes. Six months later a customer reports interference that the test should have caught. The test was run correctly, on a calibrated instrument, by someone competent, and it still missed the emission, because the detector integrated across a burst that was present for less than one percent of the dwell. On a closed instrument that failure cannot be found after the fact, because the samples that produced the number no longer exist. On an open one it is answered in an afternoon by reprocessing the record. The difference between the two is not accuracy; it is whether the measurement can be audited.
Figure 2 is the procurement argument: standardizing on one analysis engine across every form factor is what makes two numbers comparable.
Six requirements follow from sections 2 to 4, and each is checkable against any vendor's published data. Table 1 sets them out.
| # | Requirement | Why not something looser |
|---|---|---|
| R1 | Bounded amplitude accuracy under documented conditions | Without it the result cannot enter a test record. |
| R2 | Gap-free capture with a published probability of intercept | A detector cannot be better than the data feeding it. |
| R3 | Raw IQ, with published rate, depth and trigger behavior | The user's algorithm needs samples, not the vendor's trace. |
| R4 | One documented API across every form factor | Code validated on the bench must run in the field unchanged. |
| R5 | The measurement set included, not licensed piece by piece | Anything withheld is not scriptable, so it is not usable. |
| R6 | A frequency reference specified for the top of the band | Reference error scales with carrier frequency. |
Requirements are easier to agree with than to use, so run them against a job. A research group characterizing a wideband emitter across twenty units wants results that can go into a paper. R1 sets the floor: every amplitude needs a bound and a condition, so the reference plane, the warm-up and the temperature go into the method section or the numbers are decorative. R4 decides whether the work is feasible at all, since a routine revalidated per unit turns twenty instruments into twenty experiments. R5 decides the budget, because a measurement withheld behind a license on nineteen of the twenty is one the study cannot use.
R2 and R3 decide what the group can claim. If the emitter is continuous, the intercept guarantee never binds and a swept instrument would have served; that is the case where this paper argues against itself, and it is common in teaching. If the emitter is bursty, R2 sets the shortest event whose amplitude is defensible and R3 is what lets a reviewer ask for the raw samples, which is the request a reviewer makes of a result. The requirements do not change with the job; which of them binds does, and identifying the binding one is most of the work of specifying an instrument.
Sections 2 to 4 were about what to require, and nothing in them depends on who makes the instrument. This section asks whether a particular instrument meets the list. From here the paper works one example and shows its published numbers; the same six requirements can be run against any other.
A real-time analyzer built as a programmable platform, the Berkeley Nucleonics ICX-FieldHawk family, is designed against this list. The family comes in three enclosures, a handheld, an IP68 tablet (the ICX-FieldHawk-R) and a module presenting over USB or LAN, and the figures below are those published for the 9.5, 20 and 40 GHz models, which share one signal chain across the three enclosures. The 4.5, 6 and 9 GHz handhelds use a different chain, with a 16 ns sample period as standard, a 4,096-point transform and 50 MHz of analysis bandwidth (100 MHz with option 50), and are noted where their figures differ.
R1 and R6 are settled by section 2: amplitude accuracy is bounded and conditioned, and the frequency reference is specified with its accuracy, its stability and its external input, so it can be chosen for the top of the band rather than the bottom. The remaining four are worked below.
The engine transforms a continuous stream in an FPGA with no missing samples. Two published relations govern its timing. The frame rate is the reciprocal of the transform span:
where
At N = 32 with no decimation the transform spans 256 ns, so the engine produces 3,906,250 frames per second. At N = 2048 it spans 16.384 microseconds and produces 61,035. Both reproduce the published operating points exactly, and that agreement is the check on the relation.
The duration a signal must be present for full amplitude accuracy is:
where
The factor of two follows from the least favorable arrival. A burst beginning one sample before a transform boundary leaves that frame holding a single sample of it, reported low by 20 log10(N), or 66 dB at N = 2048, and detected all the same. Only a burst long enough to fill some later frame end to end is measured at its true amplitude, and the shortest burst for which that holds regardless of arrival phase is two frames long. The factor is the worst arrival phase rather than a safety margin, and an intercept figure quoted without it is the best case.
Detecting a pulse and measuring it are different claims. The published figure is the second, which is the one a specification can be written against, and Figure 3 draws why the two differ by one frame.
Figure 3 draws that argument. The two event markers read together: detection and measurement are different claims, and the gap between them is one frame wide.
Raw IQ is a first-class output. On the 9.5, 20 and 40 GHz models the sample rate reaches 125 MSPS with decimation from 1 to 4096 in powers of two, burst recording covers the full 100 MHz into a 128 Mbyte buffer, continuous recording covers 25 MHz, and external triggers are accepted up to 500 times per second. The 4.5, 6 and 9 GHz handhelds publish 62.5 MSPS (125 MSPS with option 50), decimation to 2048 and 12.5 MHz of continuous recording. The data rate follows from the sample rate and the format:
where
At 125 MSPS with 16-bit components that is 500 Mbyte per second, so the 128 Mbyte buffer holds about 0.26 seconds of gap-free 100 MHz capture. With a 0.512 microsecond intercept, every event inside that quarter second lasting longer than half a microsecond was measured rather than glimpsed: about half a million resolvable intervals in one trigger, all of them reachable from the user's own code.
Figure 4 is why continuous recording is specified at 25 MHz rather than 100 MHz: sustained transfer to a host is a different constraint from filling a buffer, and the datasheet publishes the two separately. Decimation is the lever between them, trading bandwidth for record length at the point of capture. Figure 5 shows the raw output on the instrument itself.
Figure 5 is R3 on the instrument before any host is involved; the host flowgraph captures of section 7 are the other half of the claim.
This instrument does not stream 100 MHz to disk indefinitely. Continuous recording is published at 25 MHz, and an application that requires wideband recording for minutes at a time needs a recorder with a storage array behind it.
The ICX-FieldHawk host software is SpectraCore, and the published programming interfaces beneath it are C, C++, C#, Python, MATLAB, Qt and LabVIEW, with SCPI as standard, on Windows and Linux, for x64 and AArch64 hosts. The same interface serves the USB module, the LAN module, the handheld and the IP68 tablet, so a routine developed on the bench and the same routine in the field produce comparable numbers. Comparability comes from the shared software, not from the enclosure.
That also answers the licensing question. Channel power, occupied bandwidth, x dB bandwidth, ACPR, IM3, SEM, AM and FM demodulation, antenna factor, amplitude offset, signal track, peak table, record and playback, multiple unit display and amplitude correction all ship in SpectraCore, alongside the spectrum, real-time, power detection, phase noise and harmonics modes. Pulse detection (option 72) and digital demodulation (option 71) are the two options, ordered with the instrument. What matters for R5 is that nothing on the list is withheld behind a later license, so a routine written on one unit runs on every unit in the fleet.
Figure 6 is read against the open-flowgraph constellation of section 7. The instrument computes the summary itself, and it also exports the samples it computed it from. A closed instrument offers the first without the second, a difference that matters on the day the summary has to be checked.
Section 6 showed the instrument programmable through its own API. The evidence from outside the instrument is that the receiver presents itself to the open software-defined radio ecosystem as a standard device. The -SDR option, orderable on every current ICX model by appending -SDR to the part number, ships the instrument with a SoapySDR driver, a GNU Radio source block and example flowgraphs, and leaves every standard measurement function installed.
SoapySDR is a vendor-neutral hardware abstraction layer. An application written against it runs against any receiver that supplies a driver module, with no knowledge of the hardware underneath. That is how GNU Radio, SDR++ and a large body of open signal processing code reach hardware at all. The driver module for the ICX-FieldHawk family translates standard SoapySDR calls into the instrument's own interface, so the analyzer is discovered, tuned, configured and streamed like any other SoapySDR device. Figure 7 draws the stack.
Figure 7 looks like any other SoapySDR stack until the question is what reaches the first block of the flowgraph. An uncorrected receiver reports a fraction of full scale. Turning that into dBm needs a gain-state table the user builds and maintains for every gain setting and every frequency in use, and re-checks when it drifts. Here that table installs with the driver, so a level read inside a flowgraph carries the same ±2.0 dB bound as a level read on the instrument's own display.
Table 2 lists three of the six signal chains documented in the SDR Integration Handbook, with the signal used in each case.
| Application | Signal used | Result |
|---|---|---|
| 16-QAM | 1 GHz at −80 dBm, 500 kSym/s, matched filtering with timing and carrier recovery | constellation, IQ and spectrum |
| WLAN 802.11a OFDM | 2.412 GHz; synchronization, equalization and MAC frame decode | constellation, and frames exported to Wireshark or a PCAP file |
| ADS-B 1090ES | live air traffic | ICAO address, callsign, altitude, speed, heading and position on a map |
| Source: the ICX -SDR option datasheet and the SDR Integration Handbook, berkeleynucleonics.com. | ||
The Wi-Fi case goes further, because it ends in a file another tool can open. The receive chain performs packet detection, synchronization, transform, channel equalization and MAC decoding, and writes frames out for Wireshark. Every block in that chain downstream of the source is open-source and replaceable: the instrument supplies calibrated samples and takes no further part. Figure 9 is the result window.
Figure 8 and Figure 9 share one detail. One host reports 976,563 samples per second and the other 3,906,250, which are 125 MSPS divided by 128 and by 32: the powers-of-two decimation of R3, selected from a flowgraph and reported back by it. A protocol decoder, a classifier or a logging path is another block in the same graph, and the amplitudes underneath stay traceable.
The documented host environment for SoapySDR service is Ubuntu 22.04 or later on x86_64 with GNU Radio 3.9 or later. The instrument's own API additionally supports C, C++, C#, Python, MATLAB, Qt and LabVIEW on Windows and Linux. An environment outside the documented one should be confirmed with Berkeley Nucleonics before a project is planned around it.
One case decides some purchases the other way. Where the work is algorithm development in which absolute level is never reported, the band is narrow and fixed, and the unit count is high enough that price dominates, bare software-defined radio hardware is the right choice and the six requirements above do not bind. The calibration, the specified conditions and the traceable amplitude cost money, and they are needed when a reported number has to carry a bound.
None of the following depends on which analyzer is used, and all of it determines whether the result holds up.
Universities and research groups buy this arrangement to produce results that can go into a paper rather than a demonstration, and what they report back concerns neither throughput nor block count. It is that the amplitude axis survives the boundary: a level read inside a flowgraph is the level the instrument would have displayed, so a plot produced by student code carries the same bound as one produced by the vendor's software. That is a narrower claim than the section 7 demonstrations make, and it is the one that decides whether a result is publishable.
Table 3 collects the governing relations and published values with their conditions.
| Quantity | Relation or value | Condition |
|---|---|---|
| Frame rate | 1 / (N × D × 8 ns) | 9.5, 20 and 40 GHz models; 3,906,250 /s at N = 32; 61,035 /s at N = 2048, D = 1 |
| 100 percent POI | 2 × N × D × 8 ns | full amplitude accuracy |
| Published operating points | 0.512 µs at N = 32; 32.768 µs at N = 2048 | D = 1 |
| Gap-free analysis bandwidth | 100 MHz | 9.5, 20 and 40 GHz models in every enclosure; 50 MHz standard and 100 MHz with option 50 on the 4.5, 6 and 9 GHz handhelds |
| IQ sample rate | up to 125 MSPS, decimation 1 to 4096 in powers of two | 9.5, 20 and 40 GHz models; 62.5 MSPS (125 with option 50) and decimation to 2048 on the 4.5, 6 and 9 GHz handhelds |
| Capture buffer | 128 Mbyte | about 0.26 s at 100 MHz, 16-bit components |
| Continuous recording | 25 MHz | sustained to host; 12.5 MHz on the 4.5, 6 and 9 GHz handhelds |
| Amplitude accuracy | ±2.0 dB to 9.5 GHz; ±3.0 dB above | 25 °C, 10 min warm-up, spur reject on |
| Reference | accuracy < 1 ppm, TCXO standard or OCXO option 01 | OCXO temperature stability < 0.15 ppm, aging < 1 ppm/year; external 10 MHz reference input |
Choosing a model. Build systems around the USB or LAN module and develop on it: one API serves every platform, so a routine validated on the module runs unchanged on a handheld or an IP68 tablet in the field. The current line has two frequency groups. The 4.5, 6 and 9 GHz handhelds (ICX-045, ICX-060 and ICX-090) ship with 50 MHz of analysis bandwidth and take 100 MHz as option 50, with a 16 ns sample period as standard. The 9.5, 20 and 40 GHz models (the ICX-095, ICX-200 and ICX-400 handhelds, the ICX-095R, ICX-200R and ICX-400R IP68 tablets, and the ICX-200U and ICX-400U modules) share the 100 MHz, 8 ns engine this paper worked, and every number in it applies to them. A requirement written against a number in this paper therefore falls back to one of those models; a requirement written for the lower group is checked against that group's own table. The -SDR option can be added to any of them.
| Symbol | Meaning | Units |
|---|---|---|
| fc | Carrier frequency | Hz |
| fs | Complex sample rate | samples per second |
| δ | Fractional reference error | parts per million |
| N | Transform size | points |
| D | Decimation factor | dimensionless |
| Rf | Frame rate | frames per second |
| r, b | Data rate; bits per component | bytes per second; bits |
| 8 ns | Engine sample period, 9.5, 20 and 40 GHz models | s |
If you are weighing an open instrument against building on bare software-defined radio hardware, our application engineers would be glad to talk the measurement through, including the cases where the bare hardware is the right answer.