Jump to content

Soft microprocessor: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Mikiael (talk | contribs)
m See also: Removed link to PSoC, because not related to the topic.
m Removing link(s) undefined (XFDcloser)
 
(71 intermediate revisions by 45 users not shown)
Line 1: Line 1:
{{Short description|Microprocessor design embeddable in other computer systems}}
{{Distinguish|soft computing}}
{{Use American English|date = April 2019}}
{{missing information||three [[OpenPOWER]] cores, one Moxie core, both at RTL level|date=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., [[Field-programmable gate array|FPGA]], [[Complex programmable logic device|CPLD]]), including both high-end and commodity variations.<ref>http://www.dailycircuitry.com/2011/10/zet-soft-core-running-windows-30.html {{Webarchive|url=https://web.archive.org/web/20181013095941/http://www.dailycircuitry.com/2011/10/zet-soft-core-running-windows-30.html |date=2018-10-13 }}
"Zet soft core running Windows 3.0" by Andrew Felch 2011</ref>


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.<ref>
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., [[Application-specific integrated circuit|ASIC]], [[Field-programmable gate array|FPGA]], [[Complex programmable logic device|CPLD]]), including both high-end and commodity variations.<ref>
{{cite web |url=http://www.embedded.com/columns/showArticle.jhtml?articleID=192700615 |title=Embedded.com - FPGA Architectures from 'A' to 'Z' : Part 2 |access-date=2012-08-18 |url-status=dead |archive-url=https://web.archive.org/web/20071008163016/http://www.embedded.com/columns/showArticle.jhtml?articleID=192700615 |archive-date=2007-10-08 }}
http://www.dailycircuitry.com/2011/10/zet-soft-core-running-windows-30.html
"Zet soft core running Windows 3.0" by Andrew Felch 2011
</ref>

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.<ref>
http://www.embedded.com/columns/showArticle.jhtml?articleID=192700615
"FPGA Architectures from 'A' to 'Z'" by Clive Maxfield 2006
"FPGA Architectures from 'A' to 'Z'" by Clive Maxfield 2006
</ref> In those [[multi-core]] systems, rarely used resources can be shared between all the cores in a cluster.
</ref>
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,
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.<ref>[http://www.xilinx.com/products/design_resources/proc_central/microblaze_faq.pdf MicroBlaze Soft Processor: Frequently Asked Questions] {{webarchive|url=https://web.archive.org/web/20111027074459/http://www.xilinx.com/products/design_resources/proc_central/microblaze_faq.pdf |date=2011-10-27 }}</ref> Some people have put dozens or hundreds of soft microprocessors on a single FPGA.<ref>
resulting in a [[multi-core processor]].
The number of soft processors on a single FPGA is limited only by the size of the FPGA.<ref>[http://www.xilinx.com/products/design_resources/proc_central/microblaze_faq.pdf MicroBlaze Soft Processor: Frequently Asked Questions]</ref>
Some people have put dozens or hundreds of soft microprocessors on a single FPGA.<ref>
István Vassányi.
István Vassányi.
"Implementing processor arrays on FPGAs". 1998.
"Implementing processor arrays on FPGAs". 1998.
[https://doi.org/10.1007%2FBFb0055278 ]
[http://www.springerlink.com/content/3508jg1001660678/ ]
</ref><ref>
</ref><ref>
Zhoukun WANG and Omar HAMMAMI.
Zhoukun WANG and Omar HAMMAMI.
Line 36: Line 30:
"Scientists Squeeze Over 1,000 Cores onto One Chip".
"Scientists Squeeze Over 1,000 Cores onto One Chip".
2011.
2011.
[http://www.ecnmag.com/news/2011/01/research/Over-1000-Cores-on-One-Chip.aspx]
[http://www.ecnmag.com/news/2011/01/research/Over-1000-Cores-on-One-Chip.aspx] {{Webarchive|url=https://web.archive.org/web/20120305082424/http://www.ecnmag.com/news/2011/01/research/Over-1000-Cores-on-One-Chip.aspx |date=2012-03-05 }}
</ref> This is one way to implement [[Massively parallel|massive parallelism]] in computing and can likewise be applied to [[In-memory processing|in-memory computing]].
</ref>


A soft microprocessor and its surrounding peripherals implemented in a FPGA is less vulnerable to obsolescence than a discrete processor.<ref>
A soft microprocessor and its surrounding peripherals implemented in a FPGA is less vulnerable to obsolescence than a discrete processor.<ref>{{Cite web
Joe DeLaere.
| author=Joe DeLaere.
[https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/wp/wp-01255-top-7-reasons-to-replace-your-microcontroller-with-a-max-10-fpga.pdf "Top 7 Reasons to Replace Your Microcontroller with a MAX 10 FPGA"].
| url=https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/wp/wp-01255-top-7-reasons-to-replace-your-microcontroller-with-a-max-10-fpga.pdf
| title="Top 7 Reasons to Replace Your Microcontroller with a MAX 10 FPGA"}}
</ref><ref>
</ref><ref>{{Cite web
John Swan; Tomek Krzyzak.
|author1=John Swan |author2=Tomek Krzyzak.
[http://www.embedded.com/print/4015159 "Using FPGAs to avoid microprocessor obsolescence"].
| url=http://www.embedded.com/print/4015159
| title="Using FPGAs to avoid microprocessor obsolescence"
2008
| date=2008
| archive-url=https://web.archive.org/web/20161013004106/http://www.embedded.com/print/4015159
</ref><ref>
| archive-date=2016-10-13
[http://www.electronicsweekly.com/news/products/fpga-news/fpga-processor-ip-needs-to-be-supported-2010-02/ "FPGA processor IP needs to be supported"]
}}</ref><ref>
{{Cite web|url=https://www.electronicsweekly.com/news/products/fpga-news/fpga-processor-ip-needs-to-be-supported-2010-02/|title=FPGA processor IP needs to be supported|last=Staff|date=2010-02-03|website=Electronics Weekly|language=en-GB|access-date=2019-04-03}}
</ref>
</ref>


== Core comparison ==
== Core comparison ==

<center>
{| class="wikitable sortable"
{| class="wikitable sortable"
|-
|-

! Processor
! Processor
! Developer
! Developer
! Open Source
! Open source
! Bus Support
! Bus support
! Notes
! Notes
! Project Home
! Project home
! Description Language
! Description language
|-
|-
| colspan="7" align="center" | ''based on the [[ARM architecture|ARM]] instruction set architecture''
| [http://www.dossmatik.de/mais-cpu.html Dossmatik]
|-
| [[René Doss]]
| [[Amber (processor core)|Amber]]
|{{yes}} CC BY-NC 3.0 with exception -commercial applicants have to pay a licence fee-
| Conor Santifort
| pipelined bus
| {{yes|LGPLv2.1}}
| MIPS I instruction set pipeline stages
| [[Wishbone (computer bus)|Wishbone]]
| [http://www.dossmatik.de/mais-cpu.html Dossmatik]
| [[ARM architecture|ARMv2a]] 3-stage or 5-stage pipeline
| [https://opencores.org/project/amber Project page at Opencores]
| Verilog
|-
| [[Cortex-M1]]
| [[ARM Holdings|ARM]]
| {{no}}
| [http://www.arm.com/products/system-ip/interconnect/index.php]
| 70–200{{nbsp}}MHz, 32-bit RISC
| [http://www.arm.com/products/CPUs/ARM_Cortex-M1.html]
| Verilog
|-
| colspan="7" align="center" | ''based on the [[AVR microcontrollers|AVR]] instruction set architecture''
|-
| Navré
| Sébastien Bourdeauducq
| {{yes}}
| Direct SRAM
| [[Atmel AVR]]-compatible 8-bit RISC
| [http://opencores.org/project,navre Project page at Opencores]
| Verilog
|-
| pAVR
| Doru Cuturela
| {{yes}}
|
| [[Atmel AVR]]-compatible 8-bit RISC
| [http://opencores.org/project,pavr Project page at Opencores]
| VHDL
| VHDL
|-
|-
| softavrcore
| [http://www.microcorelabs.com MCL65]
| Andras Pal
| [[MicroCore Labs]]
|{{yes}}
| {{yes}}
| Standard AVR buses (core-coupled I/O, synchronous SRAM, synchronous program ROM)
| Ultra-small footprint microsequencer based 6502 core
| [[Atmel AVR]]-compatible 8-bit RISC (up to AVR5), peripherals and SoC features included
| 252 Spartan-7 LUTs. Clock cycle-exact.
| [http://opencores.org/project/softavrcore Project page at Opencores]
| [http://www.microcorelabs.com MCL65 Core]
| Verilog
|-
| colspan="7" align="center" | ''based on the [[MicroBlaze]] instruction set architecture''
|-
| [[AEMB]]
| Shawn Tan
| {{yes}}
| [[Wishbone (computer bus)|Wishbone]]
| MicroBlaze EDK 3.2 compatible
| [http://www.aeste.my/aemb AEMB]
| Verilog
|-
| [[MicroBlaze]]
| [[Xilinx]]
| {{no}}
| PLB, OPB, FSL, LMB, AXI4
|
|
| [https://web.archive.org/web/20030430214925/http://www.xilinx.com/microblaze/ Xilinx MicroBlaze]
|
|-
| [[OpenFire Soft Processor|OpenFire]]
| Virginia Tech CCM Lab
| {{yes}}
| OPB, FSL
| Binary compatible with the MicroBlaze
| [https://web.archive.org/web/20090724052731/http://www.ccm.ece.vt.edu/~scraven/openfire.html]<ref>{{Cite web|url=http://opencores.org/project,openfire_core,overview|title=Overview :: OpenFire Processor Core :: OpenCores}}</ref>
| Verilog
|-
| [[SecretBlaze]]
| LIRMM, University of Montpellier / CNRS
| {{yes}}
| [[Wishbone (computer bus)|Wishbone]]
| MicroBlaze ISA, VHDL
| [http://www.lirmm.fr/ADAC/?page_id=462 SecretBlaze]
| VHDL
|-
| colspan="7" align="center" | ''based on the [[MCS-51]] instruction set architecture''
|-
|-
| [http://www.microcorelabs.com MCL51]
| [http://www.microcorelabs.com MCL51]
| [[MicroCore Labs]]
| [[MicroCore Labs]]
|{{no}}
| {{yes}}
| Ultra-small footprint microsequencer based 8051 core
| Ultra-small-footprint microsequencer-based 8051 core
| 312 Artix-7 LUTs. Quad Core 8051 version is 1227 LUTs.
| 312 Artix-7 LUTs. Quad-core 8051 version is 1227 LUTs.
| [http://www.microcorelabs.com MCL51 Core]
| [http://www.microcorelabs.com MCL51 Core]
|
|
|-
|-
| [https://web.archive.org/web/20131008041359/http://wiki.altium.com/display/ADOH/TSK51x+MCU TSK51/52]
| [http://www.microcorelabs.com MCL86]
| [[MicroCore Labs]]
| [[Altium]]
|{{no}}
| {{no|Royalty-free}}
| [[Wishbone (computer bus)|Wishbone]] / [[Intel 8051]]
| 8088 BIU provided. Others easy to create.
| 8-bit [[Intel 8051]] instruction set compatible, lower clock cycle alternative
| Cycle accurate 8088/8086 implemented with a microsequencer. Less than 2% utilization of Kintex-7.
| [https://web.archive.org/web/20160306202550/http://wiki.altium.com/display/adoh/processor-based+fpga+design Embedded Design on Altium Wiki]
| [http://www.microcorelabs.com MCL86 Core]
|
|
|-
|-
| colspan="7" align="center" | ''based on the [[MIPS architecture|MIPS]] instruction set architecture''
| [http://wiki.altium.com/display/ADOH/TSK3000A TSK3000A]
|-
| [[Altium]]
| [http://www.cl.cam.ac.uk/research/security/ctsrd/beri/ BERI]
|{{no}} Royalty-Free
| [[University of Cambridge]]
| [[Wishbone (computer bus)|Wishbone]]
| {{yes|BSD}}
| 32-bit [[R3000]] style RISC Modified Harvard Architecture CPU
| [http://wiki.altium.com/display/ADOH/Processor-based+FPGA+Design Embedded Design on Altium Wiki]
|
|
| [[MIPS architecture|MIPS]]
| [http://www.cl.cam.ac.uk/research/security/ctsrd/beri/ Project page]
| [[Bluespec]]
|-
|-
| [http://wiki.altium.com/display/ADOH/TSK51x+MCU TSK51/52]
| [http://www.dossmatik.de/mais-cpu.html Dossmatik]
| [[René Doss]]
| {{yes|CC BY-NC 3.0, except ''commercial applicants have to pay a licence fee''.}}
| Pipelined bus
| MIPS I instruction set pipeline stages
| [http://www.dossmatik.de/mais-cpu.html Dossmatik]
| VHDL
|-
| [https://web.archive.org/web/20131020113429/http://wiki.altium.com/display/ADOH/TSK3000A TSK3000A]
| [[Altium]]
| [[Altium]]
|{{no}} Royalty-Free
| {{no|Royalty-free}}
| [[Wishbone (computer bus)|Wishbone]] / [[Intel 8051]]
| [[Wishbone (computer bus)|Wishbone]]
| 32-bit [[R3000]]-style RISC modified Harvard-architecture CPU
| 8-bit [[Intel 8051]] instruction set compatible, lower clock cycle alternative
| [http://wiki.altium.com/display/ADOH/Processor-based+FPGA+Design Embedded Design on Altium Wiki]
| [https://web.archive.org/web/20160306202550/http://wiki.altium.com/display/adoh/processor-based+fpga+design Embedded Design on Altium Wiki]
|
|
|-
|-
| colspan="7" align="center" | ''based on the [[PicoBlaze]] instruction set architecture''
| [[OpenSPARC|OpenSPARC T1]]
|-
| [[Sun Microsystems|Sun]]
| [[PacoBlaze]]
|{{yes}}
| Pablo Bleyer
| {{yes}}
|
|
| Compatible with the PicoBlaze processors
| 64-bit
| [http://www.opensparc.net/opensparc-t1/index.html OpenSPARC.net]
| [http://bleyer.org/pacoblaze PacoBlaze]
| Verilog
| Verilog
|-
| [[MicroBlaze]]
| [[Xilinx]]
| {{no}}
| PLB, OPB, FSL, LMB, AXI4
|
| [http://www.xilinx.com/MicroBlaze Xilinx MicroBlaze]
|
|-
|-
| [[PicoBlaze]]
| [[PicoBlaze]]
Line 132: Line 197:
|
|
|
|
| [http://www.xilinx.com/PicoBlaze Xilinx PicoBlaze]
| [https://web.archive.org/web/20030501203653/http://www.xilinx.com/picoblaze/ Xilinx PicoBlaze]
| VHDL, Verilog
| VHDL, Verilog
|-
|-
| colspan="7" align="center" | ''based on the [[RISC-V]] instruction set architecture''
| [[Nios embedded processor|Nios]], [[Nios II]]
| [[Altera]]
| {{no}}
| Avalon
|
| [http://altera.com/products/ip/processors/nios2/ni2-index.html Altera Nios II]
| Verilog
|-
|-
| [https://github.com/f32c/f32c f32c]
| Cortex-M1
| University of Zagreb
| [[ARM Holdings|ARM]]
| {{no}}
| {{yes|BSD}}
| AXI, SDRAM, SRAM
| [http://www.arm.com/products/system-ip/interconnect/index.php]
| 32-bit, RISC-V / MIPS ISA subsets (retargetable), GCC toolchain
| 70-200 MHz, 32bit RISC
| [http://www.arm.com/products/CPUs/ARM_Cortex-M1.html]
| [https://github.com/f32c/f32c f32c]
| Verilog
| VHDL
|-
|-
| [https://github.com/stnolting/neorv32 NEORV32]
| [[eSi-RISC]]
| Stephan Nolting
| [http://www.ensilica.com EnSilica]
| {{no}}
| {{yes|BSD}}
| Wishbone b4, AXI4
| AMBA AXI, AHB and APB
| rv32[i/e] [m] [a] [c] [b] [u] [Zfinx] [Zicsr] [Zifencei], RISC-V-compliant, CPU & SoC available, highly customizable, GCC toolchain
| Configurable as 16 or 32-bit. Supports ASIC and FPGA.
| [https://github.com/stnolting/neorv32 GitHub] [https://opencores.org/projects/neorv32 OpenCores]
| [http://www.ensilica.com/ip_esi_risc.htm EnSilica eSi-RISC]
| Verilog
| VHDL
|-
|-
| VexRiscv
| [[LatticeMico8]]
| SpinalHDL|SpinalHDL
| [[Lattice Semiconductor|Lattice]]
| {{yes}}
| {{Yes}}
| AXI4 / Avalon
| [[Wishbone (computer bus)|Wishbone]]
| 32-bit, RISC-V, up to 340{{nbsp}}MHz on Artix 7. Up to 1.44{{nbsp}}DMIPS/MHz.
|
| https://github.com/SpinalHDL/VexRiscv
| [http://www.latticesemi.com/Products/DesignSoftwareAndIP/IntellectualProperty/IPCore/IPCores02/Mico8.aspx LatticeMico8]
| VHDLVerilog (SpinalHDL)
| Verilog
|-
|-
| colspan="7" align="center" | ''based on the [[SPARC]] instruction set architecture''
| [[LatticeMico32]]
| [[Lattice Semiconductor|Lattice]]
| {{yes}}
| [[Wishbone (computer bus)|Wishbone]]
|
| [http://www.latticesemi.com/products/intellectualproperty/ipcores/mico32/index.cfm LatticeMico32]
| Verilog
|-
|-
| [[LEON|LEON2(-FT)]]
| [[LEON|LEON2(-FT)]]
Line 191: Line 244:
| VHDL
| VHDL
|-
|-
| [http://parallel.princeton.edu/openpiton/specs.html OpenPiton]
|Tacus/PIPE5
| Princeton Parallel Group
|TemLib
| {{yes}}
| {{Yes}}
|
|Pipelined bus
| [[Manycore processor|Manycore]] [[SPARC|SPARC V9]]
|SPARC V8
| [http://parallel.princeton.edu/openpiton/specs.html OpenPiton]
|[http://temlib.org TEMLIB]
| Verilog
|VHDL
|-
|-
| [[OpenSPARC|OpenSPARC T1]]
| Navré
| [[Sun Microsystems|Sun]]
| Sébastien Bourdeauducq
| {{yes}}
| {{yes}}
|
| Direct SRAM
| 64-bit
| [[Atmel AVR]] compatible 8-bit RISC
| [http://www.opensparc.net/opensparc-t1/index.html OpenSPARC.net]
| [http://opencores.org/project,navre Project page at Opencores]
| Verilog
| Verilog
|-
|-
| Tacus/PIPE5
| [[OpenRISC]]
| TemLib
| [[OpenCores]]
| {{yes}}
| Pipelined bus
| SPARC V8
| [http://temlib.org TEMLIB]
| VHDL
|-
| colspan="7" align="center" | ''based on the [[x86]] instruction set architecture''
|-
| CPU86
| HT-Lab
| {{yes}}
|
| 8088-compatible CPU in VHDL
| [http://www.ht-lab.com/cpu86.htm cpu86]
| VHDL
|-
| [http://www.microcorelabs.com 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.
| [http://www.microcorelabs.com MCL86 Core]
|
|-
| [https://www.jamieiles.com/80186/ s80x86]
| Jamie Iles
| {{yes|GPLv3}}
| Custom
| 80186-compatible GPLv3 core
| [https://www.jamieiles.com/80186/ s80x86]
| SystemVerilog
|-
| Zet
| Zeus Gómez Marmolejo
| {{yes}}
| {{yes}}
| [[Wishbone (computer bus)|Wishbone]]
| [[Wishbone (computer bus)|Wishbone]]
| x86 PC clone
| 32-bit; Done in ASIC, Actel, Altera, Xilinx FPGA
| [http://opencores.org/project,or1k OR1K]
| [https://archive.today/20130112150552/http://zet.aluzina.org/ Zet]
| Verilog
| Verilog
|-
| [[ao486 (hardware)|ao486]]
| Aleksander Osman
| {{yes|3-Clause BSD}}
| Avalon
| i486 SX compatible core
| [https://github.com/alfikpl/ao486 ao486]
| Verilog
|-
| colspan="7" align="center" | ''based on the [[Power ISA|PowerPC/Power]] instruction set architecture''
|-
| [[PowerPC 400#PowerPC 405|PowerPC 405S]]
| IBM
| {{No}}
| [[CoreConnect]]
| 32-bit PowerPC v.2.03 Book E
| [[IBM]]
| Verilog
|-
| [[PowerPC 400#PowerPC 440|PowerPC 440S]]
| IBM
| {{No}}
| [[CoreConnect]]
| 32-bit PowerPC v.2.03 Book E
| [[IBM]]
| Verilog
|-
| [[PowerPC 400#PowerPC 470|PowerPC 470S]]
| IBM
| {{No}}
| [[CoreConnect]]
| 32-bit PowerPC v.2.05 Book E
| [[IBM]]
| Verilog
|-
| [[OpenPower Microwatt|Microwatt]]
| IBM/OpenPOWER
| {{yes|CC-BY 4.0}}
| [[Wishbone (computer bus)|Wishbone]]
| 64-bit PowerISA 3.0 proof of concept
| [https://github.com/antonblanchard/microwatt Microwatt @ Github]
| VHDL
|-
| [[OpenPower Microwatt#Chiselwatt|Chiselwatt]]
| IBM/OpenPOWER
| {{yes|CC-BY 4.0}}
| [[Wishbone (computer bus)|Wishbone]]
| 64-bit PowerISA 3.0
| [https://github.com/antonblanchard/chiselwatt Chiselwatt @ Github]
| Chisel
|-
| [[Libre-SOC]]
| [https://libre-soc.org Libre-SoC.org]
| {{yes|BSD/LGPLv2+}}
| [[Wishbone (computer bus)|Wishbone]]
| 64-bit PowerISA 3.0. CPU/GPU/VPU implementation and custom vector instructions
| [https://libre-soc.org Libre-SoC.org]
| python/nMigen
|-
| [[IBM A2#A2I|A2I]]
| IBM/OpenPOWER
| {{yes|CC-BY 4.0}}
| Custom PBus
| 64-bit PowerPC 2.6 Book E. In order core
| [https://github.com/openpower-cores/a2i A2I @ Github]
| VHDL
|-
| [[IBM A2#A2O|A2O]]
| IBM/OpenPOWER
| {{yes|CC-BY 4.0}}
| Custom PBus
| 64-bit PowerPC 2.7 Book E. Out of order core
| [https://github.com/openpower-cores/a2o A2O @ Github]
| Verilog
|-
| colspan="7" align="center" | ''Other architectures''
|-
|-
| [[ARC (processor)|ARC]]
| [[ARC (processor)|ARC]]
| [[Synopsys#ARC International|ARC International]], [[Synopsys]]
| [[Synopsys#ARC International|ARC International]], [[Synopsys]]
| {{no}}
| {{no}}
|
|
| 16/32-bit ISA RISC
| 16/32/64-bit ISA RISC
| [http://www.synopsys.com/IP/ProcessorIP/ARCProcessors/Pages/default.aspx DesignWare ARC]
| [https://www.synopsys.com/designware-ip/processor-solutions.html DesignWare ARC]
| Verilog
| Verilog
|-
|-
| pAVR
| ERIC5
| Entner Electronics
| Doru Cuturela
| {{yes}}
| {{no}}
|
|
| 9-bit RISC, very small size, C-programmable
| [[Atmel AVR]] compatible 8-bit RISC
| [http://www.entner-electronics.com/tl/index.php/eric5.html ERIC5] {{Webarchive|url=https://web.archive.org/web/20160305131214/http://www.entner-electronics.com/tl/index.php/eric5.html |date=2016-03-05 }}
| [http://opencores.org/project,pavr Project page at Opencores]
| VHDL
| VHDL
|-
|-
| [https://github.com/howerj/forth-cpu H2 CPU]
| [[AEMB]]
| Richard James Howe
| Shawn Tan
| {{yes | MIT}}
| Custom
| 16-bit Stack Machine, designed to execute Forth directly, small
| [https://github.com/howerj/forth-cpu H2 CPU]
| VHDL
|-
| [http://www.fpga-cores.com/instant-soc/ Instant SoC]
| [http://www.fpga-cores.com/ FPGA Cores]
| {{no}}
| Custom
| 32-bit RISC-V M Extension, SoC defined by C++
| [http://www.fpga-cores.com/instant-soc/ Instant SoC]
| VHDL
|-
| [[Java optimized processor|JOP]]
| Martin Schoeberl
| {{yes}}
| [[SimpCon]] / [[Wishbone (computer bus)|Wishbone]] (extension)
| Stack-oriented, hard real-time support, executing [[Java bytecode]] directly
| [https://web.archive.org/web/20190417225405/http://www.jopdesign.com/ Jop]
| VHDL
|-
| [[LatticeMico8]]
| [[Lattice Semiconductor|Lattice]]
| {{yes}}
| {{yes}}
| [[Wishbone (computer bus)|Wishbone]]
| [[Wishbone (computer bus)|Wishbone]]
|
| MicroBlaze EDK 3.2 compatible
| [http://www.latticesemi.com/Products/DesignSoftwareAndIP/IntellectualProperty/IPCore/IPCores02/Mico8.aspx LatticeMico8]
| [http://www.aeste.my/aemb AEMB]
| Verilog
| Verilog
|-
|-
| [[LatticeMico32]]
| [[OpenFire Soft Processor|OpenFire]]
| [[Lattice Semiconductor|Lattice]]
| Virginia Tech CCM Lab
| {{yes}}
| {{yes}}
| [[Wishbone (computer bus)|Wishbone]]
| OPB, FSL
|
| Binary compatible with the MicroBlaze
| [http://www.latticesemi.com/products/intellectualproperty/ipcores/mico32/index.cfm LatticeMico32]
| [http://www.ccm.ece.vt.edu/~scraven/openfire.html] <ref>http://opencores.org/project,openfire_core,overview</ref>
| Verilog
| Verilog
|-
|-
| [https://lxp32.github.io/ LXP32]
| [[SecretBlaze]]
| Alex Kuznetsov
| LIRMM, University of Montpellier / CNRS
| {{yes}}
| {{yes|MIT}}
| [[Wishbone (computer bus)|Wishbone]]
| [[Wishbone (computer bus)|Wishbone]]
| 32-bit, 3-stage pipeline, [[register file]] based on block RAM
| MicroBlaze ISA, VHDL
| [https://lxp32.github.io/ lxp32]
| [http://www.lirmm.fr/ADAC/?page_id=462 SecretBlaze]
| VHDL
| VHDL
|-
|-
| [https://github.com/MicroCoreLabs/Projects MCL65]
|[[SpartanMC]]
| [[MicroCore Labs]]
|TU Darmstadt / TU Dresden
|{{Yes}}
| {{yes}}
| Ultra-small-footprint microsequencer-based 6502 core
| Custom ([[AXI]] support in development)
| 252 Spartan-7 LUTs. Clock cycle-exact.
| 18-bit ISA (GNU Binutils / GCC support in development)
| [https://github.com/MicroCoreLabs/Projects MCL65 Core]
| [http://www.spartanmc.de SpartanMC]
|
|-
| [https://mrisc32.bitsnbites.eu/ MRISC32-A1]
| Marcus Geelnard
| {{yes}}
| [[Wishbone (computer bus)|Wishbone]], B4/pipelined
| 32-bit RISC/Vector CPU implementing the MRISC32 ISA
| [https://mrisc32.bitsnbites.eu/ MRISC32]
| VHDL
|-
| [https://github.com/stnolting/neo430 NEO430]
| Stephan Nolting
| {{yes}}
| Wishbone (Avalon, AXI4-Lite)
| 16-bit MSP430 ISA-compatible, very small size, many peripherals, highly customizable
| [https://github.com/stnolting/neo430 NEO430]
| VHDL
|-
| [[Nios embedded processor|Nios]], [[Nios II]]
| [[Altera]]
| {{no}}
| Avalon
|
| [https://web.archive.org/web/20101225092752/http://www.altera.com/products/ip/processors/nios2/ni2-index.html Altera Nios II]
| Verilog
| Verilog
|-
|-
| [[RISC-V]]
| [[OpenRISC]]
| [[OpenCores]]
| UC Berkeley
| {{yes}}
| {{yes}}
| [[Wishbone (computer bus)|Wishbone]]
|
| RISC-V ISA, Xilinx Zynq
| 32-bit; done in ASIC, Actel, Altera, Xilinx FPGA.
| [http://riscv.org/ riscv.org]
| [https://openrisc.io/]
| Chisel
| Verilog
|-
| [[SpartanMC]]
| TU Darmstadt / TU Dresden
| {{Yes}}
| Custom ([[Advanced eXtensible Interface|AXI]] support in development)
| 18-bit ISA (GNU Binutils / GCC support in development)
| [http://www.spartanmc.de SpartanMC]
| Verilog
|-
|-
| SYNPIC12
| SYNPIC12
| Miguel Angel Ajo Pelayo
| Miguel Angel Ajo Pelayo
| {{yes}} MIT
| {{yes|MIT}}
|
|
| PIC12F compatible, program synthesised in gates
| PIC12F compatible, program synthesised in gates
| [http://projects.nbee.es/display/IPCORES/SYNPIC12+8bit+RISC+CPU+core nbee.es]
| [http://projects.nbee.es/display/IPCORES/SYNPIC12+8bit+RISC+CPU+core nbee.es]
| VHDL
|-
| [[PacoBlaze]]
| Pablo Bleyer
| {{yes}}
|
| Compatible with the PicoBlaze processors
| [http://bleyer.org/pacoblaze PacoBlaze]
| Verilog
|-
| CPU86
| HT-Lab
| {{yes}}
|
| 8088 compatible CPU in VHDL
| [http://www.ht-lab.com/cpu86.htm cpu86]
| VHDL
| VHDL
|-
|-
Line 299: Line 502:
| {{no}}
| {{no}}
| XSOC abstract bus
| XSOC abstract bus
| 16-bit RISC CPU + SoC featured in Circuit Cellar Magazine #116-118
| 16-bit RISC CPU and SoC featured in Circuit Cellar Magazine #116-118
| [http://www.fpgacpu.org/xsoc/index.html XSOC/xr16]
| [http://www.fpgacpu.org/xsoc/index.html XSOC/xr16]
| Schematic
| Schematic
|-
| [[Java optimized processor|JOP]]
| Martin Schoeberl
| {{yes}}
| [[SimpCon]] / [[Wishbone (computer bus)|Wishbone]] (extension)
| Stack oriented, hard real-time support, executes [[Java bytecode]] directly
| [http://www.jopdesign.com Jop]
| VHDL
|-
| ERIC5
| Entner Electronics
| {{no}}
|
| 9-bit RISC, very small size, C-programmable
| [http://www.entner-electronics.com/tl/index.php/eric5.html ERIC5]
| VHDL
|-
|-
| [[YASEP (architecture)|YASEP]]
| [[YASEP (architecture)|YASEP]]
| Yann Guidon
| Yann Guidon
| {{yes}} AGPLv3
| {{yes|AGPLv3}}
| Direct SRAM
| Direct SRAM
| 16 or 32 bits, RTL in [http://yasep.org/VHDL/ VHDL] & [http://yasep.org/#!ASM/impASM#examples/keywords.yas asm] in [[JavaScript|JS]], microcontroller subset : ready
| 16 or 32 bits, RTL in [https://web.archive.org/web/20121207045204/http://yasep.org/VHDL/ VHDL] & [http://yasep.org/#!ASM/impASM#examples/keywords.yas asm] in [[JavaScript|JS]], microcontroller subset : ready
| [http://yasep.org yasep.org] ([http://www.mozilla.com/ Firefox] required)
| [http://yasep.org yasep.org] ([http://www.mozilla.com/ Firefox] required)
| VHDL
| VHDL
|-
|-
| [http://zipcpu.com/about/zipcpu.html ZipCPU]
| [[Zet (hardware)|Zet]]
| [http://zipcpu.com/about/gisselquist-technology.html Gisselquist Technology]
| Zeus Gómez Marmolejo
| {{yes}}
| {{yes|GPLv3}}
| [[Wishbone (computer bus)|Wishbone]]
| Wishbone, B4/pipelined
| 32-bit CPU targeted for minimal FPGA resource usage
| x86 PC clone
| [http://zet.aluzina.org Zet]
| [http://zipcpu.com/about/zipcpu.html zipcpu.com]
| Verilog
| Verilog
|-
|-
| [[ZPU (microprocessor)|ZPU]]
| [https://github.com/f32c/f32c f32c]
| University of Zagreb
| {{yes}} BSD
| AXI, SDRAM, SRAM
| 32-bit, RISC-V / MIPS ISA subsets (retargetable), GCC toolchain
| [https://github.com/f32c/f32c f32c]
| VHDL
|-
|[http://zipcpu.com/about/zipcpu.html ZipCPU]
|[http://zipcpu.com/about/gisselquist-technology.html Gisselquist Technology]
|{{yes}} GPLv3
|Wishbone, B4/pipelined
|32-bit CPU targeted for minimal FPGA resource usage
|[http://zipcpu.com/about/zipcpu.html zipcpu.com]
|Verilog
|-
| [[ZPU_(microprocessor)|ZPU]]
| Zylin AS
| Zylin AS
| {{yes}}
| {{yes}}
Line 359: Line 530:
| VHDL
| VHDL
|-
|-
|RISC5
| [[ZPU_(microprocessor)|ZPUino]]
|Niklaus Wirth| Niklaus Wirth
| Álvaro Lopes
| {{yes}}
| {{yes}}
|Custom
| [[Wishbone (computer bus)|Wishbone]]
|Running a complete graphical Oberon System including an editor and compiler. Software can be developed and ran on the same FPGA board.
| Zylin's ZPU based SoC, 32 bit, Linux support.
| [http://alvie.com/zpuino/ ZPUino]
|[http://www.projectoberon.com/ www.projectoberon.com/]
| VHDL
|-
|[http://parallel.princeton.edu/openpiton/specs.html OpenPiton]
|Princeton Parallel Group
|Yes
|
|Many Core
|[http://parallel.princeton.edu/openpiton/specs.html OpenPiton]
|Verilog
|Verilog
|}
|}
</center>


== See also ==
== See also ==
* [[System-on-a-chip|SoC (System-on-a-chip)]]
* [[System on a chip|System-on-a-chip]] (SoC)
** [[Network on a chip|Network-on-a-chip]] (NoC)
* [[Field-programmable gate array|FPGA (Field-programmable gate array)]]
* [[Reconfigurable computing]]
* [[Reconfigurable computing]]
** [[Field-programmable gate array]] (FPGA)
* [[VHDL]]
* [[VHDL]]
* [[Verilog]]
* [[Verilog]]
** [[SystemVerilog]]
* [[Hardware acceleration]]


==References==
==References==
Line 388: Line 553:


== External links ==
== External links ==
* [https://web.archive.org/web/20091026171102/http://1-core.com:80/library/digital/soft-cpu-cores/ Soft CPU Cores for FPGA]
* [https://web.archive.org/web/20091026171102/http://1-core.com/library/digital/soft-cpu-cores/ Soft CPU Cores for FPGA]
* [https://web.archive.org/web/20070615082550/http://www.ews.uiuc.edu:80/~pdabrows/soft_processor_comparison.html Detailed Comparison of 12 Soft Microprocessors]
* [https://web.archive.org/web/20070615082550/http://www.ews.uiuc.edu/~pdabrows/soft_processor_comparison.html Detailed Comparison of 12 Soft Microprocessors]
* [http://www.fpgacpu.org FPGA CPU News]
* [http://www.fpgacpu.org FPGA CPU News]
* [http://f-cpu.org Freedom CPU website]
* [http://f-cpu.org Freedom CPU website]

Latest revision as of 02:48, 29 November 2024

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]
  1. ^ http://www.dailycircuitry.com/2011/10/zet-soft-core-running-windows-30.html Archived 2018-10-13 at the Wayback Machine "Zet soft core running Windows 3.0" by Andrew Felch 2011
  2. ^ "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
  3. ^ MicroBlaze Soft Processor: Frequently Asked Questions Archived 2011-10-27 at the Wayback Machine
  4. ^ István Vassányi. "Implementing processor arrays on FPGAs". 1998. [1]
  5. ^ Zhoukun WANG and Omar HAMMAMI. "A 24 Processors System on Chip FPGA Design with Network on Chip". [2]
  6. ^ John Kent. "Micro16 Array - A Simple CPU Array" [3]
  7. ^ Kit Eaton. "1,000 Core CPU Achieved: Your Future Desktop Will Be a Supercomputer". 2011. [4]
  8. ^ "Scientists Squeeze Over 1,000 Cores onto One Chip". 2011. [5] Archived 2012-03-05 at the Wayback Machine
  9. ^ Joe DeLaere. ""Top 7 Reasons to Replace Your Microcontroller with a MAX 10 FPGA"" (PDF).
  10. ^ John Swan; Tomek Krzyzak. (2008). ""Using FPGAs to avoid microprocessor obsolescence"". Archived from the original on 2016-10-13.
  11. ^ Staff (2010-02-03). "FPGA processor IP needs to be supported". Electronics Weekly. Retrieved 2019-04-03.
  12. ^ "Overview :: OpenFire Processor Core :: OpenCores".
[edit]