Chapter 3. A Programming Model for FPGA-Based Applications
At this point we have described the general nature of FPGA-based programmable platforms, and we have described how embedded microprocessors may be used to implement traditional software algorithms and complete applications within the FPGA. We have also, to some extent, discussed the role of programming tools that allow software algorithms (expressed using languages such as C) to be implemented directly in programmable hardware for high performance.
What we haven't discussed yet is how such an application, which might be composed of dozens or hundreds of independently operating parallel processes, can be expressed. How are the independent functional elements described and interconnected? How is the system synchronized? This chapter begins that discussion by presenting a view from the perspective of the programming model. Choosing an appropriate programming model is important because it allows us, as software and hardware programmers, to create applications and their constituent algorithms in an abstract manner, while still remaining congizant ofand able to program efficiently forthe underlying machine.