A project log for anaQuad!

Reliably increase your quadrature-encoder's resolution using an ADC (or a bunch of comparators?)

esot.ericesot.eric 03/11/2016 at 15:213 Comments

NOTE: 3-27-17... ~ 1yr later. Did I write this? It's gonna take a week+ to recall this mindset!


So... first, I want to mention that quadrature signalling is used for communication... I don't fully understand the details, but I think it's used for FM radio transmissions in order to send the Stereo audio-data over a single transmission carrier-wave. So, in a sense, it achieves communication of *two* different data-streams over a single wire, at the same bit-clock...

This is a little bit different than that, I think, because its intent is to send *digital* data, and... two separate data-streams? Nah, too complex for me to figure out right now...

Back to the wired-realm, where there's a "clock" signal separate from the "data" signal(s)...

So, is this maybe better/faster than, say LVDS?

Well, one interesting discovery of this system is the fact that its "lock-step" design--based on a state-machine looking for comparisons--apparently allows it to determine the "position" regardless of its actually running in a lock-step fashion... What do I mean by this...? Using nothing but simple comparisons (e.g. from a comparator, or several?) between the four signals received at the receiving-side (+clock, -clock, +data, -data), a handful of comparators could emulate anaQuad2x... Looking at the outputs of those comparators a digital value is achieved representing the "phase" or "position" of the quadrature-signal.

Low-and-behold... LVDS inputs *are comparators*... so, maybe, one LVMDS signal combined with several LVDS receivers could actually give a somewhat digital output... in this case, I don't mean digital as in a single digital *bit*, but more like an entire *nibble* received within one clock-cycle. Take it a step further, the "lock-step" design requires a bit of processing (I think) to iterate through those comparisons in order to find the new "position"... so...? We have generally accepted that long-distance communication at high-data-rates is usually quite a bit slower than the processors/FPGAs/Logic receiving them... The receiver has a state-machine running at 8x the transmitted signal... Bam.

So, is this a good idea...? What benefit is there, really...? If LVDS is slowed to some maximum rate due to its ability to swing levels to reliably-readable values fast enough... then wouldn't this system (LVMDS) run into that same problem...? Wouldn't it limit the "nibble-rate" to that same limit...?

This is where I'm not yet certain... On the one hand, maybe the "nibble-rate" is limited to a full-swing signal... which, for anaQuad, would be the equivalent of a 90-degree positional-change... (Actually, this limitation is probably a good one for several reasons... first of all, it means that the signal "transition" will never exceed that of an LVDS signal "transition", so should work in the same electrical/physical conditions, and second, the "auto-positioning" of the system works to -135 to 180deg, but is a bit iffy around the 180 and -180 marks).

Anyways, plausibly, instead of using direct multi-level digital transmission, wherein each "position" represents a binary value, instead, maybe, use multi-level digital *change*... wherein each "position" represents a *change* in binary-value...

I haven't thought this whole thing through, completely...

As far as physical implementation in the experimental-realm:

I think reception of anaQuad2x could be handled by four LVDS receivers, or even just four (fast) comparators... I need to think this one through a bit, still... And, transmission...? We'll come back to that.


esot.eric wrote 03/11/2016 at 20:15 point

...wherein my initial-thought-process got sidetracked by my writing... it's been known to happen. The original thought-process wasn't of a multi-level system... how's that much different than, say, using an ADC...? Plausible, potentially worth looking into some more... but my initial thought-process was more along the lines of a ternary system, wherein the value of each "bit" or "nibble" or whatever is one of *three* possible "values": being those of either -1, 0, or 1... Regarding whether the "quadrature" signal (Channel B being the data, with respect to channel A, being the clock) is forward-going or negative-going (thus, the concept of a *change* in the signal-value indicating which "direction" (or ternary-value) to consider.

The plausibility of a multi-step system, beyond that of just -1, 0, or 1, is something I'm not certain about... seems doable from what I wrote previously, but I've got to think that one through a bit more.

  Are you sure? yes | no

esot.eric wrote 03/11/2016 at 21:02 point

wherein, an idea being, something along the lines of: the rate at which a signal can be sent, being somewhat limited by the line and signal swings, etc... might be *increased* by using this ternary-quadrature type system, in that, say it only advances one "phase"/"position" per clock-cycle... that means at some rate (being a multiple of "positions") we'd reach what looks like the worst-case in a typical LVDS signal... being that of one bit's being high, and the next bit's being low. Those "worst-case" "positional-changes" then being half a "cycle"... So, wherein it's not possible to exceed 180, and more-reliably 90 degrees without some amount of plausibility it'll detect a reverse-phase, it's then possible/plausible to, in the "anaQuad2x" case (wherein there are 8 "positions" per cycle), transmit each "position"-change in 1/4 the time of a typical LVDS data-bit. Thus, plausible, to use the same wire-system to transmit 4x the data (or more, really, being ternary-capable, plausibly without requiring any change that exceeds the amount of change in a typical LVDS-bit. anaQuad4x would achieve 8x... and so-forth.

  Are you sure? yes | no

esot.eric wrote 03/11/2016 at 21:36 point

Too much coffee, brains jumping everywhere...

So, the thought of having one steady "clock" and the other as data results in a non-quadrature conundrum... quadrature requiring BOTH channels A and B to advance, stay, or retreat *together*. Right...? being that they should stay *in quadrature* (or 90 degrees out of phase).

So, some more random-thoughts on the matter... B could be *regenerated* from A (which is now the data signal) and the steady-state clock... I think this pretty much destroys the strength of anaQuad's crossover-detection, and might as well just use an ADC at that point.

...and, currently, I'm not able to see a way to make it work... But maybe it's not really about the idea of keeping it in quadrature (e.g. anaQuad120 also works), but about being able to detect the phase-difference... wherein I think we're getting to the FM-stereo transmission-scheme... which I don't really understand.

  Are you sure? yes | no