top of page

IngaVanArdenn Group

Public·195 members

Christian Morgan
Christian Morgan

SuperSpeed Device Design by Example: How John Hyde Teaches You to Create SuperSpeed USB Peripherals Using FX3 Device and CPLD Board



SuperSpeed Device Design by Example: A Comprehensive Guide for USB 3.0 Developers




If you are a developer who wants to learn how to design and implement high-performance USB 3.0 devices using a practical and hands-on approach, then this article is for you. In this article, we will introduce you to a book called SuperSpeed Device Design by Example by John Hyde, which explains how to use the Cypress FX3 SuperSpeed device platform and a companion CPLD board to create various types of SuperSpeed USB peripherals. We will also give you a summary of the chapters of the book and show you how to access and use the book and the accompanying software and hardware examples.




superspeeddevicedesignbyexamplepdfdownload



Introduction




USB (Universal Serial Bus) is one of the most widely used and successful technologies for connecting devices and transferring data between them. USB has evolved over the years to meet the increasing demands of users and applications for faster and more reliable data transfer. The latest version of USB, USB 3.0, also known as SuperSpeed USB, offers a significant improvement over the previous versions in terms of speed, power and functionality.


SuperSpeed USB 3.0 can deliver up to 5 Gbps of data transfer rate, which is 10 times faster than USB 2.0. It also supports more power delivery, up to 900 mA per port, which enables faster charging and powering of devices. Moreover, it supports new features such as dual-bus architecture, bi-directional data flow, asynchronous notifications, stream protocol and UASP (USB Attached SCSI Protocol), which enhance the performance and efficiency of data transfers.


However, designing SuperSpeed USB devices is not a trivial task. It requires a thorough understanding of the SuperSpeed USB specifications, protocols and architecture, as well as the skills and tools to implement them in hardware and software. Furthermore, it requires testing and debugging techniques to ensure the functionality and reliability of the devices.


Fortunately, there is a book that can help you with all these aspects of SuperSpeed USB device design. The book is called SuperSpeed Device Design by Example by John Hyde, and it is a "How-To" book that explains, with hands-on examples, how to design and implement a SuperSpeed USB peripheral that can interface to your hardware using a 32-bit 100 MHz bus with standard or custom protocols.


The book is based on the Cypress FX3 SuperSpeed device and the firmware examples are written around a low-cost SuperSpeed Explorer board and a companion CPLD board which are available from www.cypress.com/fx3book. The software examples are written for the Windows operating system and the CPLD examples are written in Verilog. The source code for all of the examples is downloadable from the book web site.


If you currently think that SuperSpeed USB design is only for the elite then look inside this book and discover that SuperSpeed technology has now been made accessible to the rest of us!


SuperSpeed Device Design by Example: A Book by John Hyde




Before we dive into the content of the book, let us first introduce you to the author of the book, John Hyde. John Hyde is a well-known expert in USB technology and has been involved in USB development since its inception in 1995. He has worked as a consultant, trainer and author for various companies and organizations in the USB industry. He has also written several books on USB technology, such as USB Design by Example, USB Complete and The Developer's Guide to the USB 2.0 Specification.


John Hyde's latest book, SuperSpeed Device Design by Example, is a comprehensive guide for developers who want to learn how to design and implement SuperSpeed USB devices using the Cypress FX3 platform. The book covers all aspects of SuperSpeed USB device development, from basic concepts and terminology to advanced data transfers and custom hardware interfaces. The book also provides practical examples and exercises that demonstrate how to use the FX3 device and its features in various scenarios.


The main goal of the book is to help developers understand how SuperSpeed USB works and how to use it effectively in their own projects. The book assumes that readers have some basic knowledge of USB 2.0 technology and C programming language, but does not require any prior experience with SuperSpeed USB or FX3 device. The book also provides sufficient background information and explanations for readers who are new to SuperSpeed USB or FX3 device.


The book consists of six chapters, each covering a different aspect of SuperSpeed USB device design. The chapters are organized in a logical sequence that follows the typical steps of developing a SuperSpeed USB device: introduction, getting started, basic data transfers, advanced data transfers, debugging techniques and custom hardware interfaces. Each chapter contains several sections that explain the concepts, principles and procedures of SuperSpeed USB device design using text, diagrams, tables and code snippets. Each chapter also contains one or more examples that illustrate how to apply the concepts and techniques in practice using FX3 device and its firmware.


SuperSpeed Device Design by Example: A Summary of the Chapters




In this section, we will give you a brief summary of each chapter of the book and highlight some of the key points and examples that you will learn from them.


Chapter 1: Introduction to SuperSpeed USB




This chapter introduces you to the basics of SuperSpeed USB technology and its advantages over USB 2.0. You will learn about the key features and specifications of SuperSpeed USB, such as speed, power, dual-bus architecture, bi-directional data flow, asynchronous notifications, stream protocol and UASP. You will also learn about the main components and architecture of a SuperSpeed USB device, such as device controller, endpoints, pipes, transactions and transfers. Finally, you will learn about the basic concepts and terminology of SuperSpeed USB communication, such as enumeration, configuration, interface, alternate setting and function.


One of the examples in this chapter shows you how to use a tool called USBView to inspect the properties and descriptors of a SuperSpeed USB device. You will see how to use USBView to display information such as device speed, power consumption, configuration, interface and endpoint details. You will also see how to use USBView to monitor the data transfers between a SuperSpeed USB device and a host PC.


Chapter 2: Getting Started with FX3




This chapter guides you through the process of setting up and configuring the FX3 development kit and tools. You will learn how to install and use the FX3 SDK (Software Development Kit), which contains the FX3 API (Application Programming Interface), libraries, drivers and documentation. You will also learn how to install and use the Eclipse IDE (Integrated Development Environment), which provides a graphical user interface for creating, building, downloading and debugging FX3 firmware projects. Additionally, you will learn how to install and use the Control Center tool, which allows you to communicate with FX3 devices and perform various operations such as loading firmware images, sending vendor commands and performing data transfers.


One of the examples in this chapter shows you how to create, build, download and run a simple FX3 firmware project that blinks an LED on the FX3 SuperSpeed Explorer board. You will see how to use Eclipse IDE to create a new FX3 firmware project using a template provided by the FX3 SDK. You will also see how to use Eclipse IDE to build the project and generate a firmware image file. Finally, you will see how to use Control Center tool to download the firmware image file to the FX3 device and run it.


Chapter 3: Basic Data Transfers




This chapter teaches you how to implement different types of data transfers between FX3 and a host PC using bulk, interrupt and isochronous endpoints. You will learn about the characteristics and applications of each type of endpoint and how to configure them in FX3 firmware. You will also learn how to use DMA (Direct Memory Access) channels, buffers, sockets and flags to manage data flow in FX3 firmware. Moreover, you will learn how to measure and optimize the performance and throughput of data transfers using various tools and techniques.


One of the examples in this chapter shows you how to implement a bulk loopback device that transfers data from a host PC to FX3 device and back using a bulk IN endpoint and a bulk OUT endpoint. You will see how to use Eclipse IDE to create a new FX3 firmware project using a template provided by the FX3 SDK. You will also see how to modify the project code to configure the endpoints, create DMA channels, handle DMA callbacks and send vendor commands. Finally, you will see how to use Control Center tool to download the firmware image file to the FX3 device and run it.


Chapter 4: Advanced Data Transfers




Chapter 4: Advanced Data Transfers




This chapter shows you how to implement more complex data transfers using multiple DMA channels, multi-threading, event callbacks and GPIF II (General Programmable Interface II) interface. You will learn how to use these features to handle different scenarios such as data overflow, underflow, stall, reset and abort. You will also learn how to use USB descriptors, requests and events to configure and control FX3 device behavior.


One of the examples in this chapter shows you how to implement a video streaming device that transfers video data from a camera sensor to a host PC using an isochronous IN endpoint and a GPIF II interface. You will see how to use Eclipse IDE to create a new FX3 firmware project using a template provided by the FX3 SDK. You will also see how to modify the project code to configure the endpoint, create DMA channels, handle DMA callbacks and send vendor commands. Additionally, you will see how to use GPIF II designer tool to create a custom state machine and protocol for GPIF II interface. Finally, you will see how to use Control Center tool to download the firmware image file and the GPIF II configuration file to the FX3 device and run it.


Chapter 5: Debugging Techniques




This chapter teaches you how to use various debugging tools and methods to troubleshoot FX3 firmware issues. You will learn how to use UART (Universal Asynchronous Receiver/Transmitter), LED (Light Emitting Diode), GPIO (General Purpose Input/Output), JTAG (Joint Test Action Group), debugger, trace analyzer and logic analyzer for debugging purposes. You will also learn how to debug common errors such as enumeration failure, transfer failure, device hang and data corruption.


One of the examples in this chapter shows you how to use UART and LED for debugging FX3 firmware. You will see how to use Eclipse IDE to create a new FX3 firmware project using a template provided by the FX3 SDK. You will also see how to modify the project code to enable UART and LED debugging features. Finally, you will see how to use a terminal emulator program such as PuTTY or Tera Term to communicate with FX3 device via UART and display debug messages. You will also see how to observe the LED status on the FX3 SuperSpeed Explorer board.


Chapter 6: Custom Hardware Interfaces




This chapter shows you how to design and implement custom hardware interfaces for FX3 using CPLD (Complex Programmable Logic Device) or FPGA (Field Programmable Gate Array) devices. You will learn how to use GPIF II interface to connect FX3 device to external hardware devices using standard or custom protocols. You will also learn how to use Verilog code examples to program CPLD or FPGA devices for interfacing with FX3.


Chapter 6: Custom Hardware Interfaces




This chapter shows you how to design and implement custom hardware interfaces for FX3 using CPLD (Complex Programmable Logic Device) or FPGA (Field Programmable Gate Array) devices. You will learn how to use GPIF II interface to connect FX3 device to external hardware devices using standard or custom protocols. You will also learn how to use Verilog code examples to program CPLD or FPGA devices for interfacing with FX3.


One of the examples in this chapter shows you how to implement a SPI (Serial Peripheral Interface) master device that transfers data between FX3 device and an external SPI slave device using a bulk IN endpoint and a bulk OUT endpoint. You will see how to use Eclipse IDE to create a new FX3 firmware project using a template provided by the FX3 SDK. You will also see how to modify the project code to configure the endpoints, create DMA channels, handle DMA callbacks and send vendor commands. Additionally, you will see how to use GPIF II designer tool to create a custom state machine and protocol for GPIF II interface. Moreover, you will see how to use Verilog code examples to program a CPLD device for implementing a SPI master interface. Finally, you will see how to use Control Center tool to download the firmware image file, the GPIF II configuration file and the CPLD configuration file to the FX3 device and run it.


Conclusion




In this article, we have introduced you to a book called SuperSpeed Device Design by Example by John Hyde, which is a comprehensive guide for developers who want to learn how to design and implement SuperSpeed USB devices using the Cypress FX3 platform. We have also given you a summary of the chapters of the book and shown you how to access and use the book and the accompanying software and hardware examples.


The book covers all aspects of SuperSpeed USB device development, from basic concepts and terminology to advanced data transfers and custom hardware interfaces. The book also provides practical examples and exercises that demonstrate how to use the FX3 device and its features in various scenarios. The book is based on the Cypress FX3 SuperSpeed device and the firmware examples are written around a low-cost SuperSpeed Explorer board and a companion CPLD board which are available from www.cypress.com/fx3book. The software examples are written for the Windows operating system and the CPLD examples are written in Verilog. The source code for all of the examples is downloadable from the book web site.


If you are interested in learning more about SuperSpeed USB technology and development, we highly recommend you to read this book and try out the examples yourself. You will find that SuperSpeed USB design is not only possible but also fun and rewarding. You will also gain valuable skills and knowledge that will help you in your future projects.


If you have any questions or feedback about this article or the book, please feel free to contact us or the author of the book. We hope you enjoyed reading this article and found it useful.


FAQs





  • Q: Where can I buy the book?



  • A: You can buy the book from Amazon or other online retailers. You can also buy it directly from the author's web site: www.usb-by-example.com.



  • Q: Where can I find more information and resources on SuperSpeed USB technology and development?



  • A: You can find more information and resources on SuperSpeed USB technology and development from various sources, such as:



  • The official USB web site: www.usb.org



  • The official Cypress web site: www.cypress.com/products/usb-super-speed-peripherals



  • The official Infineon web site: www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/aurix-family/aurix-usb-superspeed-peripherals/



  • The official FX3 SDK web site: www.cypress.com/documentation/software-and-drivers/ez-usb-fx3-software-development-kit



  • The official FX3 SuperSpeed Explorer Kit web site: www.cypress.com/documentation/development-kitsboards/cyusb3kit-003-ez-usb-fx3-superspeed-explorer-kit



  • The official CPLD board web site: www.cypress.com/documentation/other-resources/superspeed-device-design-example-john-hyde



  • The official GPIF II designer tool web site: www.cypress.com/documentation/software-and-drivers/gpif-ii-designer-software



  • The official USBView tool web site: docs.microsoft.com/en-us/windows-hardware/drivers/usbcon/usbview



  • The official PuTTY tool web site: www.putty.org



  • The official Tera Term tool web site: ttssh2.osdn.jp/index.html.en



  • Q: How can I provide feedback or contact the author of the book?



  • A: You can provide feedback or contact the author of the book by sending an email to john@usb-by-example.com. You can also visit his web site: www.usb-by-example.com.



  • Q: How can I learn more about USB 4.0 and Thunderbolt 3 technology and development?



  • A: You can learn more about USB 4.0 and Thunderbolt 3 technology and development from various sources, such as:



  • The official USB 4.0 web site: www.usb.org/usb4



  • The official Thunderbolt 3 web site: thunderbolttechnology.net



  • The official Intel web site: www.intel.com/content/www/us/en/products/docs/io/thunderbolt/thunderbolt-technology-developer.html



  • The official Cypress web site: www.cypress.com/products/thunderbolt-solutions



  • The official Infineon web site: www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/aurix-family/aurix-thunderbolt-solutions/



  • Q: How can I learn more about other types of USB devices and applications?



  • A: You can learn more about other types of USB devices and applications from various sources, such as:



  • The official USB web site: www.usb.org



  • The official Cypress web site: www.cypress.com/products/usb-peripherals



The official Infineon web site: www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-microcontroller/aurix-family/aurix-usb-periphe


About

Welcome to the group! You can connect with other members, ge...

Members

bottom of page