FPGA
The
Xilinx XC4005XL-PC84C-3 is a 3.3-V FPGA in an 84-pin
J-lead PLCC package. This SRAM-based device must be
configured by external ROM or host at power-up. It
has a 14 × 14 array of configurable logic blocks
(CLBs) and 61 bonded-out I/O blocks (IOBs) in a sea
of programmable interconnect.
Every
CLB has two 4-input look-up tables (4-LUTs) and two
flip-flops. Each 4-LUT can implement any logic function
of 4 inputs, or a 16 × 1-bit synchronous static RAM,
or ROM. Each CLB also has "carry logic"
to build fast, compact ripple-carry adders.
Each
IOB offers input and output buffers and flip-flops.
The output buffer can be 3-stated for bidirectional
I/O. The programmable interconnect routes CLB/IOB
output signals to other CLB/IOB inputs. It also provides
wide-fanout low-skew clock lines, and horizontal long
lines, which can be driven by 3-state buffers at each
CLB.[2]
The
XC4000XL architecture would appear to have been designed
with CPUs in mind. Just eight CLBs can build a single-port
16 × 16-bit register file (using LUTs as SRAM), a
16-bit adder/subtractor (using carry logic), or a
four-function 16-bit logic unit. Because each LUT
has a flip-flop, the device is register rich, enabling
a pipelined implementation style; and as each flip-flop
has a dedicated clock enable input, its easy
to stall the pipeline when necessary. Long line buses
and 3-state drivers form an efficient word-wide multiplexer
of the many function unit results, and even an on-chip
3-state peripheral bus.