FPGAs provide embedded systems designers with new alternatives for creating high-performance DSP and image processing applications. With the introduction of embedded processors, FPGAs have matured into complete, software-programmable systems capable of hosting entire software/hardware applications. There are challenges to using FPGAs as hardware-accelerated
software platforms, however. These challenges have historically included the need to write low-level
hardware descriptions in the form of VHDL or Verilog languages. Other challenges include deciding how and when to partition complex applications between hardware and software, and how to structure an application to take maximum advantage of hardware parallelism.

This paper provides an overview of current software-to-FPGA design methods, and provides concrete examples of how FPGAs can be used in conjunction with embedded processors to form complete, hardware-accelerated systems.