Friday, November 23, 2012

Linux in Softcore Processor

Linux in Softcore Processor

by cawan (cawan[at] or chuiyewleong[at]

on 24/11/2012

Software processor is about the logical implementation of RISC architecture in FPGA.
Based on the fundamental unit of LUT, it is possible to construct any type of
combinational or sequential logic circuit. In addition, the logic design can be
represented in the way of Verilog or VHDL code. In order to implement the digital
design, the code will be synthesized into gate level format and later being
placed-and-routed as final implementation image. For those who are not familiar to
FPGA system design, just assume the synthesis process as code compilation in software.
Regarding to the place-and-route process, just assume it as similar to object code
linking in generating executable. Well, simple assumption. So, by representing the
logic design in HDL code, it is efficient to design high complexity digital circuit,
and RISC processor is a very good example. The 2 mainstream FPGA manufacturers,
Altera and Xilinx, have their own proprietary softcode processors, which are NIOS
and Microblaze, respectively. In earlier generation of those softcore processors,
they are just simple 16-bit RISC without MMU support. So, from the angle of embedded
system design, uClinux is the only choice. Despite of the limitation of uClinux in
supporting open source applications in the community, the availability of custom
peripheral and custom instruction are really outstanding to optimize the performance
of certain algorithms implementation from hardware point of view. In contemporary
generation of softcore processors, they are normally at least 32-bit with MMU as
optional feature. Hence, it is possible to let a full linux kernel running in a
softcore processor with MMU support under the FPGA environment. For the case of
Altera, NIOS2 has superseded the legacy NIOS1 with its new 32-bit architecture with
MMU support as optional feature. So, instead of the legacy uClinux running in NIOS1,
Altera has proposed the new NIOS2 linux which is a full linux kernel with MMU support
to be run in NIOS2 processor. Hence, it is convenient to migrate those familiar open
source applications into NIOS2 environment. On the other hand, for the case of Xilinx,
the new Microblaze is also in 32-bit architecture with MMU support. However, Xilinx
does not provide any linux kernel package to the end customer. Instead, there is a
stable version of linux kernel for Microblaze in the market, which is known as
petalinux. The performance of petalinux running in Microblaze is pretty good and it
is really recommended for embedded system design under FPGA environment. Finally, as
an advice to those embedded system designers who are not familiar with FPGA system
design, do not simply choose FPGA as your design platform unless you have a very
substantial reason such as the requirement of performance optimization with DSP
algorithm or something similar which is dealing with custom hardware implementation.
Otherwise, it is just a violation to the principle of cost-effectiveness.

pdf version:

No comments:

Post a Comment