Application Note AN_386 FT600 Maximize Performance Version 1.0 Issue Date: 2015-10-19 Data transfer through USB devices depends on many factors. This application note discusses how to optimize throughput by making use of FT600 and FT601 FIFO buffer. Use of FTDI devices in life support and/or safety applications is entirely at the user’s risk, and the user agrees to defend, indemnify and hold FTDI harmless from any and all damages, claims, suits or expense resulting from such use. Future Technology Devices International Limited (FTDI) Unit 1, 2 Seaward Place, Glasgow G41 1HH, United Kingdom Tel.: +44 (0) 141 429 2777 Fax: + 44 (0) 141 429 2758 Web Site: http://ftdichip.com Copyright © 2015 Future Technology Devices International Limited Application Note AN_386 FT600 Maximize Performance Version 1.0 Document Reference No.: FT_001223 Clearance No.: FTDI# 476 Table of Contents 1 FTDI FT600 and FT601 USB 3.0 to FIFO Bridge .......... 2 2 FT600 and FT601 FIFO interface ................................ 3 2.1 FTDI USB3.0 FIFO bridge throughput ..................................3 2.1.1 The performance of the application and the USB device driver.............................. 3 2.2 FT601 data transfer performance demonstration setup ......3 2.2.1 Data transfer environment setup ...................................................................... 3 2.2.2 FT600 and FT601 internal FIFO size and configuration ......................................... 4 2.2.3 FIFO interface timing diagram .......................................................................... 5 2.2.4 Optimize the application and FIFO master design to get the max data rate ............ 7 2.2.5 FT601 data throughput demonstration .............................................................. 7 3 Conclusion ............................................................... 10 4 Contact Information ................................................ 11 Appendix A – References ............................................. 12 Document References ............................................................... 12 Acronyms and Abbreviations..................................................... 12 Appendix B – List of Tables & Figures .......................... 13 List of Tables............................................................................. 13 List of Figures ........................................................................... 13 Appendix C – Revision History ..................................... 14 1 Product Page Document Feedback Copyright © 2015 Future Technology Devices International Limited Application Note AN_386 FT600 Maximize Performance Version 1.0 Document Reference No.: FT_001223 Clearance No.: FTDI# 476 1 FTDI FT600 and FT601 USB 3.0 to FIFO Bridge FT600 and FT601 are FTDI USB 3.0 to FIFO interface bridge chips. The chips handle USB 3.0 protocol and transfer by themselves. The chips provide flexible configuration on the parallel interface, offering either single or multi-channel FIFO interfaces. When designing with the FT600 and FT601, the user can focus on the data transfer between simple parallel interface rather than the USB 3.0 protocol. This greatly reduces the development time and effort. 2 Product Page Document Feedback Copyright © 2015 Future Technology Devices International Limited Application Note AN_386 FT600 Maximize Performance Version 1.0 Document Reference No.: FT_001223 Clearance No.: FTDI# 476 2 FT600 and FT601 FIFO interface FTDI FT600 and FT601 provide 2 types of parallel FIFO interface, 600 and 245 modes. The 245 interface mode is similar to that which can be found on the FTDI FT232R and FT232H serial products. To cater for the higher data rate, FT600 and FT601 are synchronous parallel bus designs. FT600 and FT601 provide a 100 MHz reference clock to the FIFO master, the data word is presented at the FIFO interface back to back at 100 MHz clock in the FIFO bus transactions. FTDI USB 3.0 bridge chips come with 2 chip packages targeted for different user requirements. The FT601 is designed for higher throughput with a 32 bit parallel data interface, the max FIFO throughput is 400 Mbytes/s. The FT600 is a design for small pin count with 16 bit parallel data interface, the max FIFO throughput is 200 Mbytes/s. 2.1 FTDI USB3.0 FIFO bridge throughput Although the USB 3.0 specification has a line speed of 5 Gbps, in reality, the overall data transfer rate is the result of the combination on the performance of the PC hardware, the OS, the USB XHCI host, the USB host driver, the USB device driver, the application and the USB 3.0 device design. In this document, we will not address the theoretical max data rate USB 3.0 can reach, but rather, we will take the FT601 data transfer demonstration as an example to illustrate the effective data throughput between the USB application and the FIFO master design, which is much more closer to the real implementation that users will do with the FT601. In this document, we assume that the PC speed, the OS, the USB XHCI host and the XHCI host driver are well performing and the USB speed is 5 Gbps, above the FIFO interface at 3.2 Gbps max (400 Mbytes/s for FT601), we will evaluate performance contribution of the application, the USB device driver and FIFO master interface design. A dedicated section below describes design consideration of the FIFO master to improve the system throughput. 2.1.1 The performance of the application and the USB device driver FTDI delivers the D3XX driver for the FT600 and FT601 USB devices. The device driver is designed to handle the high data throughput, it supports the asynchronous overlapped the USB data transfer. This means the user’s application can issue multiple data transfers to the D3XX driver. With this design, the gap between the data transfers are minimized and so data rate for a continuous data stream is improved. The D3XX driver and FT600 design support continuous streaming data transfer. The application can setup the FT600 channels for one time, the USB data IN and OUT channels will be open for data streaming until a stop command is issued. 2.2 FT601 data transfer performance demonstration setup 2.2.1 Data transfer environment setup The performance demonstration is based on FTDI data streaming application and a data source/sink FPGA design. Windows version: Windows 7 SP1 x32, Lenovo ThinkCentre Edge, Intel® Core i7-3770, 3.4 GHz, 8 GB Memory. Application: FTDI data streamer, driver D3xx version 1.0.0.5. Hardware: UMFT601X module, Xilinx® Spartan-6 FPGA SP601 evaluation kit. 3 Product Page Document Feedback Copyright © 2015 Future Technology Devices International Limited Application Note AN_386 FT600 Maximize Performance Version 1.0 Document Reference No.: FT_001223 Clearance No.: FTDI# 476 Figure 1 performance demo setup diagram In this demonstration, the FPGA is designed so that it will read data from the OUT FIFO channel, whenever it is ready, and fill up the IN FIFO channel whenever it is empty. The FTDI data streamer application will send out data to FT601 or read in data from FT601 once the test starts. 2.2.2 FT600 and FT601 internal FIFO size and configuration The FT600 and FT601 FIFO mode and the FIFO size configuration are listed in Mode Channel number FIFO size for each channel (double buffered) 245 1 in and 1 out 4 KB FT600 1 in and 1 out 4 KB FT600 2 in and 2 out 2 KB FT600 4 in and 4 out 1 KB 245 IN only 1 in 8 KB 245 OUT only 1 out 8 KB FT600 IN only 1 in 8 KB FT600 OUT only 1 out 8 KB below. Table 1 FT600/FT601 mode configuration and FIFO size for each channel In a high data rate application design, most of the time; the application will initiate a transfer which consists of multiple of USB packets. In this case, the FIFO master normally can read or fill up the FIFO in full FIFO size in one bus transactions. It happens that at the end of USB transfer, there will be a short packet that indicates the end of the current transfer. To handle this scenario, the FT601 and FT600 design monitors the FIFO interface transaction, once the FIFO transaction stops, even before the FIFO is full or empty, the FT601 and FT600 will consider the data ready to process, and complete the current USB transfers. For example, if the FT601 is configured in 1 channel, IN FIFO size is 4 KB, if the FIFO master writes 3 KB data to the IN FIFO and stops, the FT601 will get control of the current FIFO and 4 Product Page Document Feedback Copyright © 2015 Future Technology Devices International Limited Application Note AN_386 FT600 Maximize Performance Version 1.0 Document Reference No.: FT_001223 Clearance No.: FTDI# 476 forward the data to USB interface. In the meantime, the FT601 will provide the next available FIFO to the FIFO master to fill up more data. For the USB out transfer, it is recommended that the FIFO master should read out all the available data in the FIFO in one FIFO bus transaction. 2.2.3 FIFO interface timing diagram In the below example the FIFO interface timing diagram is used for FIFO bus efficiency analysis. Figure 2 FT601 FIFO timing diagram FIFO read (USB out transfer) efficiency calculation: =Data output / (IDLE + Command Phase + Bus Turn Around + Data output) For example, if idle cycle is 150 and the FT601 configuration is 1 channel, FIFO depth is 4 KB, then the FIFO read efficiency is (4096/4 (word at FIFO interface))/(2+1+1+4096/4) = 87% and below give the calculation of FIFO bus data rate when the IDLE time and FT601 FIFO depth vary. Note: 1. The idle cycles can either come from the FIFO master when handles the FIFO switching, the FT601 internal configuration and also the USB host transfer speed. 2. In multi-channel FIFO mode, the USB host operates individual channels access fairly so that the FIFO master can read or write one channel to another channel with less IDLE cycles. The combined data rate of multiple channels will be higher than the demonstration at single channel only. It also depends on the system performance. 1 2 3 4 Idle 150 150 150 150 CMD 1 1 1 1 TURN 2 2 2 2 FIFO depth 1024 2048 4096 8192 Efficiency 62.59% 76.99% 87.00% 93.05% Data rate (MB/s) 250.37 307.97 348.00 372.19 Idle 200 200 200 200 Efficiency 55.77% 71.61% 83.46% 90.98% Data rate (MB/s) 223.09 286.43 333.82 363.93 Table 2 FIFO efficiency 5 Product Page Document Feedback Copyright © 2015 Future Technology Devices International Limited Application Note AN_386 FT600 Maximize Performance Version 1.0 Document Reference No.: FT_001223 Clearance No.: FTDI# 476 Figure 3 FIFO throughput vs FIFO size Table 3 and Figure 4 below gives FIFO data rate when the idle period changes. 1 2 3 4 5 6 7 8 9 10 11 Idle 120 140 160 180 200 220 240 260 280 300 320 CMD TURN 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 Efficiency 4096 4096 4096 4096 4096 4096 4096 4096 4096 4096 4096 Data rate (MB/s) 89.28% 87.75% 86.27% 84.84% 83.46% 82.12% 80.82% 79.56% 78.35% 77.17% 76.02% Table 3 FIFO data rate vs idle cycles in one channel mode (FIFO size is 4 KB) Figure 4 FIFO data rate vs idle cycles for one channel 6 Product Page Document Feedback Copyright © 2015 Future Technology Devices International Limited Application Note AN_386 FT600 Maximize Performance Version 1.0 Document Reference No.: FT_001223 2.2.4 Clearance No.: FTDI# 476 Optimize the application and FIFO master design to get the max data rate From the tables and figures in section 2.2.4, we can observe that if the FIFO master wants to get the max data throughput, the design should consider having a bigger FIFO size and also reduce the idle cycles between FIFO bus data transactions. There are other things the application needs to take into account, as the USB bulk transfer does not always guaranty the bandwidth, if the application has real time data transfer, e.g. data from data acquisition equipment, the FIFO master should consider to have extra buffer to handle the worst case data rate dip in the transfer. 2.2.5 FT601 data throughput demonstration The demonstration is done with the FT600 Data Streamer application. The data rate below is a sustained and effective application data rate, measured when the transfer starts and the full data is collected at the other end. The following figures are screen captures for the different FT601 configurations. The data is measured for the data transfer on a single channel as a time. Figure 5 FT601 IN only Figure 6 FT601 OUT only 7 Product Page Document Feedback Copyright © 2015 Future Technology Devices International Limited Application Note AN_386 FT600 Maximize Performance Version 1.0 Document Reference No.: FT_001223 Clearance No.: FTDI# 476 Figure 7 FT601 single Channel, IN transfer Figure 8 FT601 single Channel, OUT transfer 8 Product Page Document Feedback Copyright © 2015 Future Technology Devices International Limited Application Note AN_386 FT600 Maximize Performance Version 1.0 Document Reference No.: FT_001223 Clearance No.: FTDI# 476 Figure 9 FT601 4 Channels, IN transfer Figure 10 FT601 4 Channels, OUT transfer 9 Product Page Document Feedback Copyright © 2015 Future Technology Devices International Limited Application Note AN_386 FT600 Maximize Performance Version 1.0 Document Reference No.: FT_001223 Clearance No.: FTDI# 476 3 Conclusion The combination of several factors determines the best approach to reliable and optimized data flow for a given design. Some designs need a quick response while others require high data throughput. By using the details outlined in this application note, the optimal design can be achieved. 10 Product Page Document Feedback Copyright © 2015 Future Technology Devices International Limited Application Note AN_386 FT600 Maximize Performance Version 1.0 Document Reference No.: FT_001223 Clearance No.: FTDI# 476 4 Contact Information Head Office – Glasgow, UK Branch Office – Tigard, Oregon, USA Future Technology Devices International Limited Unit 1, 2 Seaward Place, Centurion Business Park Glasgow G41 1HH United Kingdom Tel: +44 (0) 141 429 2777 Fax: +44 (0) 141 429 2758 Future Technology Devices International Limited (USA) 7130 SW Fir Loop Tigard, OR 97223-8160 USA Tel: +1 (503) 547 0988 Fax: +1 (503) 547 0987 E-mail (Sales) E-mail (Support) E-mail (General Enquiries) [email protected] [email protected] [email protected] E-Mail (Sales) E-Mail (Support) E-Mail (General Enquiries) [email protected] [email protected] [email protected] Branch Office – Taipei, Taiwan Branch Office – Shanghai, China Future Technology Devices International Limited (Taiwan) 2F, No. 516, Sec. 1, NeiHu Road Taipei 114 Taiwan , R.O.C. Tel: +886 (0) 2 8791 3570 Fax: +886 (0) 2 8791 3576 Future Technology Devices International Limited (China) Room 1103, No. 666 West Huaihai Road, Shanghai, 200052 China Tel: +86 21 62351596 Fax: +86 21 62351595 E-mail (Sales) E-mail (Support) E-mail (General Enquiries) E-mail (Sales) E-mail (Support) E-mail (General Enquiries) [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] Web Site http://ftdichip.com Distributor and Sales Representatives Please visit the Sales Network page of the FTDI Web site for the contact details of our distributor(s) and sales representative(s) in your country. System and equipment manufacturers and designers are responsible to ensure that their systems, and any Future Technology Devices International Ltd (FTDI) devices incorporated in their systems, meet all applicable safety, regulatory and system-level performance requirements. All application-related information in this document (including application descriptions, suggested FTDI devices and other materials) is provided for reference only. While FTDI has taken care to assure it is accurate, this information is subject to customer confirmation, and FTDI disclaims all liability for system designs and for any applications assistance provided by FTDI. Use of FTDI devices in life support and/or safety applications is entirely at the user’s risk, and the user agrees to defend, indemnify and hold harmless FTDI from any and all damages, claims, suits or expense resulting from such use. This document is subject to change without notice. No freedom to use patents or other intellectual property rights is implied by the publication of this document. Neither the whole nor any part of the information contained in, or the product described in this document, may be adapted or reproduced in any material or electronic form without the prior written consent of the copyright holder. Future Technology Devices International Ltd, Unit 1, 2 Seaward Place, Centurion Business Park, Glasgow G41 1HH, United Kingdom. Scotland Registered Company Number: SC136640 11 Product Page Document Feedback Copyright © 2015 Future Technology Devices International Limited Application Note AN_386 FT600 Maximize Performance Version 1.0 Document Reference No.: FT_001223 Clearance No.: FTDI# 476 Appendix A – References Document References DS_FT600Q-FT601Q IC Datasheet DS_UMFT60xx Module Datasheet AN_370 FT600 Configuration Programmer User Guide AN_376 Xilinx FPGA FIFO master Programming Guide AN_379 D3XX Programmers Guide AN_385 FTDI D3XX Driver Installation Guide Acronyms and Abbreviations Terms API D3XX USB USB-IF Description Application Programming Interface FTDI Direct Device Driver & API for USB 3.0 bridge Universal Serial Bus USB Implementers Forum 12 Product Page Document Feedback Copyright © 2015 Future Technology Devices International Limited Application Note AN_386 FT600 Maximize Performance Version 1.0 Document Reference No.: FT_001223 Clearance No.: FTDI# 476 Appendix B – List of Tables & Figures List of Tables Table 1 FT600/FT601 mode configuration and FIFO size for each channel................................... 4 Table 2 FIFO efficiency ........................................................................................................ 5 Table 3 FIFO data rate vs idle cycles in one channel mode (FIFO size is 4 KB) ............................ 6 List of Figures Figure 1 performance demo setup diagram ............................................................................ 4 Figure 2 FT601 FIFO timing diagram...................................................................................... 5 Figure 3 FIFO throughput vs FIFO size ................................................................................... 6 Figure 4 FIFO data rate vs idle cycles for one channel .............................................................. 6 Figure 5 FT601 IN only ........................................................................................................ 7 Figure 6 FT601 OUT only...................................................................................................... 7 Figure 7 FT601 single Channel, IN transfer ............................................................................. 8 Figure 8 FT601 single Channel, OUT transfer .......................................................................... 8 Figure 9 FT601 4 Channels, IN transfer .................................................................................. 9 Figure 10 FT601 4 Channels, OUT transfer ............................................................................. 9 13 Product Page Document Feedback Copyright © 2015 Future Technology Devices International Limited Application Note AN_386 FT600 Maximize Performance Version 1.0 Document Reference No.: FT_001223 Clearance No.: FTDI# 476 Appendix C – Revision History Document Title: AN_386 FT600 Maximize Performance Document Reference No.: FT_001223 Clearance No.: FTDI# 476 Product Page: http://www.ftdichip.com/FTProducts.htm Document Feedback: Send Feedback Revision 1.0 Changes Initial Release Date 2015-10-19 14 Product Page Document Feedback Copyright © 2015 Future Technology Devices International Limited