Application Note AC364 SmartFusion cSoC: System Power Optimization Using Low Power Modes Table of Contents Introduction . . . . . . . . . . . . . . FPGA Power Consumption Overview . SmartFusion Power Modes . . . . . . SmartFusion Power System . . . . . Design Description . . . . . . . . . . System Power Optimization . . . . . . Hardware Implementation . . . . . . . Software Implementation . . . . . . . Running the Design . . . . . . . . . . Conclusion . . . . . . . . . . . . . . Appendix A – Design Files . . . . . . List of Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 .2 .3 .4 .6 .7 .8 .9 10 12 12 13 Introduction The SmartFusion® customizable system-on-chip (cSoC) FPGA devices integrate FPGA technology with hardened ARM® Cortex™-M3 processor based microcontroller subsystem (MSS) and programmable high-performance analog blocks built on a low power flash semiconductor process. The MSS consists of hardened blocks, such as a 100 MHz ARM Cortex-M3 processor, peripheral DMA (PDMA), embedded nonvolatile memory (eNVM), embedded SRAM (eSRAM), embedded FlashROM (eFROM), external memory controller (EMC), watchdog timer, the Philips Inter-Integrated Circuit (I2C), serial peripheral interface (SPI), 10/100 Ethernet controller, real-time counter (RTC), GPIO block, fabric interface controller (FIC), in-application programming (IAP), and system registers. The programmable analog block contains the analog compute engine (ACE) and analog front-end (AFE) consisting of ADCs, DACs, active bipolar prescalers (ABPS), comparators, current monitors, and temperature monitors. Power consumption is one of the most significant concerns apart from the design complexity in FPGA-based design today. The concept of achieving the system-on-chip (SoC) functionality in an FPGA cuts down the design complexity, yet power consumption is quickly becoming the most critical issue for the design community. The SmartFusion cSoC reduces the design complexity and exhibits low power characteristics similar to that of an ASIC, making it an ideal choice for power sensitive applications. In the SmartFusion cSoC devices there is no power-on current surge and no high current transition, both of which are common with other types of FPGAs. The SmartFusion cSoC devices also have low dynamic power consumption, provide various methods to control power consumption, and support low power Standby mode, offering further power savings. This application note explains the various methods for controlling the power consumption and low power modes supported by the SmartFusion FPGAs. Refer to the ‘SmartFusion DC and Switching Characteristics’ chapter in the SmartFusion Customizable System-on-Chip (cSoC) datasheet for information on different components contributing to the power consumption in the SmartFusion cSoC devices. The design example provided with this application note demonstrates the implementation of various SmartFusion-based system power optimization methods. February 2012 © 2012 Microsemi Corporation 1 SmartFusion cSoC: System Power Optimization Using Low Power Modes FPGA Power Consumption Overview The power profile of FPGA devices varies depending on the underlying technology used to create the programming element. The power profiles of Microsemi’s flash-based nonvolatile FPGAs more closely resemble those of ASICs and ASSPs than SRAM-based FPGAs. There are four basic power components that contribute to the total system power. They are power-up or in-rush power, configuration power, static power, and dynamic power. In-Rush Power During the start-up stage, the device requires a substantial amount of logic array current for a specific duration in order to ramp up VCC to the correct voltage. This initial high current is called in-rush current, often seen as a power spike. The duration of VCC ramp-up depends on the amount of current available from the power supply. When the VCC supply reaches 90 percent of its value, this initial high current is not required any longer. Configuration Power The configuration power is the power required to configure the device. This phase is typically required only for SRAM-based FPGAs where the configuration data for the device is stored in an external nonvolatile memory such as an EPROM or flash device. During the configuration, the device draws the current to read the routing and look-up table (LUT) configurations from memory into the device. During the initialization, the device draws the current to reset the registers, enable I/O pins, and enter operating mode. Static Power The static power is proportional to the static current that flows when the device is powered up, configured, and is doing nothing, that is, there is no activity at I/Os and clock inputs. Dynamic Power Dynamic power is very sensitive to switched capacitances and primarily routing capacitances. Also, it is a function of operating frequency and switching of capacitive loads such as I/Os, internal gates, registers, clock lines, buffers, and internal memory accesses. The SmartFusion cSoC devices are true flash-based FPGAs that offer low power due to their architecture and interconnect features. The Flash-based FPGAs have only two major power components—static and dynamic; whereas SRAM-based FPGAs have two additional power components—the in-rush power and configuration power. Total Power Consumption of SRAM-based FPGAs = PStatic + PDynamic + PInrush + PConfig Total Power Consumption of SmartFusion FPGAs = PStatic + PDynamic The total power consumption of the SmartFusion cSoC devices can be further reduced by entering into low power modes such as standby mode and time keeping mode. The following sections describe the SmartFusion power modes and how to optimize the system power in the SmartFusion-based systems. 2 SmartFusion Power Modes SmartFusion Power Modes The major contributors to the power consumption in the SmartFusion FPGAs are MSS peripherals, analog peripherals, FPGA tiles, internal clock frequencies, and the number of I/O pins and their standards used in the design. The SmartFusion cSoC devices provide a various methods for controlling the power consumption of the device. These methods include the following: • The sleep mode feature of the Cortex-M3 processor is used to conserve the power. When the Cortex-M3 processor is in sleep mode, it effectively uses the clock gating for the entire processor with the exception of interrupt controller sections. Sleep mode is implemented through the wait for interrupt (WFI) and wait for event (WFE) instructions. • Firmware controlled clock frequency switching by configuring the MSS_CCC and no-glitch MUX (NGMUX). • Firmware controlled reset of MSS peripherals that allows these peripherals to be held in reset mode if they are not in use. • Firmware controlled power-down or power-up of programmable analog blocks. • Power-on control of the 1.5 V internal voltage regulator by the RTC or external signal (PU_N). • Power-off control of the 1.5 V internal voltage regulator by firmware or FPGA logic. You can implement the following power modes based on the above mentioned methods. • SoC mode • Standby mode • Time keeping mode SoC Mode This is the normal mode of operation where both the MSS and the FPGA fabric are operational with the required peripherals. Standby Mode This mode is for the applications that intend to put the device into a low power state. However, the device should be ready to respond to an interrupt that is sourced from the MSS, the FPGA fabric, or the AFE. In Standby mode, the SmartFusion cSoC device is active but the Cortex-M3 processor is in sleep mode, eNVM is held in reset, the main crystal oscillator is disabled and the system is running at a lower frequency clock than what is used to clock the MSS. For example, the low power 32 KHz crystal oscillator can be used to clock the MSS. The peripherals not being used in Standby mode are put into a low power state or power off. In this mode, the embedded SRAM, I/Os, and registers retain their values so that the device can enter and exit this mode without any penalty. 3 SmartFusion cSoC: System Power Optimization Using Low Power Modes Time Keeping Mode In Time keeping mode, the only supply to the SmartFusion cSoC device, which is enabled in the VBAT rail. You can transit to Time keeping mode by having all the supplies turned off other than VBAT. Typically, a lithium ion coin cell is connected to VBAT. The RTC in this mode keeps track of time while the lithium coin cell is still charged. When the VCC33A and the VCCIO supplies are turned on to the SmartFusion cSoC device, the device wakes up on an RTC_MATCH or assertion of PU_N. This mode is used to keep the track of elapsed time in the event of a power outage or in portable devices when you swap out the main battery. Table 1 summarizes the status of the SmartFusion resources in various low power modes. Table 1 • SmartFusion Power Modes SmartFusion Resource SoC Standby Time Keeping MSS Cortex-M3 Processor Active Sleeping Off Peripherals Active Active Off eSRAM Active Active Off eNVM Active Reset Off RTC Active Active Active LPXTAL Active Enable Enable MAINXTAL Active Disable Off FPGA Fabric Active Active Off Active Active Off Memory Controllers Oscillators Programmable Analog Analog Front-End Note: • On-chip RC oscillator is always ON. • Active means that proper voltage and clocks are applied. • Reset means that peripheral is held in reset. • Enable/Disable means that block is powered up but enabled/disabled through firmware control. • Off means that voltage supply is disconnected. SmartFusion Power System The SmartFusion power system consists of separate analog, digital, and I/O bank supply pins, as shown in Figure 2 on page 8. It also includes an internal voltage regulator that can provide a 1.5 V regulated supply for the MSS and FPGA fabric. The SmartFusion cSoC has two voltage domains: 1.5 V domain and 3.3 V domain. The SmartFusion analog circuitry requires clean analog voltages and the remaining digital circuitry requires normal DC voltages. The SmartFusion MSS, fabric and some of the programmable analog, such as the ADCs circuitry, operates on 1.5 V and rest of the analog operates on 3.3 V. 4 SmartFusion Power System VCCFPGAIOB0 CCC CCC VCCFPGAIOB1 VCCFPGAIOB5 FPGA Fabric CCC Power Supply Monitor &Voltage Regulator 1.5V VCCPLL0 Charge Pumps Digital Programming Circuitry MSS_CCC (PLL/CCC) VCCRCOSC 100 MHz RC Oscillator VCCMAINXTAL Main Crystal Oscillator VDDBAT VCCLPXTAL VCC VCC33A VCC33AP VPP JTAG Embedded NVM (eNVM) blocks Battery Switch-over Circuitry & LP 32KHz OSC VJTAG VCCENVM Microcontroller Subsystem (MSS) Embedded SRAM (eSRAM) VCC33A VCCMSSIOB4 VCCMSSIOB2 ABPS Temperature Monitors ADCs DACs Analog Comparators Current Monitors VCC15A Programmable Analog CCC CCC VCC15ADCx VAREFx VCC33ADCx VCC33SDDx 1.5 V DC Analog 1.5 V 3.3 V DC Bank 3 - Analog I/Os Analog 3.3 V Figure 1 • SmartFusion Power System Table 2 on page 6 shows the power supply configuration in three power modes. Refer to the ‘SmartFusion DC and Switching Characteristics’ chapter in the SmartFusion Customizable System-onChip (cSoC) datasheet for recommended voltage ranges specific to each power supply. 5 SmartFusion cSoC: System Power Optimization Using Low Power Modes Table 2 • SmartFusion Power Supplies Configuration Power Supplies SoC Mode Standby Mode Time Keeping Mode VCCFPGAIOBx/VCCMSSIOBx On1 On 0V VCC33A/VCC33ADCx/VCC33AP/VCC33SDDx/ VCCMAINXTAL/VCCLPXTAL 3.3 V 3.3 V 0V VCC/VCCENVM 1.5 V 1.5 V 0V N/A N/A 3.3 V VCCPLLx/VCC15A/VCC15ADCx 1.5 V 1.5 V 0V VCCRCOSC 3.3 V 3.3 V 0V VDDBAT VJTAG 2 N/A N/A 0V 3 VPP N/A N/A 0V VAREFx4 N/A N/A 0V Notes: 1. On indicates proper voltage is applied to I/O banks. 2. If the JTAG interface is neither used nor planned for use, the VJTAG pin together with the TRSTB pin is tied to GND. VCC is required to be powered for JTAG operation; VJTAG alone is insufficient. The VJTAG supply runs at any voltage from 1.5 V to 3.3 V (nominal). 3. The VPP can be left floating during normal operation (not Programming mode). For programming, VPP should be in the 3.3 V ± 5% range. 4. The external voltage reference for ADC. The SmartFusion cSoC devices can be configured to generate a 2.56 V internal reference that can be used by the ADC. When VAREF0 is internally generated, a bypass capacitor must be connected from this pin to ground. The valid range of values that can be supplied to the ADC is 1.0 V to 3.3 V. Design Description The example application uses MSS_UART_0, MSS_CCC, Cortex-M3 processor, RTC, on-chip RC oscillator, eSRAM, and eNVM memory controllers. The MSS is configured to run at a clock frequency of 100 MHz. Most of the SmartFusion MSS functional peripherals can be put in a low power state by using the SmartDesign MSS configurator graphical interface. You can overwrite this configuration using the Cortex-M3 firmware control. The example software shows the real-time clock application implementation and provides the UART-based user interface. The UART-based user interface can be used to enable or disable the SmartFusion cSoC peripherals and to switch between different SmartFusion cSoC low power modes. For example, unused MSS peripherals and analog blocks can be put into a low power state for power saving. You can observe the change in the currents sourced from the 3.3 V and 1.5 V supplies by enabling or disabling the SmartFusion cSoC peripherals or by entering into the low power states. In this application, you can put the system in a low power state by entering into Standby mode using UART-based communication. In Standby mode, the Cortex-M3 processor is in Sleep mode and the system is clocked at 32 KHz frequency from the 32 KHz low power crystal oscillator for power saving. However, the eSRAM and eNVM block should retain their values so the device can exit in Standby mode without any penalty. In Standby mode, an interrupt that is sourced from the MSS peripherals, the fabric, or the analog front-end can switch the system into normal operation. The RTC match from the real-time counter (RTC_MATCH = 1) can wake up the Cortex-M3 processor and other peripherals and the transition to SoC mode begins. The peripherals that are not used in the Standby mode are put into a low power state or powered off. 6 System Power Optimization With reference to the example application, the MSS_UART_0 is not required during the Standby mode. Therefore, MSS_UART_0 can be held in reset before the processor goes into Sleep mode. In some applications where the ACE and AFE are used for voltage, current, or temperature monitoring, you can keep them running continuously to monitor the analog inputs and put the other unused peripherals into reset state. Whenever analog inputs exceed the threshold values, the AFE generates an interrupt that switches the system into SoC mode for normal operation. In the same way, you can implement the system controller in the fabric. The system controller remains active at all times to manage the system critical events (system alerts or alarms, user input such as switch presses, etc.) while the high power consuming blocks in the device such as the processor, MSS peripherals, and analog blocks are placed in Sleep or Shutdown mode. An interrupt generated from the fabric logic can switch the system to normal operation. The following sections explain the implementation of the power modes discussed above and methods of optimizing the power consumption. System Power Optimization You can configure and control the major functional blocks according to design requirements to reduce the power consumption, for example, PLLs/CCCs, the Cortex-M3 processor, MSS memory controllers, MSS peripherals, AFE, power supply monitor (PSM), and voltage regulator (VR). To save the power, unused functional blocks are put into reset (low power state) or power off state under firmware control by the Cortex-M3 processor using control registers. The control registers for the SmartFusion cSoC functional blocks are located in the system registers address space starting at 0xE0042000 and extend to address 0xE0042FFF in the Cortex-M3 processor memory map. The peripherals that are not used are put into low power state by asserting their individual resets in the SOFT_RST_CR register. Analog blocks that are not used can be powered off using registers ANA_COMM_CTRL and ADCx_MISC_CTRL where x equals 0, 1, or 2, indicating which ADC to power down. Refer to the SmartFusion Microcontroller Subsystem (MSS) User’s Guide and SmartFusion Programmable Analog User’s Guide for available system control registers and corresponding bit definitions. If the Cortex-M3 processor wake-up time is not a restriction then you can switch the MSS clock input from the on-chip RC oscillator or main crystal oscillator to a slow clock source such as low power 32 kHz oscillator to save the power. The main crystal oscillator can be disabled by the Cortex-M3 processor via the MSS_CCC_MUX_CR, bit 29 MAINOSCEN. When the main crystal oscillator is not in use, the MAINXIN and MAINXOUT pins can be left floating. It is important to note that the on-chip RC oscillator is always turned on. For safe clock switching methods, refer to the PLLs, Clock Conditioning Circuitry, and On-chip Crystal Oscillators chapter of the SmartFusion Microcontroller Subsystem (MSS) User’s Guide. The total power consumption in the SmartFusion cSoC device comes from 3.3 V and 1.5 V power rails. The MSS block and fabric blocks are powered from the 1.5 V power rail and all the analog circuitry and eNVM blocks are powered from the 3.3 V power rail. Total power consumption = (1.5 x I1.5 V + 3.3 x I3.3 V) Watts Here I1.5 V and I3.3 V are currents drawn from 1.5 V and 3.3 V sources. On the SmartFusion Development Kit Board, the total power consumed by the system can be measured by measuring the current drawn from 3.3 V supply and 1.5 V internal or external regulator using JP2 and JP6 jumpers respectively. The SmartFusion cSoC devices have an internal voltage regulator which is powered from the 3.3 V supply and produces 1.5 V regulated output, which can be used as a supply to the MSS and FPGA fabric. If an existing external 1.5 V voltage regulator rail is already available in the system, you can use that to power the 1.5 V rail and switch off the internal voltage regulator to save the power. The PSM provides reference voltages for the analog-to-digital converter (ADC) and the eNVM. The RTC runs on a 3.3 V analog supply. The RTC is an APB_0 slave that provides a counter as well as a MATCH output signal that can be used to interrupt the Cortex-M3 processor and power up the on-chip 1.5 V voltage regulator. An on-chip 32 kHz oscillator provides the clock source for the RTC. Apart from the turn-on instruction from the RTC, the 1.5 V internal voltage regulator can be turned on by a low signal on the external pin PU_N or by JTAG being active; that is TRSTB = 1 or the PUPO signal from the VR Initialization (VR Init) block. 7 SmartFusion cSoC: System Power Optimization Using Low Power Modes The SmartFusion cSoC devices have an input for an external battery source that allows both the RTC and the low power crystal oscillator to function when the 3.3 V rail supply has been removed. The battery switching circuit automatically powers the RTC and the low power crystal oscillator from the battery whenever the battery voltage is approximately 0.4 V or more than the VCCLPXTL pin voltage. Hardware Implementation This section explains the hardware configuration required to run the example software application. Create a new project using Microsemi Libero® System-on-Chip (SoC) and configure the MSS peripherals using the SmartDesign MSS configurator. In this design example, MSS_UART_0 is used for UART communication and the on-chip RC oscillator is used to source the 100 MHz MSS frequency. The external 1.5 V voltage regulator is used to supply power to the 1.5 V power rail. You can also configure the MSS peripherals using the example software application that is supplied. Note: The internal 1.5 V voltage regulator output at power-up time can be set to ON using the MSS configurator, as shown in Figure 2. If the voltage regulator output at power-up time is set to OFF, power up the internal voltage regulator for system operation using external pin PU_N, which is available as a switch (SW7) on the SmartFusion Development Kit Board. Figure 2 • Voltage Regulator Output Configuration In the example hardware project, all the MSS peripherals are enabled and the internal voltage regulator output at power-up is set to ON. These peripherals are controlled through the example software application for power consumption demonstration purposes. Refer to the Using UART with SmartFusion: Libero SoC Flow Tutorial to understand the SmartFusion hardware and software design flow. 8 Software Implementation Software Implementation The example software design includes a real-time clock application program that establishes the UART-based serial communication with serial terminal emulation programs such as HyperTerminal for clock time display and system power management. This application provides a UART-based user interface to set the time, enable or disable functional blocks, and to switch between different power modes. In the example software code, RTC is configured in Free running mode (no reset on RTC MATCH) to interrupt the Cortex-M3 processor and enable the internal voltage regulator on RTC MATCH. The application displays the RTC count in real-time counter format (Hr:Min:Sec) through the UART. You can set the RTC time through the UART interface. While the clock is running in the background, you can use the firmware to put the unused SmartFusion cSoC peripherals in a reset or powered down state and the system in low power modes such as Standby or Time keeping. In the example application, a top-level menu function (top_level_menu()) is implemented for the following tasks: 1. To set the new clock time 2. To configure the SmartFusion cSoC internal peripherals 3. To put the system into Standby mode 4. To put the system into Timekeeping mode The function config_smartfusion() enables or disables the SmartFusion cSoC internal functional blocks by setting appropriate bits in the system control registers, such as SOFT_RST_CR, ANA_COMM_CTRL, and ADCx_MISC_CTRL. The following snippet shows the functions used for the MSS and analog peripherals control. /* SmartFusion MSS peripherals enable/disable control function */ void peripheral_control( uint8_t User_Input_This_Selection, uint32_t Peripheral_Enable, uint32_t Peripheral_Disable ) { uint32_t i; const uint32_t RETAIN_MSS_CONFIG = 0xFFFFFFFF; if(User_Input_This_Selection == '1') { SYSREG->SOFT_RST_CR&= Peripheral_Enable; } else if(User_Input_This_Selection == '0') { SYSREG->SOFT_RST_CR|= Peripheral_Disable; } else{ SYSREG->SOFT_RST_CR&= RETAIN_MSS_CONFIG; } } /* SmartFusion Analog Front-End control function */ void AnalogPowerDown(uint8_t Analog_Pwr_Selection) { uint32_t i; const uint32_t RETAIN_MSS_CONFIG = 0xFFFFFFFF; if(Analog_Pwr_Selection == '1') { ACE->ANA_COMM_CTRL&= ANALOG_PWRDN; } else if(Analog_Pwr_Selection == '0') { ACE->ANA_COMM_CTRL|= ANALOG_PWRUP; } else{ ACE->ANA_COMM_CTRL&= RETAIN_MSS_CONFIG; } } The example software takes the user input through the UART interface for controlling the SmartFusion cSoC peripherals. 9 SmartFusion cSoC: System Power Optimization Using Low Power Modes Before putting the system in Standby mode, the given application calls the function config_smartfusion() to disable the unused peripherals for power saving. The function standbymode_menu() sets the RTC MATCH count based on user input and puts the Cortex-M3 processor in Sleep mode by executing the wait for interrupt (WFI) assembly instruction. This assembly instruction is implemented in the PutCM3ToSleep() function. While the Cortex-M3 processor is in Sleep mode, the system frequency is reduced to 32 KHz by switching the clock source to 32 KHz low-power crystal oscillator from 100MHz on-chip oscillator. This clock switching is performed by the SwitchMSSClockto32Khz() function. This switching saves the power consumption on both 1.5 V and 3.3 V power rails. /* Cortex-M3 sleep instruction */ void PutCM3ToSleep() { __ASM volatile ("WFI"); } The RTC MATCH event from the RTC interrupts the Cortex-M3 processor NVIC module, which in turn wakes up the Cortex-M3 processor from the Sleep mode. If you want to enable the disabled blocks right away after a Cortex-M3 processor wake-up call, then you must write the functions after the PutCM3ToSleep() function. After the Cortex-M3 processor comes out of Sleep mode, the system frequency is switched back to the original frequency 100 MHz using the SwitchMSSClocktoGLA() function. Now the system resumes the application execution and displays the RTC current time on UART terminal. The function timekeeping_mode() prompts you to ensure that the battery is connected on the VBAT rail to enter into Time keeping mode. The example software project provided in the design files is in Debug mode. Refer to the SmartFusion: Building Executable Image in Release Mode and Loading into eNVM Tutorial for generating the application in release mode. A description of the APIs used in the design is as follows: 1. The top_level_menu() function displays the main menu for setting clock time, enabling or disabling the SmartFusion cSoC blocks, and entering the Standby mode or Time keeping mode 2. The display_time() function displays the RTC time on HyperTerminal 3. The set_time_menu() function sets the clock time 4. The config_smartfusion() function enables or disables the SmartFusion cSoC peripherals 5. The enable_disable_peripherals() function accepts the user inputs for enabling or disabling the peripherals 6. The manage_cm3_sleep() function configures the RTC with required RTC MATCH value and puts the Cortex- M3 processor into Sleep mode 7. The analogpowerdown() function accepts the user inputs for enabling or disabling the entire SmartFusion analog block 8. The ADC_control() function accepts the user inputs for enabling or disabling the ADC blocks individually 9. The SCBReset() function puts the signal conditioning block (SCB) in low power state (reset) 10. The SwitchMSSClockto32Khz() function switches the system clock frequency to 32 KHz to save the power. 11. The SwitchMSSClocktoGLA() function switches the system clock frequency back to the frequency configured in the MSS_CCC block (100 MHz) of the MSS configurator. 12. The standby_mode() function puts the system in the Standby mode 13. The timekeeping_mode() function enables entry to the Time keeping mode Running the Design Connect one digital ammeter or multimeter in series with the 3.3 V supply source (across the JP2 jumper), and another one in series with the external voltage regulator supply (across pins 2 and 3 of the JP6 jumper) on the SmartFusion Development Kit Board. 10 Running the Design Start a HyperTerminal session with a baud rate of 57,600, 8 data bits, 1 stop bit, no parity, and no flow control. If your PC 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 the HyperTerminal, Tera Term, or PuTTY. Program the SmartFusion Development Kit Board (A2F500-DEV-KIT) with the provided STP file (refer to the "Appendix A – Design Files" on page 13) using the FlashPro. Disconnect the low cost programmer USB cable and remove jumpers JP11 and JP12. Power cycle the board. The serial terminal emulation program window shows the user interface as shown in Figure 3. Figure 3 • User Interface in HyperTerminal Window Follow the instructions displayed in the serial terminal emulation program. Press any key on the keyboard to display the top-level menu for setting the new clock time, to enable or disable the peripherals, and to enter Standby or Time keeping mode. Observe the ammeter current readings and total system power consumption can be calculated with the following equation: Total power consumption = (1.5 × I1.5 V + 3.3 × I3.3 V) Watts The example software implements a real-time clock application and provides the firmware control of the Cortex-M3 processor, MSS peripherals, programmable analog peripherals, and an internal voltage regulator for system power management. At application startup, the Cortex-M3 processor is active and all the MSS peripherals, memory controllers, programmable analog section and internal voltage regulator are enabled. In the example application, data activity is not happening with any of the MSS and analog peripherals except MSS_UART0. Set the clock time to current time without changing the MSS configuration, keeping the programmable analog section and voltage regulator enabled. Observe the current readings on the 1.5 V rail and 3.3 V rail while the clock time is being displayed on the HyperTerminal. Using the UART-based user interface, put the unused MSS peripherals in reset and put the system into Standby mode. Standby mode puts the Cortex-M3 processor in Sleep mode and reduces the system clock frequency to 32 KHz. You can define the Cortex-M3 procesor’s sleep time through the UART interface. After the Cortex-M3 processor comes out of Sleep mode, the system clock frequency switches back to original frequency for normal operation of the application. Observe the current consumption while the system is on Standby mode. Observe the current consumption by disabling the analog blocks. Table 3 on page 12 shows the current consumption on the 1.5 V rail and 3.3 V rail of a SmartFusion cSoC device with the different configurations. Note: The given readings are observed while the clock time is being displayed on the HyperTerminal except for Standby mode. 11 SmartFusion cSoC: System Power Optimization Using Low Power Modes These measurements are made using an A2F500-DEV-KIT board with an external regulated power supply (Agilent E3631A) to power the 1.5 V rail and an onboard voltage source to power the 3.3 V rail. Two digital multimeters (Agilent 34401A) are used to measure the current consumption. You can use the SmartPower tool available with Libero SoC for power analysis. Note: The power numbers given are to show the relative power saving in different states (custom power modes) for the given example design running on A2F500-DEV-KIT at room temperature. The given values are based on measurements made on a single A2F500-DEV-KIT board. Refer to the ‘SmartFusion DC and Switching Characteristics’ chapter in the SmartFusion Customizable Systemon-Chip (cSoC) datasheet for quiescent supply current values. Table 3 • Power Consumption of the Example Design Design State MSS Cortex-M3 Peripherals Analog Voltage Regulator (VR) I1.5 V (mA) I3.3 V (mA) Power (mW) Startup - SoC mode with VR ON Active Active Enable Enable 57.41 16.40 140.23 MSS peripherals except ACE held in reset and analog section is ON Active Reset except ACE1 Enable Disable 56.50 14.81 133.62 All MSS peripherals except UART_0 are held in reset and the analog section is disabled Active Reset Disable Disable 56.47 13.97 130.80 Cortex-M3 is in sleep mode with MSS peripherals held in reset and the analog section is disabled Sleep Reset Disable Disable 43.60 13.98 111.53 Standby mode2 Cortex-M3 is in sleep mode, MSS peripherals held in reset, analog section disabled and system frequency reduced to 32 KHz Sleep Reset Disable Disable 8.2 2.6 20.88 Notes: 1. Putting the ACE in reset disables the complete analog front-end. 2. By default, the main crystal oscillator is disabled and memory controllers are active since the application is running from eNVM. Conclusion This application note explains various methods for controlling the power consumption and different low power modes supported by the SmartFusion cSoC devices. 12 Appendix A – Design Files Appendix A – Design Files You can download the design files from the Microsemi SoC Products Group website: www.microsemi.com/soc/download/rsc/?f=A2F_AC364_DF. The design file consists of Libero SoC Verilog project, a SoftConsole software project in debug mode, and a programming file (*.STP) for A2F500 device. Refer to the Readme.txt file included in the design file for the directory structure and description. You can download the programming files (*.stp) in release mode from the Microsemi SoC Products Group website: www.microsemi.com/soc/download/rsc/?f=A2F_AC364_PF. The programming zip file consists of STAPL programming file (*.stp) for A2F500-DEV-KIT and a Readme.txt file. List of Changes The following table lists critical changes that were made in each revision of the document. Revision* Changes Revision 3 (February 2012) Removed ".zip" extension in the links (SAR 36763). Revision 2 (January 2012) Modified the section "Running the Design" (SAR 35625). Revision 1 (March 2011) Page 13 Modified the section "Design Description" (SAR 35625). 10 Modified the section "System Power Optimization" (SAR 35625). 6 Modified the section "Hardware Implementation" for Libero v10.0 (SAR 35794). 7 Modified the section "Software Implementation" (SAR 35625). 9 Modified the section "Appendix A – Design Files" (SAR 35794). 13 Modified the section "SmartFusion Power System" (SAR 35974). 4 Modified the section "Design Description" (SAR 35974). 6 Modified the section "Software Implementation" (SAR 35974). 9 Modified the section "Running the Design" (SAR 35974). 10 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. 13 Microsemi Corporation (NASDAQ: MSCC) offers a comprehensive portfolio of semiconductor solutions for: aerospace, defense and security; enterprise and communications; and industrial and alternative energy markets. Products include high-performance, high-reliability analog and RF devices, mixed signal and RF integrated circuits, customizable SoCs, FPGAs, and complete subsystems. Microsemi is headquartered in Aliso Viejo, Calif. Learn more at www.microsemi.com. Microsemi Corporate Headquarters One Enterprise, Aliso Viejo CA 92656 USA Within the USA: +1 (949) 380-6100 Sales: +1 (949) 380-6136 Fax: +1 (949) 215-4996 © 2012 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. 51900232-3/02.12