FPGA Libre
EnglishEspañolS.F. Summary
Hosted by:
Get Free FPGA development tools at SourceForge.net. Fast, secure and Free Open Source software downloads

MILK (Multiple Interface Light Kit) is a USB cable with support for the most popular serial protocols (JTAG, SPI, RS-232, I2C, etc.).

MILK => USB a JTAG, SPI, RS-232, I2C, etc.

What is MILK?:

MILK is an "USB cable", this is: an electronic circuit that you connect to a computer's USB port. It provides communication to many different electronic devices, allowing configuration, information storage, in-circuit debug, etc.

MILK provides two communication channels, they can be used independently, with the same or different protocols.

In order to support a wide range of protocols MILK uses a plug-ins scheme. In this way MILK can be used for many scenarios.

MILK foto top
MILK foto bottom

Which protocols are supported?:

MILK uses an FTDI FT2232H as a core component and hence provides all its features. One of its most remarkable features is that its serializers can implement virtually any serial protocol.

The following table summarizes MILK's current support:

Protocol Application Plug-in Software OS
RS-232 Logic levels without hardware handshake RS-232 basic Anyone Linux
Logic levels with hardware handshake RS-232 DB9 simple Linux
Bipolar levels without hardware handshake RS-232 DB9 basic buffered Linux
Bipolar levels with hardware handshake RS-232 DB9 full buffered Linux
JTAG Generic JTAG base UrJTAG Linux
ARM's CPUs debug OpenOCD Linux
Xilinx FPGAs configuration Xilinx iMPACT Linux
SPI Reading/Writing memories SPI base flashrom Linux
AVR CPUs configuration and debug (i.e: Arduino) AVRDUDE Linux
Lattice iCE40 FPGAs configuration flashrom + patch
Lattice Diamond Programmer

Operating systems others than GNU/Linux should be supported because MILK can be configured to be identical to most others FT2232H cables. MILK's authors don't have computers running Microsoft Windows, but we are open to receive feedback from volunteers interested on it.

The I2C protocol should be supported by MILK because it is natively supported by the FT2232H. We just don't know which software is suitable for this purpose.

The RS-422 and RS-485 protocols are very similar to the RS-232 protocol. The most important difference is at the physical layer. A suitable plug-in is the only missing detail.

The FT2232H also implements some high speed protocols designed by FTDI. We know about VHDL implementations for FPGA, so we plan to try them in the near future.

Where can I get MILK?:

MILK is an open hardware project, all its design information can be downloaded from this site.

Currently no supplier offers MILK boards. We want to encourage its fabrication because we understand that asking every user to do it is not efficient. MILK's licence doesn't allow commercial use, but we want it to be manufactured, is just that we want to ensure a reasonable use of this design. We encourage potential manufacturers to contact us.

Is completely legal for a Universidad, or group of enthusiasts, to join efforts to manufacture a small lot of boards, reducing the cost. We invite people to coordinate such efforts using the MILK's mailing list.


MILK's versatility is provided by its plug-ins scheme. It allows the use of any protocol in any of its two channels. As an example, we could use channel A to implement SPI and channel B for JTAG, or any other combination.

A MILK plug-in can be something really simple, just some wires and a connector, or something as complex as a separated circuit. It just depends on the protocol requirements. You can find a list of plug-ins currently supported in the supported protocols section.

Supported voltage levels:

MILK's channel A is directly connected to the FT2232H. For this reason its voltage levels must be between 3.3 V and 5 V. A logic '1' at its outputs is around 3.3 V. This is normally ok for a 5 V circuit. FT2232H inputs are 5 V tolerant. Additionally, the 2.5 V signaling is compatible with the 3.3 V signaling. If you want to connect channel A to a 2.5 V circuit, you must ensure that its inputs can withstand 3.3 V. Otherwise you must use channel B.

MILK's channel B uses two LSF0108, this chip allows signals as low as 0.95 V. For this reason this channel can work in the 0.95 V to 5 V range. A circuit connected to channel B must indicate its power level using VREF pin (17). In this way MILK adapts itself to the desired voltage level. A very important detail you must take into account is the RP1/RP2 and/or R9 to R23 resistors (if they are present). These resistors determine the current needed to force a channel B input to a logic '0' (Iil sink current). The default 2k2 value implies that a 3.3 V powered circuit connected to channel B must sink 1.5 mA in order to impose a '0'. Comparably, a 0.95 V powered circuit must be able to sink 430 nA. If the connected circuit can't handle this current you'll need to change RP1/RP2. This is why we recommend using a socket. Additionally, you must understand that high values for RP1/RP2 reduce the maximum frequency for this channel. On the other hand, if you want to make channel B faster you can use lower values.


MILK is an open hardware project, all its design information can be downloaded from this site.

The current licence for this project is Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International. If you want to use MILK commercially please read the section Where can I get MILK?.

The NoDerivatives restriction was selected only to focus the efforts in just one project. We are open to contributions.


MILK was designed using KiCad.

Top layer
Bottom layer
KiCad renders


KiCad is a free software EDA tool. The schematics and PCBs for MILK were designed using KiCad "4.0.5+dfsg1-4", this is the version shipped with Debian GNU/Linux 9.

The manufactured revision (1.12) was made using KiCad "Build: (22-Jun-2014 BZR 4027)-stable", this is the version shipped with Debian GNU/Linux 8.

Related documents:

The following papers are related to MILK:


For general questions tou can use the MILK's mailing list.

For specific questions you can contact Salvador E. Tropea.

Supporting institutions:

The following institutions support this project:

  • Universidad Tecnológica Nacional - Facultad Regional Haedo
  • Universidad Tecnológica Nacional - Facultad Regional Córdoba
  • Universidad Nacional de Tierra del Fuego
  • Universidad Nacional de Catamarca


Valid HTML 4.01! Valid CSS! GIMP Any browser! SourceForge.net Logo

Copyright © 2005-2017 proyecto FPGALibre.
Generated using CAL v0.2.1 and ARENA v0.1.0 on mar oct 31 11:08:20 -03 2017