Hardware/Software Co-Design in Embedded FPGAs
Field Programmable Gate Arrays (FPGA) have evolved from being simple glue logic devices to providing complex System-on-chip (SoC) solutions. The current leading edge FPGA devices offer embedded hard processors, dedicated memory as part of the silicon fabric and soft processor IP cores. These devices with on-chip Processor + Memory + Logic, all on a single chip, make FPGA an attractive alternate for next generation embedded applications. Traditional embedded developers partition software and hardware domains and adhere to it for the complete project. Re-configurable FPGAs offer flexible hardware/software interface to switch functions from software to hardware domain and vice versa, any time in the design cycle. This requires close co-operation between hardware and software teams. This paper covers different embedded FPGA processor solutions, selecting the right processor, hardware/software partitioning techniques and their trade-offs in FPGAs along with case studies.