Application Note AC362 SmartFusion cSoC - Programming FPGA Fabric and eNVM Using IAP Interface Table of Contents Purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IAP and DirectC Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IAP with Overall System Design . . . . . . . . . . . . . . . . . . . . . . . . . . Known Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Design Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Design Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Solution 1: Programming FPGA Fabric/eNVM Directly from Host PC Using UART Solution 2: Programming FPGA Fabric Directly from Host PC Using Ethernet . . . Solution 3: Programming FPGA Fabric/eNVM from On-Board SPI Flash . . . . . Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Appendix A – Design Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . List of Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 .1 .2 .4 .5 .6 .6 .7 12 17 27 28 29 Purpose This application note describes how to program the field programmable gate array (FPGA) Fabric and embedded nonvolatile memory (eNVM) using the SmartFusion® in-application programming (IAP) interface. Introduction The SmartFusion customizable system-on-chip (cSoC) device contains a hard embedded microcontroller subsystem (MSS), programmable analog circuitry, and FPGA Fabric consisting of logic tiles, static random access memory (SRAM), and phase-locked loops (PLLs). The MSS consists of a 100 MHz ARM® Cortex®-M3 processor, advanced high-performance bus (AHB) matrix, system registers, Ethernet MAC, peripheral DMA (PDMA), real-time counter (RTC), eNVM, embedded SRAM (eSRAM), fabric interface controller (FIC), Philips inter-integrated circuit (I2C), serial peripheral interface (SPI), external memory controller (EMC), embedded flash ROM (eFROM), Watchdog Timer, 10/100 Ethernet Controller, GPIO block, IAP and system registers. The programmable analog block contains analog compute engine (ACE) and analog front-end (AFE), consisting of ADCs, DACs, active bipolar prescalers (ABPS), comparators, current monitors, and temperature monitor circuitry. The IAP block is a feature of the MSS that interfaces with the Cortex-M3 processor through the APB bus. The IAP block provides hardware capability to program the flash components of SmartFusion cSoC devices, by invoking the IAP block in the programmed end user’s application. These flash components are the FPGA array, MSS eNVM, and FlashROM. The hard 100 MHz 32-bit ARM Cortex-M3 processor in the SmartFusion cSoC device is used to execute the DirectC code in conjunction with the IAP block to update the FPGA Fabric and eNVM. The processor utilizes the DirectC application to execute the programming algorithms (erase, program, and verify), that controls the JTAG state machine in the IAP block. The programming operation is done one row at a time. When programming for a row is done, IAP sends an interrupt to the processor for the next row until the flash component is completely programmed. The processor, upon interrupt, initiates the next instruction/command based on the programming algorithm. It is the responsibility of the processor January 2015 © 2015 Microsemi Corporation 1 SmartFusion cSoC - Programming FPGA Fabric and eNVM Using IAP Interface application to clear the interrupt source upon servicing an interrupt request. This is done by writing to any register in the IAP block. The IAP programming can be initiated by the system, within the Cortex-M3 processor application, or from the FPGA Fabric/eNVM through an interrupt to the Cortex-M3 processor as defined at design time; the flexibility is dependent on the user application. Figure 1 shows the various blocks of the SmartFusion cSoC architecture that are used for performing IAP to program the FPGA Fabric/eNVM. When IAP is initiated, a host application on the host PC transfers the programming file (*.dat) from the host PC to the target (SmartFusion cSoC-based system) through UART/Ethernet for performing IAP to program the FPGA Fabric/eNVM. UART MSS APB IAP ARM Cortex-M3 AHB Bus Matrix Host Pc UART/Ethernet 10/100 EMAC eSRAM eNVM User Logic FIC AHB-Lite/ APB3 FPGA Fabric SmartFusion cSoC Figure 1 • SmartFusion cSoC Configuration for IAP IAP and DirectC Overview DirectC is a set of source code files, designed to support IAP for updating FPGA Fabric/eNVM. The DirectC code files are grouped together to form the following blocks: 2 • DirectC main entry function call • Programming algorithm • Data interface • IAP IAP and DirectC Overview Figure 2 illustrates the flow of DirectC and IAP usage in programming flash components. DirectC Main Entry Function call Programming Algorithm Data Interface IAP FPGA Fabric/eNVM Figure 2 • Flow of DirectC and IAP Usage DirectC Main Entry Function Call The DirectC source code starts with the main entry function call. This block performs the following steps: 1. Initializes all the needed variables for programming. 2. Checks data CRC to ensure there is no corruption. 3. Erases the target flash device/component before programming. 4. Makes a call to the programming algorithm block to perform IAP. Programming Algorithm The programming algorithm block does the following: • Initializes the flash component with the help of IAP block. • Calls the appropriate function to perform the required action. • Interfaces with the data interface (UART, Ethernet etc) to read the programming file. Data Interface The data interface provides the programming data *.dat file when requested by the IAP block through the programming algorithm to perform the requested action. This programming data is provided either directly from host PC or from the on-board storage that is loaded earlier. IAP The IAP block is part of a digital subsystem which acts as an APB peripheral for the Cortex-M3 processor. This block is a combination of both hardware and software. It provides a low-level interface to program the flash component through the control and status registry. This block primarily does the following: • IAP software processes the data and applies the appropriate algorithm to program the device. • IAP hardware block handles the JTAG communication to program the controller block to program the flash component. 3 SmartFusion cSoC - Programming FPGA Fabric and eNVM Using IAP Interface IAP with Overall System Design Figure 3 shows the high-level architecture of IAP with overall system design for programming the flash component with an input programming file. The DirectC code that is running on the Cortex-M3 processor uses the IAP interface in order to perform IAP to update the FPGA Fabric/eNVM with the input programming file. The input programming file (*.dat) is transferred from the host PC to the target through UART/Ethernet. The following parts are involved while performing IAP: 1. An interface application software running on the Cortex-M3 processor with the DirectC code initiates IAP and handles external communications. 2. A host application software provides the programming file data when the IAP block requests data to program the FPGA Fabric/eNVM. 3. The DirectC processes the data and applies the appropriate algorithm to initialize the FPGA Fabric/eNVM for programming. 4. The IAP hardware block handles the JTAG communication to program the controller (ProgCtrl) hardware block, for programming FPA Fabric/eNVM with the incoming programming file. Transferring image file (*.dat) from host PC to the Target Using UART/Ethernet Interface *.dat file Cortex-M3 Running DirectC IAP interface ProgControl FPGA Fabric Programming FPGA Fabric / eNVM Based on the Command eNVM Figure 3 • High-Level Architecture of IAP The following are needed for the designer to implement and perform IAP: • Integrate the IAP driver and the DirectC files into the application code. Download the IAP driver using the Firmware Catalog from the Microsemi website or provided within the hardware project firmware directory. • Ensure definitions for ENABLE_IAP_SUPPORT and enable_mss_support (in dpuser.h) are enabled in the DirectC code. The DirectC code enables the IAP support by setting the hardware_interface variable to IAP_SEL to perform IAP. These variables are enabled by default in the code. • Implement the data interface block to provide the programming file from the host PC to the target when IAP requests for data. There are several physical communication medium interfaces (UART/Ethernet) available on SmartFusion cSoCs to get the programming file *.dat on to the target. The data interface block mainly reads the programming file *.dat data from the host through UART/Ethernet or from on-board SPI flash storage. In case of on-board SPI flash storage, the complete 4 Known Issues programming file *.dat is loaded in SPI flash prior to performing the IAP block. When UART is used as a physical medium, a handshaking mechanism is required between the host and the target to load the programming file directly from the host into internal memory (eSRAM) or to a memory storage area on the target board. Typically, this handshake mechanism has to be implemented before IAP actually requests programming data to program the flash component. When Ethernet is used as a physical medium, it uses Ethernet routines and a TCP/IP stack to load the programming file directly from the host PC over the network into internal memory (eSRAM) or to a storage file system on the target application. The design example provided in this application note demonstrates the programming of IAP blocks to update the FPGA Fabric or eNVM with the programming file that is loaded onto the target using various communication medium interfaces. All the solutions explained in this application note perform IAP programming, but the difference between them is the underlying physical interface medium which is used to load the programming file *.dat from the host to the target. The design files provided with this document contain an IAP driver and DirectC programming files to enable programming of the FPGA Fabric and eNVM. For more information about DirectC, refer to the DirectC User’s Guide. The SoftConsole projects that are provided can be used for any of the methods explained in this document. Requirements and Recommendations • Stable system power is needed during IAP block programming. When you are designing a system, ensure that you have taken system-level design considerations into account to avoid IAP program failures due to power interruptions. If an IAP program fails due to power interruptions, restart the IAP block programming. • Disable the Watchdog timer in the software or handle the Watchdog interrupt. • Implement the error detection and correction mechanism to ensure programming data integrity. • The application has to take care of the failsafe mechanism for IAP block programming directly from the host PC using UART or Ethernet. • Ensure the settings in Serial Terminal Emulation Program. Refer to the Configuring Serial Terminal Emulation Programs tutorial for configuring HyperTerminal, Tera Term, or PuTTY. • When you are running the design in the A2F200 Evaluation Kit Board, use files from the path C:\A2F_AC362_DF\A2F_200. • When you are running the design in the A2F500 Development Kit Board, use files from the path C:\A2F_AC362_DF\A2F_500. • When you regenerate the MSS component from Libero® System-on-Chip (SoC) project, ensure that the following lines commented in SoftConsole project workspace. hw_platform library module: File name: DirectC/dpcom.c Line number 125: //#error Please add code here to get the programming data. Please refer to the Required Source Code Modifications section of the DirectC user's guide. File name: DirectC/dpuser.c Line number 15 : // #include "main.h" Line number 48 ://#error Please modify this function to time delays. Please refer to the Required Source Code Modifications section of the DirectC user's guide. Known Issues The IAP block does not have control over the BSR register and, as a result, Fabric I/Os cannot be set to any logic level or maintain their last known state. When IAP programming is enabled, Fabric I/Os are tristated. Do not attempt any BSR instruction as the result is not predictable. 5 SmartFusion cSoC - Programming FPGA Fabric and eNVM Using IAP Interface Design Overview This application note describes IAP and DirectC and demonstrate the capability of the SmartFusion cSoC device to program the FPGA Fabric and eNVM using the IAP block. Three different solutions for programming the FPGA Fabric and eNVM are presented: "Solution 1: Programming FPGA Fabric/eNVM Directly from Host PC Using UART" "Solution 2: Programming FPGA Fabric Directly from Host PC Using Ethernet" "Solution 3: Programming FPGA Fabric/eNVM from On-Board SPI Flash" The design examples attached to this application note can be used as a reference to program the FPGA Fabric or eNVM using the IAP interface. A basic understanding of the SmartFusion design flow is assumed. Refer to the SmartFusion Microcontroller Subsystem User’s Guide, Using UART with SmartFusion cSoC and Libero SoC v10.0 User’s Guide to understand the SmartFusion design flow. In the design examples, the programming file for the FPGA Fabric or eNVM can only be from one of the following MSS communication peripherals: • MSS_UART • MSS_SPI • MSS_EMAC The programming data bitstream can be transferred through any of the communication peripherals (UART, SPI, I2C, or EMAC) by the Cortex-M3 processor in packets required to program a single row. DirectC running on the Cortex-M3 processor shifts the programming data bit stream in sets of 128 bits into the IAP block and commands the IAP block through the DirectC and STAPL programming algorithm. Programming error conditions are generated from the programming controller registers and interpreted by the programming algorithm in the firmware application. Design Example The SmartFusion FPGA Fabric or eNVM can be programmed using the IAP interface on the SmartFusion Development Kit Board and SmartFusion Evaluation Kit Board. This design example explains three different solutions: "Solution 1: Programming FPGA Fabric/eNVM Directly from Host PC Using UART" "Solution 2: Programming FPGA Fabric Directly from Host PC Using Ethernet" "Solution 3: Programming FPGA Fabric/eNVM from On-Board SPI Flash" FPGA Fabric The FPGA Fabric can be programmed using one of the following solutions: 6 • "Solution 1: Programming FPGA Fabric/eNVM Directly from Host PC Using UART" uses the UART interface as a medium to transfer the programming file *.dat data when requested by IAP to program the FPGA Fabric. • "Solution 2: Programming FPGA Fabric Directly from Host PC Using Ethernet" uses the EMAC interface as a medium to transfer the programming file *.dat data requested by IAP to program the FPGA Fabric. • "Solution 3: Programming FPGA Fabric/eNVM from On-Board SPI Flash" uses the Ethernet/UART interface as a medium to transfer the programming file *.dat to SPI flash. Later, the programming file is read from SPI flash when requested by DirectC and the IAP block to program the FPGA Fabric. Solution 1: Programming FPGA Fabric/eNVM Directly from Host PC Using UART eNVM The eNVM can be programmed using Solution 1 and Solution 3 only. • "Solution 1: Programming FPGA Fabric/eNVM Directly from Host PC Using UART" uses the UART interface as a medium to transfer the programming file *.dat data when requested by IAP to update eNVM. • "Solution 3: Programming FPGA Fabric/eNVM from On-Board SPI Flash" uses the Ethernet/UART interface as a medium to transfer the programming file *.dat to SPI flash. Later the programming file is read from SPI flash when requested by DirectC and the IAP block to program eNVM. Prior to running these design examples, generate the appropriate hardware and programming file *.dat based on the solution. Hardware Implementation To run the IAP application on the SmartFusion cSoC device, configure the hardware with the required MSS peripherals (UART, SPI, I2C, or EMAC) that need to be enabled. The hardware provided can be used for any of these interfaces except for I2C explained in this document. The default hardware development flow must be followed for programming file generation. To generate the files for DirectC and IAP block programming, follow the appropriate steps given. DirectC (*.dat) File Generation For FPGA Fabric Programming – Create a Libero SoC project with the desired logic in the Fabric. – Using FlashPro, export the programming file as a DirectC file (*.dat), using File > Export > Export Single Programming File. An example DirectC file (*.dat) that causes LEDs to blink in different fashions is provided with the design files. For eNVM Programming – Create a Libero SoC project with the eNVM data client – Using FlashPro, export the programming file as a DirectC (*.dat) file For more information about how to create the programming file with the eNVM client, refer to the SmartFusion cSoC: Building the Executable Image in Release mode and Loading into eNVM Tutorial. Solution 1: Programming FPGA Fabric/eNVM Directly from Host PC Using UART Caution: User must implement a failsafe mechanism while performing IAP using this solution. This solution uses the UART interface to load the programming file from the host PC into internal memory (eSRAM) on the target board when requested by the target. This solution allows to program the FPGA Fabric or eNVM from eSRAM using the IAP interface. The following steps are required for programming the FPGA Fabric or eNVM directly from the host PC using UART. On the Host PC 1. Initialize the UART interface on the host PC with a baud rate that matches the UART baud rate for the image running on the target. 2. Perform the handshake with the target UART (SmartFusion Development Kit Board or SmartFusion Evaluation Kit Board). 7 SmartFusion cSoC - Programming FPGA Fabric and eNVM Using IAP Interface 3. Send the programming Action code command to initialize IAP programming. The Action code command for programming the FPGA Fabric Array is 9; for programming eNVM the code is 16. 4. Read the address and number of bytes to be sent from the target UART port. 5. Send the requested amount of data from the requested address to the target. 6. Step 4 and Step 5 continue till IAP on the target completes programming FPGA Fabric or eNVM with the programming file (*.dat). Once IAP completes programming FPGA Fabric or eNVM, Step 4 and Step 5 continue till IAP completes verification. On the Target 1. Initialize the UART on the target (SmartFusion Development Kit Board or SmartFusion Evaluation Kit Board) with a baud rate that matches the UART baud rate that the host tool (Memory Loader) is running on host PC. 2. Perform the handshake with the host UART. 3. Read the programming Action code command from host PC UART port into eSRAM to initialize the IAP. 4. Send the address and number of bytes to be read from the host PC UART. The host PC responds with the requested data from the requested address. 5. Receive all the data from the host PC that has been requested by the target. 6. Step 4 and Step 5 continue till DirectC completes programming of the FPGA Fabric or eNVM with the programming file (*.dat) from the host PC. Once DirectC completes programming of the FPGA Fabric or eNVM, Step 4 and Step 5 continue till DirectC completes verification. 8 Solution 1: Programming FPGA Fabric/eNVM Directly from Host PC Using UART Figure 4 illustrates programming the FPGA Fabric or eNVM directly from the host PC. Host Loader Start Start SmartFusion UART Initialization Handshaking with Host UART Is Handshaking OK? Host PC UART Initialization Handshaking with Target UART No Is Handshaking OK? Yes No Yes Read Programming Action code command from the Host PC UART into the local buffer for future use for IAP to program FPGA/eNVM. Read Address and requested number of bytes from Target UART. Send address and number of bytes to read data from the *.dat file into internal memory for IAP. Send requested number of bytes at the specified address from the *.dat file to load into the Target Internal Memory. Read the programming data from PC UART into Internal Memory. Send Programming Action code command (9 for programming FPGA fabric, 16 for programming eNVM) to the Target for IAP. IAP Programs and verifies FPGA/eNVM. Done Done Figure 4 • Programming FPGA Directly from Host PC Using UART The Libero SoC project and SoftConsole project are provided in the design files attached associated with this design example (refer to "Appendix A – Design Files" on page 28). The provided SoftConsole project design files are for running only in debug mode. Refer to the SmartFusion cSoC: Building Executable Image in Release Mode and Loading into eNVM Tutorial to understand how to create the design files for running in Release mode to program FPGA Fabric. Refer to the SmartFusion cSoC: Basic Bootloader and Field Upgrade eNVM Through IAP Interface application note for running in Release mode to update eNVM. For Hardware implementation, refer to the "Hardware Implementation" section on page 7. Macro Settings In this solution, designer must not output debug messages in the code, as the same UART port is used for transferring the programming file from the host. There will be a conflict with the incoming and output debug messages on the same UART port which leads to interruption in communication and stalls the IAP. To avoid conflict with the UART port, the following must be commented in the DirectC/dpuser.h file to receive the programming file from the host when requested by IAP. #define ENABLE_DEBUG 9 SmartFusion cSoC - Programming FPGA Fabric and eNVM Using IAP Interface Board Settings The design example works on the SmartFusion Development Kit Board and SmartFusion Evaluation Kit Board with default board settings. For default board settings, refer to the SmartFusion Development Kit User’s Guide and SmartFusion Evaluation Kit User’s Guide. Running the Design The design files provided for "Solution 1: Programming FPGA Fabric/eNVM Directly from Host PC Using UART" section on page 7 are compatible with the SmartFusion Development Kit Board and SmartFusion Evaluation Kit Board. Refer to these files to evaluate the IAP feature in the SmartFusion cSoC device. To program the FPGA Fabric, program the SmartFusion Development Kit Board or SmartFusion Evaluation Kit Board with the appropriate hardware design files available at: \Programming_FPGAFabric\SmartFusion_IAP ("Appendix A – Design Files" on page 28) using FlashPro, and then power cycle the board. To program the eNVM, program the SmartFusion Development Kit Board or SmartFusion Evaluation Kit Board with the appropriate hardware design files available at: \Programming_eNVM\SmartFusion_IAP_HW ("Appendix A – Design Files" on page 28) using FlashPro, and then power cycle the board. On the Target To program the FPGA Fabric, invoke the SoftConsole IDE, double-click Write Application Code under Develop Firmware in the Libero SoC design flow window. Refer to "Appendix A – Design Files" on page 28 for more information. Select the IAP_UART_From_HostPC project and launch the debugger. To program eNVM, invoke the SoftConsole IDE, double-click Write Application Code under Develop Firmware in the Libero SoC design flow window. Refer to "Appendix A – Design Files" on page 28 for more information. Select the IAP_UART_From_HostPC project and launch the debugger. On the Host PC After running the debugger in the SoftConsole, launch UART Host Memory Loader (A2F_Mem_UARTHost_Loader.exe) at the command prompt. UART Host Memory Loader is an executable program (*.exe) provided in the host tool folder. UART Host Memory Loader program runs on the host and is used to transfer the FPGA Fabric or eNVM programming file (*.dat) from the host to the board. Verify that the UART COM port is not used by any other application, such as HyperTerminal or PuTTY. The UART Host Memory Loader tool needs to be initiated at the command prompt. Open a command prompt window in the host PC and change to the directory where the host tool is located: \Programming_FPGAFabric\SmartFusion_IAP\SoftConsole\MSS_IAP_MSS_CM3_0\UART_HostPC\ho st_tool. Refer to "Appendix A – Design Files" on page 28 for Solution 1. 10 Solution 1: Programming FPGA Fabric/eNVM Directly from Host PC Using UART Type A2F_Mem_UARTHost_Loader.exe at the command prompt with the filename.dat and uart com port #. Figure 5 shows the UART Host Memory Loader (A2F_Mem_UARTHost_Loader) help for programming the FPGA Fabric. Figure 5 • Launching UART Host Memory Loader on Host PC Figure 6 shows the debug messages while programming the FPGA Fabric. Figure 6 • Debug Messages After Running the UART Host Memory Loader on Host PC Observe the blinking LED sequence on the SmartFusion Development Kit Board or SmartFusion Evaluation Kit Board for the *.dat file that is launched on the command prompt. There will be a change in the running LED sequence providing a visual verification that the SmartFusion cSoC device has been reprogrammed. For the Solution 1 of programming eNVM, the host tool is located at: \Programming_eNVM\SmartFusion_IAP_HW\SoftConsole\MSS_IAP_MSS_CM3_0\UART_HostPC. Browse to this directory to launch the UART Host memory loader (A2F_Mem_UARTHost_Loader.exe) at the command prompt. Note: The host tool, UART Host memory loader, is different for Solution 1 of programming eNVM and Solution 1 of programming FPGA Fabric. 11 SmartFusion cSoC - Programming FPGA Fabric and eNVM Using IAP Interface Figure 7 shows the debug messages while programming the eNVM. Figure 7 • Debug Messages while Programming eNVM In programming the eNVM, restart the board to see the message on the OLED for the *.dat file that is launched at the command prompt. "ENVM PROGRAMMING SUCCESSFUL” message is displayed on the OLED of the SmartFusion cSoC development board. The LEDs on the SmartFusion cSoC Evaluation Board blink. This is visual evidence that the eNVM has been programmed. Solution 2: Programming FPGA Fabric Directly from Host PC Using Ethernet Caution: User must implement a failsafe mechanism while performing IAP using this solution. This solution uses Ethernet to load the programming file from the host PC into internal memory (eSRAM) on the target board when requested by the target. The design files provided for this solution support only programming of the FPGA Fabric. Programming eNVM is not supported as the image used to program eNVM does not fit into internal memory (eSRAM). The image includes code for the TCP/IP stack, IAP, and DirectC. The following steps are required for programming the FPGA Fabric directly from the host PC. On the Host PC 1. On the host PC, initialize the socket connection with the dynamic IP address produced by the target to establish the connection for communication between the target board and host PC. 2. Read the address and number of bytes from the network that have been sent by the target and transfer the requested data over the network. 3. Step 2 continues till IAP on the target completes programming FPGA Fabric with the programming file (*.dat). Once IAP completes programming the FPGA Fabric, Step 2 continues till IAP completes verification. On the Target 1. On the target, initialize the EMAC and TCP/IP stack. This initialization produces dynamic IP for communication with the host PC. 2. Send the address and number of bytes over the network to read the *.dat file from the host PC. 3. Read the programming data from the EMAC interface on the target board that has been sent by the host PC over the network in the form of packets. 12 Solution 2: Programming FPGA Fabric Directly from Host PC Using Ethernet 4. Step 2 and Step 3 continue till IAP completes programming of the FPGA Fabric with the programming, (*.dat) file from the host. Once IAP completes programming of the FPGA Fabric, Step 2 and Step 3 continue till IAP completes verification. Figure 8 illustrates programming the FPGA Fabric directly from the host PC using Ethernet. Start Host loader Initialize MAC and TCP/IP Start I/P command received? Initialize the socket connection and establish communication with the target. Send the address and number of bytes over the network to read data from the programming file. Read the address and requested number of bytes from the network. Read the Programming data from network into internal memory on the target. Send requested bytes of data from the requested address from the programming file (*.dat) over the network. IAP Programs and verifies the FPGA fabric. End End Figure 8 • Programming FPGA Directly from Host PC Using Ethernet The Libero SoC project is provided in the design files attached to this design example. Refer to "Appendix A – Design Files" on page 28. The SoftConsole project design files are for running only in debug mode. Refer to the SmartFusion cSoC: Building Executable Image in Release Mode and Loading into eNVM Tutorial to understand how to create the design files for running in Release mode to program FPGA Fabric. For hardware implementation, refer to the "Hardware Implementation" section on page 7. Running the Design The design file provided for "Solution 2: Programming FPGA Fabric Directly from Host PC Using Ethernet" section on page 12 is compatible only with the SmartFusion Development Kit Board, as the 50 MHz clock source for the Ethernet PHY is sourced by an FPGA I/O on the SmartFusion Development Kit Board. Use these files to evaluate the IAP feature in SmartFusion cSoC devices. Program the SmartFusion Development Kit Board with the appropriate hardware design files available at Programming_FPGAFabric\Ethernet_Host_PC_IAP ("Appendix A – Design Files" on page 28) using FlashPro, and then power cycle the board. This solution uses the hardware EMAC and supplied software 13 SmartFusion cSoC - Programming FPGA Fabric and eNVM Using IAP Interface for the uIP TCP/IP stack to transfer the FPGA Fabric programming file (*.dat) through the Ethernet network into internal memory (eSRAM) on the target. Socket application programming is being used on both the target and host PC. TCP/IP manages the requests in the form of packets between the SmartFusion cSoC target and host. Board Setup To demonstrate this solution, rework is required on the SmartFusion Development Kit Board. When DirectC and the IAP block begin to program the FPGA Fabric, the 50 MHz clock provided to the Ethernet PHY module through pin F2 is disconnected, as the FPGA I/Os are tristated or held at predefined or last known state during FPGA programming. Due to this clock loss for Ethernet communications, the IAP program is stalled as the programming file has not been fully downloaded to the SmartFusion cSoC device. The workaround is an external 50 MHz clock source that needs to be fed to MAC_CLK and RMII PHY clock to avoid the communication interruption. The provided solution works only on the SmartFusion Development Kit Board as there is an external 50 MHz clock source available. The following method is a proven solution for routing the external clock to RMII PHY clock (pin number 34) with the SmartFusion Development Kit Board. Route the 50 MHz clock from the 50 MHz oscillator to the RMII PHY. This can be done with a small amount of board rework. Solder a wire from the R45, which is next to the 50 MHz oscillator (Y3), to the resistor R232 Figure 9 shows routing of the 50 MHz clock from the external clock to the RMII PHY clock. Figure 9 • Modified Board For this method, use the following hardware files supplied with the design files in this location: \Programming_FPGAFabric\Ethernet_Host_PC_IAP. Note: When you are designing a system, ensure that you are feeding an external 50 MHz clock to MAC_CLK and RMII PHY. 14 Solution 2: Programming FPGA Fabric Directly from Host PC Using Ethernet Figure 10 illustrates the Ethernet clocking scheme for a system with IAP. FPGA Fabric 10/100 Ethernet MAC TXD Ethernet PHY MSS MAC_CLK RXD PHY Clock 50 MHz 39 Ohms External Clock 39 Ohms Figure 10 • Ethernet Clocking Scheme for a System with IAP On the Target To program the FPGA Fabric, invoke the SoftConsole IDE, double-click Write Application Code under Develop Firmware in the Libero SoC design flow window. See "Appendix A – Design Files" on page 28 for more information. Select the project Ethernet_From_HostPC_IAP and launch the debugger. On the Host PC Start a HyperTerminal session with a 57600 baud rate, 8 data bits, 1 stop bit, no parity, and no flow control. If the computer does not have the HyperTerminal program, use any free serial terminal emulation program, such as PuTTY or Tera Term. Refer to the Configuring Serial Terminal Emulation Programs tutorial for configuring HyperTerminal, Tera Term, or PuTTY. When you run the debugger in SoftConsole, the application starts printing the target IP address on HyperTerminal. Figure 11 shows HyperTerminal with the dynamic IP address and IAP options. Figure 11 • HyperTerminal with Dynamic IP Address and IAP Options 15 SmartFusion cSoC - Programming FPGA Fabric and eNVM Using IAP Interface After running the debugger in SoftConsole, launch the Ethernet Host Memory Loader (A2F_Mem_EthernetHost_Loader.exe) with the required input parameters on the command prompt, as shown in Figure 12. Ethernet Host Memory loader is an executable program (*.exe) provided in the host tool folder. It runs on the host to establish socket communication between the target and host PC to transfer the FPGA Fabric programming file (*.dat) over network to the target. Open a command prompt window in the host PC and change to the directory where the host tool is located: \Programming_FPGAFabric\Ethernet_Host_PC_IAP\SoftConsole\Ethernet_IAP_MSS_CM3_0\hostTool. Refer to "Appendix A – Design Files" on page 28. Type A2F_Mem_EthernetHost_Loader.exe. Help on how to run the Ethernet Host Memory loader is printed. Figure 12 shows the Ethernet Host Memory Loader (A2F_Mem_EthernetHost_Loader) help for programming the FPGA Fabric. Figure 12 • Launching Ethernet Host Memory Loader After launching the Ethernet Host Memory Loader, choose option 09 in HyperTerminal to program the FPGA Fabric, as shown in Figure 13. Figure 13 • HyperTerminal After Choosing Option 09 for Programming FPGA Fabric 16 Solution 3: Programming FPGA Fabric/eNVM from On-Board SPI Flash The debug messages are printed during the FPGA Fabric programming, as shown in Figure 14. Figure 14 • Debug Messages while Programming FPGA Fabric Observe the blinking LED sequence on the SmartFusion cSoC board for the *.dat file that is launched on the command prompt. There is a change in the running LED sequence. This is visual evidence of the new design that has been programmed into the FPGA Fabric. Solution 3: Programming FPGA Fabric/eNVM from On-Board SPI Flash Caution: User must implement a failsafe mechanism while performing IAP using this solution. This solution uses SPI flash to load the complete programming file (*.dat) into the SPI flash. The software application reads the programming file (*.dat) from the on-board SPI flash into internal memory (eSRAM) to program the FPGA Fabric or eNVM. This solution consists of two steps. Step 1 of the solution is to download the programming file into the external memory. There are 2 options for this step: 1. Using the UART interface, load the FPGA Fabric or the eNVM programming file into an on-board SPI flash with no file system. 2. Using the Ethernet interface, load the FPGA Fabric or the eNVM programming file into an onboard SPI flash file system. Step 2 programs the FPGA Fabric or eNVM using the IAP interface from the on-board SPI utilizing option 1 or 2 from Step 1. Step 1: Downloading Programming File Option1: Using UART Interface 1. Initialize the UART on the host PC with a baud rate that matches the UART baud rate with the image that is running on the target. 2. Perform the handshake with the target UART (SmartFusion Development Kit Board or SmartFusion Evaluation Kit Board). 3. Transfer the programming file to the on-board SPI flash through the SmartFusion cSoC device on the target until the entire file has been transferred to the SPI flash. On the Target 1. Initialize the UART on the target (SmartFusion Development Kit Board or SmartFusion Evaluation Kit Board) with a baud rate that matches the UART baud rate with the host tool (Memory Loader) that is running on the host PC and also initialize the SPI. 17 SmartFusion cSoC - Programming FPGA Fabric and eNVM Using IAP Interface 2. Perform the handshake with the host PC UART. 3. Receive the programming file data from the host PC UART into SPI flash until the entire file has been received. Figure 15 shows loading the FPGA Fabric or eNVM programming file into SPI flash through UART. Target Loader Start Initialization of UART and SPI Host Loader Start Host PC UART Initialization Handshaking with Host UART Is Handshaking OK? No Yes Read the data from PC UART and write into SPI flash. End Handshaking with Target UART Is Handshaking OK? No Yes Send the programming file data to be loaded to the SPI flash. End Figure 15 • SPI Flash Programming through UART Option 2: Using Ethernet TFTP This method allows the user to program the SPI flash file system with an FPGA Fabric file. Programming eNVM is not supported as the image used to program eNVM does not fit into internal memory (eSRAM). The eNVM programming image includes DirectC, IAP, SPI flash drivers, TFTP, lwIP, and the file system code. The following steps are required for loading the programming file from the host PC into the on-board SPI flash file system using TFTP. On the Host PC 1. Run the TFTP client on the host PC to initialize the socket connection with the given IP address that is generated by the TFTP server (target). 2. The programming data file from the host PC is transferred over the network to the SPI flash on the target. On the Target 1. Initialize the EMAC, SPI, lwIP, and the file system on the target board (SmartFusion Development Kit Board or SmartFusion Evaluation Kit Board). 2. Upon receiving the TFTP IP command, receive the whole programming data file from the host PC into the target board SPI flash on which the file system is residing. 18 Solution 3: Programming FPGA Fabric/eNVM from On-Board SPI Flash Figure 16 shows loading the FPGA Fabric programming file into SPI flash through the TFTP protocol. Start TFTP Client Initialization of MAC, SPI, IwIP file system Start IP command received? Start TFTP client to establish communication between target and host Read the file from Ethernet interface over the network to program the SPI flash on which the file system is residing Use the Put command to send the programming file (*.dat) over the network End End Figure 16 • Programming SPI Flash through TFTP Protocol Step 2: Programming the FPGA Fabric or eNVM For programming the FPGA Fabric, the IAP interface is used to program the FPGA Fabric with the programming file (*.dat) that is residing in the on-board SPI flash file system on the target board. Once IAP completes programming FPGA Fabric, IAP does verification of the programmed data with the source. For programming the eNVM, the IAP interface is used to program the eNVM with the programming file (*.dat) that is residing in on-board SPI flash with no file system present. Once IAP completes programming the eNVM, IAP does verification of the programmed data with the source. The Libero SoC project is provided in the design files attached to this design example ("Appendix A – Design Files" on page 28). The SoftConsole project design files are for running only in debug mode. Refer to the SmartFusion cSoC: Building Executable Image in Release Mode and Loading into eNVM Tutorial to understand how to create the design files for running in releasing mode. For Hardware implementation, refer to the "Hardware Implementation" section on page 7. Macro Settings The following Macros are valid only for "Solution 3: Programming FPGA Fabric/eNVM from On-Board SPI Flash". They must be enabled/disabled in the SPI flash API file (BSP\bsp_config.h) to enable the appropriate board. The design example works with both SmartFusion Development Kit Board and SmartFusion Evaluation Kit Board. 1. #define SPI_FLASH_ON_SF_DEV_KIT 1: This Macro enables the SPI flash driver software for the SmartFusion Development Kit Board. 2. #define SPI_FLASH_ON_SF_EVAL_KIT 1: This Macro enables the SPI flash driver software for the SmartFusion Evaluation Kit Board. Comment the Macro based on the board used to run this example. 19 SmartFusion cSoC - Programming FPGA Fabric and eNVM Using IAP Interface Board Settings The design example is made to be working on the SmartFusion Development Kit Board and SmartFusion Evaluation Kit Board with default board settings. For default board settings, refer to the SmartFusion Development Kit User’s Guide and SmartFusion Evaluation Kit User’s Guide. Running the Design The design files provided for Solution 3 are compatible with the SmartFusion Development Kit Board and SmartFusion Evaluation Kit Board. Use these files to evaluate the IAP feature in the SmartFusion cSoC. To program FPGA Fabric, program the SmartFusion Development Kit Board or SmartFusion Evaluation Kit Board with the appropriate hardware design files available at: \Programming_FPGAFabric\SmartFusion_IAP ("Appendix A – Design Files" on page 28) using FlashPro, and then power cycle the board. To program the eNVM, program the SmartFusion Development Kit Board or SmartFusion Evaluation Kit Board with the appropriate hardware design files available at: \Programming_eNVM\SmartFusion_IAP_HW ("Appendix A – Design Files" on page 28) using FlashPro, and then power cycle the board. This solution consists of two steps: • The first step is loading the SPI flash with the FPGA Fabric or eNVM programming file from the host PC. • The second step is to program the FPGA Fabric or eNVM with the programming file (*.dat) that is residing in on-board SPI flash. Step 1 Load the SPI flash with the FPGA Fabric/NVM programming file from the host PC. This can be done by two methods: using the UART interface or using the Ethernet TFTP protocol. Using the UART Interface This method allows programming of both FPGA Fabric and eNVM files into SPI flash. To program the FPGA Fabric, invoke the SoftConsole IDE, double-click Write Application Code under Develop Firmware in the Libero SoC design flow window. Refer to the "Appendix A – Design Files" on page 28 for more information. Select the project UART_SPIFlashLoad and launch the debugger. To program the eNVM, invoke the SoftConsole IDE, double-click Write Application Code under Develop Firmware in the Libero SoC design flow window. Refer to the "Appendix A – Design Files" on page 28 for more information. Select the project SPIFlashLoad_UART and launch the debugger. After running the debugger in SoftConsole, launch the SPI Flash Memory Loader (A2F_Mem_SPIFlash_Loader.exe) at the command prompt. Open a command prompt window in the host PC and change to the directory where the host tool is located: \Programming_FPGAFabric\SmartFusion_IAP\SoftConsole\MSS_IAP_MSS_CM3_0\SPI_FLASH\IAP_ with_UART_SPIFLASH\host_tool. Type A2F_Mem_SPIFlash_Loader.exe; help on how to run the SPI Flash Memory Loader is printed. 20 Solution 3: Programming FPGA Fabric/eNVM from On-Board SPI Flash Figure 17 shows the SPI Flash Memory Loader (A2F_Mem_SPIFlash_Loader) help for programming the FPGA Fabric. Figure 17 • Launching SPI Flash Memory Loader Figure 18 shows the debug messages while programming SPI flash. Figure 18 • Debug Messages while Programming SPI Flash When programming eNVM, open a command prompt window in the host PC and change to the directory where the host tool is located: \Programming_eNVM\SmartFusion_IAP_HW\SoftConsole\MSS_IAP_MSS_CM3_0\IAP_with_UART_S PIFLASH\host_tool. Launch the SPI Flash Memory Loader (A2F_Mem_SPIFlash_Loader.exe) at the command prompt. Note: The host tool, SPI Flash Memory Loader, is different for Solution 3 of programming eNVM and for Solution 3 of programming FPGA Fabric. Using Ethernet TFTP This section describes using the Ethernet TFTP protocol to get the FPGA Fabric programming file from the remote PC or local PC and programming the SPI flash. The TFTP server on the target, which includes a hardware EMAC, lwIP, and the file system on the storage area (SPI flash) allows file transfer capability to-and-from the storage area file system resident on the target board to the host PC. The TFTP server generates a dynamic IP address which can be used to establish communication with the TFTP client running on the host PC. TFTP clients can transfer data remotely over the network from anywhere to the target. 21 SmartFusion cSoC - Programming FPGA Fabric and eNVM Using IAP Interface To program the FPGA Fabric, invoke the SoftConsole IDE, double-click Write Application Code under Develop Firmware in the Libero SoC design flow window. Refer to "Appendix A – Design Files" on page 28 for more information. Select the project Ethernet_SPIFlashLoad and launch the debugger. When you run the debugger in SoftConsole, the application prints the IP address on HyperTerminal, as shown in Figure 19. Figure 19 • HyperTerminal with Dynamic IP After entering any key, the play menu of the SmartFusion cSoC device is displayed. Figure 20 shows the menu with two options. 1. TFTP 2. FatFs Figure 20 • HyperTerminal with TFTP and FatFs Options 22 Solution 3: Programming FPGA Fabric/eNVM from On-Board SPI Flash Choose option 1 to display the usage command on the host PC for TFTP. Figure 21 shows the usage command for TFTP after choosing option 1. Figure 21 • HyperTerminal with TFTP Usage Command Enter any command to show the main menu. Choose option 2 to see the file system commands. Figure 22 shows the supported file system commands after choosing option 2. Figure 22 • HyperTerminal with FatFs Commands After running the debugger in SoftConsole, launch the TFTP client at the command prompt. TFTP client must be enabled if it is disabled in the host PC. The file system on the storage area resident on the target board allows the transfer of multiple files to-and-from the storage area. 23 SmartFusion cSoC - Programming FPGA Fabric and eNVM Using IAP Interface Figure 23 shows the TFTP client on the host PC. Figure 23 • Launching TFTP Client on Host PC Type the command fl in HyperTerminal to see the list of stored files on the SPI flash present on the target board. Figure 24 shows the list of stored files on the SPI flash. Figure 24 • List of Files Stored on File System in SPI Flash This method allows programming of the SPI flash file system only with the FPGA Fabric file. The eNVM file image, which includes DirectC, IAP, SPI flash drivers, TFTP, lwIP, and file system code, does not fit into the internal memory (eSRAM) to program the eNVM. 24 Solution 3: Programming FPGA Fabric/eNVM from On-Board SPI Flash Step 2 This section demonstrates the IAP interface for programming the FPGA Fabric or eNVM with the onboard SPI flash contents and performing various control interactions with the FPGA Fabric or eNVM using the IAP interface. For programming the FPGA Fabric, stop the debugger in the SoftConsole project and close the current project, UART_SPIFlashLoad/Ethernet_SPIFlashLoad. Select the IAP_UART_prj/IAP_Ethernet_prj project and launch the debugger. For programming the eNVM, stop the debugger in the SoftConsole project and close the current project, SPIFlashLoad_UART. Select the IAP_Program_prj project and launch the debugger. Start a HyperTerminal session with a 57600 baud rate, 8 data bits, 1 stop bit, no parity, and no flow control. If the computer does not have the HyperTerminal program, use any free serial terminal emulation program such as PuTTY or Tera Term. Refer to the Configuring Serial Terminal Emulation Programs tutorial for configuring HyperTerminal, Tera Term, or PuTTY. When you run the debugger in SoftConsole, the application starts printing the IAP programming options on HyperTerminal. Figure 25 shows HyperTerminal with IAP programming options. Figure 25 • Action Menu in HyperTerminal 25 SmartFusion cSoC - Programming FPGA Fabric and eNVM Using IAP Interface Select option 09 (program array) to program the FPGA Fabric array. Figure 26 shows the debug messages when the file system is resident on the on-board SPI flash target board. Figure 26 • Menu After Entering 09 (Program Array) Figure 27 shows the debug messages after choosing one of the stored files for programming the FPGA Fabric using the IAP interface. Figure 27 • Debug Messages During FPGA Fabric Programming For the UART interface method, there is no file system mounted on the SPI flash. The IAP reads the programming file content from the SPI flash into eSRAM when requested by DirectC and the IAP interface. For the TFTP method, the file system is mounted on the SPI flash. IAP reads the programming file content from the SPI flash file system into eSRAM using file I/O operations when requested by the IAP interface. 26 Conclusion After programming the FPGA Fabric, observe the blinking LED sequence on the SmartFusion Development Kit Board or SmartFusion Evaluation Kit Board. There is a change in the running LED sequence. This is visual evidence that the new design has been programmed into the FPGA Fabric. As mentioned above, the eNVM programming is done with no file system mounted on SPI flash and the programming file for the eNVM is loaded into the SPI flash using the UART interface. The design files provided with this application note are used to program the eNVM using the UART interface with no file system, as there is no sufficient internal memory on the target board. Choose option 16 to program the eNVM. Figure 28 shows the debug messages during the programming when no file system is mounted on the SPI flash. After eNVM has been programmed, restart the board to see the message on the OLED for the *.dat file that is launched on the command prompt. "ENVM PROGRAMMING SUCCESSFUL" message is displayed on the OLED of the SmartFusion Development Kit Board. The LEDs on the SmartFusion cSoC Evaluation Kit Board blink. This is visual evidence that the eNVM has been programmed. Figure 28 • Menu After Entering 16 (Program_NVM) Conclusion This application note described IAP and DirectC and demonstrated the capability of a SmartFusion IAP interface in programming the FPGA Fabric and eNVM. Three different solutions are presented for programming the FPGA Fabric and eNVM on the SmartFusion Evaluation Kit Board and SmartFusion Development Kit Board: "Solution 1: Programming FPGA Fabric/eNVM Directly from Host PC Using UART" "Solution 2: Programming FPGA Fabric Directly from Host PC Using Ethernet" "Solution 3: Programming FPGA Fabric/eNVM from On-Board SPI Flash" 27 SmartFusion cSoC - Programming FPGA Fabric and eNVM Using IAP Interface Appendix A – Design Files Download the design files from the Microsemi SoC Products Group website: http://soc.microsemi.com/download/rsc/?f=A2F_AC362_Eval_NOOLED_DF The design file consists of Libero SoC projects and SoftConsole software projects. Refer to the ReadMe.docx file for each solution included in the design file for directory structure and description. 28 List of Changes List of Changes The following table lists critical changes that were made in each revision of the document. Revision* Changes Page Revision 9 (January 2015) Updated the document for SAR 63726. NA Updates made to maintain the style and consistency of the document. NA Revision 8 (January 2013) Added "Board Settings" section under "Solution 1: Programming FPGA Fabric/eNVM Directly from Host PC Using UART" section (SAR 43469). 10 Added "Board Settings" section under "Solution 3: Programming FPGA Fabric/eNVM from On-Board SPI Flash" section (SAR 43469). 20 Modified ’On the Host PC’ under "Solution 1: Programming FPGA Fabric/eNVM Directly from Host PC Using UART" section (SAR 38378). 7 Replaced Figure 5 and Figure 6 (SAR 38378). 11 Replaced Figure 7 (SAR 38378). 12 Modified ’On the Host PC’ under "Solution 2: Programming FPGA Fabric Directly from Host PC Using Ethernet" section (SAR 38378). 12 Replaced Figure 12 (SAR 38378). 16 Replaced Figure 14 (SAR 38378). 17 Modified "Running the Design" under "Solution 3: Programming FPGA Fabric/eNVM from On-Board SPI Flash" section (SAR 38378) 20 Replaced Figure 17 and Figure 18 21 Revision 6 (April 2012) Added "Known Issues" section (SAR 37493). 5 Revision 5 (February 2012) Modified the "Introduction" section (SAR 36681). 1 Modified "DirectC Main Entry Function Call" section (SAR 36681). 3 Modified "Requirements and Recommendations" section (SAR 36681). 5 Removed "zip" extension in the Design files link (SAR 36763). 28 Modified the "Solution 1: Programming FPGA Fabric/eNVM Directly from Host PC Using UART" section (SAR 36009). 10 Modified the "Solution 2: Programming FPGA Fabric Directly from Host PC Using Ethernet" section (SAR 36009). 12 Modified the "Solution 3: Programming FPGA Fabric/eNVM from On-Board SPI Flash" section (SAR 36009). 17 Added section "IAP and DirectC Overview" (SAR 32071). 2 Added section "IAP with Overall System Design" (SAR 32071). 4 Added section "Design Overview" (SAR 32071). 6 Revision 7 (May 2012) Revision 4 (January 2012) Revision 3 (July 2011) Note: *The revision number is located in the part number after the hyphen. The part number is displayed at the bottom of the last page of the document. The digits following the slash indicate the month and year of publication. 29 SmartFusion cSoC - Programming FPGA Fabric and eNVM Using IAP Interface Revision* Changes Page Revision 2 (May 2011) Added Solution 1: Programming FPGA Fabric/eNVM Directly from the Host PC Using UART section on page 3 and Hardware Implementation section on page 4 (SAR - 32071). 7, 4 Revision 1 (March 2011) Added FPGA Fabric and eNVM sub-sections under Design Example on page 4 (SAR - 32071). 4 Added Macro Settings section on page 18 (SAR - 32071). 21 Modified the number ’6’ to ’16’ in Figure 5 (SAR 31182). 4 Note: *The revision number is located in the part number after the hyphen. The part number is displayed at the bottom of the last page of the document. The digits following the slash indicate the month and year of publication. 30 Microsemi Corporation (Nasdaq: MSCC) offers a comprehensive portfolio of semiconductor and system solutions for communications, defense & security, aerospace and industrial markets. Products include high-performance and radiation-hardened analog mixed-signal integrated circuits, FPGAs, SoCs and ASICs; power management products; timing and synchronization devices and precise time solutions, setting the world’s standard for time; voice processing devices; RF solutions; discrete components; security technologies and scalable anti-tamper products; Power-over-Ethernet ICs and midspans; as well as custom design capabilities and services. Microsemi is headquartered in Aliso Viejo, Calif., and has approximately 3,400 employees globally. Learn more at www.microsemi.com. Microsemi Corporate Headquarters One Enterprise, Aliso Viejo, CA 92656 USA Within the USA: +1 (800) 713-4113 Outside the USA: +1 (949) 380-6100 Sales: +1 (949) 380-6136 Fax: +1 (949) 215-4996 E-mail: [email protected] © 2015 Microsemi Corporation. All rights reserved. Microsemi and the Microsemi logo are trademarks of Microsemi Corporation. All other trademarks and service marks are the property of their respective owners. Microsemi makes no warranty, representation, or guarantee regarding the information contained herein or the suitability of its products and services for any particular purpose, nor does Microsemi assume any liability whatsoever arising out of the application or use of any product or circuit. The products sold hereunder and any other products sold by Microsemi have been subject to limited testing and should not be used in conjunction with mission-critical equipment or applications. Any performance specifications are believed to be reliable but are not verified, and Buyer must conduct and complete all performance and other testing of the products, alone and together with, or installed in, any end-products. Buyer shall not rely on any data and performance specifications or parameters provided by Microsemi. It is the Buyer's responsibility to independently determine suitability of any products and to test and verify the same. The information provided by Microsemi hereunder is provided "as is, where is" and with all faults, and the entire risk associated with such information is entirely with the Buyer. Microsemi does not grant, explicitly or implicitly, to any party any patent rights, licenses, or any other IP rights, whether with regard to such information itself or anything described by such information. Information provided in this document is proprietary to Microsemi, and Microsemi reserves the right to make any changes to the information in this document or to any products and services at any time without notice. 51900230-9/01.15