728x90
1. FPGA의 장점
- Reprogrammable
- FPGA는 프로그래밍이 가능하여 여러 번 수정 및 재설계 가능
- 반면, ASIC(Application-Specific Integrated Circuit)은 한정된 기능을 수행하며, 수정이 불가능함
- Multiple Bitstream 지원
- 하나의 FPGA에서 여러 개의 bitstream을 저장하고 변경 가능
- Bug Fix 비용 절감
- ASIC에서는 하드웨어적 수정이 불가능하며, 소프트웨어적으로 우회해야 함
- FPGA는 하드웨어 설계를 수정하여 직접적인 문제 해결 가능
==========𝔼𝔼𝟚𝟚==========
2. FPGA의 기본 구조
: FPGA 칩 내에는 다음과 같은 주요 블록이 존재하며, 이들은 interconnect를 통해 연결됨
2.1 General-purpose Blocks
- Configurable Logic Blocks (CB)
- FPGA의 가장 기본적인 논리 블록으로, 모든 조합 논리를 구현할 수 있음
- 예) AND 등의 게이트들을 구현 가능
- 세부 구조:
- LUT (Lookup Table): 논리 연산 수행을 위한 메모리 기반 구조
- Sequential Elements: 플립플롭(Flip-Flop) 또는 래치(Latch)를 포함
- Multiplexers: 다양한 출력 선택을 담당
- Carry Logic: 연산 중 발생하는 캐리를 처리하는 전용 로직
- IO Blocks (IOB)
- 외부 디바이스(스위치, 버튼, LED 등)와 FPGA 간의 인터페이스 역할
- 세 가지 종류의 IO:
- HP (High Performance): 고속 인터페이스에 사용
- HR (High Range): 다양한 전압 표준을 지원
- HD (High Density): 저속 인터페이스를 위한 설계
- Programmable Interconnects:
- CB와 IOB를 연결하며, 신호 전달 경로를 프로그래밍 가능
- "Routing"을 통해 최적의 신호 경로를 설정
_
2.2 Dedicated Blocks (전용 블록)
: FPGA 성능을 최적화하기 위해 추가된 전용 블록들
- PLL (Phase-Locked Loop)
- 클럭 신호의 위상 및 주파수를 조정하여 타이밍 최적화
- BRAM (Block RAM)
- FPGA 내부에서 사용 가능한 고속 메모리 블록
- 기본 크기는 36kb이며, 18kb 블록 2개로 나누어 사용 가능
- 듀얼 포트 지원
- DSP (Digital Signal Processing Block)
- 곱셈 및 누산기(MAC, Multiply-Accumulate) 연산 최적화
- 일반 CLB보다 빠르고 전력 소모가 적음
- Serial Transceiver
- FPGA와 외부 칩 간의 고속 데이터 전송을 위한 전용 인터페이스
- PCIe, SATA, Ethernet 등과 같은 고속 시리얼 통신 지원
==========𝔼𝔼𝟚𝟚==========
3. FPGA 내부의 주요 논리 요소
- LUT (Look-Up Table)
- 입력과 출력의 매핑을 미리 저장한 테이블
- LUT에 적절한 테이블 값을 설정하면 모든 조합 논리(Combinational Logic) 구현 가능
- 기본적으로 작은 메모리 구조를 이용하여 동작
- Sequential Elements (플립플롭 & 래치)
- 플립플롭(Flip-Flop, FF): 클럭 신호에 따라 데이터 저장
- 래치(Latch): 클럭 신호 없이 입력값이 변화할 때 즉시 변경 (FPGA 설계에서는 주로 플립플롭 사용 권장)
- Multiplexer
- 여러 개의 입력 중 하나를 선택하여 출력으로 전달
- Carry Logic
- 산술 연산(덧셈, 뺄셈 등)에서 발생하는 캐리(Carry) 처리를 위한 블록
- 캐리 연산이 없을 경우 LUT를 추가로 사용해야 하므로 비효율적임
- FPGA 내부에 최적화된 캐리 로직이 포함되어 있음
==========𝔼𝔼𝟚𝟚==========
4. 라우팅 (Routing)
: FPGA 내부의 다양한 블록들을 연결하는 네트워크
- General Interconnect Routing
- CLB, IOB, BRAM, DSP 등 주요 블록을 연결하는 기본 라우팅
- 신호 전달 최적화를 위해 가로(Horizontal) 및 세로(Vertical) 채널로 나뉨
- Clock Routing (전용 클럭 라우팅)
- FPGA에서 가장 중요한 신호인 클럭(Clock)은 일반적인 interconnect가 아닌 전용 routing 경로를 가짐
- 클럭이 지연되거나 왜곡되지 않도록 별도의 Clock Tree로 배치
- Dedicated Routing for Carry Chain
- 연산을 빠르게 수행하기 위해 Carry Chain 신호는 일반 interconnect와 별도로 최적화됨
==========𝔼𝔼𝟚𝟚==========
5. FPGA 설계 시 고려 사항
- Timing & Power Optimization
- CLB만으로 모든 논리를 구현할 수 있으나, 타이밍 지연 및 전력 소모가 증가할 수 있음
- 따라서 DSP, BRAM, PLL 등 전용 블록을 활용하여 최적화
- FPGA 모델 선택
- 연산 중심 설계 → DSP 블록 개수 중요
- 데이터 저장이 많은 설계 → BRAM 용량 고려
- 외부와의 고속 통신 필요 → Serial Transceiver 유무 확인
- 비트스트림 관리
- FPGA는 여러 개의 Bitstream을 저장하여 필요에 따라 다른 기능을 실행 가능
==========𝔼𝔼𝟚𝟚==========
6. 정리
- FPGA는 Reprogrammable 하여 ASIC보다 유연하게 설계 변경 가능
- CLB, IOB, Routing으로 기본적인 논리 회로 구현 가능
- 타이밍 및 전력 최적화를 위해 DSP, BRAM, PLL, Serial Transceiver 등의 전용 블록 추가됨
- LUT를 활용하여 모든 조합 논리를 구현 가능하며, Sequential Elements, Multiplexer, Carry Logic 등이 함께 사용됨
- Routing은 일반적인 Interconnect 외에도 Clock Routing 및 Carry Chain 전용 Routing이 존재
- FPGA 선택 시 필요한 기능과 전용 블록의 개수를 고려해야 함
728x90
반응형
'Study > FPGA' 카테고리의 다른 글
06 - Verilog Module 모듈과 Instance 인스턴스화 개념 (0) | 2025.03.08 |
---|---|
05 - 동기 Synchronous vs. 비동기 리셋 Reset (0) | 2025.03.03 |
04 - FPGA 설계 흐름 (Design Flow) (0) | 2025.03.01 |
03 - HLS(High-Level Synthesis) 개념 및 툴 정리 (0) | 2025.03.01 |
02 - Clock 확인과 Vivado Verilog 실습 (0) | 2025.02.14 |