Like most block-diagram languages, Simulink allows users and
third-party vendors to provide customized blocks that users can
incorporate into algorithm designs. FPGA vendors and FPGA tool vendors
typically provide libraries of Simulink blocks representing common
signal processing functions such as filters, FFTs, and error correction
encoders and decoders. When users develop their algorithms using only
these special blocks, the FPGA tools can convert the design into an
FPGA implementation. FPGA market leaders Xilinx and Altera both provide
such Simulink libraries and associated tools. Xilinx’s offering is
System Generator; Altera’s is DSP Builder.
Third-party tools such as Synplicity’s Synplify DSP follow the same
trend, but provide technology independence: Synplify DSP can target any
FPGA or ASIC from its Simulink block library, while tools from Xilinx
and Altera are specific to these vendors’ chips. Rather than providing
its own custom block libraries, FPGA vendor Lattice Semiconductor
relies on Synplify DSP to support implementation on its FPGA devices
from a Simulink-based design.
Graphical block diagram languages have their advantages, but some
algorithm developers prefer to use the MATLAB language for its powerful
matrix and vector manipulation capabilities. Tool vendor AccelChip
provides tools for converting algorithm descriptions in MATLAB into
synthesizable RTL code that can easily be implemented in an FPGA or
ASIC. AccelChip also provides a link to Xilinx’s Simulink-based System
Generator environment, allowing users to convert MATLAB code into a
block that can be incorporated into a Simulink block diagram and
synthesized with System Generator.
Other tool vendors prefer to use their own languages instead of relying
on MATLAB or Simulink. For example, CoWare’s SPW employs its own
graphical block diagram language. SPW is oriented toward system-level
design, where different portions of the system—such as a channel
equalizer or error correction coder—may be implemented using different
technologies, such as FPGAs, DSPs, or ASICs.
Since tools based on MATLAB or graphical block diagram languages rely
on libraries of common DSP blocks, typically they are only effective in
applications that are built primarily from common DSP functions.
The C language is also commonly used to describe DSP algorithms,
particularly in standards-based applications. For example, C reference
code is available for video compression standards such as MPEG-4 and
H.264. Tools from vendors such as Celoxica assist designers in
converting C code to an optimized FPGA implementation.