FOREWORD

Not much has changed in computing in the last 40 years.

Most computers still use the Von Neumann stored program model with serial execution of instructions, centralized main memory, and a bus tying it all together. We write algebraic formulas and symbolic constructs and surround them with various loop structures to sequentially process an array of data items. Language statements are translated into a fixed set of machine instructions which are then executed one (or perhaps two or three) at a time. Strange errors of unknown origin frequently occur, and even stranger incantations are often necessary to recover from them.

To be sure, the price and performance of computing hardware have improved dramatically over the years, on a curve of steepness and length that may never be equalled in any man-made technology. Computers have gotten dramatically easier to use, largely because user interfaces have become two-dimensional. Instead of typing arcane commands, we now merely push the mouse to a button displayed on the screen and click.

But the way in which computers are built and programmed hasn’t changed all that much. It can be argued that languages, compilers, CAD/CAE tools, and so on have improved significantly, but our underlying models of computation have remained basically unchanged since the earliest days of computing.

The reasons for this are simple: Hardware is difficult and time-consuming to build and to change. Serial instruction execution is a simple, very general ...

Get Field-Programmable Gate Arrays: Reconfigurable Logic for Rapid Prototyping and Implementation of Digital Systems now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.