Replies: 3 comments 18 replies
-
|
Hi, thanks for using my addon, what do you mean plot impedance in time domain? Impedance is not changing over time, there are voltage and current captured in time domain and impedance is always calculated as U/I |
Beta Was this translation helpful? Give feedback.
-
|
@lowpon Just in case someone wants to post example code: Do you use openEMS with Python or Matlab? I have done TDR analysis using other EM tools (appnote) and can provide some basic hints: What I described above is based on reflected voltage for a single step, and things get complicated when you reach a time where multiple reflections between multiple discontinuities show up. But as you can see from the TDR appnote that I linked above, it is already quite useful. Getting true impedance over time (or distance) without that multi-reflection issue is more complicated. One solution that I use at work is the TDR testbench in Keysight ADS, which removes these multi-reflection artefacts. I don't know how to perform that task in openEMS. |
Beta Was this translation helpful? Give feedback.
-
TL;DR: You can calculate TDR responses from S-parameters using the powerful Python software library Using S-parameters for time-domain simulations like these is supported by almost all commercial and even some free RF circuit simulators. This is the main reason why I think using custom time-domain excitation within openEMS is usually unnecessary. I'd like to think of openEMS as a virtual network analyzer, once you've obtained the frequency-domain S-parameters, one can do nearly every kind of further analysis imaginable using standard RF circuit tools at its downstream (but do beware causality and passivity). Of course, trying to just openEMS as "just" a VNA can be inefficient - you're simulating in time domain and converting it to frequency domain before converting it to time domain again (with an appropriate simulation setup, one can avoid the extra work), but the advantage is that one can use tools one is already familiar with. By taking an Inverse Fourier Transform, it's possible to convert S11 measurements from a VNA to its equivalent time-domain response as measured by a TDR. Previously, this capability is often exclusive in expensive simulation packages or in the firmware of expensive VNAs. Now, with the power of scikit-rf, a free and open source Python software library for RF/microwave modeling and analysis, it's accessible to everyone with basic programming knowledge. Here's a demo from my recent experiment (this is only meant to be a quick example, the measurement is not fully calibrated and the parameters used for the calculations are not optimized, so please don't complain too much about the data). To evaluate the impedance discontinuity and signal integrity impact caused by a 1206 resistor footprint, I fabricated a test fixture shown in the picture below. It's a 4-layer circuit board with three solid ground planes. Two through-hole SMA connectors are located on both ends, with a 50-ohm microstrip in between. At the center is the Device Under Test, a 0-ohm, 1206 resistor. Also, to compensate for the excess capacitance caused by the large resistor pads, the ground plane under the resistor body is partially removed. After I've received the board, I measured its S11 from 10 MHz to 4 GHz using a Vector Network Analyzer. It shows the return loss is good up to 1.2 GHz. But is it the full picture? Using the scikit-rf software library and the following Python code, we can transform the data from frequency domain to time domain. This calculated TDR plot immediately reveals that the test fixture was poorly designed with non-ideal SMA-to-microstrip transitions. When the signal hits the first SMA connector, the instantaneous impedance drops to 45 ohms due to a capacitive discontinuity, then it hits the 50-ohm trace, hits the device-under-test, hits the 50-ohm trace again, and finally hits the second connector. In fact, after de-embedding, it turned out that the resistor footprint only has 20 dB return loss at 800 MHz, not 1.2 GHz. The bad SMA connector footprints and the resistor footprint actually compensated each other. It would be difficult to spot this problem using the Smith Chart, on the other hand, it's obvious from the computed TDR response. You can find more information from scikit-rf's documentation, Time domain reflectometry, measurement vs simulation. scikit-rf also supports time-gating, it's possible to use time-gating as a simple way to de-embed the connectors from the DUT by deleting the reflections from the time domain, see Time Domain and Gating. It's also worth pointing out that in principle, all calibration and de-embedding techniques developed for VNA measurements can also be applied to simulation data, such as SOLT, TRL, or IEEE P370 - all of these are implemented in scikit-rf, just pass the S-parameters to scikit-rf and call the APIs, and you get calibrated results. In my opinion, these are especially useful as VNA calibration is a solved problem with mature solutions, so one can use pre-existing tools to do that. For example, if the signal launch at the port is imperfect, one can create a virtual SOLT test fixture in openEMS and run those simulations as "control", then those mismatches can be removed in later analysis. |
Beta Was this translation helpful? Give feedback.






Uh oh!
There was an error while loading. Please reload this page.
-
Hi all,
First I'd like to thank M. Liebig for this amazing tool and M. Jagos for its FreeCAD to openEMS very helpful macro.
I started few weeks ago with openEMS and got recently my first results.
Based on tutorials, as shown below, it was easy to plot s-parameters in the frequency domain or voltage in the time domain, but how could I plot the impedance in the time domain now ?
This would be a TDR analysis, showing impedance mismatch along the transmission line.
Thanks for your help
Beta Was this translation helpful? Give feedback.
All reactions