RE: ZVG firmware / the future of ZVG

From: Clay Cowgill <c.cowgill_at_comcast.net>
Date: Thu Apr 19 2012 - 19:20:47 EDT

> Clay Cowgill has mentioned a few times he has a multi vector
> project in the works. Maybe he can add to the conversation
> about USB, Imbedded Lunux and such..

Hey, hello? What? I heard my name! ;-)

Yeah, so... USB ZVG. Very doable and in a lot of different ways. Latency
is an issue depending on the type of USB transfer you're using (either
guaranteed delivery *time* (isochronous) or guaranteed delivery), but really
for the amount of data you'd need to move vs. the speed of the bus-- what
Neil said is (IMHO) the right way to go-- just buffer an entire frame's
worth of vectors in RAM (double buffer if you like) and don't worry about
any packet skew as long as it all makes it before the next redraw. Even if
you're keeping vectors very 'fat' in terms of storage, say 16 bits each for
X/Y/RGB on average and say you need up to 16K lines per frame (crazy high),
that's just ~64KBytes. Wasn't "microcontroller" sized RAM when the ZVG came
out, but it is now.

Full speed USB @ 12Mbits would move that 64K in way less than ~1/60th of a
second. If you're willing to make some 'compromises' (like just *require*
that the vector generator be the only device on a USB root hub so that you
know you always get the full 12MHz USB bandwidth) you could probably
legislate around some of the rocky spots. You wouldn't be passing any USB
certification suites, but that's probably not a deal-breaker. ;-)

In reality, you don't need that much memory, or that much precision
either...

Another angle that would be kinda interesting to try would be to do
something like the laser guys do-- use an off-the shelf "USB->audio" adapter
(like $10 from China), remove the DC blocking caps and use the 5.1 channels
as RGB/XY. The PC generates the deflection 'waveforms' and shoves them out
to the sound device (which being USB isochronous transfers are guaranteed
delivery time and hence no latency issues on an unloaded hub) and, well,
there you go. Brightness and deflection control for maybe the cost of a
couple op-amps to get the voltage outputs right. Most audio devices can
update at 48KHz (some at 96KHz or 192KHz) and the sigmadelta DACs tend to be
really good. Whether or not that's enough bandwidth for "real" vector games
I'm not sure, but for experimentation it'd be easy and cheap to try. (And
all the icky "windows USB stuff" would just be handled by the sound driver.)

Yet another tempting approach would be to just interface SPI DACs and
control signals with a generic USB interface chip. The Microchip MCP2210 is
a USB->SPI with some extra GPIO's. I bet you could run a vector generator
like the ZVG directly from that (SPI DACs for X/Y/RGB and the GPIOs for the
switches). The question there is what the latency and driver-side stuff on
the PC ends up being like, but they do have APIs and stuff for it and it
looks like a USB HID so you don't need custom drivers which is nice.
Another angle would be one of the FTDI chips-- they even support up to High
Speed on those now.

You can get ARM SOCs with USB and DACs built in and computing power on the
scale of a ~200MHz 486 with an FPU for ~$7 in small quantities now-a-days,
so all the ZVG boils down to is about eight actives (I'm counting the power
supply parts) and a small handful of passive components. But at that point
it's sorta silly to be dragging 100W worth of multi-GHz PC along for the
ride to use 0.1% of it for CPU emulation and a little sound... You can
emulate everything right on the same chip that you'd otherwise just be using
as USB buffer/vector generator...

-Clay

---------------------------------------------------------------------------
** Unsubscribe, subscribe, or view the archives at http://www.vectorlist.org
** Please direct other questions, comments, or problems to chris@westnet.com
Received on Thu Apr 19 19:20:59 2012

This archive was generated by hypermail 2.1.8 : Thu Apr 19 2012 - 20:50:01 EDT