ngscopeclient / scopehal

Test and measurement hardware abstraction library and protocol decodes. This is the library only. Most users should use scopehal-apps.
BSD 3-Clause "New" or "Revised" License
207 stars 92 forks source link

Improve quality of S-parameter interpolation #504

Closed azonenberg closed 3 years ago

azonenberg commented 3 years ago

The current S-parameter interpolation code performs very poorly at predicting the phase when interpolating sparsely sampled data (e.g. 200 MHz between .s2p lines). This can lead to complete garbage when doing de-embedding or channel emulation.

azonenberg commented 3 years ago

Reference data for reproducing in the future.

microstrip-long-rogers.s2p is a Sonnet EM solver simulation of a ~8 inch long microstrip on RO4350B using default ABS point spacing from 0.01 to 40 GHz. The resulting s2p has 200 MHz sample spacing which leads to huge differences in phase from one line to the next.

microstrip-long-rogers-interpolated.s2p uses a Sonnet netlist project to resample the source data to 5 MHz per line. This looks much nicer when doing channel emulation.

microstrip-long-rogers.s2p.txt microstrip-long-rogers-interpolated.s2p.txt

azonenberg commented 3 years ago

See https://experts.syr.edu/en/publications/interpolation-and-extrapolation-of-s-parameter-data-of-a-microwav for possible algorithm.