INTRODUCTION Starting with binary data, one can deﬁ ne a process to manipulate those data entirely mathematically. It is important to understand the process before considering the implementation. A large number of choices of processing mechanisms exist today, all of which must give the same result if properly engineered. A ﬁ xed set of gates may be hardwired to implement a process in which the highest speed is required, whereas a general purpose processor can implement a process under software control at lower speed but with greater ﬂ exibility. Somewhere between those extremes, a ﬁ eld programmable gate array (FPGA) is a set of logic gates whose conﬁ guration can be externally programmed.