ACOE201 Computer Architecture I Laboratory Exercises Background and Introduction to FPGAs
Dr. Konstantinos Tatas [email protected] http://staff.fit.ac.cy/com.tk
ACOE201 Laboratory Structure and Objectives
Small group experiments lasting approximately two periods Lab report Design and implementation of a simple CPU Hardware: Xilinx Spartan-3E Starter Kit Software: Xilinx ISE Objectives:
Develop practical digital design skills Reinforce Computer Architecture concepts by designing and verifying a simple CPU
Xilinx Spartan-3E Starter Kit
FPGA
buttons
LEDs switches
FPGA Principles
A Field-Programmable Gate Array (FPGA) is an integrated circuit that can be configured by the user to emulate any digital circuit as long as there are enough resources An FPGA can be seen as an array of Configurable Logic Blocks (CLBs) connected through programmable interconnect (Switch Boxes)
FPGA structure
CLB SB CLB
SB
SB
SB
Configurable Logic Blocks CLB SB CLB Interconnection Network
I/O Signals (Pins)
Simplified CLB Structure
Look-Up Table (LUT)
CLB SB CLB
MUX
SET
CLR
SB
SB
SB
Configurable Logic Blocks CLB SB CLB Interconnection Network
I/O Signals (Pins)
A B C D
Example: 4-input AND gate
O
A
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1
B
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1
C
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1
D
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
O
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
A B C D
MUX
SET
CLR
Q
0
Configuration bits
Example 2: Find the configuration bits for the following circuit
A0 2-to-1 MUX A1
CLR
SET
S Clock
A0 A1
A1 0 0 1 1 0 0 1 1 S 0 1 0 1 0 1 0 1
MUX
SET
A0 0 0 0 0 1 1 1 1
S
CLR
Configuration bits
Interconnection Network
Configuration bits 0
0
CLB SB CLB
0 0 0
SB
SB
SB
Configurable Logic Blocks CLB SB CLB Interconnection Network
I/O Signals (Pins)
Example 3
Determine the configuration bits for the following circuit implementation in a 2x2 FPGA, with I/O constraints as shown in the following figure. Assume 2-input LUTs in each CLB.
Input1
Input2 CLB0 SB0 CLB1
Input1 Input2
SB1 SB2 SB3
SET
Output
Input3
CLR
Input3 CLB2 SB4 CLB3
Output
CLBs required
CLB 1
Input1 Input2
D
SET
CLB 2
Q
Output
CLR
Input3
0
MUX
O
O
0
MUX
Input1 Input2
0 0
SET
Output
1 1
SET
CLR
Input3
1
Configuration bits
1
0
CLR
Configuration bits
Placement: Select CLBs
Input1 Input2 CLB0 SB0 CLB1
SB1
SB2
SB3
Input3 CLB2 SB4 CLB3
Output
Routing: Select path
Input1
SB1 Configuration bits
Input2 CLB0 SB0 CLB1
0 0 1 0 0 0
SB1
SB2
SB3
SB4
Input3 CLB2 SB4 CLB3
Configuration bits
Output
0 1 0 0 0 0
Configuration Bitstream
The configuration bitstream must include ALL CLBs and SBs, even unused ones CLB0: 00011 CLB1: 01100 CLB2: XXXXX CLB3: ????? SB0: 000000 SB1: 000010 SB2: 000000 SB3: 000000 SB4: 000001
Realistic FPGA CLB: Xilinx
FPGA EDA Tools
Must provide a design environment based on digital design concepts and components (gates, flip-flops, MUXs, etc.) Must hide the complexities of placement, routing and bitstream generation from the user. Manual placement, routing and bitstream generation is infeasible for practical FPGA array sizes and circuit complexities.