Soft microprocessor: Difference between revisions
m →See also: Removed link to PSoC, because not related to the topic. |
|||
(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. |
||
| 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 |
|author1=John Swan |author2=Tomek Krzyzak. |
||
| 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 |
! Open source |
||
! Bus |
! Bus support |
||
! Notes |
! Notes |
||
! Project |
! Project home |
||
! Description |
! 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]] |
||
|{{ |
| {{yes}} |
||
| Ultra-small |
| Ultra-small-footprint microsequencer-based 8051 core |
||
| 312 Artix-7 LUTs. Quad |
| 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] |
|||
| [[ |
| [[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:// |
| [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 |
| {{no|Royalty-free}} |
||
| [[Wishbone (computer bus)|Wishbone |
| [[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/ |
| [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:// |
| [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/ |
| [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]] |
|||
| {{ |
| {{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 |
|||
| [ |
| [https://github.com/f32c/f32c f32c] |
||
| |
| VHDL |
||
|- |
|- |
||
| [https://github.com/stnolting/neorv32 NEORV32] |
|||
| [[eSi-RISC]] |
|||
| Stephan Nolting |
|||
| [http://www.ensilica.com EnSilica] |
|||
| {{ |
| {{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] |
|||
| |
| VHDL |
||
|- |
|- |
||
| VexRiscv |
|||
| [[LatticeMico8]] |
|||
| SpinalHDL|SpinalHDL |
|||
| [[Lattice Semiconductor|Lattice]] |
|||
| {{ |
| {{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}} |
||
| |
|||
|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:// |
| [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 |
||
| [ |
| [https://www.synopsys.com/designware-ip/processor-solutions.html DesignWare ARC] |
||
| Verilog |
| Verilog |
||
|- |
|- |
||
| |
| ERIC5 |
||
| Entner Electronics |
|||
| Doru Cuturela |
|||
| {{ |
| {{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}} |
||
| 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 |
||
|- |
|- |
||
| [[ |
| [[OpenRISC]] |
||
| [[OpenCores]] |
|||
| UC Berkeley |
|||
| {{yes}} |
| {{yes}} |
||
| [[Wishbone (computer bus)|Wishbone]] |
|||
| |
|||
| |
| 32-bit; done in ASIC, Actel, Altera, Xilinx FPGA. |
||
| [ |
| [https://openrisc.io/] |
||
| |
| 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}} |
| {{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 |
| 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}} |
| {{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, B4/pipelined |
||
| 32-bit CPU targeted for minimal FPGA resource usage |
|||
| x86 PC clone |
|||
| [http:// |
| [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://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 |
* [[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 |
* [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 |
* [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
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]- System-on-a-chip (SoC)
- Network-on-a-chip (NoC)
- Reconfigurable computing
- VHDL
- Verilog
- Hardware acceleration
References
[edit]- ^ 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
- ^ "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.