FPGA(field programmable gate array, 현장 프로그래머블 게이트 어레이)은 프로그래머블 논리 요소와 프로그래밍가능 내부선이 포함된 반도체 소자이다. 프로그래머블 논리 요소는 AND, OR, XOR, NOT, 더 복잡한 디코더나 계산기능의 조합 기능같은 기본적인 논리 게이트의 기능을 복제하여 프로그래밍할 수 있다. 대부분의 FPGA는 프로그래밍가능 논리 요소 (FPGA 식으로는 논리 블록이라고도 함)에 간단한 플립플롭이나 더 완벽한 메모리 블록으로 된 메모리 요소를 포함하고 있다.

프로그램이 가능한 내부선 계층구조는 FPGA의 논리블록을 시스템 설계자가 요구하는 대로 단일칩 프로그래밍가능 빵판처럼 내부연결을 할 수 있다. 이 논리블록과 내부선은 제조공정 이후에 소비자/설계자가 프로그램할 수 있으므로 요구되는 어떠한 논리기능도 수행할 수 있다.(그러한 이유로 "현장 프로그래머블")

FPGA는 일반적으로 주문형 반도체(ASIC) 대용품보다 느리고, 복잡한 설계에 적용할 수 없으며, 소비전력이 크다. 그러나 개발시간이 짧고, 오류를 현장에서 재수정할 수 있고, 초기 개발비가 저렴하다는 장점이 있다. 제조사는 설계 이후에 수정할 수 없도록 할당된 덜 유연한 FPGA 버전으로 싸게 팔 수 있다. 이런 설계개발은 일반적인 FPGA에서 만들었고 좀 더 ASIC와 비슷한 고정된 버전으로 변경되었다. 복합 프로그래머블 논리 소자 (CPLD)는 비슷한 역할을 할 수 있는 소자이다.

 

일반적인 기본 구조는 컨피규러블 논리 블록 (configurable logic blocks) 어레이와 라우팅 채널로 구성된다. 다중 I/O 패드는 한행의 높이나 한열의 너비에 적합할지도 모른다. 일반적으로 모든 라우팅 채널은 동일한 (전선수) 폭을 가지고 있다.

응용회로는 적합한 자원을 가지는 FPGA를 반드시 매핑해야한다.

일반적인 FPGA의 논리 블록은 아래에 보이는 것처럼 4개의 입력 룩업 테이블 (lookup table)과 플립플롭으로 구성된다.

논리 블록

레지스터나 언레지스터 룩업 테이블이 가능한 하나의 출력만 있다. 논리 블록에는 룩업 테이블를 위한 4개의 입력과 클럭 입력이 있다. 클럭 신호 (와 높은 팬 아웃 신호)는 일반적으로 특별용도 전용 라우팅망을 통하여 연결되고 다른 신호는 분리하여 관리하기 때문이다.

이 예시구조로 FPGA의 논리 블록 핀 위치는 아래와 같이 보인다.

논리 블록 핀위치

각 입력은 출력핀이 바로 연결된 채널과 논리 블록을 통한 채널으로된 라우팅 전선을 연결할 수 있는 동안에 논리 블록의 한면으로 접근할 수 있다.

각 논리 블록 출력핀은 이렇게 이웃한 채널에서 분할된 전선 중 하나를 연결할 수 있다.

비슷하게 I/O 패드도 이렇게 이웃한 채널에서 분할된 전선중 하나를 연결할 수 있다. 예시로 칩의 맨위에 있는 I/O 패드는 바로 밑의 수평 채널에 있는 W 전선 (W는 채널 폭임)의 어떤것과 연결할 수 있다.

일반적으로 FPGA의 라우팅은 분할되지 않는다. 각 전선의 분할은 스위치 상자로 차단되기 이전에 하나의 논리 블록과 연결되어 있다. 스위치 상자 내부의 프로그래머블 스위치를 켜서 긴 라인을 구성할 수 있다. 고속의 내부선을 위해서 FPGA의 구조는 다중의 논리 블록과 연결된 긴 라우팅 라인을 사용한다.

어떤 수평 채널이나 수직 채널도 스위치 상자를 교차한다. 이 구조에서 전선이 스위치 상자로 들어갈 때 인접한 채널 분할에서 3개의 다른 전선을 연결할 수 있는 3개의 프로그래머블 스위치가 있다. 이 구조에서 사용되는 스위치의 패턴이나 위상은 평면이나 도메이기반의 스위치 상자 위상이다. 스위치 상자 위상에서 트랙 숫자 1의 전선은 인접한 채널 분할에 있는 트랙 숫자 1의 전선에만 연결되고, 트랙 숫자 2의 전선은 트랙 숫자 2의 다른전선에만 연결되며 이렇게 반복 연결된다. 아래의 그림은 스위치 상자에 있는 연결을 설명한다.

스위치 상자 위상

현대의 FPGA 계열은 반도체 공정 기술의 발전에 의해 높은 수준의 기능들을 가지게 되었으며, 초기 버전보다 속도와 기능이 향상되었다. 이런 기능들로는 곱셈기, 일반적인 DSP 블록, 임베디드 프로세서, 고속 IO 논리, 임베디드 메모리 등을 들 수 있다.

FPGA는 이전 실리콘의 유효성, 이후 실리콘의 유효성, 펌웨어 개발을 포함하여 시스템 유효성 검사에 널리 사용되고 있다. 칩이 공장에서 생산되기 이전에 설계를 검증하는 칩 회사가 생겨서 개발시간이 짧아졌다.

 

펌글- 위키백과