FPGA를 구성하는 기본요소는 Configurable Logic Block (CLB)이다. 이번 글에서는 CLB에 대해 자세히 알아보도록 한다.
CLB는 기본적인 logic과 저장 기능을 제공한다. 이 기능을 제공하는 요소로 transistor나 processor를 생각할 수 있지만 그렇지 않다.
- transistor: very fine-grained하고 많은 수의 programmable interconnect가 필요하다. 이것은 FPGA의 area-inefficiency를 증가시킨다.
- processor: very coarse-grained하다. 작은 function을 구현하기 위해서 너무 많은 자원을 낭비해야 한다.
이 두 가지 극단의 중간을 적절히 선택하는 것이 basic logic block에 적당하다. Xilinx나 Altera와 같은 제작사들은 basic logic과 저장 기능을 제공하기 위해 LUT-based CLB를 사용한다. LUT-based CLB는 너무 fine-grain하지 않으면서 너무 coarse-grain하지도 않다.
CLB는 하나의 basic logic element (BLE), 혹은 상호연결된 BLE들의 집합으로 구성된다.
가장 기본 요소라고도 할 수 있는 basic logic element (BLE)에 대해서 먼저 살펴보도록 하자.
Basic Logic Element (BLE)
BLE는 lookup table (LUT)와 Flip-Flop으로 구성된다.
k개의 input을 갖는 LUT(LUT-k)는 2^k개의 configuration bits를 가지고, 이것으로 k-input boolean function을 구현할 수 있다. 따라서 LUT- k는 2^k개의 SRAM을 가진다.
LUT의 output은 optional Flip-Flop과 연결되어있다.
그림을 통해 BLE의 구조를 자세히 살펴보자.
이 그림은 4개의 input을 갖는 LUT (LUT-4)로 구성된다. 따라서 16개의 configuration bit를 가지고 이를 각각 SRAM에 저장한다. 멀티플렉서가 16개의 비트 중에서 하나를 선택해 LUT의 output으로서 filp-flop으로 전달하는 것을 볼 수 있다.
Configurable Logic Block (CLB)
드디어 Configurable logic block을 살펴보자. CLB는 local routing network로 연결된 BLE의 집합으로 구성된다. routing network는 추후에 알아보도록 할 것이다. 여기서는 구조에만 집중하자.
위의 그림은 4개의 BLE로 구성된 CLB이다. 앞서 살펴보았듯이 각각의 BLE는 LUT와 Flip-Flop을 가진다. BLE의 output은 서로 연결되어 있는 네트워크를 통해 같은 집합 내부에 있는 다른 BLE에 접근 가능하다.
하나의 집합의 output pin의 개수는 BLE의 개수와 동일하다. 따라서 위의 CLB는 4개의 output pin을 가진다. 하지만 input pin의 경우 모든 BLE들이 필요로 하는 input pin의 합보다 적거나 같을 수 있다.
현대의 FPGA에서는 하나의 CLB가 보통 4개에서 10개의 BLE로 구성된다.
지금까지 FPGA를 구성하는 기본요소에 대해 알아보았다. 지금까지는 basic logic block만 살펴보았지만 많은 현대의 FPGA는 memory, multiplier, adder, DSP block 등이 혼합되어 다른 특정한 기능을 제공하기도 한다. 이런 block들은 hard block이라고 부른다. 또한, 이렇게 hard block과 함께 구성한 것을 heterogeneous mixture라고 한다.
다음 글에서는 Routing architecture에 대해 알아보자.
'Computer > 디지털시스템' 카테고리의 다른 글
[논리회로] 조합 논리회로 (Combinational Logic Circuit) (2): boolean equation, boolean algebra (1) | 2024.06.06 |
---|---|
[논리회로] 조합 논리회로 (Combinational Logic Circuit) (1) (0) | 2024.06.05 |
[FPGA] FPGA Architectures(2): Programming Technologies (0) | 2024.06.03 |
[FPGA] FPGA Architectures(1): FPGA (0) | 2024.06.03 |