Processors are one of the most flexible components in an embedded designer’s toolbox. Processor design flexibility has evolved through hardware and software standardization and technology advancements.The reduced instruction set computer (RISC) is arguably one of the most commonly implemented processor architectures.
Popular examples of RISC-based processors include PowerPC, ARM and MIPS. Along with the RISC architecture, robust software tools and high-level programming languages have enabled the use of processors in almost every conceivable type of embedded system.
SRAM-based FPGA flexibility can be further enhanced by embedding processors within the FPGA component. The embedded processor can be implemented as a soft, firm or hard core. Potential benefits associated with implementing a processor within an FPGA include reduced obsolescence, increased design content ownership, and fewer board-level components. Figure 14.1 below illustrates system components which may be able to be implemented within an FPGA.
Figure 14.1 potential FPGA implementation
The implementation of an embedded processor within an FPGA requires many of the same decisions and trade-offs required to implement a discrete processor design. Some of the factors influencing an embedded processor implementation include clear and concrete system requirements, good design methodology, efficient co-design , and proper design partitioning.
There are multiple hardware and software trade-offs that must be completed to implement a processor within an FPGA. Some design considerations include selection of the processor core, selection of the peripherals blocks and IP, processor memory architecture and design element interconnection.
Some software design considerations include informed coding, selection and use of a real-time operating system (RTOS), and device driver development. Both software and hardware tools are critical factors, and every effort should be taken to select the best tools available.
FPGA embedded processor types
FPGA processor cores are IP and can be categorized into the three standard IP types: soft, firm, or hard. Soft cores are processor implementations in an HDL language without extensive optimization for the target architecture. Soft cores typically have lower performance and are less efficient in terms of resource utilization. Firm cores are also HDL implementations but have been optimized for a target FPGA architecture.
Figure 14.2. FPGA hard and soft processor example
Altera’s Nios-II and Xilinx’s MicroBlaze processors are examples of firm processor cores. Hard cores are a fixed-function gate-level IP within the FPGA fabric. Xilinx’s Virtex-II Pro and Virtex-4 405 PowerPC core are examples of a hard processor core. Figure 14.2 above shows a hard and soft processor example.
The following lists present a generalized summary of the advantages and disadvantages for each of the FPGA processor core types (soft, firm and hard).
Soft Core Advantages and Disadvantages
– Generally a much higher level of portability
– Generally most affordable
– More low-cost/free sources due to easier implementation
– Relatively easy to target to specific architectures
– Relatively easy to modify
– Possibility of portability between architectures
– Much lower level of optimization resulting in: lower performance levels, higher resource utilization
– May require more design effort
– Likely less extensive simulation results for specific architectures
– Likely less documentation for specific architectures
– Differences in tool sets used for design implementation can affect results significantly and are not always predictable
Firm Core Advantages and Disadvantages
– Likely well-optimized for targeted architecture
– Relatively easy to modify
– Performance, resource utilization and power consumption information generally well-characterized
– Generally provide a high level of confidence in functionality / performance
– Design already fielded and verified
– Easy to test in target environment
– Access to some level of simulation resources (testbenches and results)
– Some level of documentation available
– Potential access to design expertise
– There are limited incentives for manufacturer-developed firm cores to be highly portable
– Level of documentation, design configurability, simulation support and access to original design team may be variable
– Access to advance design assistance from IP source may be fee-for-service depending on the negotiated terms
Hard Core Advantages and Disadvantages
– Well documented, highly-optimized, high-performance, reliable fixed implementation
– Similar to purchase of a standard IC component
– No delay, immediate access to functionality
– High level of confidence in functionality, known errata
– Measured and well-characterized
– Power consumption
– Generally so highly-optimized and fine tuned, difficult to port to other targets with equivalent performance or at an affordable price point
– Strong incentive for provider to try to strongly tie to their architecture and make it less attractive to port to alternative architectures
– Fixed implementation, unable to modify core implementation or add additional instances if required without switching devices within the family
FPGA processor Use Considerations
Many factors influence the decision to implement the processor functionality of a design within an FPGA. A critical factor affecting FPGA processor implementation is the ability to reuse or port existing baseline code. The design team may have existing investments in software, tool sets and processor architecture familiarity.
It is a common practice for a software team to leverage both knowledge and reuse from design to design. There will need to be compelling technical or cost advantages for switching processor cores when significant changes in software are required.
A common design situation involves migrating an existing design that was implemented with a discrete processor and an FPGA in the same system to an implementation based on a processor embedded within the FPGA.
If the same processor core can be implemented within the FPGA as was implemented in the discrete processor design, significant design leverage can occur. The advantages of implementing an embedded FPGA processor in this situation includes access to existing well-defined functional requirements, well-known processor performance requirements and existing processor architecture.
For example, if the current discrete processor is a PowerPC-based processor, then the FPGA embedded processor may be able to be implemented within a hard core 405 PowerPC within Xilinx’s Virtex family. Even if the FPGA processor core is different from the discrete processor core there may still be adequate justification for switching cores.
A potential reason for switching to an FPGA embedded processor is a need to achieve tighter integration between the software and hardware design elements. An implementation of an FPGA embedded processor may be able to reduce system cost and potentially increase performance. The potential for increased performance is a direct result of being able to optimize the design implementation to meet the specific system requirements with an optimized architecture.
An important potential benefit of implementing a design with an FPGA embedded processor is the ability to reduce risk of obsolescence. Traditionally, discrete processors are subject to end-of-life when the component technology becomes too old or the volume of sales drops below a certain threshold.
With a soft or firm processor implementation within an FPGA, it becomes possible to port designs forward to newer FPGA device families. Several factors will influence the ability to carry designs forward in this manner, however, the potential exists if certain conditions are met.
These factors include ownership of the processor HDL code, a processor architecture that is not dependent on specific FPGA hardware features that may not be available in future FPGA devices and ongoing access to software design tools. An important factor to reducing future obsolescence issues is the inclusion of the FPGA processor HDL source code, licenses and software tool set as part of the permanent system technical baseline. Potential benefits for implementing an FPGA processor are presented in the following list.
FPGA-Based Processor Implementation Advantages
1 – Ability to implement all or most of the system functionality within a single device (consolidation of multiple devices into one device)
2 – Ability to implement a highly-tailored embedded processing solution
3 – Ability to implement only the specific functionality required
4 – Ability to implement a scalable processing solution
5 – The potential for improved system performance
6 – Ability to support design modifications later in the design cycle
7 – Optimization of processor-to-peripheral interfaces
8 – Optimization of software versus hardware functional implementation
9 – Improved interaction between hardware and software design (co-design)
10 – More efficient system interface (incorporating chip-to-chip interfaces on chip)
11 – Potential to use the same hardware for multiple applications (lower inventory costs)
12 – Potential lower implementation cost
13 – Ability to implement custom coprocessors
14 – Ability to implement multiprocessor implementation
15 – Ability to implement state-machine functionality
An FPGA-based processor may not always be an ideal fit. For example, an FPGA processor implementation in applications sourced by a battery may not be an optimal fit for FPGA processor technology depending on power consumption. FPGA power consumption has dropped significantly and will continue to drop, but traditionally lags behind stand-alone discrete processors optimized for low-power applications.
Another situation where an FPGA-based processor might not be an ideal fit is when the processor application requires integrated analog functionality within the FPGA component. In general, the processes used to implement FPGAs are optimized for digital circuitry and do not easily support analog functionality. Thus, integrated analog functionality tends to be limited. Very low-cost products are also an application where FPGA technology may not be an ideal fit.
While process technologies continue to drive FPGA costs lower, microcontroller costs also continue to drop. However, FPGAs may be appropriate for projects with functional requirements not met by available commercial processors.
In certain cases, the system cost reduction that may be achieved by merging multiple components into a single FPGA device still may not support implementation within an FPGA. The best applications for embedded FPGA processors are designs that already include or require FPGA functionality.
Used with permission from Newnes, a division of Elsevier.Copyright 2006, from “Rapid System Prototyping with FPGAs, ” by R.C. Cofer and Ben Harding. For moreinformation about this title and other similar books, please visit www.elsevierdirect.com.
RC Cofer has almost 25 years of embedded design experience, including real time DSP algorithm development, high speed hardware, ASIC and FPGA and project focus. His technical focus is on rapid system development of high speed DSP and FPGA based designs. He holds an MSEE from the University of Florida anda BSEE from Florida Tech.
Ben Harding has a BSEE from the University of Alabama, with post-graduate studies in DSP, control theory, parallel processing and robotics. He has almost 20 years of experience in embedded systems design involving DSPs, network processors and programmable logic.