<azonenberg>
whitequark: question for you... when you set the trigger to "single"
<azonenberg>
do you have to press "run" after? or does it just work
<azonenberg>
i.e. "single" is an action by itself and doesn't need "run" after
<whitequark>
azonenberg: moment
<azonenberg>
side note, this high latency connection is *great* for finding race conditions :p
<whitequark>
azonenberg: "single" is an action by itself
<azonenberg>
OK
<azonenberg>
also is the trigger currently in a sane state, where the level and source are appropriate for the test signal you have fed in?
<whitequark>
azonenberg: yes
<whitequark>
azonenberg: going to drop the connection for a minute or two, need to do a chore
<azonenberg>
Good timing, synopsys decided to finish up its thing a minute ago
<azonenberg>
so i have some billable work to do
<whitequark>
back up
<whitequark>
azonenberg: whats ETA?
<whitequark>
i might as well swap the keyboad
<azonenberg>
Now is probably a good time for that
<whitequark>
ok
<azonenberg>
let me know when it's up and running
<whitequark>
ok
<whitequark>
azonenberg: keyboard changed
<azonenberg>
is the forward up?
<whitequark>
yes
<whitequark>
umm the scope isn't, sec
<whitequark>
fixed
<azonenberg>
i was about to say, it disconnected any time i sent a command
<azonenberg>
ok thats more like it
<azonenberg>
Can you take a look at the screen and let me know if it triggers once?
<azonenberg>
let me know when you're ready
<whitequark>
ready
<whitequark>
it triggered momentarily but there is no waveform on screen
<azonenberg>
OK
<azonenberg>
let me try this
<whitequark>
oh
<whitequark>
you didn't enable any channels
<whitequark>
that's why
<azonenberg>
Did that work?
<whitequark>
i got distracted momentarily, again?
<whitequark>
yep
<azonenberg>
very interesting, ok i have to add a workaround in my driver
<whitequark>
it blinks SINGLE and goes back to STOP
<whitequark>
wait
<whitequark>
there's no waveform this time either
<whitequark>
i.e. the last two attempts produced identical results
<azonenberg>
Hmmm
<whitequark>
you need to enable a channel
<azonenberg>
I thought i did
<whitequark>
nope
<azonenberg>
oh derp
<azonenberg>
i used lecroy syntax
<azonenberg>
CHAN1, not C1
<whitequark>
works
<azonenberg>
OK so i still need a workaround in my driver
<azonenberg>
Lecroy scopes have a sticky "triggered" bit
<azonenberg>
rigols apparently do not
<azonenberg>
so if i arm the trigger then poll status it will stay "stopped" not "triggered" unless you hit it at exactly the right instant
<azonenberg>
So i need to keep track of whether i armed it and convert the next "stopped" state to "triggered" meaning there's a waveform ready
<whitequark>
ah, sounds right
<whitequark>
the UI reflects it
<azonenberg>
Yeah
<azonenberg>
And are you running at 250 kS/s?
<azonenberg>
And do you see the scope triggering every second or so with a valid-looking waveform on at least channel 1?
<azonenberg>
Time to try actually pulling waveforms off i think
<whitequark>
azonenberg: sec
<whitequark>
250 kSa/s yes
<whitequark>
it triggered twice i think?
<whitequark>
each second about
<azonenberg>
OK
<azonenberg>
oh joy i hate rigol already
<azonenberg>
lol
<azonenberg>
You cant download the whole waveform
<azonenberg>
you have to pull 250K points at a time
<whitequark>
yes, it's weird
<whitequark>
most people just download screenshots
<whitequark>
which is depressing
<azonenberg>
hey it's better than a cellphone pic of the display
<azonenberg>
which i do admit to being guilty of when i first got my lecroy before i had it working in scopehal
<whitequark>
is it not able to save to a thumbdrive?
<whitequark>
even the rigol can do that...
<azonenberg>
It is, i hadnt figured out the command yet :p
<whitequark>
... though judging by the speed? they do it by bitbanging usb low speed
<azonenberg>
looool
<whitequark>
saving a single screenshot can take 30-90 seconds
<azonenberg>
Hmmmmm
<whitequark>
i cant even imagine how you could fuck it up that badly
<azonenberg>
Can it trigger during that time? ;)
<whitequark>
most of the scope functions still work in the background
<whitequark>
the UI is locked and it doesn't do some measurements
<azonenberg>
it would be hilarious to scope the usb bus
<whitequark>
i will get a vizsla soon
<azonenberg>
with the scope :p
<whitequark>
so i could see why the fuck it's so slow
<azonenberg>
yeah but that doesnt have the same lulz factor as actually pointing the instrument at itself
<azonenberg>
aaaand it uses 1-based indexes
<azonenberg>
what did they write the firmware in, COBOL?
<whitequark>
azonenberg: i mean... i could probe it with the scope, yes
<whitequark>
that would actually work
<whitequark>
i just dont want to mess with the usb cables required to make that happen
<whitequark>
ok fuck it i'll do that
<azonenberg>
no dont bother
<whitequark>
i do want to know
<azonenberg>
i was going to say, i have a usb mitm probe on order from oshpark
<azonenberg>
its literally an A on one side, a B on the other, and two SMAs
<azonenberg>
you'd have to supply external 50 ohm terminators since your scope cant do 50 ohm input
<azonenberg>
but it would require no soldering or cutting of cables or anything
<azonenberg>
just a usb A-B cable, two SMA-BNC cables, and two BNC inline terminators
<whitequark>
i'd also need some BNC stuff ye
<whitequark>
as i currently don't have any
<azonenberg>
well if you're interested when the board comes in i can mail you one
<azonenberg>
If it IS low speed, i actually wouuld be interested in the test data lol
<whitequark>
lemme just stick a probe onto a thumbdrive i broke the case of
<whitequark>
i am a simple woman, who disregards impedance matching
<azonenberg>
Lol
<azonenberg>
Well i built this probe for high speed
<whitequark>
i would be very surprised if it's high speed
<azonenberg>
it's overkill for low/full
<azonenberg>
but any time i start doing serious decoding of a protocol i normally build a test fixture
<azonenberg>
you saw the one i did for ethernet right?
<azonenberg>
landing probes on a line ONCE is ok
<azonenberg>
doing it dozens of times on different boards is a pain
<whitequark>
uhhh
<whitequark>
there are no transitions on D+/D-?
<azonenberg>
That sounds wrong
<azonenberg>
you should have idles every ms
<azonenberg>
unless it's in suspend mode?
<whitequark>
yes, especially considering that the screenshot is on the thumbdrive
<azonenberg>
it literally might only enumerate when you try to save a screenshot or something
<whitequark>
i was holding the probe there all the time
<azonenberg>
did you confirm good contact?
<whitequark>
doing that now
<whitequark>
wtf
<whitequark>
azonenberg: it might actually be high speed?
<azonenberg>
lol
<azonenberg>
how
<whitequark>
i have no idea
<whitequark>
azonenberg: fyi, i played with the controls when i was looking at usb
<whitequark>
it's at 250 MSa/s now and 5 ns/div
<_whitenotifier-3>
[scopehal] azonenberg pushed 1 commit to master [+0/-0/±4] https://git.io/fjnTK
<_whitenotifier-3>
[scopehal] azonenberg 0069d1a - Continued initial work on Rigol driver
<azonenberg>
I'm going to get some sleep, it's 3 in the morning
<azonenberg>
waveform download isnt quite working and there is a deadlock i dont understand
<azonenberg>
one thread is spinning waiting to get a mutex that nobody else holds
<whitequark>
azonenberg: regarding combination of channels
<whitequark>
on rigol, any 1 channel gives you 1 GSa/s, any 2 channels give you 500 MSa/s and any 3 or 4 channels give you 250 MSa/s
<azonenberg>
Fuuuun
<whitequark>
note that a channel is considered enabled even if it is not active, but you are triggering on it
<azonenberg>
So it's digital trigger, not comparator based
<azonenberg>
i.e. it uses the ADC
<whitequark>
yes
<azonenberg>
and there's no TDC like lecroy has then
<whitequark>
TDC?
<azonenberg>
I'm going to have to change my API to support this
<azonenberg>
Time to digital converter
<azonenberg>
lecroy triggers off a comparator
<azonenberg>
and measures the delta from trigger to adc clock rising edge
<whitequark>
ahh
<azonenberg>
then offsets the displayed waveform by a fraction of a sample
<whitequark>
that's clever
<azonenberg>
if you have multiple waveforms displayed rapidly, or persistence, it looks a ton smoother
<azonenberg>
also enables practically free equivalent time sampling
<azonenberg>
my 20 Gsps scope can do several hundred Gsps in equivalent time mode
<azonenberg>
This also is super nice for measuring tiny phase delays between signals
<azonenberg>
you get few-ps phase resolution despite only having 1 GHz bandwidth
<azonenberg>
Anyway, my current (not even fully implemented) channel bonding API only supports one level of interleaving
<azonenberg>
i never considered the possibility of interleaving all 4 channels
<azonenberg>
So i'm gonna have to think more about this
<whitequark>
wait, why interleaving?
<whitequark>
are you thinking that the rigol uses one ADC?
<azonenberg>
My ds1102 was 1 gsps on 1ch and 500 msps on 2ch but i assumed the 4 would be two 1 gsps converters
<azonenberg>
Yes
<azonenberg>
almost certainly
<azonenberg>
one adc that TDMAs the four channels
<whitequark>
i assumed the problem was bandwidth limit in the digital domain
<whitequark>
how can i test this?
<azonenberg>
My lecroys have two ADCs (or groups of them)
<azonenberg>
thats why the hardware limit
<azonenberg>
there's an analog mux between ch1/ch2 and ch3/ch4 going to the two adc groups
<azonenberg>
that each do 20 Gsps
<azonenberg>
but you can decide if you want simultaneous sampling on 2 channels or 180 deg offset sampling on one
<whitequark>
so the rigol in dot mode displays all the dots at 0° offset
<whitequark>
but it may be lying
<azonenberg>
It probably has a S&H on all 4 channels
<whitequark>
or it might have four S&H and one ADC
<azonenberg>
then a single adc
<whitequark>
right
<whitequark>
hm
<whitequark>
should i disassemble it
<azonenberg>
Wanna bet they're using a HMCAD1511?
<azonenberg>
Lol
<whitequark>
it uses an HMCAD1511
<azonenberg>
are you kidding me
<whitequark>
nope
<azonenberg>
i'm... kinda impressed
<whitequark>
found a teardown over on eevblog
<azonenberg>
i id'd the adc just from the specs of the scope
<azonenberg>
lol
<azonenberg>
theres lots of converters that are one fast converter with two S&Hs
<whitequark>
but hmcad1511 has four ADCs, doesn't it?
<azonenberg>
or two converters interleaved, with the option of sampling the input on the same or opposite edges
<azonenberg>
Yes
<azonenberg>
four adcs simultaneous sampling at 250 Msps
<azonenberg>
But you can also phase offset them and sample one input
<whitequark>
oooh
<whitequark>
THAT's how it works
<azonenberg>
Anyway, i need to retool my channel bonding architecture a fair bit
<azonenberg>
because i never considered bonding >2 channels
<azonenberg>
good thing i never actually implemented much of that
<azonenberg>
i defined the apis and implemented a few of the functions for lecroy but nothing calls them yet
<_whitenotifier-3>
[scopehal] azonenberg opened issue #64: Figure out channel bonding support for Rigol scopes that can interleave 1/2/4 channels - https://git.io/fjnTy
<_whitenotifier-3>
[scopehal] azonenberg labeled issue #64: Figure out channel bonding support for Rigol scopes that can interleave 1/2/4 channels - https://git.io/fjnTy
<whitequark>
see, told you i should figure it out now
<azonenberg>
Lol
<azonenberg>
I mean i wasnt going to be touching the bonding for a while anyway
<azonenberg>
But good to know
<azonenberg>
anyway its 0330L so i should probably get to sleep
<whitequark>
i admit i'm learning a lot about test and measurement equipment
<whitequark>
azonenberg: something interesting
<whitequark>
it uses a CY7C1360C chip
<whitequark>
this is a 256Kx36 synchronous memory
<whitequark>
related to only being able to download samples in 256K increments?
vup has joined #scopehal
_whitelogger has joined #scopehal
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
futarisIRCcloud has joined #scopehal
m4ssi has quit [Remote host closed the connection]
avl has quit [Ping timeout: 255 seconds]
<azonenberg>
innnnteresting
<azonenberg>
you think it stores samples... somewhere? then buffers them in that sram?
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
<whitequark>
azonenberg: i think that's what "ultraview" means.
<whitequark>
they probably tacked on a secondary memory instead of like
<whitequark>
making a sane design
<azonenberg>
i thoguht ultraview was intensity grading on the display
<azonenberg>
or do those things not even have that
<whitequark>
azonenberg: ultraview is 24M point memory
<whitequark>
wait
<whitequark>
ultra*vision*
<whitequark>
>UltraVision is the powerful combination of a deep memory, a high waveform capture rate, realtime waveform record and replay as well as a multi-level intensity grading display.
<whitequark>
oh it's that too
<sorear>
words, what are they
<azonenberg>
(have i mentioned i hate marketing?)
<whitequark>
azonenberg: doyou need me to turn on the scope
futarisIRCcloud has joined #scopehal
<azonenberg>
whitequark: Still busy @ $dayjob for another few hours
<whitequark>
azonenberg: remember, it's 1am here
<azonenberg_work>
I mean, feel free to set it up and i'll work on it when i'm done
<azonenberg_work>
if yo udont mind leaving it on when you're asleep
<whitequark>
not really, i sleep in another room
<azonenberg_work>
just let me know which port it's living on this time :p
<whitequark>
same port
<whitequark>
i forgot that i had some shitty service on that port on my server
<whitequark>
so it conflicted with my ssh passthrough and i had to relocate it
<azonenberg_work>
Lol i see
<whitequark>
i normally configure everything to use unix sockets