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