|
FT601 Chip Getting Started Guide: USB 3.0 High-Speed FIFO Bridge Detailed Explanation

FT601 Chip Getting Started Guide: USB 3.0 High-Speed FIFO Bridge Detailed Explanation

FT601 is a high-performance USB 3.0 to FIFO bridge chip from Future Technology Devices International (FTDI), designed specifically for applications requiring high-speed data transmission. This article will comprehensively introduce FT601’s technical features, working principles, development process, and typical application cases.

Chip Overview

FT601 is a USB 3.0 SuperSpeed (5Gbps) to parallel FIFO interface bridge chip, belonging to FTDI’s SuperSpeed series along with the FT600 series. Main technical specifications are as follows:

  • Interface Type: USB 3.0 SuperSpeed (5Gbps) / USB 2.0 High Speed (480Mbps) / USB 2.0 Full Speed (12Mbps)
  • FIFO Bus Width: 32-bit wide parallel interface (FT600 is 16-bit)
  • Package Type: 76-pin QFN package
  • Data Throughput: Up to 400MB/s (theoretical peak)
  • Operating Modes: Supports both 245 mode and FIFO mode parallel slave protocols

FT600 vs FT601 Key Differences

FeatureFT600FT601
FIFO Bus Width16-bit32-bit
Package Pin Count56 pins76 pins
Data Throughput~200MB/s~400MB/s
Application ScenariosMedium bandwidth requirementsHigh bandwidth requirements

💡 Simply put: FT601 is the performance upgrade of FT600, achieving double the data throughput capability through doubled bus width, suitable for applications with extremely high bandwidth requirements such as FPGA, high-speed ADC/DAC, video capture, etc.

Working Principle

FT601’s internal architecture includes USB 3.0 PHY, USB controller, FIFO buffer, and parallel interface controller. Its core workflow is as follows:

  1. USB Side: Receives USB 3.0 data packets from the host, unpacks and stores them in the internal FIFO buffer
  2. FIFO Management: Uses dual-buffer mechanism, supports automatic flow control and interrupt notification
  3. Parallel Side: Communicates with external devices (such as FPGA) through a 32-bit wide parallel bus (address/data multiplexed or separate)
  4. Timing Control: Supports programmable read/write timing, adapting to different host device timing requirements

Typical Application Scenarios

  • FPGA Data Transmission: As a high-speed data channel between FPGA and PC, replacing traditional PCIe or Ethernet solutions
  • Test and Measurement Equipment: Data acquisition interface for high-speed oscilloscopes, logic analyzers
  • Industrial Automation: Real-time image data transmission in machine vision systems
  • Software Defined Radio (SDR): High-speed transmission of baseband signals
  • Medical Imaging Equipment: Raw data transmission for ultrasound, MRI and other equipment

Development Guide

Hardware Design Key Points

  • Power Design: FT601 requires both 3.3V and 1.2V power supplies, pay attention to power ripple requirements
  • Clock Source: 24MHz crystal oscillator recommended, accuracy requirement ±100ppm
  • Impedance Matching: USB 3.0 differential lines need strict control of 50Ω single-ended/100Ω differential impedance
  • FIFO Interface: 32-bit data bus recommended to use LVCMOS 3.3V level

Software Development Environment

  • Drivers: FTDI provides Windows/Linux/macOS full-platform drivers
  • Development Libraries: D2XX Direct Drivers (low-level control) and Virtual COM Port (VCP) drivers
  • Development Tools: FTDI’s FT60x Configuration Utility for chip configuration

Complete Development Process

  1. Hardware Design: Complete FT601 schematic and PCB design
  2. Firmware Development: Write FPGA logic or MCU firmware to handle FIFO protocol
  3. Driver Integration: Integrate FTDI driver and application on the host side
  4. Performance Tuning: Optimize FIFO depth, interrupt thresholds and bulk transfer sizes
  5. Certification Testing: Conduct USB-IF compatibility testing and EMC testing

Frequently Asked Questions

Q: Does FT601 support hot-plugging?

A: Yes, FT601 fully supports USB standard hot-plugging functionality, no additional circuits required.

Q: How to optimize data transmission performance?

A: Key parameters include: increase FIFO buffer depth, adjust bulk transfer size (recommend 512KB), enable multi-threaded data processing, optimize host-side DMA configuration.

Q: How to connect FT601 with Xilinx Zynq’s PS-PL interface?

A: It’s recommended to use AXI-Stream interface with FT601’s FIFO mode, achieving zero-copy data transmission through AXI DMA controller.

Summary

As a mature USB 3.0 high-speed bridge chip, FT601 has become the preferred solution for high-speed data transmission applications with its 400MB/s theoretical bandwidth, stable driver support and rich development resources. Compared to complex interfaces like PCIe, FT601 provides a simpler, lower-cost high-speed data channel solution.

For engineers who need to establish high-speed data links between FPGA, ASIC or MCU and PC, FT601 is undoubtedly an excellent chip worthy of in-depth research and application.

📚 Reference Materials:


Pin Description and Typical Application Circuit

FT601’s 76-pin QFN package contains the following key signal groups:

Power Pins

Pin NameVoltageDescription
VCC3.3VMain power input
VCCIO1.2VFIFO interface IO power
GND-Ground

FIFO Interface Signals (Parallel Side)

Signal NameDirectionDescription
DATA[31:0]Bidirectional32-bit data bus
BE[3:0]BidirectionalByte enable signals (4-byte aligned)
RXF#OutputReceive FIFO full flag (active low)
TXE#OutputTransmit FIFO empty flag (active low)
RD#InputRead enable signal (active low)
WR#InputWrite enable signal (active low)
OE#InputOutput enable signal (active low)

USB Interface Signals

Signal NameDescription
USB_DP/USB_DMUSB 2.0 D+/D-
USB3_SSRX+/SSRX-USB 3.0 SuperSpeed receive differential pair
USB3_SSTX+/SSTX-USB 3.0 SuperSpeed transmit differential pair

Typical Application Circuit

Typical FT601 application circuits include:

  • 24MHz crystal oscillator circuit: Connect to OSC_IN and OSC_OUT pins, matching capacitors recommend 22pF
  • USB 3.0 interface: Connect to PC through USB Type-C or Type-A connector, pay attention to AC coupling capacitors
  • FIFO side connected to FPGA: 32-bit data lines directly connected to FPGA’s GPIO or dedicated FIFO interface
  • Power filtering: Each VCC pin equipped with 100nF decoupling capacitor, VCCIO equipped with 10uF storage capacitor

Comparison with Alternative Solutions

In high-speed USB bridging solutions, FT601 has several common alternatives:

FeatureFT601FT2232HCY7C68013A (FX2LP)
USB VersionUSB 3.0 SuperSpeedUSB 2.0 High SpeedUSB 2.0 High Speed
Theoretical Bandwidth400MB/sAbout 12MB/sAbout 40MB/s
Data Bus Width32-bit8/16-bit8/16-bit
Package76-pin QFN48-pin QFP100-pin TQFP
Price (Reference)Medium-highLowMedium
Driver SupportFTDI official full-platformFTDI official full-platformCypress official (discontinued)
Suitable ScenariosHigh bandwidth data acquisitionLow-speed control/debuggingMedium bandwidth video capture

Selection Recommendations:

  • Need bandwidth over 50MB/s → FT601
  • Simple low-speed control interface (such as UART/SPI/I2C bridging) → FT2232H
  • Limited budget and low bandwidth requirements → CY7C68013A (note not recommended for new designs)

Development Process Detailed Explanation

1. Driver Installation

FTDI officially provides D3XX (D3XX is FT601’s dedicated Direct Driver) driver:

  • Windows: Download FT60x D3XX Driver installation package from FTDI official website, supports Win10/11
  • Linux: Need to install udev rules file, grant FTDI device permissions to current user

Linux installation steps:

# Download Linux driver
wget https://ftdichip.com/wp-content/uploads/FTDI-Linux-D3XX-x64.tar.gz
tar -xzf FTDI-Linux-D3XX-x64.tar.gz

# Install udev rules
sudo cp ftdi.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules

# Install dynamic library
sudo cp libftd3xx.so /usr/lib/

2. D3XX Library Basic Usage

D3XX is FT601’s dedicated low-level API, compared to VCP (virtual serial port) mode, performance is several times higher.

3. Basic Read/Write Code Example

Here’s a basic read/write example using C language and D3XX library:

#include "ftd3xx.h"
#include <stdio.h>
#include <string.h>

int main() {
    FT_HANDLE ftHandle = NULL;
    FT_STATUS ftStatus;
    FT_DEVICE_LIST_INFO_NODE devInfo;
    DWORD numDevices = 0;

    // Enumerate devices
    ftStatus = FT_CreateDeviceInfoList(&numDevices);
    if (ftStatus != FT_OK || numDevices == 0) {
        printf("No FT601 device found\n");
        return -1;
    }
    printf("Found %lu FT601 devices\n", numDevices);

    // Open first device
    ftStatus = FT_Create(0, FT_OPEN_BY_SERIAL_NUMBER, &ftHandle);
    if (ftStatus != FT_OK) {
        printf("Failed to open device\n");
        return -1;
    }

    // Write data to FIFO (send to external device)
    unsigned char writeBuffer[1024];
    memset(writeBuffer, 0xAA, sizeof(writeBuffer));
    DWORD bytesWritten = 0;

    ftStatus = FT_WritePipe(ftHandle, 0x02, writeBuffer, sizeof(writeBuffer), &bytesWritten, NULL);
    printf("Wrote %lu bytes, status: %d\n", bytesWritten, ftStatus);

    // Read data from FIFO (from external device)
    unsigned char readBuffer[1024];
    DWORD bytesRead = 0;

    ftStatus = FT_ReadPipe(ftHandle, 0x81, readBuffer, sizeof(readBuffer), &bytesRead, NULL);
    printf("Read %lu bytes, status: %d\n", bytesRead, ftStatus);

    // Close device
    FT_Close(ftHandle);
    return 0;
}

Compilation command:

gcc -o ft601_test ft601_test.c -lftd3xx

Bandwidth Test Actual Results

In actual testing, we used FT601 with Xilinx Artix-7 FPGA for bandwidth testing:

Test ScenarioActual BandwidthNotes
Pure read (FPGA→PC)About 320MB/sClose to 80% of theoretical peak
Pure write (PC→FPGA)About 280MB/sAffected by FIFO depth
Bidirectional simultaneous read/writeRead 260MB/s + Write 240MB/sTotal bandwidth limited by USB 3.0
Small packet transfer (64 bytes)About 15MB/sPacket overhead significant

Optimization Recommendations:

  • Use at least 16KB transfer block size, avoid frequent small packet transfers
  • FPGA-side FIFO depth recommended 4KB or above, reduce flow control waiting
  • Host side use asynchronous IO or multi-threaded processing, avoid CPU becoming bottleneck
  • Ensure USB cable quality meets standards, poor quality cables will cause speed drop to USB 2.0 mode