RetroBrew Computers Forum
Discussion forum for the RetroBrew Computers community.

Home » RBC Forums » General Discussion » ECB-USB-FIFO: Fast USB interface for ECB machines
ECB-USB-FIFO: Fast USB interface for ECB machines [message #1907] Sat, 04 March 2017 13:36 Go to previous message
will is currently offline  will
Messages: 144
Registered: October 2015
Senior Member
Hi everyone

I am pleased to announce a new ECB expansion board that I have been working on for the last few weeks. It provides a nice fast interface to a PC over USB. I am measuring sustained receive and transmit rates of 690KB/sec (5.65Mbit/sec) using this board with my Mark-IV SBC (Z180 at 2x18.432MHz, 2 I/O wait states).

The board is based around the FTDI FT232H chip, configured in asynchronous 8-bit wide FIFO mode. To avoid having to solder 0.5mm pitch connections I have chosen to use the Adafruit FT232H Breakout Board (product 2264) which costs about $15 and is in stock at Mouser (part 485-2264), Digikey (part 1528-1449-ND), and no doubt various other distributors.

The connection is presented to the PC as a USB serial device, so it can be treated just like a normal serial port. The baud rate and other serial settings configured on the Virtual COM Port are ignored, it just provides an 8-bit clean path at whatever rate you can pump data in or out of it. The FT232H has large (1KB) FIFOs for both receive and transmit.

The board decodes 4 I/O addresses on the ECB bus. The A2-A7 bits can be freely configured so it can be located anywhere in the I/O address space. One I/O address is read/written to transfer data to/from the FIFOs. One I/O address is a status register, with the important receive and transmit FIFO status bits at the top and bottom so RLA/RRA can shift these bits into the carry flag, permitting tight loops. A third I/O address can be written to signal "send immediate" to the FT232H, this causes any data in the transmit FIFO to be sent over USB at the earliest opportunity (data is also sent automatically after a 17ms timeout expires or when the FIFO reaches half full).

The board supports generating interrupts on either (or both) of two conditions: data waiting in receive FIFO, or space available in transmit FIFO. The interrupt can be routed to ECB lines NMI, INT, IR0--IR7. Interrupts are controlled by writing to the status register.

In addition to the 8-bit datapath through the FIFO, there are two general purpose I/O lines, one in each direction, connected to the FT232H. I have not tested these (or come up with any use for them!) yet, but they were "free" to add to the design. They are controlled by reading/writing the status register.

To keep PCB size (and cost) down, the board is smaller than a normal ECB board. It is exactly 100mm wide (0.076mm narrower than a normal board, only 3 thousandths of an inch, you won't notice) and only 87mm high (about half as tall as a normal board). This means it fits within the 100x100mm envelope where some PCB manufacturing services offer a cheaper "prototyping" service.

The FT232H chip's FIFO mode is slightly odd (arguably designed incorrectly) in that it clocks in data on the falling edge of its /WR input, instead of the standard rising edge. ECB-USB-FIFO handles this by delaying the /WR signal by approx 32ns which easily meets the 5ns setup and 5ns hold time requirements for the FT232H. There is provision on the board to allow for longer or shorter delays if required, although I doubt adjusting this should be required.

The lack of configuration parameters means the board is very easy to program. I have a working interrupt-driven TTY driver for FUZIX written up, it's just a few lines of code and worked on the first try. It was also very quick to write a fast file transfer program called FIFOPIPE based on my earlier FATPIPE program.

I am planning to write a driver for FUZIX to enable remote disk and network access using the DriveWire protocol. I also plan to write a driver for Linux on KISS-68030 to use this as a TTY for a fast PPP link.

I am going to do a manufacturing run of these boards. If you are interested please post here or PM me to register your interest. Note that the production run boards will be made with green soldermask, not red as shown in the photos. I'm not sure how much the boards will cost, depends on volume, probably about $10.

The schematic for the board is attached. Photos of the bare and assembled board are below.

Feedback welcomed. My thanks to John and to Wayne for their advice on the design.

http://sowerbutts.com/retro/ecb-usb-fifo/photos/IMG_20170304_122659-1024.jpg
http://sowerbutts.com/retro/ecb-usb-fifo/photos/IMG_20170304_104853-1024.jpg
http://sowerbutts.com/retro/ecb-usb-fifo/photos/IMG_20170304_104902-1024.jpg
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: SBC6120 BOM for Farnell
Next Topic: 10 & 40-way shrouded RA connectors for SBC6120


Current Time: Wed Dec 13 03:17:13 PST 2017

Total time taken to generate the page: 0.01830 seconds