So I built this replica of the LGP-30, a rather old (1956) computer. Hardware-wise, the replica is essentially an I/O shield for a cheap Spartan-6 FPGA board, the Numato Mimas. The FPGA implements the complete logic equations of the LGP-30's bit-serial CPU (which conveniently had been published in the service manual and in a scientific paper by the original designer).
My current implementation provides an RS-232 port to connect an ASCII terminal, which replaces the pre-ASCII "Flexowriter" teletype machine that came with the LGP-30. Typically, this port will end up being connected to a PC-based terminal program, via USB and an FTDI or equivalent chip. So it would be convenient to also offer a direct USB connection on my I/O board -- to lose the FTDI adapter, and also supply power via just a single cable.
I would like to drive the USB port directly from the FPGA, without any additional interface chip. (That's because (a) I'm cheap, (b) I want to avoid exotic chips, and avoid SMD components, and (c) I like a challenge.
) I have located open-source VHDL implementations for USB serial data transmission and for a USB 1.1 PHY layer, so this seems feasible.
My question refers to the electrical side of the USB interface, since I have never built one from scratch so far:
- What protection seems absolutely necessary, both on the +5V and the data lines, to limit the chance of damaging the PC or the FPGA by mishaps?
- Any recommendations for avoiding the worst EMI problems, while keeping things simple?
- Any important layout considerations? This will run at USB 1.1 speeds only, so hopefully does not pose major challenges on this front?
Please keep in mind that this is not meant to be a commercial product. But I would like to make the plans available to other hobbyists, and hence make the design robust enough to avoid headaches for others building it (and for myself, supporting it...). To make the design easy to replicate, I woud like to avoid "special" parts if possible.
Thanks for any advice you may have!
Jürgen