-
-
Notifications
You must be signed in to change notification settings - Fork 216
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improvements proposal for future version #2
Comments
+1 to use ECP5 and use the fantastic SymbiFlow project for less dependence on privative tools. |
Thanks for the suggestions, I'll definitely keep them in mind. Here are some initial thoughts on the individual points:
Whether I'll actually work on any of these points probably depends on how this project takes off. As long as it is only me using it on my bench ECP5/Ethernet would require some amount of work but wouldn't yield any improvements while using it |
Thank you very much for publishing your VNA design, and for making the pdf schematic in response to my request. I think your design is probably the best of all the published designs. For many years I have wished to build VNA similar to yours, however I have been much too busy so I just hoard components and look at datasheets, meanwhile some of my components are already obsolete. I have a lot of thoughts and also some questions on VNA design which I would like to share. I was wondering why you choose a dual conversion rather than single conversion architecture. I know that many old HP ones also use dual or triple conversion but since there is no image rejection I can't really see an advantage, and all of the extra components in the signal path will drift with temperature and cost money. Is there an advantage to dual conversion that I don't know about? It was my intention to build a VNA with 2 receivers per port, i.e. 4 receivers for 2 ports, because at a previous job I was unable to use certain calibration methods that I wanted to use, on a HP8753ES that had only 3 receivers. Also, if the hardware of each channel could be made cheap enough, then 4 ports (with 8 receivers) becomes quite attractive, as it enables rapid and convenient measurement of differential components, which are common these days (e.g. cabling for high speed serial links). As I am not that bothered about speed, I was going to use a much lower, single IF ~ 10kHz, and an ADC such as AD6808 / AD6809 which should be very easy to drive and has simultaneous sampling, with built-in antialiasing filters that I hope would track very closely between the different channels being on one chip. Due to the limited channel-to-channel isolation of that ADC, I had intended to put a PGA with accurate gain steps such as the AD8253, between each mixer and its ADC input channel, probably located near each mixer so as to avoid problems with coupling between the channels at the IF. What is the reason for filtering the outputs of IC7 (3x110MHz lowpass filters)? Most mixers are quite happy with square wave LO and even give better noise performance and gain stability, and linearity with respect to the RF input port, when the LO port is given a nice sharp square wave. Also where possible I would drive the LO inputs with differential signals. I had been thinking of using something like an ADCLK948 for buffering and distributing the LO in my single conversion design. One thing I have worried about though, is RF getting coupled from the RF port to the LO port in one mixer, and then getting through the LO distribution to the LO port of a different mixer that is measuring a much smaller signal, and getting coupled into the RF port of that mixer. I think quantifying the problem would be the first step. Perhaps individual LO buffers for each mixer might be needed, or if there is a big enough LO signal to start with and a slight coupling problem, then just an individual small attenuator in the LO path of each mixer might be enough, or maybe there is no problem. Even when driven by a sine wave LO, but especially when driven with a nice sharp square wave LO, I would expect that most mixers would have a useful amount of conversion at the 3rd harmonic of the LO frequency +/- 1xIF. Therefore if the source incorporated something like a RMK-3-123+ from mini-circuits (with some switches to bypass it at lower frequencies), or incorporated an ADF5355, it might be possible to use the same receivers and get useful measurements above 6GHz. I agree strongly with your choice to use a resistive network and a mixer with differential input as a return loss bridge. I was going to try to use LT5560 as the mixers, but the ADL5801 might be better in that application as I was expecting to have to do something complicated to bias the LT5560 input properly. I would be quite wary of the possibility of RF getting coupled between channels through logic signals. For example RF could couple from the RF input of one receiver via bond-wire coupling in the mixer package, to control signals like REFMIX1_EN/10.4A, then between the logic traces at the FPGA, then via something like PORT1MIX1_EN/10.3B into another mixer. I would stronly suggest putting a series resistor of a few kOhms if permissible and a 100pF capacitor to ground on each side of the resistor, in each logic trace that does not need to be fast and that goes to a mixer or other sensitive block. I would put the body of the resistor on the boundary of the shield can for that block. I see you have already taken good care of the supply isolation. A possible method to make your design cheaper to replicate might be to use commercially available screening cans for each stage of the circuit, rather than custom CNC-machined aluminium. For example: https://leadertechinc.com/wp-content/uploads/2019/09/SMS_Bi-fold_Brochure_Single_Pages2019.pdf https://au.element14.com/wurth-elektronik/36103205/shielding-cabinet-smd/dp/1909657?ost=1909657 If a major cause of drift in the measurement results turns out to be temperature changes, then it might be fairly cheap and easy to put some large SMT resistors on the back of the board and SMT thermistors, and use a microcontroller to quickly heat the groundplane under each mixer etc. to a stable temperature (maybe 50 deg C) and hold it constant within 0.1 degree or less with a PID algorithm for each sensor/heater. This could shorten the warm-up time to a minute or so. (I am not that interested in powering it from USB...) Anyway if you do organise the manufacture of your VNA, I would be very interested in participating in a group purchase. Thank you for publishing this project. |
Ok, I did not expect such a long and detailed comment, thank you so much for all your thoughts and ideas. I'll try do address most points:
Yeah, I am actually wondering about that sometimes myself. The initial design started with the LTC5510 as the first mixer and that is only specified down to 1MHz. I didn't want such a high IF, so I thought that I absolutely need the second conversion. I now know that the LTC5510/ADL5801 are probably also good for the 250kHz. But the BOM cost for the second conversion is actually not that high (compared to other parts on the PCB, the LT5560 is pretty cheap) and it has some other advantages: The MAX2871 (Highband source and 1.LO) only has a 12bit modulus divider. This is not a problem for normal VNA mode (only limits the minimum frequency spacing of points), but there is also a spectrum analyzer mode in the firmware (a bit of an afterthought, the device is certainly not intended as a SA) which needs exact LO frequencies and I can achieve that by changing the 2.LO when required. TL;DR: could probably do just as well without the second conversion but I like the flexibility it provides while not increasing cost to much. I'll try it with just the first conversion when I got the time (should be possible by bridging the 2.Mixer and changing some passives)
I quite like the idea of a modular design, where you simply add channels when needed. Not really a hobby project anymore though ;)
Getting a cleaner 2.LO, I thought this was necessary during the design (less tones in the final IF). But you are completely right, I just tried without these filters and the performance didn't change at all.
I believe that is actually a problem with the current design, the 1.LO for the reference and port 1 are routed quite close. According to your suggestion I added a 10db pad at both mixers, this improved S12 isolation a little bit. Thanks for the idea :)
When looking at the ADF5355 I really wanted to use it in a future revision (higher frequencies, high resolution modulus), but then I looked at the pricetag...
I have tried adding a resistor/capacitor for each digital line and it didn't change anything at all. I'll update the PCB and include them just to be sure, they certainly won't to any harm.
Yes, I have never seen an affordable design with custom machined parts before. When I started the design I never really anticipated that other people might take such an interest in it. I do own a CNC mill, so it didn't really increase the cost for me and I really like the look of it.
It certainly drifts somewhat but it is not terrible (compared to my pocketVNA, which I had to calibrate directly before each measurement).
I'll keep you updated on that. |
Since you mentioned some 10k points/sec sweep speed, are there any throughput concerns, in case of using ethernet? I am not really aware of how much data is being transferred here, and I am assuming 100Mbit eth, for some reason. On the other hand, I guess if commercial instruments are doing the same, then surely it's not an issue. Just a thought.
Comments? |
@jankae @chrisgj198 & @diegoherranz
On my part I'm very interested by both versions:
So maybe we could start to convert the actual schematic/board to KiCad 5.1.6 ? (I do not see any showstopper to use KiCad 5.1.6 especially it has very nice RF plugins and it is already very good to do very advanced RF design even if KiCad 6.x will bring some improvements)
|
I am placing another vote on a group purchase when the major bugs are rung out. I think it is more important to benchmark the current capability before major design changes are proposed. |
I also vote the group purchase of the 1st version.
Pentti
ke 30. syysk. 2020 klo 4.27 tchristle <notifications@github.com> kirjoitti:
… I am placing another vote on a group purchase when the major bugs are rung
out. I think it is more important to benchmark the current capability
before major design changes are proposed.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#2 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ADKBMVCSBYNRVBYP5RLJD7LSIKCRDANCNFSM4R3TMTEA>
.
|
100MBit Ethernet should be fine, it has more throughput capacity than the current Fullspeed USB. In fact, at the moment I can not get the full 10k points out via USB, only up to about 5,5k points/sec. Not exactly sure what the issue is yet, on early projects I reached enough USB throughput for about 12k points/sec.
Absolutely no idea, I never tried (and am not planning to) developing for android.
I think that is a good plan. This project started solely because I wanted to learn more about RF design, I didn't even consider some features that could be useful to others (Ethernet, stand-alone version with display,...). Instead of trying to add some of these features afterwards, designing a completely new version after gaining some experience with the current design could be a better way to go. The new version could be planned from the start with these features and maybe an extended frequency range. Regarding the group purchase: I don't think I will be organizing one but would certainly provide support if questions or problems arise. As stated here, Hugen might actually sell this version if initial testing goes well, this might be another alternative for a group purchase. |
It's fine for me! I'd be more than happy with the analyzer doing that 👍 (having no analyzer at all)
Well, it was just an idea. But we could discuss the STM and android further, when you have more time to spare. I am a kind-of self-proclaimed android developer :-) and I may be able to help. I hope. Android is no king of speed and responsivenes, and I have no idea what kind of processing is needed. If nothing else, it would be interesting to discuss the requirements. When you have time. Let's finish this one first.
I was already studying distributors and the BOM closely, but this is great news! Even at 5 times the price of NanoVna, ~$200 is not too much for an instrument which I believe is 10 times the product. |
Hi Jan, Something else that I think might be worth looking into: On the photo of the PCB, it seems like the solder pads for e.g. DC-blocking capacitors are much wider than the 50 Ohm traces that connect to these components. This will lead to impedance discontinuities, particularly for the SMA connectors where the pad is quite long. Fortunately the effect of these impedance discontinuities on s-parameter measurements will be pretty much removed by the calibration process, but things like source power flatness might still be better without the discontinuities. I would suggest checking the available options for PCB dielectric thickness and try to find one that makes the 50 Ohm trace width about the same as the width of an 0402 component, then use custom pads that are about the same width as the component (for series components). (For shunt components it can be useful to have a different footprint, again trying to keep the width of 50 Ohm traces constant.) There might be some limitations to the footprints based on what your assembly house can handle, but at least getting closer to 50 Ohm width may be worth trying. The components would be easier to knock off the board with narrow pads, but the aluminium cover is pretty good protection against that! |
In case anyone is interested, just saw this post about an ADF5356: |
The tasks of the different systems during a sweep are roughly like this:
Thanks for the offer, lets talk about android once the current version is done :)
Yeah, I couldn't find any cheap manufacturer with a layer stack that results in thicker 50 Ohm traces. They all seem to use thin prepregs between the first and second layer. I have ground cutouts under the pads of components in the RF path to reduce the discontinuities a bit (as described in here). The source level is essentially flat up to 3GHz, after that some ripple starts to appear. Unfortunately, I can not measure any higher than 3.2GHz (ignore the negative spikes, this is a max-hold over non-synchronized sweeps of the VNA and SA) |
I cannot do a check/review of actual board as it is done with Eagle 9.3.1 which requires to pay a license to view the board/schematics ... (schematics are in PDF now) I can help to check the VNA if you want:
|
I've already suggested it to Jan but thought I'd log it here. It might be a good idea to add RF gasket strips between the metal shields and the PCB all along the edges. Examples could be like here such as conductive silicon or fine mesh foam strips, although it does require grooves to be milled along all the contact areas .. www.p-p-t.co.uk/site/assets/files/1324/ppt-catalogue.8in9j.pdf If I look at the edge by the LED's I can see light all along the edge through the tiny gap between the PCB and top shield, which means the shield is not making any contact with the PCB, contact is only present around each screw fixings. If apply a small amount of pressure to the port-1 SMA socket (with a 50R SMA load on it) the S11 calibrated trace with the unit I have here changes dramatically (I'll do a short video soon), which means either the SMA is not quite making good contact with the metals shield it's up against or the PCB/shield contact is not good. All screws are torqued down equally so they are tight. RF gasket would solved that problem and also improve isolation between each and every RF stage - as is done on pro instruments. |
I've trying to solve a problem I have here in my software that I'm getting lost points at the high transfer speeds, they are simply missing from the data stream that I get from libusb, there are no packet frame corruptions or packet frame frame alignment problems, start byte exact where it should be with every point, no corrupted data at all, header is always perfect in the raw data, just simply missing data points. I was wondering if it might be a problem with the USB transfer itself rather than a problem with my software, I can't work it out at the moment. I will have to install Qt and start testing with your Qt GUI to see if that has the same (but hidden lost points) problem. |
I might try some conductive sealant just as a simple test, something similar to this .. https://shielding-solutions.com/product/electrically-conductive-caulk-and-sealant |
Conductive sealant might be a good way to improve units that have already been manufactured. As I mentioned in my first post above, individual screening cans with frames that get soldered to the PCB and clip-on lids are commercially available and although they are less rigid and less thermally conductive than milled blocks of aluminium, they might be easier for others to replicate at low cost, so they would be worth trying, in my opinion. |
I will definitely try to add the required grooves to the shields because I am really curious how much of a difference it makes but this is not happening any time soon (don't have the right tools for that yet). The shield not making contact between the screws is a problem. I am taking extra care to clean all touching surfaces every time I assemble it and use quite a bit of torque on the screws as that seems to help.
That happens when the databuffer in the VNA is full. There is not a huge amount of RAM and at 10kpoints/s I can only store about 16ms worth of data. If the PC is not reading fast enough, points are getting dropped. I added a check for missing points and it is also happening with my Qt GUI. The problem is a bit worse on Windows where I have about 50-100 missing points/s. On Linux (same machine) I normally don't see any missing points but if I stress the CPU with other programs I occasionally miss a few (only a couple of missing points every few seconds). Maybe my usage of libusb is not perfect but improving that is not my highest priority (the data at 10kpoints/s is quite noisy anyway and maybe not that useful)
Totally agree, definitely lower cost and easier to replicate. For me, this is mostly a problem of motivation as this would require a board respin while not improving performance much. I am focussing on adding features and fixing bugs in the software at the moment but will keep the clip-on lids in mind for a potential next hardware revision. |
That explains it ! I've been scratching my head for days trying to find out how on earth I'm loosing points, it's because I'm not, they're just not being sent is all. Here's a short sample of a timing list I just made whilst the points are coming in (Windows), 4501 points per scan at 50kHz bandwidth (around 10000 points/sec). The first figure on each line is the number of points per libusb RX data callback (I do the same as yourself with libusb Jan), the 2nd figure on each line is the elapsed time since the previous RX data callback, the third figure is the calculated time per point. 2 0.244ms 0.122ms/packet |
Here's a quick video showing the gap we can't close and how it affects the performance around port-1 at least (S11 changes a lot) .. https://www.youtube.com/watch?v=ECTPgdGvlfo This is why we want to fit some RF gasket. It would also hopefully improve RF isolation between the various stages as well. |
Hello OneOfEleven, The gasket between the board and case is good idea. I have very thin one, around 0.4mm. Will test this when package from Hugen arrive. Slawek |
Hello
The EMI gasket is a good trial, but in my opinion the main issue is on the
missing surface treatment of the aluminium parts. The aluminium will
oxidise soon after macined from raw material, So my suggestion is that
these aluminium parts must be coated with an electrically conductive layer
before they are assembled together with the PCB. I will try it here in
Finland.
Pentti
ke 25. marrask. 2020 klo 12.06 sp9bsl (notifications@github.com) kirjoitti:
… Hello OneOfEleven,
just wonder watching your video if the RaspberryPi 4 can handle this
throughput or is it reserved for big machine? Did you or anyone tested for
this option?
The gasket between the board and case is good idea. I have very thin one,
around 0.4mm. Will test this when package from Hugen arrive.
Slawek
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#2 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ADKBMVAHWXABNB4Q2ERFVYDSRTJKZANCNFSM4R3TMTEA>
.
|
I have no idea Slawek, I've never had a ras-pi, so no idea about that really. Any gasket that would be used would have to be slightly flexible/compressable, it needs a certain amount of give otherwise the gaps/non-contact areas would never be closed, you'd still have the same problem. The problem of the metal casing not making proper and full contact with the PCB all alone the edges is a major one on the unit I have here. The whole unit gets quite hot at times, any calibration I do can at times be void after 10 seconds or so, you can see the traces slowly move as the seconds tick by, the hot temperatures must be contributing to the problem (physical changes in the cases etc). |
I have seen the 6GHz VNA designed by Hforsten: he used a resistive bridge is basically a variation of Wheatstone bridge, What is the difference with your resistive bridge? It does not have PC-side software, and the actual experience cannot be compared with your design,and I noticed that you mentioned that it can not measure any higher than 3.2GHz?The uploaded file is not resolved yet? Will it be optimized in the next version? |
If you look closely at the VNA from Henrik Forsten, you'll notice other similiarities (such as identical ICs in some positions). That design actually served as an inspiration for my project. I believe his resistive bridge is just a variation and should work similar to my implementation (which is a bit closer to a standard wheatstone bridge).
Which file are you referring to? |
I see, in the near future, I think I will try to make a board. |
@jankae
|
I try the renormalization but I notice no change in the s params. My process is :
|
moved to a new issue as there is a lot going on in this thread, see #94 |
Markers settings are separate from axes settings. For example, you can have the marker show the value in dBm, when the graph is showing dBuV. Right-click on a marker (either on a graph or in the marker widget) to change that setting. So far, the marker did not offer dBuV as a unit. I have added that now.
Could be possible but not sure where to set it up yet. The smith chart already has a similar feature (constant resistance/impedance lines). Please open a new issue for improvements requests like this, otherwise it probably gets lost in this thread.
The input range is limited, as the LibreVNA does not have any switchable input attenuators. But as long as you don't have the "ADC overload" indicator in the bottom right corner, you should be fine. This is likely an issue with the calibration. For accurate spectrum analyzer readings, you need to perform the receiver calibration (Menu: Device->Receiver Calibration). You only need to do that once for each LibreVNA (or perform the calibration with one LibreVNA and copy it to another, they are reasonable similar). Please see the user manual for the calibration procedure. |
Hi Jan,
Best Regards and respect for this great work, |
Hi Piotr,
I don't think I will do major changes to the LibreVNA as it is now. There might be some layout adjustment or other small stuff like that. However, I have a concept for a potential version 2.0: https://groups.io/g/LibreVNA-support/topic/librevna_2_0_hardware_concept/89858084 |
Hi Jan, Best Regards, |
Absolutely, I don't plan on abandoning the current LibreVNA.
I am working on improving the dynamic range (especially for the higher frequencies) but this is also delayed due to part shortage. If you have specific ideas for the software, please open new issues for that (otherwise it probably gets lost in this one).
I am aiming for < 1k. Electronic BOM is about 500-600$ for one unit, should go down in volume. Of course this does not include the milled shielding, assembling, testing...
I'd prefer to keep it at four slots (keep complexity and size reduced for the base model). With four, you could still get a two-port VNA plus a "good" generator and spectrum analyzer. But this is all moot point as long as I can't get the components... |
When I will have the unit already I will sit to it and do some more measurements - not only soft but also some HW check. At daily basis I work with R&S ZNB8. |
Too many to keep an accurate count (sometimes it changes from day to day). Some particular problematic chips are the STM32 controllers (not just the one used in the LibreVNA, but the whole family of processors) |
Hi jankae!
The analyzer allows you to measure mixers and other frequency-converting devices using the scalar measurement method.
where: In most cases, it is enough to apply an offset to one of the ports, leaving the other at the base band frequency (M=1, D=1, Fofs=0). Port1 -> RF -> (Mixer (LO)) -> IF -> Port2
When measuring mixers in frequency offset mode, you must specify the offset frequency, which is numerically equal to the local oscillator frequency. The offset frequency must be accurate to at least the bandwidth of the IF filter being used, otherwise the receiver will not accept the mixer output. In practice, when testing mixers with a built-in local oscillator, there is an error in setting the local oscillator frequency, which is not known to the user. The AOFA function can only be enabled for one of the ports. When AOFA is enabled, the tuning value is displayed in the line of the port, the frequency of which is additionally tuned. It is possible that at the first stage it will be possible to implement this method without automatic frequency control, which is probably difficult in terms of implementation. If the intermediate bandwidth is greater than the error between the set offset frequency and the mixer local oscillator frequency, then everything will work without autotuning. What will the author and lovers of LibreVNA say? |
This would be useful for measuring the conversion gain of a mixer across frequency, right?
If you are okay with slow sweeps, you could check out the spectrum analyzer mode in the LibreVNA. It supports a tracking generator with configurable frequency offset. And if you have done the source and receiver calibration, you will at least get reasonable accurate results (with the VNA ports as the reference plane). But of course the sweep is much slower, because the device doesn't know which frequency to look for and has to scan the whole span. |
Well, yes. Frequency mixers, frequency multipliers, frequency dividers, and also, probably, the measurement of harmonics (nonlinearity) in broadband amplifiers.
Yes, most likely so, first measurements are made without LO frequency shift and we get the results of the reference receiver into a file and, if necessary, measure the module of the mixer input reflection coefficient at one of the ports. The second stage changes (shifts) the LibreVNA LO frequency and measures the transfer characteristic module on the second port relative to the reference receiver level recorded in the file, since in this measurement there will be no useful signal at the input of the reference receiver due to the LO frequency shift.
Since we still use the virtual reference signal of the receiver recorded in the file, which was measured without frequency offset LO, to measure the transfer characteristic, it is then possible to use the calibration measurements of the reference receiver recorded in the memory, made during the calibration, taking into account all connecting cables and blocks (for example, attenuators or some other ones)? That is, then a calibrated mixer is not needed?
It is possible and so, only it is important how slower the scan will be. When setting up mixers, it will probably be important for the user to complete the scan at least in 1 second. I don't have LibreVNA yet, and I have no practice with it. But this is not for long, as it is now the best VNA in its class in terms of its potential and how it develops based on user opinion. |
In general, only using software tools with this design, you can get complex S11 and S22, necessary for subsequent matching of the DUT-frequency mixer with neighboring circuit blocks, its complex inverse transfer characteristic and scalar direct transfer characteristic (when LO shift occurs during measurements in LibreVNA) . |
I don't think this would work. Just to make sure I understand you correctly, this is your idea, right?
The thing is, there are no individual calibration value for each of the receivers. Uncalibrated, the VNA reports S parameters as the ratio of incoming signal at a port to the reference signal. The calibration removes all influences (e.g. the imperfect receivers, phase shift and attenuation within the VNA as well as from external cables...) but there is no way to distinguish how much is caused by each component. |
Hi Jan, |
Thank you :)
Isn't that still <1us of signal travel time? Or did I mess up my calculations? Your linked document also mentions that this is a problem specific to continuously swept VNAs ("So the error does not occur in the stepped- |
You are right with the signal travel time.
Well that is what the document says, but even in stepped mode I can have this problem (tested with R&S and Keysight). For me it is not really clear why, but with my knowledge and not knowing what "sophisticated" algorithms are used in these VNAs, I have no explanation. |
Today I had time and access to a R&S ZNB8 and a Keysight E5071. I measured S21 of a 40m long LMR240 cable, hoping to reproduce the mentioned problem. But with both VNAs and the LibreVNA there wasn't any problem! |
@jankae This "Thread" related to Improvements go in different direction since the start |
Agreed, this issue has become way to convoluted. I have enabled discussions for the repository and will close this issue.
or
|
I think very nice improvements for a future version will be:
The text was updated successfully, but these errors were encountered: