| |
| boards:ecb:usb-fifo:start [2021/03/01 07:43] – Revision from 2021-03-01 | boards:ecb:usb-fifo:start [2026/06/15 12:12] (current) – external edit 127.0.0.1 |
|---|
| /* Imported from Wayback Machine | /* Imported from Wayback Machine |
| Original URL : https://www.retrobrewcomputers.org/doku.php?id=boards:ecb:usb-fifo:start | Original URL : https://retrobrewcomputers.org/doku.php?id=boards%3Aecb%3Ausb-fifo%3Astart |
| Snapshot date: 2021-03-01 | Snapshot date: 2026-03-08 |
| Generator : wayback-archiver | Generator : wayback-archiver |
| */ | */ |
| |
| The ECB-USB-FIFO board provides a high-speed interface for an EuroCard Bus machine to talk to a modern PC over USB. The board is based around the widely supported [[http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT232H.pdf|FTDI FT232H chip]] operating in “245-style asynchronous FIFO” mode. To avoid the need to solder surface-mount parts the [[https://www.adafruit.com/product/2264|Adafruit FT232H Breakout]] board is used. | The ECB-USB-FIFO board provides a high-speed interface for an EuroCard Bus machine to talk to a modern PC over USB. The board is based around the widely supported [[http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT232H.pdf|FTDI FT232H chip]] operating in “245-style asynchronous FIFO” mode. To avoid the need to solder surface-mount parts the [[https://www.adafruit.com/product/2264|Adafruit FT232H Breakout]] board is used. |
| | |
| | On a KISS-68030 using an optimised transfer routine speeds in excess of 1MByte/sec (8Mbit/sec) can be achieved. |
| |
| On the PC the interface is presented as a standard USB serial interface (a “Virtual COM port” on Windows, /dev/ttyUSB* on Linux) and can be used by any application normally used with standard serial ports. Note that although it presents as a 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. | On the PC the interface is presented as a standard USB serial interface (a “Virtual COM port” on Windows, /dev/ttyUSB* on Linux) and can be used by any application normally used with standard serial ports. Note that although it presents as a 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. |
| ===== Schematic ===== | ===== Schematic ===== |
| |
| [[https://www.retrobrewcomputers.org/lib/exe/fetch.php?media=boards:ecb:usb-fifo:ecb_usb_fifo.pdf|PDF Schematic]] | [[https://retrobrewcomputers.org/lib/exe/fetch.php?media=boards:ecb:usb-fifo:ecb_usb_fifo.pdf|PDF Schematic]] |
| |
| ===== Bill of Materials ===== | ===== Bill of Materials ===== |
| |(qty 2) |16 pin DIP IC socket |TE Connectivity 1-2199298-4 (Farnell order code 2445622) | | |(qty 2) |16 pin DIP IC socket |TE Connectivity 1-2199298-4 (Farnell order code 2445622) | |
| |(qty 3) |14 pin DIP IC socket |TE Connectivity 1-2199298-3 (Farnell order code 2445621) | | |(qty 3) |14 pin DIP IC socket |TE Connectivity 1-2199298-3 (Farnell order code 2445621) | |
| |
| \\ | |
| |
| ===== Notes on Construction ===== | ===== Notes on Construction ===== |
| The FT232H breakout board contains a serial EEPROM which **must be programmed** to configure the FT232H to use the correct operating mode (“245 Asynchronous FIFO”). This can be done over USB from a PC. The EEPROM needs to be programmed one time only. | The FT232H breakout board contains a serial EEPROM which **must be programmed** to configure the FT232H to use the correct operating mode (“245 Asynchronous FIFO”). This can be done over USB from a PC. The EEPROM needs to be programmed one time only. |
| |
| **For Windows** you need to use the [[http://www.ftdichip.com/Support/Utilities.htm#FT_PROG|FT_PROG]] utility which can be freely downloaded from the FTDI web site. I've made a [[https://www.retrobrewcomputers.org/lib/exe/fetch.php?media=boards:ecb:usb-fifo:ft232h-template.zip|template]] that you can load into the FT_PROG program. The program is a bit counter-intuitive so here are some brief instructions: Connect the USB device, run FT_PROG, load the provided XML template. Tell FT_PROG to scan for devices, then right-click on the FT232H USB device (not the template) and tell it to apply the loaded template. This sets the desired configuration for the device. Click the “Program Devices” button in the toolbar, then click the “Program” button. This writes the configuration to the EEPROM. | **For Windows** you need to use the [[http://www.ftdichip.com/Support/Utilities.htm#FT_PROG|FT_PROG]] utility which can be freely downloaded from the FTDI web site. I've made a [[https://retrobrewcomputers.org/lib/exe/fetch.php?media=boards:ecb:usb-fifo:ft232h-template.zip|template]] that you can load into the FT_PROG program. The program is a bit counter-intuitive so here are some brief instructions: Connect the USB device, run FT_PROG, load the provided XML template. Tell FT_PROG to scan for devices, then right-click on the FT232H USB device (not the template) and tell it to apply the loaded template. This sets the desired configuration for the device. Click the “Program Devices” button in the toolbar, then click the “Program” button. This writes the configuration to the EEPROM. |
| |
| **For Linux** I have written a [[https://www.retrobrewcomputers.org/lib/exe/fetch.php?media=boards:ecb:usb-fifo:ft232h-program-eeprom.tar.gz|short C program]] which uses libftdi1 to program the EEPROM. The tarball contains both the source code and a binary with libftdi1 and libusb statically linked in, this should work on most recent Linux systems. Ensure the FT232H board is the only connected FTDI device (just in case it tries to overwrite the EEPROM in other devices!) and then run “sudo ./program-eeprom -w” to program the device. Running “sudo ./program-eeprom” (without the “-w” option) will report the current EEPROM contents. | **For Linux** I have written a [[https://retrobrewcomputers.org/lib/exe/fetch.php?media=boards:ecb:usb-fifo:ft232h-program-eeprom.tar.gz|short C program]] which uses libftdi1 to program the EEPROM. The tarball contains both the source code and a binary with libftdi1 and libusb statically linked in, this should work on most recent Linux systems. Ensure the FT232H board is the only connected FTDI device (just in case it tries to overwrite the EEPROM in other devices!) and then run “sudo ./program-eeprom -w” to program the device. Running “sudo ./program-eeprom” (without the “-w” option) will report the current EEPROM contents. |
| |
| **For MacOS** I had success running FT_PROG in a virtual Windows machine (using Parallels Desktop) using the USB passthrough feature. In principle it should also be possible to compile libusb, libftdi1 and use my C program to program the EEPROM but I have not tested this. | **For MacOS** I had success running FT_PROG in a virtual Windows machine (using Parallels Desktop) using the USB passthrough feature. In principle it should also be possible to compile libusb, libftdi1 and use my C program to program the EEPROM but I have not tested this. |
| |
| It is possible to build this board with entirely 74LS series logic, and this works well. However slightly higher performance can be achieved by substituting 74AHCT parts for U6 and U9, and 74ACT for U7 and U11. Testing on a Mark IV SBC at 36.864MHz, a board using only 74LS parts requires 2 I/O wait states, whereas with the 74AHCT parts at U6 and U9 the board operates correctly with only 1 I/O wait state. U7 and U11 can use 74ACT32 which also gives a further timing improvement. The [[forum:index.php|forum thread]] has more information on how the timing improves with CMOS parts. Note that U1, U2 and U3 should always use 74LS as the bus interface benefits from having hysteresis on the inputs to improve noise rejection; the 74LS244 and 74LS245 parts have Schmitt trigger inputs. | It is possible to build this board with entirely 74LS series logic, and this works well. However slightly higher performance can be achieved by substituting 74AHCT parts for U6 and U9, and 74ACT for U7 and U11. Testing on a Mark IV SBC at 36.864MHz, a board using only 74LS parts requires 2 I/O wait states, whereas with the 74AHCT parts at U6 and U9 the board operates correctly with only 1 I/O wait state. U7 and U11 can use 74ACT32 which also gives a further timing improvement. The [[forum:index.php|forum thread]] has more information on how the timing improves with CMOS parts. Note that U1, U2 and U3 should always use 74LS as the bus interface benefits from having hysteresis on the inputs to improve noise rejection; the 74LS244 and 74LS245 parts have Schmitt trigger inputs. |
| | |
| | FT232H boards produced after Feb 2020 (using a USB-C connector instead of Micro-USB) have two additional pins for 3V and GND at the end of the board closest to the USB connector. These should be left disconnected. |
| |
| ===== Photographs ===== | ===== Photographs ===== |