Recent from talks
Contribute something
Nothing was collected or created yet.
Soft microprocessor
View on Wikipedia
This is missing information about three OpenPOWER cores, one Moxie core, both at RTL level. (July 2020) |
A soft microprocessor (also called softcore microprocessor or a soft processor) is a microprocessor core that can be wholly implemented using logic synthesis. It can be implemented via different semiconductor devices containing programmable logic (e.g., FPGA, CPLD), including both high-end and commodity variations.[1]
Most systems, if they use a soft processor at all, only use a single soft processor. However, a few designers tile as many soft cores onto an FPGA as will fit.[2] In those multi-core systems, rarely used resources can be shared between all the cores in a cluster.
While many people put exactly one soft microprocessor on a FPGA, a sufficiently large FPGA can hold two or more soft microprocessors, resulting in a multi-core processor. The number of soft processors on a single FPGA is limited only by the size of the FPGA.[3] Some people have put dozens or hundreds of soft microprocessors on a single FPGA.[4][5][6][7][8] This is one way to implement massive parallelism in computing and can likewise be applied to in-memory computing.
A soft microprocessor and its surrounding peripherals implemented in a FPGA is less vulnerable to obsolescence than a discrete processor.[9][10][11]
Core comparison
[edit]| Processor | Developer | Open source | Bus support | Notes | Project home | Description language |
|---|---|---|---|---|---|---|
| based on the ARM instruction set architecture | ||||||
| Amber | Conor Santifort | LGPLv2.1 | Wishbone | ARMv2a 3-stage or 5-stage pipeline | Project page at Opencores | Verilog |
| Cortex-M1 | ARM | No | [6] | 70–200 MHz, 32-bit RISC | [7] | Verilog |
| based on the AVR instruction set architecture | ||||||
| Navré | Sébastien Bourdeauducq | Yes | Direct SRAM | Atmel AVR-compatible 8-bit RISC | Project page at Opencores | Verilog |
| pAVR | Doru Cuturela | Yes | Atmel AVR-compatible 8-bit RISC | Project page at Opencores | VHDL | |
| softavrcore | Andras Pal | Yes | Standard AVR buses (core-coupled I/O, synchronous SRAM, synchronous program ROM) | Atmel AVR-compatible 8-bit RISC (up to AVR5), peripherals and SoC features included | Project page at Opencores | Verilog |
| based on the MicroBlaze instruction set architecture | ||||||
| AEMB | Shawn Tan | Yes | Wishbone | MicroBlaze EDK 3.2 compatible | AEMB | Verilog |
| MicroBlaze | Xilinx | No | PLB, OPB, FSL, LMB, AXI4 | Xilinx MicroBlaze | ||
| OpenFire | Virginia Tech CCM Lab | Yes | OPB, FSL | Binary compatible with the MicroBlaze | [8][12] | Verilog |
| SecretBlaze | LIRMM, University of Montpellier / CNRS | Yes | Wishbone | MicroBlaze ISA, VHDL | SecretBlaze | VHDL |
| based on the MCS-51 instruction set architecture | ||||||
| MCL51 | MicroCore Labs | Yes | Ultra-small-footprint microsequencer-based 8051 core | 312 Artix-7 LUTs. Quad-core 8051 version is 1227 LUTs. | MCL51 Core | |
| TSK51/52 | Altium | Royalty-free | Wishbone / Intel 8051 | 8-bit Intel 8051 instruction set compatible, lower clock cycle alternative | Embedded Design on Altium Wiki | |
| based on the MIPS instruction set architecture | ||||||
| BERI | University of Cambridge | BSD | MIPS | Project page | Bluespec | |
| Dossmatik | René Doss | CC BY-NC 3.0, except commercial applicants have to pay a licence fee. | Pipelined bus | MIPS I instruction set pipeline stages | Dossmatik | VHDL |
| TSK3000A | Altium | Royalty-free | Wishbone | 32-bit R3000-style RISC modified Harvard-architecture CPU | Embedded Design on Altium Wiki | |
| based on the PicoBlaze instruction set architecture | ||||||
| PacoBlaze | Pablo Bleyer | Yes | Compatible with the PicoBlaze processors | PacoBlaze | Verilog | |
| PicoBlaze | Xilinx | No | Xilinx PicoBlaze | VHDL, Verilog | ||
| based on the RISC-V instruction set architecture | ||||||
| f32c | University of Zagreb | BSD | AXI, SDRAM, SRAM | 32-bit, RISC-V / MIPS ISA subsets (retargetable), GCC toolchain | f32c | VHDL |
| NEORV32 | Stephan Nolting | BSD | Wishbone b4, AXI4 | rv32[i/e] [m] [a] [c] [b] [u] [Zfinx] [Zicsr] [Zifencei], RISC-V-compliant, CPU & SoC available, highly customizable, GCC toolchain | GitHub OpenCores | VHDL |
| VexRiscv | SpinalHDL | Yes | AXI4 / Avalon | 32-bit, RISC-V, up to 340 MHz on Artix 7. Up to 1.44 DMIPS/MHz. | https://github.com/SpinalHDL/VexRiscv | VHDLVerilog (SpinalHDL) |
| based on the SPARC instruction set architecture | ||||||
| LEON2(-FT) | ESA | Yes | AMBA2 | SPARC V8 | ESA | VHDL |
| LEON3/4 | Aeroflex Gaisler | Yes | AMBA2 | SPARC V8 | Aeroflex Gaisler | VHDL |
| OpenPiton | Princeton Parallel Group | Yes | Manycore SPARC V9 | OpenPiton | Verilog | |
| OpenSPARC T1 | Sun | Yes | 64-bit | OpenSPARC.net | Verilog | |
| Tacus/PIPE5 | TemLib | Yes | Pipelined bus | SPARC V8 | TEMLIB | VHDL |
| based on the x86 instruction set architecture | ||||||
| CPU86 | HT-Lab | Yes | 8088-compatible CPU in VHDL | cpu86 | VHDL | |
| MCL86 | MicroCore Labs | Yes | 8088 BIU provided. Others easy to create. | Cycle accurate 8088/8086 implemented with a microsequencer. Less than 2% utilization of Kintex-7. | MCL86 Core | |
| s80x86 | Jamie Iles | GPLv3 | Custom | 80186-compatible GPLv3 core | s80x86 | SystemVerilog |
| Zet | Zeus Gómez Marmolejo | Yes | Wishbone | x86 PC clone | Zet | Verilog |
| ao486 | Aleksander Osman | 3-Clause BSD | Avalon | i486 SX compatible core | ao486 | Verilog |
| based on the PowerPC/Power instruction set architecture | ||||||
| PowerPC 405S | IBM | No | CoreConnect | 32-bit PowerPC v.2.03 Book E | IBM | Verilog |
| PowerPC 440S | IBM | No | CoreConnect | 32-bit PowerPC v.2.03 Book E | IBM | Verilog |
| PowerPC 470S | IBM | No | CoreConnect | 32-bit PowerPC v.2.05 Book E | IBM | Verilog |
| Microwatt | IBM/OpenPOWER | CC-BY 4.0 | Wishbone | 64-bit PowerISA 3.0 proof of concept | Microwatt @ Github | VHDL |
| Chiselwatt | IBM/OpenPOWER | CC-BY 4.0 | Wishbone | 64-bit PowerISA 3.0 | Chiselwatt @ Github | Chisel |
| Libre-SOC | Libre-SoC.org | BSD/LGPLv2+ | Wishbone | 64-bit PowerISA 3.0. CPU/GPU/VPU implementation and custom vector instructions | Libre-SoC.org | python/nMigen |
| A2I | IBM/OpenPOWER | CC-BY 4.0 | Custom PBus | 64-bit PowerPC 2.6 Book E. In order core | A2I @ Github | VHDL |
| A2O | IBM/OpenPOWER | CC-BY 4.0 | Custom PBus | 64-bit PowerPC 2.7 Book E. Out of order core | A2O @ Github | Verilog |
| Other architectures | ||||||
| ARC | ARC International, Synopsys | No | 16/32/64-bit ISA RISC | DesignWare ARC | Verilog | |
| ERIC5 | Entner Electronics | No | 9-bit RISC, very small size, C-programmable | ERIC5 Archived 2016-03-05 at the Wayback Machine | VHDL | |
| H2 CPU | Richard James Howe | MIT | Custom | 16-bit Stack Machine, designed to execute Forth directly, small | H2 CPU | VHDL |
| Instant SoC | FPGA Cores | No | Custom | 32-bit RISC-V M Extension, SoC defined by C++ | Instant SoC | VHDL |
| JOP | Martin Schoeberl | Yes | SimpCon / Wishbone (extension) | Stack-oriented, hard real-time support, executing Java bytecode directly | Jop | VHDL |
| LatticeMico8 | Lattice | Yes | Wishbone | LatticeMico8 | Verilog | |
| LatticeMico32 | Lattice | Yes | Wishbone | LatticeMico32 | Verilog | |
| LXP32 | Alex Kuznetsov | MIT | Wishbone | 32-bit, 3-stage pipeline, register file based on block RAM | lxp32 | VHDL |
| MCL65 | MicroCore Labs | Yes | Ultra-small-footprint microsequencer-based 6502 core | 252 Spartan-7 LUTs. Clock cycle-exact. | MCL65 Core | |
| MRISC32-A1 | Marcus Geelnard | Yes | Wishbone, B4/pipelined | 32-bit RISC/Vector CPU implementing the MRISC32 ISA | MRISC32 | VHDL |
| NEO430 | Stephan Nolting | Yes | Wishbone (Avalon, AXI4-Lite) | 16-bit MSP430 ISA-compatible, very small size, many peripherals, highly customizable | NEO430 | VHDL |
| Nios, Nios II | Altera | No | Avalon | Altera Nios II | Verilog | |
| OpenRISC | OpenCores | Yes | Wishbone | 32-bit; done in ASIC, Actel, Altera, Xilinx FPGA. | [9] | Verilog |
| SpartanMC | TU Darmstadt / TU Dresden | Yes | Custom (AXI support in development) | 18-bit ISA (GNU Binutils / GCC support in development) | SpartanMC | Verilog |
| SYNPIC12 | Miguel Angel Ajo Pelayo | MIT | PIC12F compatible, program synthesised in gates | nbee.es | VHDL | |
| xr16 | Jan Gray | No | XSOC abstract bus | 16-bit RISC CPU and SoC featured in Circuit Cellar Magazine #116-118 | XSOC/xr16 | Schematic |
| YASEP | Yann Guidon | AGPLv3 | Direct SRAM | 16 or 32 bits, RTL in VHDL & asm in JS, microcontroller subset : ready | yasep.org (Firefox required) | VHDL |
| ZipCPU | Gisselquist Technology | GPLv3 | Wishbone, B4/pipelined | 32-bit CPU targeted for minimal FPGA resource usage | zipcpu.com | Verilog |
| ZPU | Zylin AS | Yes | Wishbone | Stack based CPU, configurable 16/32 bit datapath, eCos support | Zylin CPU | VHDL |
| RISC5 | Niklaus Wirth | Yes | Custom | Running a complete graphical Oberon System including an editor and compiler. Software can be developed and ran on the same FPGA board. | www.projectoberon.com/ | Verilog |
See also
[edit]References
[edit]- ^ Article title "Zet soft core running Windows 3.0" by Andrew Felch 2011
- ^ "Embedded.com - FPGA Architectures from 'A' to 'Z' : Part 2". Archived from the original on 2007-10-08. Retrieved 2012-08-18. "FPGA Architectures from 'A' to 'Z'" by Clive Maxfield 2006
- ^ MicroBlaze Soft Processor: Frequently Asked Questions Archived 2011-10-27 at the Wayback Machine
- ^ István Vassányi. "Implementing processor arrays on FPGAs". 1998. [1]
- ^ Zhoukun WANG and Omar HAMMAMI. "A 24 Processors System on Chip FPGA Design with Network on Chip". [2]
- ^ John Kent. "Micro16 Array - A Simple CPU Array" [3]
- ^ Kit Eaton. "1,000 Core CPU Achieved: Your Future Desktop Will Be a Supercomputer". 2011. [4]
- ^ "Scientists Squeeze Over 1,000 Cores onto One Chip". 2011. [5] Archived 2012-03-05 at the Wayback Machine
- ^ Joe DeLaere. ""Top 7 Reasons to Replace Your Microcontroller with a MAX 10 FPGA"" (PDF).
- ^ John Swan; Tomek Krzyzak. (2008). ""Using FPGAs to avoid microprocessor obsolescence"". Archived from the original on 2016-10-13.
- ^ Staff (2010-02-03). "FPGA processor IP needs to be supported". Electronics Weekly. Retrieved 2019-04-03.
- ^ "Overview :: OpenFire Processor Core :: OpenCores".
External links
[edit]- Soft CPU Cores for FPGA
- Detailed Comparison of 12 Soft Microprocessors
- FPGA CPU News
- Freedom CPU website
- Microprocessor cores on Opencores.org (Expand the "Processor" tab)
- NikTech 32 bit RISC Microprocessor MANIK.
Soft microprocessor
View on GrokipediaFundamentals
Definition and Characteristics
A soft microprocessor, also known as a soft-core processor, is a microprocessor core that is entirely implemented using a hardware description language (HDL) such as VHDL or Verilog, and is targeted for synthesis into programmable logic devices like field-programmable gate arrays (FPGAs) or complex programmable logic devices (CPLDs).[7][8] Unlike traditional microprocessors fabricated with fixed silicon transistors, a soft microprocessor has no predefined hardware layout and is configured post-design through logic synthesis tools that map the HDL code to the target device's resources.[9] This approach allows the processor to be generated as a binary netlist adaptable to various programmable logic architectures without requiring physical silicon modifications.[8] Key characteristics of soft microprocessors include high configurability at the bit and gate level, enabling designers to tailor aspects such as data path widths, instruction sets, and peripheral interfaces to specific requirements.[9] They offer portability across different FPGA families or vendors by relying on synthesizable HDL code rather than device-specific layouts, facilitating reuse in diverse hardware environments.[10] Scalability is another hallmark, as features like pipeline stages, cache sizes, and memory management units can be adjusted during synthesis to balance performance, area, and power consumption on the available logic resources. Recent implementations, such as AMD's MicroBlaze V and Intel's Nios V, leverage RISC-V for better scalability and performance.[11][12][13] Implementation occurs using the target device's fundamental elements, including lookup tables (LUTs) for combinational logic, flip-flops for sequential storage, and programmable interconnects for routing signals between components.[14] Soft microprocessors are distinguished from related concepts like firm cores and hard cores in their level of flexibility and implementation stage. A firm core is a partially fixed design, typically provided as a gate-level netlist optimized for a specific FPGA family but still allowing limited modifications.[15] In contrast, a hard core is pre-wired in silicon as part of an application-specific integrated circuit (ASIC) or system-on-chip (SoC), offering fixed performance but no post-fabrication reconfiguration.[15] Soft cores, being fully synthesizable from HDL source, provide the greatest adaptability but may incur synthesis overheads compared to the more rigid firm and hard variants.[15] At their core, soft microprocessors operate via a classic instruction fetch-decode-execute cycle, adapted to the constraints of programmable logic resources. In the fetch stage, an instruction is retrieved from memory using LUT-based address generation and flip-flop storage for the program counter.[14] The decode stage interprets the opcode and operands through combinational logic implemented in LUTs, potentially generating control signals for execution.[16] Finally, the execute stage performs the operation—such as arithmetic or data movement—leveraging the FPGA's interconnects and dedicated blocks like multipliers, before writing results back if needed, all synchronized by the device's clock domain.[14] This cycle repeats, with pipeline optimizations possible to enhance throughput within the available logic slices.[16]Advantages and Disadvantages
Soft microprocessors offer significant benefits in flexibility and development efficiency, particularly in field-programmable gate array (FPGA) environments, though they come with performance trade-offs compared to dedicated hard microprocessors. These trade-offs arise from the inherent nature of implementing processor logic using reconfigurable FPGA fabric, which prioritizes adaptability over optimized silicon efficiency.[17][18] One key advantage is rapid prototyping and iteration, as soft microprocessors can be synthesized and tested on FPGAs without the high costs associated with application-specific integrated circuit (ASIC) fabrication, enabling quick design modifications and hardware-software co-verification.[19] This approach also facilitates easy customization for specific tasks, such as adding custom instructions or peripherals tailored to an application, which can optimize performance for niche workloads without redesigning the entire system.[20] Additionally, soft microprocessors exhibit high portability across different FPGA vendors and device families, as their register-transfer level (RTL) descriptions can be retargeted with minimal changes, unlike vendor-specific hard cores.[18] For low-volume production, they reduce non-recurring engineering (NRE) costs by avoiding ASIC mask and fabrication expenses, making them economical for markets where volumes do not justify custom silicon.[21] Furthermore, integration with custom hardware accelerators in the same FPGA is seamless, allowing tight coupling via high-speed buses for enhanced system-level performance in heterogeneous designs.[22] Despite these benefits, soft microprocessors suffer from lower clock speeds, typically operating in the 100-600 MHz range on modern FPGAs (as of 2024), compared to GHz frequencies achievable by hard cores due to the overhead of mapping logic to general-purpose lookup tables (LUTs) and routing resources.[23][24][17] They also exhibit higher power consumption per operation from FPGA fabric inefficiencies, such as dynamic switching in configurable logic blocks, though total power may be lower in some low-utilization scenarios.[25] Resource utilization is another limitation, with a basic soft core often consuming 10-50% of an FPGA's LUTs on smaller devices, but much less on larger ones; for instance, an 8-bit core might require 300-2,000 LUTs, while a 32-bit RISC core typically requires 1,000-7,000 LUTs, depending on features like caching and pipelining.[26][27][28] Complex designs may encounter timing closure issues, where achieving target frequencies becomes challenging due to interconnect delays and placement constraints in the FPGA.[25]History
Early Developments
The development of soft microprocessors traces its roots to the invention of the field-programmable gate array (FPGA) in 1985, when Xilinx introduced the XC2064, the world's first commercially viable FPGA featuring 64 configurable logic blocks (CLBs) that enabled reconfigurable digital logic for emulating custom circuits, including early processor designs. This breakthrough shifted computing from fixed hardware to programmable fabrics, laying the groundwork for implementing processor logic on reconfigurable devices, though initial applications focused on glue logic and simple coprocessors using multiple early FPGAs like the XC2000 and XC3000 series.[29] By the late 1980s, these devices supported rudimentary 8-bit minimal instruction set computers (MISCs) across multi-FPGA setups, demonstrating the potential for programmable CPU emulation despite limited resources.[29] A pivotal milestone occurred in 1991 with the RISC4005, the first monolithic general-purpose FPGA-based CPU, designed by Philip Freidin and implemented on a single Xilinx XC4005 device.[29][30] This 16-bit reduced instruction set computer (RISC) processor utilized approximately 75% of the XC4005's resources, operated at 20 MHz with a 4-stage pipeline and 16 registers, and included supporting tools such as an assembler, C compiler, and simulator to facilitate development.[29] The RISC4005 marked a shift toward single-chip soft processor realizations, proving that general-purpose computing could be achieved through FPGA reconfiguration without dedicated silicon.[30] In the early 1990s, academic researchers advanced soft microprocessor concepts through projects implementing simple 8-bit processors using VHDL (VHSIC Hardware Description Language), emphasizing proof-of-concept demonstrations for reconfigurable computing paradigms.[29][31] These efforts, often targeting educational and exploratory goals, explored how FPGA fabrics could support dynamic hardware adaptation for computation, building on the reconfigurability introduced by early devices to validate soft cores as viable alternatives to hardwired processors.[31] Early soft microprocessor designs faced significant challenges due to FPGA density limitations, such as the XC2064's mere 64 CLBs and equivalent of about 800 gates, which constrained implementations to minimalistic architectures lacking features like caches or deep pipelines.[17] Designers overcame these by prioritizing compact instruction sets and basic datapaths, as seen in the RISC4005 and 8-bit MISCs, ensuring functionality within the sparse logic resources available in 1980s and early 1990s FPGAs.[29] This approach highlighted the trade-offs in reconfigurable hardware, where resource scarcity drove innovations in efficient logic mapping.[29]Commercialization and Key Processors
The commercialization of soft microprocessors accelerated in the early 2000s, driven by FPGA vendors seeking to provide configurable processing solutions for embedded applications. In 2000, Altera introduced the Nios processor, the first configurable 16/32-bit soft core optimized for its APEX FPGA family, enabling designers to tailor processor features to specific system requirements without relying on fixed hardware.[32] In 2002, Xilinx launched the MicroBlaze, a 32-bit reduced instruction set computing (RISC) soft core targeted at its Virtex FPGA platform, which supported customizable peripherals and marked a pivotal step toward widespread adoption in programmable logic designs.[33] These offerings shifted soft microprocessors from academic prototypes to commercial IP, fostering integration with FPGA toolchains for rapid system-on-chip development. Subsequent evolutions enhanced scalability and interoperability. Altera's Nios II, released in 2004, introduced full 32-bit architecture with built-in support for multiprocessing configurations, allowing multiple cores to share resources in a single FPGA design.[34] Xilinx advanced the MicroBlaze lineage in the 2010s, with version 8.0 and later iterations incorporating Advanced eXtensible Interface (AXI) bus support for improved data throughput and compatibility with modern ARM-based ecosystems.[35] Open-source alternatives emerged alongside these proprietary cores; the OpenRISC project, initiated in 2000, provided a freely available 32-bit RISC architecture suitable for FPGA implementation, promoting community-driven customization.[36] Similarly, Gaisler Research's LEON series, developed in the late 1990s and refined through the 2000s, offered SPARC V8-based soft cores with fault-tolerant features, initially for European Space Agency applications but later adopted in broader embedded contexts.[37] Vendor-specific enhancements further differentiated these processors. Intel (formerly Altera) emphasized ease-of-use in its Nios family through tight integration with the Quartus Prime software suite, which streamlines hardware-software co-design via graphical system builders and automated peripheral configuration.[38] In contrast, AMD (formerly Xilinx) prioritized high-performance variants of the MicroBlaze, culminating in the 2024 release of MicroBlaze V, a RISC-V-based core with modular extensions for real-time and application processing in cost-optimized FPGAs.[39] By the mid-2000s, these advancements enabled robust embedded Linux support on soft cores like Nios II and MicroBlaze, alongside burgeoning IP core ecosystems that allowed seamless integration of peripherals, memory controllers, and communication interfaces.[40] This infrastructure reduced development time and expanded soft microprocessors' role in diverse applications, from industrial automation to telecommunications. In 2023, Intel announced the discontinuation of the Nios II processor (effective March 2024), transitioning to Nios V, a RISC-V-based soft core introduced in 2021 as its successor.[41][42]Design and Implementation
Architectural Considerations
Soft microprocessors predominantly employ reduced instruction set computer (RISC) architectures, which are well-suited to the reconfigurable nature of field-programmable gate arrays (FPGAs) due to their simplicity and efficiency in hardware mapping. For instance, the MicroBlaze processor utilizes a 32-bit RISC instruction set architecture (ISA) that emphasizes fixed-length instructions and load-store operations, facilitating straightforward synthesis onto FPGA fabric.[43] Adaptations from complex instruction set computer (CISC) designs are less common in soft cores, as RISC's streamlined decoding reduces logic overhead, though some implementations incorporate CISC-like features for legacy compatibility. A key advantage of soft microprocessors is their support for custom instructions, which allow designers to offload FPGA-specific tasks—such as accelerating cryptographic primitives or signal processing—directly into the ISA; the Nios II processor, for example, integrates custom instructions via dedicated hardware units connected to the execution pipeline.[44] The core components of soft microprocessors typically include a pipelined execution unit with 1 to 5 stages, balancing throughput and resource utilization; MicroBlaze, for instance, supports configurable 3-stage or 5-stage pipelines for fetch, decode, execute, memory access, and write-back operations.[45] Branch prediction mechanisms, such as branch target caches, are often optional to mitigate pipeline stalls from control hazards, with MicroBlaze employing a dynamic prediction scheme that caches targets for immediate branches and returns.[46] Memory management units (MMUs) provide virtual memory support through translation lookaside buffers (TLBs) for instruction and data, enabling operating system portability; in MicroBlaze, the MMU is configurable for supervisor-mode virtual addressing with hardware paging.[47] Peripheral interfaces, including universal asynchronous receiver-transmitters (UARTs) for serial communication and timers for interrupt generation, are integrated via standardized buses to connect external FPGA resources. Optimizations for FPGAs focus on interconnect standards like the Wishbone bus in open-source designs such as OpenRISC, which offers a simple, point-to-point protocol for modular SoC integration, or the Advanced eXtensible Interface (AXI) in proprietary cores like MicroBlaze, providing high-bandwidth, burst-capable transactions with separate read/write channels.[48][49] Memory architecture trade-offs prioritize Harvard configurations—separating instruction and data buses—for improved parallelism and cache efficiency, as seen in MicroBlaze's dual-port design, though von Neumann unified memory may be chosen for simpler area-constrained implementations at the cost of potential bottlenecks.[43] Variants of soft microprocessors span bit widths to match application needs: 8-bit cores like PicoBlaze target low-complexity control tasks with minimal resource footprints, while 16-bit options appear in niche embedded designs.[50] 32-bit and 64-bit cores dominate for general-purpose computing, with MicroBlaze extending to 64-bit addressing and Nios V leveraging 32-bit RISC-V for enhanced scalability.[51][52] Advanced designs incorporate superscalar or very long instruction word (VLIW) extensions for instruction-level parallelism, though these remain research-oriented due to FPGA logic demands; for example, a superscalar out-of-order x86 soft processor achieves dual-issue execution on modern FPGAs.[53]Synthesis and Tools
The synthesis of soft microprocessors involves converting hardware description language (HDL) descriptions, typically in VHDL or Verilog, into FPGA bitstreams through a structured design flow. This process begins with HDL coding to define the processor's architecture, followed by functional simulation using tools like ModelSim to verify behavior against testbenches before hardware implementation. Synthesis then maps the HDL to a technology-specific netlist of logic elements, optimized for the target FPGA family, using vendor-specific tools such as AMD's Vivado or Intel's Quartus Prime. Subsequent place-and-route stages assign netlist elements to FPGA resources (e.g., lookup tables and flip-flops) and route interconnections, culminating in bitstream generation—a binary file that configures the FPGA to realize the soft processor.[54][55][56] Key tools support this flow, with vendor ecosystems providing integrated development environments (IDEs) tailored to proprietary soft cores. For AMD's MicroBlaze V, a RISC-V-based soft processor, Vivado handles synthesis, place-and-route, and bitstream generation, while Vitis (formerly Xilinx SDK) offers a comprehensive suite including a debugger, GCC-based compiler for embedded software, and hardware-software integration via IP Integrator for adding peripherals like UART or DDR memory. Similarly, Intel's Quartus Prime performs synthesis and implementation for the Nios II or Nios V soft processors, paired with the Nios II Embedded Design Suite (EDS) for compiling, assembling, linking, and debugging software in C/C++. Open-source alternatives enable broader accessibility; Yosys serves as a synthesis tool for Verilog-based RISC-V cores like PicoRV32, generating netlists compatible with various FPGA backends, while the GNU Compiler Collection (GCC) with RISC-V extensions compiles software for these cores, supporting toolchains like those in the RISC-V International ecosystem.[39][55][57] Soft microprocessor cores are often parameterizable to adapt to application needs, allowing designers to select features at synthesis time without redesigning the HDL. In VHDL, generics define configurable parameters such as cache size, pipeline depth, or instruction set extensions (e.g., enabling multipliers or barrel shifters via a generic value likeENABLE_MULTIPLIER : [boolean](/page/Boolean) := true), which propagate through the synthesis tool to instantiate varying hardware resources. Verilog equivalents use parameters, as seen in cores like MicroBlaze V, where options for RV32I base ISA plus extensions (M for multiplication, C for compressed instructions) or pipeline stages (3 to 8) are set via GUI or scripts in Vivado, balancing area and performance for the target FPGA. This parameterization supports runtime-like flexibility in hardware, such as adjusting cache associativity from direct-mapped to set-associative during bitstream creation.[58][39]
Verification ensures the synthesized design's correctness, employing co-simulation to bridge software emulation and hardware models. Tools like Aldec's Riviera-PRO integrate with QEMU, an open-source processor emulator, to co-simulate soft core firmware (e.g., RISC-V binaries) against HDL representations, validating instruction execution and peripheral interactions at speeds faster than pure simulation. Hardware emulators, such as those using multiple FPGAs, accelerate full-system verification by running the bitstream in a near-real-time environment while monitoring signals via JTAG or integrated logic analyzers. A persistent challenge is metastability in multi-clock-domain designs, where asynchronous signals crossing domains (e.g., from a processor clock to a peripheral clock) risk unstable flip-flop states; mitigation involves synchronizers like dual-rank flip-flops, analyzed during synthesis with static tools in Vivado or Quartus to detect and resolve clock domain crossings.[59][60][61]
Applications
Embedded Systems
Soft microprocessors are frequently integrated into system-on-chip (SoC) designs on FPGAs, where they combine with custom logic such as direct memory access (DMA) controllers and sensor interfaces to enable real-time control in embedded applications. This integration allows the soft core to handle general-purpose processing while dedicated hardware accelerators manage high-speed data paths, reducing latency in systems like Internet of Things (IoT) devices and automotive electronic control units (ECUs). For instance, in automotive ECUs, a soft processor like MicroBlaze in a Zynq-7000 SoC communicates via AXI buses and FIFO buffers with FPGA logic for sensor preprocessing, achieving control loops under 1 ms without requiring a real-time operating system.[62] Operating system support for soft microprocessors in embedded environments ranges from bare-metal execution for minimal overhead to real-time operating systems (RTOS) and full-featured kernels. Bare-metal configurations suit simple control tasks, while RTOS like FreeRTOS provide multitasking on cores such as Nios II, utilizing hardware timers and interrupts for deterministic behavior in resource-constrained setups. For more complex applications, 32-bit soft cores with memory management units (MMUs), like Nios II/f, support embedded Linux, enabling file systems, networking stacks, and driver frameworks on FPGAs.[63][64][65] In industrial automation, soft microprocessors facilitate programmable logic controllers (PLCs) by executing IEC 61131-3 compliant code, with FPGA reconfigurability allowing updates to control algorithms without hardware changes. A RISC-V soft core integrated into an FPGA-based PLC architecture accelerates timer functions like TON and TOF, reducing execution times to 30 ns compared to software-only implementations on traditional PLCs. Similarly, in communications, soft cores serve as protocol handlers, where FPGA reconfiguration enables rapid adaptation to evolving standards, such as updating Ethernet/IP interfaces for real-time data exchange in networked systems.[66][66] Power and size optimizations are critical for battery-powered or space-limited embedded applications, often achieved through minimal 8-bit or 16-bit soft core variants that consume fewer FPGA resources. For example, an 8-bit Nios II/e core in a MAX 10 FPGA for battery management systems operates at 170-240 mW while handling cell balancing and state-of-charge calculations, matching the efficiency of dedicated microprocessors but with added parallelism. The NEO430 16-bit processor exemplifies size efficiency, fitting into small FPGAs for IoT nodes while supporting peripherals like UARTs, thus extending battery life in sensor networks.[67][68]Prototyping and Education
Soft microprocessors play a crucial role in rapid prototyping by enabling the emulation of application-specific integrated circuit (ASIC) designs on field-programmable gate arrays (FPGAs) prior to physical fabrication. This approach allows engineers to verify hardware functionality, integrate peripherals, and test system-level interactions in a reconfigurable environment, mitigating risks associated with costly silicon iterations. For example, the Xilinx MicroBlaze soft core has been used to prototype multi-core systems-on-chip (SoCs), facilitating early validation through tools like IP Integrator and AXI interconnects.[69] By supporting concurrent hardware and software development, soft microprocessors accelerate hardware-software co-design cycles, enabling software teams to begin optimization months earlier than traditional ASIC flows. This parallelism reduces overall time-to-market, as demonstrated in FPGA-based prototypes that allow iterative refinements without respinning silicon. In practice, such prototyping frameworks shorten design validation from potentially years to weeks for complex SoCs, enhancing efficiency in resource-constrained projects.[70] In educational contexts, soft microprocessors provide hands-on platforms for teaching digital design, processor architecture, and embedded systems using accessible FPGA boards. The PicoBlaze soft core, valued for its simplicity and open-source VHDL implementation, is integrated into university curricula, such as at the University of Texas at Tyler, where students implement assembly programming, interrupts, and interfacing on Basys 2/Spartan-3E boards for projects like stopwatch timers and multi-processor arrays with FIFO communication. These labs foster understanding of reconfigurable computing and prepare students for industry-standard system-on-programmable-chip (SoPC) designs, with assessments showing high comprehension and interest levels.[71] Open-source RISC-V soft cores further support university projects by enabling exploration of customizable processor architectures on FPGAs. Cores like PicoRV32, optimized for compact implementations on low-end devices such as Lattice iCE40, and SERV, a serial variant emphasizing area efficiency, are used in academic settings to teach FPGA programming, RISC-V instruction sets, and optimization techniques with tools like Yosys. These implementations facilitate research in low-resource designs and hands-on verification of architectural trade-offs.[27] FPGA development kits incorporating soft cores are essential for algorithm testing, particularly in signal processing prototypes, where they enable real-time acceleration of compute-intensive tasks. This setup allows developers to iterate on algorithms like filtering or encoding without dedicated hardware. For startups, adopting soft microprocessors in FPGA prototyping significantly reduces hardware costs by eliminating early ASIC fabrication expenses and leveraging reconfigurable platforms for validation, thereby accelerating market entry and minimizing obsolescence risks.[31] Emerging trends point to expanded use of soft microprocessors on FPGAs for AI model prototyping, capitalizing on their reprogrammability to implement low-latency neural network inference and custom accelerators. FPGAs' logic fabric, akin to neural interconnections, supports rapid iteration of AI workloads in edge applications, with software frameworks like TensorFlow enabling non-experts to prototype efficiently. This flexibility is poised to drive adoption in sectors requiring adaptive AI hardware, such as industrial automation and autonomous systems.[72]Comparison with Hard Microprocessors
Performance and Resource Usage
Soft microprocessors typically achieve clock frequencies in the range of 150-400 MHz when implemented on mid-range FPGAs such as the Xilinx Artix-7, depending on the core configuration, synthesis options, and target device.[73][74] For instance, the AMD MicroBlaze V microcontroller preset operates at around 156 MHz on an Artix-7 XC7A200T device, while the real-time preset runs at 119 MHz and more feature-rich application presets at 109 MHz due to increased logic complexity.[73] Similarly, the Intel Nios II processor can reach 140-400 MHz for the /f variant and 160-410 MHz for the /e variant on devices like Cyclone V, though benchmarks are often reported at 100 MHz.[74] Resource usage varies significantly with core variants, balancing performance against area efficiency. The MicroBlaze V real-time preset consumes approximately 4,106 LUTs and 2,685 FFs on Artix-7, whereas the economy-oriented microcontroller preset uses only 2,236 LUTs and 1,138 FFs.[73] In contrast, the Nios II/e economy core requires approximately 300-800 logic elements (LEs) depending on the target FPGA, compared to the Nios II/f fast variant, which uses 700-2,300 LEs with features like caching enabled.[74] These figures highlight how basic 32-bit soft cores generally occupy 2-10% of a mid-range FPGA's logic resources, leaving ample capacity for peripherals. Performance metrics, such as DMIPS/MHz ratings, range from 0.1 to 1.4 for basic soft cores, with higher-end variants like Nios II/f achieving about 0.75 DMIPS/MHz and MicroBlaze around 1.0-1.4 DMIPS/MHz in optimized setups.[74][51] Benchmark results further illustrate this: the Nios II/f scores approximately 229 CoreMark iterations at 100 MHz (yielding ~2.3 CoreMark/MHz), while MicroBlaze achieves around 2.0 CoreMark/MHz across similar evaluations.[75][74][76] Power consumption for a 32-bit soft core at 150 MHz typically falls between 0.5-2 W, influenced by activity factors and FPGA process node.[77] Several factors impact these metrics, including FPGA fabric density and synthesis optimization levels. Denser FPGAs like Artix-7 enable higher clock rates by providing more routing resources, but area-optimized synthesis may reduce frequency by 20-30% compared to speed-optimized flows to minimize LUT usage.[78] Comparisons between cores reveal trade-offs: Nios II/f outperforms MicroBlaze in pipelined workloads (e.g., 10-20% higher CoreMark/MHz with caching), but MicroBlaze offers better configurability for real-time applications at similar resource costs.[75] Additionally, clock domain crossing (CDC) introduces overheads, potentially reducing effective throughput by 5-15% due to synchronization delays in multi-clock designs.[79] In comparison to hard microprocessors, soft cores lag in raw performance; for example, hard embedded processors like the ARM Cortex-M4 can achieve over 1 GHz clock speeds, approximately 1.25 DMIPS/MHz, and power consumption under 100 mW in similar applications, benefiting from dedicated silicon optimization.[80][81] As of 2024, newer soft cores like Intel's Nios V (RISC-V based) push boundaries, achieving up to 410 MHz with over 2.5 CoreMark/MHz in optimized configurations on modern FPGAs, narrowing the gap with hard cores in flexibility-driven designs.[82]| Core Variant | Clock Frequency (MHz) | LUT/FF Usage (Artix-7/Cyclone equiv.) | CoreMark/MHz | Power Estimate (W at 150 MHz) |
|---|---|---|---|---|
| MicroBlaze V (Real-time) | 119 | 4,106 LUTs / 2,685 FFs | ~2.0 | 0.5-1.0 |
| Nios II/f (Fast) | 140-400 | 700-2,300 LEs | ~2.3 | 0.5-2.0 |
| Nios II/e (Economy) | 160-410 | 300-800 LEs | ~0.2 | 0.3-1.0 |
