| |
| boards:ecb:usb-fifo:start [2021/01/22 02:31] – Revision from 2021-01-22 | 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://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-01-22 | 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. |
| |(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 ===== |
| **Important note on R3, C12:** Footprints are provided for these components but they should not normally be required. **No component** should be fitted at **C12**. A **wire jumper** should be fitted at **R3**. | **Important note on R3, C12:** Footprints are provided for these components but they should not normally be required. **No component** should be fitted at **C12**. A **wire jumper** should be fitted at **R3**. |
| |
| The FT232H /WRITE signal is active on the falling edge of the signal, instead of the standard rising edge. To ensure the data lines are steady for long enough to meet its setup time requirements, the write signal is delayed by routing it through a few gates in U3 and U7. R3 and C12 can form an LC circuit used to extend this delay if required. Alternatively the delay can be shortened by omitting the wire jumper at R3 and connecting U3 pin 17 to U3 pins 5, 7 or 13. Testing indicates that the standard delay should suit all current Retrobrew Computers systems and so the LC circuit components should not be required. | The FT232H /WRITE signal is active on the falling edge of the signal, instead of the standard rising edge. To ensure the data lines are steady for long enough to meet its setup time requirements, the write signal is delayed by routing it through a few gates in U3 and U7. R3 and C12 can form an RC circuit used to extend this delay if required. Alternatively the delay can be shortened by omitting the wire jumper at R3 and connecting U3 pin 17 to U3 pins 5, 7 or 13. Testing indicates that the standard delay should suit all current Retrobrew Computers systems and so the RC circuit components should not be required. |
| |
| The Adafruit FT232H breakout board can be permanently mounted using either 0.1” breakaway header strips soldered to both boards, or it can be made removable using SIL pin strips and sockets (eg Harwin D01-9922046 and D01-9973246) which allows it to be re-used for other projects. | The Adafruit FT232H breakout board can be permanently mounted using either 0.1” breakaway header strips soldered to both boards, or it can be made removable using SIL pin strips and sockets (eg Harwin D01-9922046 and D01-9973246) which allows it to be re-used for other projects. |
| **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 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://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 which use (the dreaded) systemd. 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 ===== |