_whitelogger has joined #scopehal
<whitequark> azonenberg: done
azonenberg changed the topic of #scopehal to: libscopehal, libscopeprotocols, and glscopeclient development and testing | https://github.com/azonenberg/scopehal-cmake, https://github.com/azonenberg/scopehal-apps, https://github.com/azonenberg/scopehal | Logs: https://freenode.irclog.whitequark.org/scopehal
<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
<whitequark> but that specific one refused