|
||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
|
|
Remote Field Updates Using FPGAs
By Tom Branca (tom.branca@xilinx.com),
Chris Stinson (chris.stinson@xilinx.com) and
Brant Soudan (brant.soudan@xilinx.com), Applications Engineers at Xilinx, Inc.
Introduction
Creating hardware that can be upgraded in the field can significantly increase the useful lifetime of a system. The ability to add new hardware features and fix existing ones without sending a technician out to the field can add up to considerable maintenance and support savings over the entire life of the system.
Designing systems that do remote upgrades can also provide new revenue prospects. After the initial product is released, new hardware features can be developed, sold and distributed inexpensively to existing customers in much the same way as new versions of software can be distributed today. In addition a standard "off-the-shelf" application can be developed so features can be swapped in and out depending on what the end-user purchases or needs.
The types of systems that could benefit from being field updateable are wide-ranging. Almost any system that has some type of connectivity to the "outside world" could potentially benefit from being designed to support field updates. Some typical types of applications include:
Network Appliances
Traditional Approaches
An example where this type of manual update can be inefficient and costly is when an application depends on an industry protocol that is fluctuating during the development or production of a product. In an environment where standards have not been finalized, design modifications and updates can cause costly delays, or force the designer to move to less efficient, software-based implementations. Systems that support remote field upgrades can be shipped before standards are finalized and updated later.
Even with embedded applications or systems that depend only on static, industry standard specifications, the process of sending a technician to update hardware systems already deployed in the field can prove costly. In the extreme case of a satellite orbiting the earth the hardware update could be cost prohibitive or impractical.
FPGAs and Remote Field Upgrades
Xilinx FPGAs are based on SRAM technology and are customized by loading configuration data into internal memory cells. Because FPGAs are SRAM-based, it is very easy to re-program them an unlimited number of times. Updating the functionality of the FPGA only requires the designer to include a mechanism for updating the configuration bitstream.
The configuration bitstream is the programming file for the FPGA. This bitstream is created using the Xilinx development tools. Design entry can be performed using a variety of standard methods such as HDL or schematic entry.
Since the FPGA functionality is customizable, the types of systems that FPGAs are used in tend to vary considerably. In addition, the method by which the FPGA is programmed can also differ from system to system. To support remote field updates a system must have some sort of communication channel or connection across which data can be transferred, this could be a cable, or modem connection, or laser, infrared or radio transmitter / receiver interfaces, etc.
The main task in updating the functionality of the FPGA is replacing the bitstream used to program the FPGA. The best methodology for updating the bitstream is dependent on what resources the application has available to it and how these resources are connected.
The rest of this paper will focus on systems that have a microprocessor / microcontroller to control the update process. However, many of the issues discussed below are applicable across any method used to update a FPGA in an application.
A generic system demonstrating one possible solution for providing field updates is illustrated below.
The connection to the 'outside world' in the diagram above could represent an Internet connection, a simple twisted pair connection, a PCI or USB bus, or a satellite communications channel.
To initiate a remote field update a command must be sent across the interface to the communication processor signaling to the system that the FPGA needs to be updated. The communication device / interface could be something as complex as a microprocessor, or something as simple as a CPLD.
Once the communication processor knows that an update is required, it can reconfigure the FPGA directly using the slave, boundary scan, or peripheral FPGA configuration modes. Alternatively, as shown in the diagram above, the processor could update some sort of non-volatile memory (typically an EEPROM or Flash memory) and then simply initiate a standard FPGA reconfiguration cycle.
In this second case, after the update of the configuration PROM the system has several options for initiating the update of the FPGA functionality. The system can signal to the FPGA to start reconfiguration by pulsing the FPGA's PROGRAM pin, or by power-cycling the board. Another methodology would be to use the FPGA's built-in Boundary Scan configuration capability to configure the device via the processor. For more detailed information, refer to Xilinx application note XAPP017.
Planning for Remote Upgrade
Data Transmission
Data Integrity / Verification
The system should be able to detect transmission errors from the sender, and request a re-send of the data. The system may also need to let the sender know that the FPGA has been configured, and that the system is back on line. Accomplishing this can be as simple as monitoring the INIT or DONE pin on the FPGA.
For more thorough verification another option is to read back the bitstream from the EEPROM or Flash memory and verify it against the initial data. This type of verification can also be accomplished by reading back the configuration data from the FPGA. If this methodology is used, consult the Xilinx Programmable Logic Data book to determine the differences between the initial configuration bitstream and a bitstream obtained when performing a device Readback.
Security
An even more basic requirement is protecting the system from unauthorized access. Unauthorized accesses not only subject the system to the risk of being brought down, but also make the system vulnerable to serious damage.
Compression
As FPGA densities increase, the size of the data required to configure increases. The rate at which the system must send and receive data may increase to the point where data compression can be beneficial. This would require some kind of additional software or hardware support to manage the compression / extraction.
Planning for Adding New Features and Bug Fixes
Choosing the Right Size for the FPGA
To determine which size FPGA to use, one must consider the size of the current design and the size of any potential future design enhancements. An advantage of Xilinx FPGAs is that for any device in a given architecture, in the same package, all device sizes are footprint compatible. This gives designers the ability to select and work with a specific device and still have the flexibility to easily change to a larger or smaller device before going to production.
Memory
The designer also has a choice of either volatile or non-volatile memory. The advantage of non-volatile (EEPROM or Flash) memory is that when reconfiguring the FPGA after a power cycle the system will still have the most recent configuration data in memory and will not require extra clock cycles to update its configuration data across the communication interface.
Most configuration modes require the entire bitstream to be stored in memory before configuration can begin. Some Xilinx FPGAs allow partial configuration and all devices can be configured one byte at a time with some added handshaking. Refer to the Xilinx data book for more information on the different configuration modes available for specific device architectures.
Design Expandability
Archiving the Design for Future Updates
Future Study
Other types of systems which are not discussed, but which could also be field updateable, include boards which do not have a processor to control the configuration bitstream update, or boards where the FPGA is the only significant logic in the system. An example is a PC add-in card that uses FPGAs for the PCI interface and backend design.
Although the issues discussed above also apply to these systems, there may be a few issues that are more prevalent in these types of applications. These issues could include the necessity of designing the system to automatically switch to a backup configuration bitstream or some sort of 'boot-prom' that allowed for another update in the case an update failure.
Xilinx WebLINX Silicon Xpresso Site
Home | Product of the Week | Tech Note | AppReview | Vendor Tools | Feedback
|
|||||||||||||||||||||||||||||||||
|
Copyright © 2003 ChipCenter-QuestLink About ChipCenter-Questlink |
||||||||||||||||||||||||||||||||||