This book, like many projects in the real world, began its life as a prototype, one that had been taken off the shelf, fiddled with, and put back repeatedly over a number of years. In its initial conceptionlong before the grueling, months-long process to create the book you now holdthe book was to have a different title and quite a different emphasison reconfigurable hardware platforms, both FPGA-based and non-FPGA-based. That bookthe one that didn't get written but that survives in bits and pieces in certain chapters of this bookwas conceived as a follow-on to an earlier book on programmable logic devices authored by David Pellerin and Michael Holley and titled Practical Design Using Programmable Logic (Prentice Hall, 1991).
When the idea for such a book was presented to Bernard Goodwin at Prentice Hall, his initial response was "But of course!" (It is the nature of acquisitions editors, we suppose, to be enthusiastic about every project prior to actually seeing the awful sludge of the first sample chapters.) As we worked on refining the proposal, Bernard suggested that we increase the emphasis on one particular area, an area of which wedue to our current roles in a technology startupmight have a greater-than-usual understanding. Hence the emphasis on C programming for FPGAs and on the design and optimization of parallel applications for FPGA targets. Bernard was, of course, eyeing the bottom line and steering us in a direction that would maximize sales (C is popular and FPGAs are popular; ergo, we will attract more readers by having both terms in the title). What Bernard did not knowwhat none of us know, reallyis how widely C programming for FPGAs can and will be accepted. Time will tell, of course. With this book we hope to convince you that such an approach is indeed a practical one.