1. FPGA (Field Programmable Gate Array)
ㅇ 하드웨어 설계 유연성을 증대시키는, 프로그램이 가능한, 게이트 어레이 기반의 ASIC
- 1천개 이하의 게이트로 이루어진 소규모 PLD에 비해,
- 게이트 어레이에 가깝게, 10만개 이상의 게이트로 이루어진,
- 반 주문형 또는 사용자 주문형 ASIC ☞ 주문형 반도체 (ASIC) 참조
2. FPGA의 용도
ㅇ 과거에는, 고가의 오래걸리는 ASIC 제조 전에, 설계한 회로의 기능 검증 등에만 이용
ㅇ 요즈음은, 프로세서와 FPGA를 단일 칩에 수용하면서,
- 일반 연산은 프로세서로 수행,
- 특정 연산 만을 FPGA로 구현하는 등
3. FPGA의 특징
ㅇ 저 집적도, 낮은 동작 속도 이지만, 재구성 및 프로그래밍 가능
- 서로 연결하여 보다큰 논리 함수를 만들 수 있도록,
- 상대적으로 작고 독립적인 프로그램 가능 논리 모듈(블록)들로 구성됨
- 이때, 각각의 논리 모듈(블록)은,
. 4~5개의 입력 변수들을 다룰 수 있음
ㅇ 현장 프로그램 가능 (유연성 있는 일반화된 배선 구조)
- 동일 논리 블록 어레이 및 프로그램 가능한 내부 연결선에 의해,
- 후에 설계자가 이들을 통해서 프로그램 및 재구성이 가능하여,
- 원하는 논리 기능을 수행 가능
ㅇ 원하는 논리 기능을 만들기 위해, 룩업테이블 (LUT,Look-Up Table) 방식 사용
- 함수의 출력 결과를 미리 SRAM 메모리에 저장함으로써 원하는 논리 함수를 생성
- 즉, 게이트들을 직접 구현 사용하기 보다, 미리 준비해 둔 LUT 테이블을 사용
. 룩업테이블 : 조합 논리 함수를 생성하는 프로그램 가능 논리 블록의 일부분
.. 입력 값들에 대한 출력값을 미리 준비해 둔 구조
ㅇ 특히, 프로토타입(Prototype) 및 제품 개발 등에서, 하드웨어 설계 유연성 증대
- HDL(VHDL,Verilog) 등에 의한 설계를 하고,
- 그 설계 결과물을, FPGA 디바이스에 다운로드하여,
- 동작 구현 및 검증
4. FPGA의 구성
ㅇ (일반적인 구조)
- 기본 논리 셀(블록)이 다수 배열되어있고,
- 각 논리 셀(블록) 사이의 가로,세로 줄에,
- 프로그램이 가능한 상호 연결선이 존재하는 구조임
ㅇ (입출력) 프로그램 가능 입출력 블록 (Programmable Input/Output Block)
- FPGA 칩 외곽에 위치하여, 내부 논리와 외부 칩 선과의 프로그램 가능 연결을 담당
- 멀티플렉서,플립플롭 등이 있음
ㅇ (논리) 프로그램 가능 논리 블록 (Programmable or Configuable Logic Block, CLB)
- 멀티플렉서, 룩업테이블, AND-OR 게이트 또는 NAND-NAND 어레이 등에 의해 만들어짐
- 로직 셀들이 모여있는 블록(CLB)들의 연결 구성을 통해 로직이 설정되어짐
ㅇ (배선) 프로그램 가능 배선 자원 (Programmable Routing Resource)
- 특정 연결을 끊거나 잇는 것
ㅇ (전원) 대부분 공급 전원이, 1.8, 3.3, 5 V 임
5. FPGA의 설계 과정들
ㅇ 설계 명세(사양) 작성
- 요구사항 분석
- 회로 기능의 분할 및 정의
- 외부와의 인터페이스
- 기타 칩 면적,소모 전력,테스트 등
ㅇ 설계 입력 및 기술
- 회로를 HDL로 기술하면,
- 게이트 또는 동작적인 관점의 설계 결과물로써 합성됨
ㅇ 기능 시뮬레이션
- HDL로 설계된 회로 기능에 대한 시뮬레이션 및 검증
- 특히, 선택된 소자에 대한 전달지연,부하특성 등을 설계에 반영하고, 동작 모델링의 정확성 확인
ㅇ 논리 또는 회로 합성
- HDL로 기술된 논리 회로를, 각 EDA 제조사 라이브러리 내 실제 논리 소자로 변경,연결하는 과정
- 게이트들과 네트들의 정보인 넷리스트가 만들어짐
ㅇ 구현 (배치,배선 포함, PAR : Place And Route)
- 사용 부품들을 배치하고 서로 연결하는 것
ㅇ 타이밍 시뮬레이션
- 설계 합선된 회로를 FPGA 보드에 다운로드될 요소들로 변경하여,
- 이들 간의 전달지연, 배선지연, 팬아웃 등에 대해,
- 기능, 동작, 타이밍(지연시간,셋업시간,홀드 시간)을 검증
ㅇ 보드에 다운로드
ㅇ 보드 동작 검증
6. FPGA의 개발 환경 例)
ㅇ 하드웨어
- Intel(2015년 Altera 인수)社, Xilinx(자이링스)社 등의 FPGA 보드
ㅇ 소프트웨어
- Intel(Altera)社의 Quartus Prime 등
- Xilinx社의 ISE,Vivado 등
- Mentor Gaphics社의 ModelSim 시뮬레이터 등