18
\$\begingroup\$

I am doing a study on FPGA interfacing with Microprocessor such as ARM9.

Came across the concept of Soft core and Hard core Processors in my study. May I know what is the comparison between these 2 type; similarity or differences in the implementation ?

\$\endgroup\$
18
\$\begingroup\$

Soft core is implemented in FPGA fabric while Hard is implemented the same as any integrated circuit while still connected to the FPGA fabric. The comparison generally boils down to:

Hard Core Processors - 100's of MHz up to 1GHz+ of speed

  • Can achieve much faster processing speeds since they are optimized and not limited by fabric speed
  • Fixed and cannot be modified (though it can take advantage of custom logic in FPGA fabric for processing

Soft Core Processors - 250MHz and less (usually less than 200MHz)

  • Can be easily modified and tuned to specific requirements, more features, custom instructions, etc.
  • Multiple cores can be used (at the cost of resources)
  • Limited by the speed of the fabric.

In recent years, there's been a large move towards hard processor primarily due to the need for faster processing that the soft cores can't provide. When you put a hard core processor with the FPGA fabric, you can typically enable processing of a lot of data, which is needed for communication infrastructure applications (lots of GBs of data going by), for example.

\$\endgroup\$
10
\$\begingroup\$

A soft-core processor is a processor implemented using the FPGA fabric.

A hard-core processor is a processor that's actually physically implemented as a structure in the silicon.

Basically, you can add a soft-core processor to a FPGA-based system after it's already designed. However, adding a hard-core processor requires either a different FPGA, or an additional chip on the board.


Hard-core processors are preferred when possible because the price/computing-power ratio for a hardware CPU is much better. Implementing a CPU in FPGA fabric is very resource intensive, particularly if you want a lot of computing power. The equivalent hardware CPU is likely much cheaper.


Not only is the hardware CPU much cheaper, but it is also likely to be much more energy efficient. In battery-operated platforms, efficiency is crucial for long battery life. Unused gates in an FPGA can sometimes be turned off, but usually there are far more active circuits in a soft core processor than in a purpose-design hardware CPU. All of that potential FPGA silicon consumes power.

\$\endgroup\$
  • \$\begingroup\$ "Hard" and "soft" can also refer to the hardware description used and not just to whether the core is implemented in the fabric (see ARM's "Hard Macro Processors") This Western Design Center, Inc., page provides an example of this use: "ASIC (Manuallly Optimized GDSII Hard Core and Verilog RTL Soft Core), and FPGA (Verilog RTL Soft Core)". The FPGA context might exclude this use of the terms (though binary blob/LUT-initialization-values vs. RTL seems analogous). \$\endgroup\$ – Paul A. Clayton Oct 10 '14 at 12:30
  • \$\begingroup\$ So basically, soft-core = FPGA, hard-core = ASIC? \$\endgroup\$ – nalzok Jul 11 at 5:49
  • \$\begingroup\$ @nalzok - Yep. I could see an argument for calling emulating one CPU on another CPU a "soft" core, but people just call that emulation in my experience. \$\endgroup\$ – Connor Wolf Jul 11 at 20:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.