Chapter 10. FPGA Internals
In this chapter, we are going to briefly cover the internals of an FPGA and how they work. This chapter provides an overview of how the different parts work with enough detail that you can then use this knowledge to help better inform your design decisions. However, we will stay out of the nitty-gritty.
General Fabric and Routing Resources
The biggest part of the FPGA is something known as the general fabric. This is where most of your design gets implemented. It consists of a bunch of pieces known as configurable logic blocks, or CLBs. In the case of the FPGA used on the Mojo, the Spartan 6, a CLB contains a few six-input LUTs, eight flip-flops, and some have extra resources such as RAM or special routing for carry logic (like the arbiter).
The way all the combinational logic in your designs gets implemented is in lookup tables. The Spartan 6 uses six input LUTs. Each one of these can have a completely unique mapping of any six inputs to a single output. This means each LUT can implement any six-to-one function regardless of its complexity. For added flexibility, the LUTs in this FPGA can also be used as two five-input LUTs (using the same five inputs).
All these LUTs and DFFs are connected to something known as the switch matrix. This is a basically what the name indicates: a huge matrix of switches. It is how specific CLBs and other resources are connected to each other. There aren’t too many details available about what exactly the switch matrix ...