azonenberg changed the topic of #scopehal to: libscopehal, libscopeprotocols, and glscopeclient development and testing | https://github.com/azonenberg/scopehal-apps | Logs: https://freenode.irclog.whitequark.org/scopehal
juli966 has quit [Quit: Nettalk6 - www.ntalk.de]
bgamari_ has joined #scopehal
bgamari has quit [Ping timeout: 240 seconds]
<Degi> Oh neat, 16 GHz
<Degi> bvernoux, if you need help setting up nMigen, you can message me (though I mostly use arch linux, but ubuntu shouldn't be too different)
bgamari_ has quit [Remote host closed the connection]
yourfate has quit [Remote host closed the connection]
bgamari has joined #scopehal
yourfate has joined #scopehal
<azonenberg> Status update: AKL-AD1 v0.2 assembled and powered on
<azonenberg> everything appears OK, no unusual power draws, MCU responds to SWD, and the amplifier is passing a plausible looking PCIe signal
<azonenberg> But it's doing so with 6 dB of attenuation because that's the power-on minimum gain of the amplifier
<azonenberg> Before I can properly characterize I need to write some firmware to bump the gain of the amp up to a more reasonable level
_whitelogger has joined #scopehal
_whitelogger has joined #scopehal
<azonenberg> gaaah
<azonenberg> I'm getting bitten by the most annoying bug
<azonenberg> i made the mistake of using an auto-sensing level shifter on the uart since the stm32 runs at 2.5V and i couldn't find any 2.5V uart dongles
<azonenberg> aaaand apparently the pullup on my usb-uart dongle is enough to trip it
<azonenberg> so it oscillates
<azonenberg> Now to try and find a dongle that either has none, or a very weak, pullup. Or add some kind of external buffer
<azonenberg> This isnt a fatal flaw, this uart is for debug only and worst case i can hard code the gain config or something
<azonenberg> but i'm annoyed i didnt think of it
Degi_ has joined #scopehal
Degi has quit [Ping timeout: 258 seconds]
Degi_ is now known as Degi
electronic_eel has quit [Ping timeout: 246 seconds]
electronic_eel has joined #scopehal
<azonenberg> Soooo this is interesting
<azonenberg> it appears that it was not at minimum gain, it was in power-down mode :p
<kc8apf> azonenberg: mentioned your probes at 3H Seattle meetup
<kc8apf> another person was showing their near-field probes: https://github.com/JeremyRuhland/OpenFieldProbe
<azonenberg> oh cool, I havent looked into nearfield probing much
<azonenberg> i have a cheap pair from tekbox that i've used a few times but i havent tried my hand at designing one
<azonenberg> kc8apf: also see above screenshot
<azonenberg> That's 5 Gbps PCIe gen2 on a 4 GHz scope seen through my differential probe
<azonenberg> before and after removing the de-emphasis
<azonenberg> This is also without any de-embedding of the probe tip or amplifier response, just the raw signal coming off the amplifier
<kc8apf> I pointed him toward your tweets. He's having trouble with SMA launch.
<azonenberg> I can definitely help with that
<azonenberg> I can also do VNA measurements on test launches etc if he wants
<d1b2> <Darius> this is a nit, but it would be nice if the centre read "0 ps" rather than "0 fs" IMO
<azonenberg> darius: So, the reason for that is that right now timebase rendering doesn't have any sense of what the overall range is
<azonenberg> each number is rendered individually
<d1b2> <Darius> ah yeah, sounds reasonable
<azonenberg> so divisions might read 0 fs, 500 ps, 1ns, 1.5 ns, 2 ns...
<d1b2> <Darius> yeah
<d1b2> <Darius> why does the left eye plot have horizontal 'lines' but the right one doesn't?
<azonenberg> There will probably eventually be a refactoring where I find the largest value i will render in a given plot
<azonenberg> and hint to use the same SI prefix for everything
<d1b2> <Darius> yeah
<azonenberg> The lines are discretization artifacts, caused by limited ADC resolution in the scope. It's an 8-bit ADC and the plot is >256 pixels high
<azonenberg> i do some interpolation to help with that but it's not perfect
<azonenberg> The right side doesn't because I did a FIR filter to remove the de-emphasis
<d1b2> <Darius> ahhh
<azonenberg> and the filter takes input from enough samples that, while the output is still discrete
<d1b2> <Darius> it is all very pretty, nice work
<azonenberg> there are more possible Y output values than pixel coordinates
<azonenberg> Another way you can work around the discretization is to apply an upsample filter to the input signal
<azonenberg> It will take a bit more CPU time to render the eye but give nicer results
<d1b2> <Darius> yeah
<azonenberg> ok so next step, characterizing the amplifier on the VNA
<azonenberg> Once I have S-parameters i want to see how much nicer it looks with a de-embed
<_whitenotifier> [starshipraider] azonenberg pushed 3 commits to master [+7/-2/±2] https://git.io/JtgRi
<_whitenotifier> [starshipraider] azonenberg 7f10f80 - Updated simulations
<_whitenotifier> [starshipraider] azonenberg 5d6c903 - Update copyright date in LICENSE
<_whitenotifier> [starshipraider] azonenberg 0f2a9ac - Initial AKL-AD1 firmware
<azonenberg> So it looks like the de-embed makes the PCIe waveform a little bit worse, because my current de-embed algorithm brickwall filters stuff past the end of the s-parameter dataset (6 GHz in this case)
<azonenberg> but at lower speeds it definitely improves it
<azonenberg> left=straight off the probe, note the overshoot on the rising edges
<azonenberg> right=deembedded with approximated transfer function
<azonenberg> approximate meaning I used the AKL-PT2 data for the tip since I haven't VNA'd an AKL-PD1 yet (although they're almost the same layout so should be similar)
<azonenberg> and i used the P-to-out data instead of (inP-inN)-to-out
<azonenberg> as i haven't yet figured out the right way to massage the s-parameters to get the differential-to-single-ended curve
<azonenberg> I think I got pretty close though
<azonenberg> actually no this wasn't using a tip, my bad
<azonenberg> this was using the amplifier with 15 dB attenuators standing in for the tip
<azonenberg> So i'm only de-embedding the amplifier here
<azonenberg> https://www.antikernel.net/temp/gige-groundtruth.png same signal but fed directly into scope inputs as ground truth, subtracted in post
Belieffresh has joined #scopehal
<azonenberg> I do wish that the P-to-N matching was better, because i believe that this this mismatch directly impacts CMRR (more precisely, the mismatch results in mode conversion)
<azonenberg> There's a 2 dB P-to-N mismatch at 3 GHz
<azonenberg> then it diverges more
<azonenberg> Using inP as the reference point, gain is 1.6 dB below the nominal +20 at ~DC, then hits nominal at around 1.3 GHz. Peaks at +1.2 dB at 2.6 GHz, falls back to nominal at 3.4 GHz, then -3 dB attenuation at around 4.2 GHz
Belieffresh has quit [K-Lined]
juli966 has joined #scopehal
<azonenberg> david.lenfesty: So I'm happy enough with the current AKL-AD1 that I think I might actually table it until you've finished initial work on firmware etc
<azonenberg> And then have the v0.3 AKL-AD1 use the usb-c power/data connection
<d1b2> <david.lenfesty> The pressure's on 😛
<azonenberg> In parallel with that, I'm going to start working on a handheld browser probe
<azonenberg> which, based on the twitter poll and some thinking of my own, will either mate with the AKL-AD1 via cables, or incorporate substantially the same circuit internally
<azonenberg> But in either case it's going to be a handheld differential browser probe with ~4 GHz bandwidth and adjustable tip spacing
<azonenberg> Ideally targeting the oshpark flex stackup for a prototype, but doing the amplifier layout on a 2-layer board with good SI/PI might be a challenge though. i'd also need to have a hand applied fr4 stiffener to keep the amp from being damaged
<azonenberg> So what i might do is design a passive tip to work out the mechanical side of things (even if that's not the long-term plan)
<azonenberg> then go straight to a "real" fab to do a 4-layer flex-rigid design
<azonenberg> with a flex signal+ground stackup in the tip area that has an additional two rigid layers laminated to it in the amplifier area
<azonenberg> Also hmmm
<azonenberg> Given that I have +20 dB of differential-to-single-ended gain with the LMH6401, I can afford to have some extra loss in the probe tip
<azonenberg> I wonder if it might be worth trying to design a 20x tip which would give me a net 2x attenuation and 2K ohm differential impedance
bvernoux has quit [Quit: Leaving]
<azonenberg> I've cracked the solder joints on two of these nice SMAs now
<azonenberg> trivially reworkable but not visible as an obvious defect even under the microscope
<azonenberg> I think this is caused by the loose fit of the edge launch
<azonenberg> i will definitely want to glue them down in the future
<azonenberg> in particular there's a gap between the bottom of the sma and the edge of the pcb
<azonenberg> filling that will keep it from trying to peel off the board when torqued
juli966 has quit [Quit: Nettalk6 - www.ntalk.de]
<azonenberg> So i wrote up a little tool that takes in two S2P's for inP-to-out and inN-to-out
<azonenberg> And effectively averages the complex measurements to produce a differential-to-out S21
<azonenberg> then outputs a touchstone file with differential S21 and S22 (for now I'm not calculating the reverse path or input return loss)
<azonenberg> This is fine as I only need S21 for a de-embed of the forward path
<azonenberg> This is what the forward path response of the current AKL-AD1 looks like
<azonenberg> https://www.antikernel.net/temp/ad1-with-tip.png and this is the calculated response of the probe with an AKL-PT2 (again, assuming the PT2 and PD1 have near-identical response which may or may not be valid)
<azonenberg> If we call -3 dB the average forward path gain, that would mean the overall system bandwidth is around 3.68 GHz
<azonenberg> Slightly less than the 4 I was aiming for, but not awful either
<azonenberg> oops first link should have been https://www.antikernel.net/temp/ad1-s21-v2.png
<_whitenotifier> [scopehal] azonenberg pushed 1 commit to master [+0/-0/±1] https://git.io/Jt2RV
<_whitenotifier> [scopehal] azonenberg 7ccf06a - SParameters::operator[] now returns a reference
<_whitenotifier> [scopehal-apps] azonenberg pushed 4 commits to master [+2/-0/±4] https://git.io/Jt2R1
<_whitenotifier> [scopehal-apps] azonenberg 9b15a2c - Updated submodules
<_whitenotifier> [scopehal-apps] azonenberg 5e48255 - OscilloscopeWindow: correctly display status bar if no trigger
<_whitenotifier> [scopehal-apps] azonenberg 9f1b7d8 - Updated LICENSE with new copyright date range
<_whitenotifier> [scopehal-apps] azonenberg 088f6c3 - Initial version of diffs2p utility