To answer this question, we will have to examine the design activities associated with the FPGA boards. First, the designer must consider that they need an external USB interface to access the resources on the board (such as input/output and RAM).
After this, let’s look at some design activities made by different designers. In the end, you will learn how you can get some benefits by using a USB-FPGA board.
A USB-FPGA board design process is a method that we can use to produce a new kind of hardware based on the USB interface. This is an exciting way for hardware designers to explore their creativity. It is because this approach offers benefits different from the usual design flow. The following document will give you more information about this subject and how it works.
The idea of creating this project was born when we had to deal with the problem that one of our ASICs (application-specific integrated circuit) was not working properly, and we could not detect why. The only solution we could find was to replace the printed circuit board with a new one. In other words, we had to buy a new board and retire the old one. When speaking about developing technology, it is good to remember that you should be creating something better than before every time you create a new product.
One of the most common difficulties in this field is not enough spare parts for designing new products. The manufacturing and development processes are complex because they have a relationship with several sectors. They include semiconductors, electronics, power, and mechanics. Indeed, all of these sectors need new parts, but it is not easy to obtain them during a difficult time such as this one.
Designers sometimes have to deal with these problems due to a lack of resources and knowledge. However, the idea of this project was to detect some possibilities for developing new products and designs based on the USB protocol.
Different projects that require USB interface support can use this technique. For example, we can use it in a robotic platform design where many sensors and actuators connect to a board. This board can interact with sensors and other partners to control an environment. For example, they include an industrial area or a room where robots handle products.
From this point of view, we have to define what we mean by USB-FPGA. The basic framework of this project is an FPGA board that has a USB interface. It means that we can connect it to a computer to interact with it and its peripherals by controlling them. Another essential aspect is USB-FPGA designs we can use in different projects such as robot platforms, industrial control, and embedded software platforms.
It is not easy to predict where we will use this technology in the future because we can develop new applications for different purposes. The flexibility of FPGA designs is a benefit used by engineers, but some designers want to create something new.
In other words, even if FPGA designs are flexible, it does not mean that we can use them in all kinds of projects. The important point here is that the USB interface supports different applications, providing more flexibility for computing systems.
The FPGA design resources (referring to Application-Specific Integrated Circuits (ASICs)) are essential for different applications such as industrial control and power products. One of the most important reasons these products use FPGA design is its flexibility. It means that we can alter it to produce different configurations.
FPGA prototyping creates a board that uses the FPGA resources to perform different functions. It is possible to create new FPGA circuits in this design activity using an interconnect. The interconnect used for this purpose can be a solderable wire or a cable.
Finally, we can conclude from the above approaches that we can produce FPGA designs using different tools. They Include HDL (hardware description language) using schematic diagrams and test benches.
The process of designing USB-FPGA boards
We can obtain several benefits from the use of this technique. The most important is that it is a new way to control computers on embedded boards. Other advantages include combining the FPGA resources with an external USB interface. Also, it includes having an open architecture for microcontrollers which we can use in different projects.
The basic architecture of the board depends on the USB host controller. It also depends on various peripherals that the host controller can control via the USB interface.
The main idea behind this application is to use the FPGA resources to control different kinds of peripherals. We can do this by using an open architecture that supports USB protocol. Another important aspect is using this circuit in applications such as robotics control and embedded control software.
FPGA architecture basics are different from other common solutions. They include external interfaces (for example, an external memory device). It means that it is possible to connect a USB key to store data during the running of FPGA applications.
Some of the system elements that we need to consider in this design are the following:
The main elements of this board are:
Some essential function of this board is to use the FPGA resources to control different peripherals, test functions, and communicate with other systems. Three important components we need to consider while doing this project:
1. FPGA design resource,
2. USB interface resources,
3. External memory device resources.
Another important aspect of this board is that we can produce it using the same design files used in making other applications based on USB-FPGA.
This design is different from several other USB-FPGA designs because it includes more features. In addition, it means that we can use it in projects requiring a new interface, such as an industrial control solution or a robotic platform.
We can use many design files for this application. One of them relates to the USB-FPGA design. The other relates to several different applications we can produce with FPGA resources.
We use different designs because there was a need to create new projects that did not require specific hardware.
The USB controller depends on the following files:
This package declares the USB controller’s constants, arrays, and signal types. We use it for declarations and definitions of different constants to make the other files. We declare all of the USB descriptor arrays in this file.
This package contains the schematic for the USB controller. In addition, it contains files that support the different functions used in making this design and a variety of USB protocol constants and arrays.
This is the USBF_Descriptors package that includes an altered VHDL file to use FPGA resources. We use them for different interconnecting circuits, memory, and microcontrollers.
This package uses subroutines for some FPGA resources used to control different circuits, USB peripherals, and test functions. Therefore, we alter it to use the FPGA resources that we can use in this solution.
They altered this package to use a USB peripheral based on PCI standards. As a result, it can produce an interface to control all different kinds of peripherals.
We use this file for controlling one of the USB ports on this board. One can alter the files to use a different peripheral (for example, an external memory device instead of a PCI peripheral).
Bugs and Caveats
After making several changes to the USB-FPGA design files used for this application, they made hardware changes to improve the performance. It was possible to use a different external memory device connected to the FPGA. The main reason behind this change was that it is possible to improve the performance of the FPGA design. It is also possible to implement additional functions if there is a need for them.
Some of the main advantages of this design obtained while implementing the changes compared to the initial design are that they can make them easier and cheaper concerning other standard solutions that we can use. Some other advantages relate to USB peripherals, which we can alter using a different device. In addition, it is also possible to use different circuits and peripherals.
Implementing high-Speed USB functionality
USB has earned the popularity it now enjoys due to its ability to be a very fast data transfer rate. They are compatible with the IEEE 1394 standard and can go up to 480MBps
The USB controller used in this project depends on a high-speed USB 2.0 controller. It allows for interfacing with a variety of devices available on the market.
In many cases, the throughput offered by USB is not enough. There is an option to use a USB 1.1 controller, which can achieve speeds of up to 12MBps. However, it also requires a slow communication interface between the host controller and the device
Intel and Microsoft released the first edition of the USB 2.0 specification in 2000. They designed it to provide increased bandwidth for low-speed, full-speed, and high-speed USB devices. One does this while maintaining backward compatibility with USB 1.1 devices
1. USB-based distributed data acquisition system
For applications such as remote data logging or development and testing of wireless communication systems, we require a device that can transmit data from one computer to another over a network. We consider USB to be the easiest way to do this
In this solution, we can see that it is possible to use the FPGA resources. The high-speed USB controllers create a highly effective system that we can use for all kinds of applications. This also includes testing functions and other applications produced using FPGA resources.
2. A typical USB system
USB has several different versions. Each version has different controllers and interfaces, but we can broadly classify them into three major types.
Host-based USB controllers are ICs used for the main host controller used by a host computer to communicate with different peripheral devices.
3. USB Transceiver + USB Protocol Stack IP + FPGA
A dedicated USB peripheral allows for communication between different networked devices. This is one of the main functions that we achieve when using a USB interface
The manufacturer altered the FPGA resources in this application to support a high-speed USB 2.0 protocol stack. As a result, it was possible to implement all the different features expected from such a solution.
4. Comparing FPGA and ASIC solutions
Using an FPGA can provide many advantages over using an ASIC to implement certain functionality. This is mainly related to the fact that it is possible to alter the functionality of a design. It provides a much better solution that we can use for many different applications.
5. FPGA + Bridge IC (SIE + PHY)
Utilizing the FPGA resources, it is possible to alter the design of a solution that uses a bridge IC.
The Altera DE2 board and the Arty S7-50 board used in this project are efficient, and we can use them to control different devices and circuits. In addition, these boards can support several different peripherals and circuits that we can use to implement various applications.
6. USB Controller + FPGA
Implementing a USB controller on the FPGA is advantageous. We can use it to alter the implementation, and we can use it to provide better performance. In addition, it is also possible to alter the functionality of an existing USB controller by using an FPGA which provides extra flexibility.
Benefits of USB-FPGA board
1. High-performance communication for control and data acquisition
The FPGA can increase performance, mainly because it integrates it with a USB controller. This is also an improvement over other existing solutions based on an ASSP. In addition, the FPGA design in this project is also a simple design that makes use of a minimal amount of resources.
2. USB 2 host controller support
The design of this application depends on a single board solution which includes an Altera DE2 FPGA and a Broadcom BCM2835 ARM processor. This device can support several different peripherals and devices connected to the host controller to provide the required functionality. The design also includes an embedded command processor.
3. Integration of FPGA resources with USB peripheral
Manufacturers use the Altera DE2 development board here. The DE2 Development kit provides a flexible development environment, and it utilizes Altera’s proven Cyclone II FPGA. It has several features that make the implementation of a project much easier. This FPGA also uses several different peripherals available for use by the FPGA.
The Arty S7-50 development board used in this project was essential in achieving the desired functionality. It is a versatile development board that provides a complete development environment. The design of this device also utilizes Altera’s proven FPGA, which depends on the XC7Z010 core.
In addition, the design includes an embedded processor, which we can utilize for several functions.
4. Easy to use out of the box solutions
The design provides FPGA-based USB solutions which are simple to use. We can easily integrate these solutions with several devices and platforms that use USB. It is possible to develop bespoke applications specifically designed for use with these devices.
5. Easy to use after development
The Arty S7-50 board used in this project has several different features that make it easier for the designer to implement a solution. This board can provide FPGA-based solutions that we can easily integrate with several different platforms that make USB use. It is also possible to alter the design, and it is also possible to provide customized applications
6. Modular hardware architecture
We can consider the hardware used in this design a modular-based design. This is due to the reason that it can integrate the required functionality using several available boards. The modified Arty S7-50 board used in this project can be an excellent example of a modular-based design. It is easy to integrate and provides intelligent interfaces.
7. On-board SDRAM and/or SRAM
The Altera DE2 development board kit is an excellent example of an FPGA-based USB design that uses onboard memory. This board has two DDR2 SODIMM sockets that easily upgrade the memory or implement different features. We can use these sockets to provide memory for the device and additional functionality.
8. Interface to external equipment to control and acquire data via the FPGA
We can use this design to integrate with several equipment and devices that make USB use. It is possible to modify the functionality of this equipment, and it is also possible to change the design, which is a good way of achieving much better performance if required.
9. Interface to a host computer for storing and visualizing the data and for controlling the application
We can consider the interface used in this design a JTAG interface essential in providing the required debugging and analysis features. The goal of this interface is to provide a method for debugging. It also allows for easy access to the contents of the FPGA via a host computer.
10. Interface for monitoring the power available from the USB port
The Arty S7-50 development board has an onboard oscillator used to detect the power available from a USB port.
Examples of USB-FPGA board
Some of the specification you will find with these boards include:
- Manufactured In Japan
- Power-on Reset
- Complies with RoHS
- Tested all Input/Ouput
- Credit-Card-Size (86 by 54mm)
- Six layers of high-quality immersion gold PCB
- 10-pin socket JTAG Connector for download
- User LED x2
- Power and Done Status LED
- DIP x1 and Push x1 user Switch
- 50 ppm Oscillator (50MHz) – External clock inputs are available
- SPI-Flash Memory (Micron, 128Mbit)
- SDRAM (Alliance Memory, 256Mbit)
- USB2.0 bridge IC (FT2232H, FTDI) – ESD protection
- Configuration Device
- 100 INPUT/OUTPUT PAD 100 mil (2.54 mm) grid
- Power: 5.0 V single power supply operation – Separated VCCIO input
- On-board regulators (3.3 V, 2.5 V, 1.2 V)
[EDA-013] Intel Cyclone 10 LP USB-FPGA board, FTDI USB 3.0 FT601
- 10CL0120YF780C8G: 100 Maximum user Input/output pins (Board), 4 PLL, 525 Maximum user Input/output pins (Device), 288 18 by 18 multipliers, 423 Memory: M9K (kb), and 119088 Logic Elements
- 10CL080YF780C8G: 100 Maximum user INPUT/OUTPUT pins (Board), 4 PLL, 423 Maximum user INPUT/OUTPUT pins (Device), 244 18 by 18 multipliers, 305 Memory: M9K (kb), and 81264 Logic Elements
[EDA-011] Intel Cyclone 10 LP F484 USB-FPGA board
- 10CL120YF484C8G: 100 Maximum user Input/output pins (Board), 4 PLL, 277 Maximum user Input/output pins (Device), 288 18×18 Multipliers, 3888 M9K Blocks (kb), and 119088 Logic Elements
- 10CL080YF484C8G: 100 Maximum user Input/output pins (Board), 4 PLL, 289 Maximum user Input/output pins (Device), 244 18×18 Multipliers, 2745 M9K Blocks (kb), and 81264 Logic Elements
- 10CL055YF484C8G: 100 Maximum user INPUT/OUTPUT pins (Board), 4 PLL, 321 Maximum user INPUT/OUTPUT pins (Device), 156 18×18 Multipliers, 2340 M9K Blocks (kb), and 55856 Logic Elements
- 10CL040YF484C8G: 100 Maximum user INPUT/OUTPUT pins (Board), 4 PLL, 325 Maximum user INPUT/OUTPUT pins (Device), 126 18×18 Multipliers, 1134 M9K Blocks (kb), and 39600 Logic Elements
- 10CL016YF484C8G: 100 Maximum user INPUT/OUTPUT pins (Board), 4 PLL, 340 Maximum user INPUT/OUTPUT pins (Device), 56 18×18 Multipliers, 504 M9K Blocks (kb), and 15408 Logic Elements
[EDA-009] Altera Cyclone V USB-FPGA board, FTDI USB 3.0 FT600
- Altera 5CEBA4F23C8N: 100 Maximum user INPUT/OUTPUT pins (Board), 224 Maximum user INPUT/OUTPUT pins (Device), 16 Global Clock Systems/Networks, 4 PLLs, 132 18 by 18 multipliers, 3,383 Kbits Embedded memory, and 49 K Logic Elements
[EDA-008]Altera Cyclone V USB-FPGA board
- The Altera 5CEBA4F23C8N: 100 Maximum user INPUT/OUTPUT pins (Board), 224 Maximum user INPUT/OUTPUT pins (Device), 16 Global Clock Systems/Networks, 4 PLLs, 132 18 by 18 multipliers, 3,383 Kbits Embedded memory, and 49 K Logic Elements
[EDA-302]Altera Cyclone V USB-FPGA board
- The Altera 5CEBA4U15C8N: 56 Maximum user input/output pins (Board), 224 Maximum user input/output pins (Device), 4 PLLs, 16 Global Clock Systems/Networks, 132 18 by 18 multipliers, 3,383 Total Memory (kb), 303 Memory: MLAB (kb), 3,080 Memory: M10K (kb), 18,480 ALM, and 49 K Logic Elements
[EDA-301]Altera Cyclone IV USB-FPGA board
- The Altera EP4CE15F17C8N: 20 Global Clock Systems/Networks, 56 Maximum user INPUT/OUTPUT pins (Board), 4 PLLs, 56 Embedded 18 by 18 multipliers, 165 Maximum user input/output pins (Device), 15,408 Logic Elements, and 504 Kbits Embedded memory.
[EDX-302] Xilinx Artix-7 USB-FPGA board
- XC7A100T-1FTG256C: 4,860 Total Block RAM (kb), 56 Maximum user INPUT/OUTPUT pins (Board), 170 Maximum user INPUT/OUTPUT pins (Device), 1,188 Maximum Distributed RAM (kb), 101,440 Logic Cells, and 15,850 Slices
- XC7A75T-1FTG256C: 3,780 Total Block RAM (kb), 56 Maximum user INPUT/OUTPUT pins (Board), 170 Maximum user INPUT/OUTPUT pins (Device), 892 Maximum Distributed RAM (kb), 75,520 Logic Cells, and 11,800 Slices
- XC7A50T-1FTG256C: 2,700 Total Block RAM (kb), 56 Maximum user INPUT/OUTPUT pins (Board), 170 Maximum user INPUT/OUTPUT pins (Device), 600 Maximum Distributed RAM (kb), 52,160 Logic Cells, and 8,150 Slices
- XC7A35T-1FTG256C: 1,800 Total Block RAM (kb), 56 Maximum user INPUT/OUTPUT pins (Board), 170 Maximum user INPUT/OUTPUT pins (Device), 400 Maximum Distributed RAM (kb), 33,280 Logic Cells, and 5,200 Slices
- XC7A15T-1FTG256C: 900 Total Block RAM (kb), 56 Maximum user INPUT/OUTPUT pins (Board), 170 Maximum user INPUT/OUTPUT pins (Device), 200 Maximum Distributed RAM (kb), 16,640 Logic Cells, and 2,600 Slices
[EDX-303] Xilinx Spartan-7 USB-FPGA board
- XC7S100T-1FGGA484C: 4,320 Total Block RAM (kb), 56 Maximum user INPUT/OUTPUT pins (Board), 338 Maximum user INPUT/OUTPUT pins (Device), 1,100 Maximum Distributed RAM (kb), 102,400 Logic Cells, and 16,000 Slices
- XC7S75T-1FGGA484C: 3,240 Total Block RAM (kb), 56 Maximum user INPUT/OUTPUT pins (Board), 338 Maximum user INPUT/OUTPUT pins (Device), 832 Maximum Distributed RAM (kb), 76,800 Logic Cells, and 12,000 Slices
- XC7S50T-1FGGA48C: 2,700 Total Block RAM (kb), 56 Maximum user INPUT/OUTPUT pins (Board), 250 Maximum user INPUT/OUTPUT pins (Device), 600 Maximum Distributed RAM (kb), 52,160 Logic Cells, and 8,150 Slices
[EDX-009] Xilinx Kintex-7 USB-FPGA board, FTDI USB 3.0 FT600
- XC7K160T-1FBG484C: 100 Maximum user INPUT/OUTPUT pins (Board), 400 Maximum user INPUT/OUTPUT pins (Device), 8 CMT (MMCMx1+PLLx1), 600 DSP Slice, 11,700 Max Block RAM (kb), 2,188 Max Distributed RAM (kb), 25,350 Slice, and 162,240 Logic Cells
- XC7K70T-1FBG484C: 100 Maximum user INPUT/OUTPUT pins (Board), 300 Maximum user INPUT/OUTPUT pins (Device), 6 CMT (MMCMx1+PLLx1), 240 DSP Slice, 4,860 Max Block RAM (kb), 838 Max Distributed RAM (kb), 10,250 Slice, and 65,600 Logic Cells
[EDX-008]Xilinx Kintex-7 USB-FPGA board
- XC7K160T-1FBG484C: 8 CMT (MMCMx1+PLLx1), 600 DSP Slice, 11,700 Max Block RAM Bits, 100 Maximum user INPUT/OUTPUT pins (Board), 400 Maximum user INPUT/OUTPUT pins (Device), 2,188 Maximum Distributed RAM (Kb), 25,350 Slice, and 162,240 Logic Cells
- XC7K70T-1FBG484C: 6 CMT (MMCMx1+PLLx1), 240 DSP Slice, 4,860 Max Block RAM Bits, 100 Maximum user INPUT/OUTPUT pins (Board), 300 Maximum user INPUT/OUTPUT pins (Device), 838 Maximum Distributed RAM (Kb), 10,250 Slice, and 65,600 Logic Cells
[EDX-301]Xilinx Spartan-6 USB-FPGA board
- XC6SLX16-2CSG225C: 576 K Total Block RAM bits, 56 Maximum user INPUT/OUTPUT pins (Board), 232 Maximum user INPUT/OUTPUT pins (Device), 136 K Maximum Distributed RAM bits, 14,579 Logic Cells, and 2,278 Slices
In conclusion, we can say that USB-FPGA designs can allow new designers to use a new type of hardware. Of course, this technique depends on the FPGA resources, and it enables different kinds of projects by using software elements.
USB-FPGA board has a lot of benefits as it enables experts such as RayMing PCB and Assembly to be creative when they design a new product. They can use many resources simultaneously to design something new, and they do not need to wait for spare parts that are not available.