논리 블록

컴퓨팅에서 **논리 블록** 또는 **로직 블록**(logic block), **구성 가능한 논리 블록**(configurable logic block, **CLB**)은 FPGA 기술의 기본 구성 요소이다. 논리 블록은 엔지니어에 의해 재구성 가능한 논리 회로를 제공하도록 구성될 수 있다.

논리 블록은 가장 일반적인 FPGA 아키텍처이며, 일반적으로 논리 블록 배열 내에 배치된다. 논리 블록은 I/O 패드(외부 신호와 인터페이스하기 위함)와 라우팅 채널(논리 블록을 상호 연결하기 위함)을 필요로 한다.

프로그래머블 논리 블록은 David W. Page와 LuVerne R. Peterson이 발명하였고, 1985년 특허에서 정의되었다.

## 응용 분야
응용 회로는 적절한 리소스가 있는 FPGA에 매핑되어야 한다. 필요한 논리 블록 및 I/O 수는 설계에서 쉽게 결정되지만, 필요한 라우팅 트랙 수는 동일한 양의 논리를 가진 설계에서도 상당히 다를 수 있다.

예를 들어, 크로스바 스위치는 동일한 게이트 수를 가진 시스톨릭 배열보다 훨씬 더 많은 라우팅을 필요로 한다. 사용되지 않는 라우팅 트랙은 어떠한 이점도 제공하지 않으면서 부품의 비용을 증가시키고(성능을 저하시키므로), FPGA 제조업체는 대부분의 설계가 순람표 (LUT) 및 I/O 측면에서 적합하도록 충분한 트랙을 제공하려고 노력한다. 이는 렌트의 법칙에서 파생된 추정치나 기존 설계를 통한 실험을 통해 결정된다.

FPGA는 또한 프리-실리콘 검증, 포스트-실리콘 검증 및 펌웨어 개발을 포함한 시스템 검증에 널리 사용된다. 이를 통해 칩 회사는 칩이 공장에서 생산되기 전에 설계를 검증하여 시장 출시 시간을 단축할 수 있다.

## 아키텍처
섬네일|right|350px|논리 셀의 간략화된 그림
일반적으로 논리 블록은 몇 개의 논리 셀로 구성된다(각 셀은 적응형 논리 모듈(ALM), 논리 요소(LE), 슬라이스 등으로 불린다). 일반적인 셀은 4-입력 LUT, 전가산기 (FA), D형 플립플롭 (DFF)으로 구성되며, 오른쪽 그림에 나와 있다. 이 그림에서 LUT는 두 개의 3-입력 LUT로 분할되어 있다. 일반 모드에서는 왼쪽 먹스를 통해 4-입력 LUT로 결합된다. 산술 모드에서는 출력이 FA로 공급된다. 모드 선택은 중간 멀티플렉서에 프로그래밍된다. 출력은 그림 예에서 오른쪽 먹스의 프로그래밍에 따라 동기식 또는 비동기식일 수 있다. 실제로는 공간을 절약하기 위해 FA의 전체 또는 일부가 LUT에 기능으로 포함된다.

논리 블록은 일반적으로 몇 개의 ALM/LE/슬라이스를 포함한다. ALM과 슬라이스는 일반적으로 예시 그림과 유사한 2개 또는 4개의 구조를 포함하며, 일부 공유 신호를 갖는다.

제조업체들은 고성능 부품에서 6-입력 LUT로 전환하기 시작했으며, 성능 향상을 주장하고 있다.

### 3D 아키텍처
FPGA의 크기와 전력 소비를 줄이기 위해 타불라 및 자일링스와 같은 공급업체는 새로운 3D 또는 스택 아키텍처를 도입했다. 28nm 7-시리즈 FPGA를 출시한 후 자일링스는 이 FPGA 제품 라인 중 가장 고밀도 부품 중 일부가 3D 구성 및 스택 다이 어셈블리를 위해 개발된 기술을 사용하여 하나의 패키지에 여러 다이로 구성될 것이라고 밝혔다. 이 기술은 여러(3개 또는 4개) 활성 FPGA 다이를 인터포저인 실리콘 조각 위에 나란히 쌓는다. 인터포저는 수동 상호 연결을 수행하는 단일 실리콘 조각이다. 다중 다이 구성은 FPGA 자체의 공정 요구 사항과 매우 빠른 28Gbit/s 직렬 트랜시버 간의 공정 요구 사항이 다르기 때문에 FPGA의 다른 부분을 다른 공정 기술로 생성할 수 있게 한다. 이러한 방식으로 구축된 FPGA를 이종 FPGA라고 부른다.

## 외부 I/O
섬네일|right|논리 블록 핀 위치

클록 신호(및 종종 다른 고팬 아웃 신호)는 일반적으로 상용 FPGA에서 특수 목적의 전용 라우팅 네트워크(즉, 글로벌 버퍼)를 통해 라우팅되므로, 이들과 다른 신호는 별도로 관리된다.

이 예시 아키텍처의 경우 FPGA 논리 블록 핀의 위치가 오른쪽에 표시되어 있다.

각 입력은 논리 블록의 한 쪽에서 접근할 수 있으며, 출력 핀은 오른쪽 채널과 논리 블록 아래 채널의 라우팅 와이어에 연결할 수 있다.

각 논리 블록 출력 핀은 인접한 채널의 모든 배선 세그먼트에 연결할 수 있다.

마찬가지로, I/O 패드는 인접한 채널의 모든 배선 세그먼트에 연결할 수 있다. 예를 들어, 칩 상단의 I/O 패드는 바로 아래의 수평 채널에 있는 W개의 와이어(W는 채널 너비) 중 어느 하나에 연결할 수 있다.

## 라우팅
일반적으로 FPGA 라우팅은 분할되지 않는다. 즉, 각 배선 세그먼트는 스위치 박스에서 종료되기 전에 하나의 논리 블록만 가로지른다. 스위치 박스 내의 일부 프로그래머블 스위치를 켜면 더 긴 경로를 구성할 수 있다. 더 빠른 상호 연결을 위해 일부 FPGA 아키텍처는 여러 논리 블록을 가로지르는 더 긴 라우팅 라인을 사용한다.

섬네일|right|250px|스위치 박스 토폴로지

수직 채널과 수평 채널이 교차할 때마다 스위치 박스가 있다. 이 아키텍처에서 와이어가 스위치 박스에 들어가면 인접 채널 세그먼트의 다른 세 와이어에 연결할 수 있는 세 개의 프로그래머블 스위치가 있다. 이 아키텍처에서 사용되는 스위치 패턴 또는 토폴로지는 평면 또는 도메인 기반 스위치 박스 토폴로지이다. 이 스위치 박스 토폴로지에서는 트랙 번호 1의 와이어는 인접 채널 세그먼트의 트랙 번호 1의 와이어에만 연결되고, 트랙 번호 2의 와이어는 트랙 번호 2의 다른 와이어에만 연결되는 식이다. 오른쪽 그림은 스위치 박스의 연결을 보여준다.

일반적으로 모든 라우팅 채널은 동일한 너비(와이어 수)를 갖는다. 여러 I/O 패드는 배열에서 한 행의 높이나 한 열의 너비에 맞을 수 있다.

## 하드 블록
현대 FPGA 제품군은 위의 기능들을 확장하여 실리콘에 고정된 상위 수준 기능을 포함한다. 이러한 일반적인 기능들이 실리콘에 내장되면 필요한 면적이 줄어들고, 원시 요소로 구성하는 것보다 해당 기능의 속도가 향상된다. 이러한 예시에는 곱셈기, 일반 DSP 블록, 임베디드 프로세서, 고속 I/O 로직 및 임베디드 메모리가 포함된다.

고급 FPGA는 고속 멀티-기가비트 트랜시버와 프로세서 코어, 이더넷 매체 접근 제어러, PCI/PCI 익스프레스 컨트롤러, 외부 메모리 컨트롤러와 같은 하드 IP 코어를 포함할 수 있다. 이러한 코어는 프로그래머블 패브릭과 함께 존재하지만, LUT 대신 트랜지스터로 만들어지므로 ASIC 수준의 성능과 전력 소비를 가지면서 상당한 양의 패브릭 리소스를 소비하지 않아 애플리케이션별 논리에 더 많은 패브릭을 자유롭게 사용할 수 있다. 멀티-기가비트 트랜시버는 또한 고성능 아날로그 입력 및 출력 회로와 고속 직렬화기 및 역직렬화기를 포함하는데, 이들은 LUT로 만들 수 없는 구성 요소이다. 라인 코딩과 같은 상위 수준 PHY 계층 기능은 FPGA에 따라 하드 로직에서 직렬화기 및 역직렬화기와 함께 구현될 수도 있고 그렇지 않을 수도 있다.

## 클록 신호
FPGA 내부에 구축된 대부분의 회로는 클록 신호가 필요한 동기식 회로이다. FPGA는 클록 및 리셋을 위한 전용 글로벌 및 지역 라우팅 네트워크를 포함하므로 최소한의 클록 스큐로 전달될 수 있다. FPGA는 일반적으로 새로운 클록 주파수를 합성하고 지터를 감쇠하기 위해 아날로그 위상동기회로 및 딜레이 록 루프 구성 요소를 포함한다. 복잡한 설계는 서로 다른 주파수 및 위상 관계를 가진 여러 클록을 사용할 수 있으며, 각 클록은 별도의 클록 도메인을 형성한다. 이러한 클록 신호는 오실레이터에 의해 로컬로 생성되거나 고속 직렬 데이터 스트림에서 복구될 수 있다. 클록 도메인 크로싱 회로를 구축할 때는 메타스테이블을 피하기 위해 주의해야 한다. FPGA는 일반적으로 서로 다른 클록으로 듀얼 포트 RAM으로 작동할 수 있는 블록 RAM을 포함하여 FIFO 및 서로 다른 클록 도메인을 연결하는 듀얼 포트 버퍼 구축에 도움이 된다.

## 같이 보기
* 알테라

## 각주

분류:게이트 어레이