Study/FPGA

01. FPGA의 내부 구조와 논리 요소

도엔 2025. 2. 11. 12:02
728x90

1. FPGA의 장점

  1. Reprogrammable
    • FPGA는 프로그래밍이 가능하여 여러 번 수정 및 재설계 가능
    • 반면, ASIC(Application-Specific Integrated Circuit)은 한정된 기능을 수행하며, 수정이 불가능함
  2. Multiple Bitstream 지원
    • 하나의 FPGA에서 여러 개의 bitstream을 저장하고 변경 가능
  3. Bug Fix 비용 절감
    • ASIC에서는 하드웨어적 수정이 불가능하며, 소프트웨어적으로 우회해야 함
    • FPGA는 하드웨어 설계를 수정하여 직접적인 문제 해결 가능


==========𝔼𝔼𝟚𝟚==========

 

2. FPGA의 기본 구조

: FPGA 칩 내에는 다음과 같은 주요 블록이 존재하며, 이들은 interconnect를 통해 연결됨

2.1 General-purpose Blocks

  1. Configurable Logic Blocks (CB)
    • FPGA의 가장 기본적인 논리 블록으로, 모든 조합 논리를 구현할 수 있음
    • 예) AND 등의 게이트들을 구현 가능
    • 세부 구조:
      • LUT (Lookup Table): 논리 연산 수행을 위한 메모리 기반 구조
      • Sequential Elements: 플립플롭(Flip-Flop) 또는 래치(Latch)를 포함
      • Multiplexers: 다양한 출력 선택을 담당
      • Carry Logic: 연산 중 발생하는 캐리를 처리하는 전용 로직
  2. IO Blocks (IOB)
    • 외부 디바이스(스위치, 버튼, LED 등)와 FPGA 간의 인터페이스 역할
    • 세 가지 종류의 IO:
      • HP (High Performance): 고속 인터페이스에 사용
      • HR (High Range): 다양한 전압 표준을 지원
      • HD (High Density): 저속 인터페이스를 위한 설계
  3. Programmable Interconnects:
    • CB와 IOB를 연결하며, 신호 전달 경로를 프로그래밍 가능
    • "Routing"을 통해 최적의 신호 경로를 설정

_

2.2 Dedicated Blocks (전용 블록)

: FPGA 성능을 최적화하기 위해 추가된 전용 블록들

  1. PLL (Phase-Locked Loop)
    • 클럭 신호의 위상 및 주파수를 조정하여 타이밍 최적화
  2. BRAM (Block RAM)
    • FPGA 내부에서 사용 가능한 고속 메모리 블록
    • 기본 크기는 36kb이며, 18kb 블록 2개로 나누어 사용 가능
    • 듀얼 포트 지원
  3. DSP (Digital Signal Processing Block)
    • 곱셈 및 누산기(MAC, Multiply-Accumulate) 연산 최적화
    • 일반 CLB보다 빠르고 전력 소모가 적음
  4. Serial Transceiver
    • FPGA와 외부 칩 간의 고속 데이터 전송을 위한 전용 인터페이스
    • PCIe, SATA, Ethernet 등과 같은 고속 시리얼 통신 지원


==========𝔼𝔼𝟚𝟚==========

 

3. FPGA 내부의 주요 논리 요소

  1. LUT (Look-Up Table)
    • 입력과 출력의 매핑을 미리 저장한 테이블
    • LUT에 적절한 테이블 값을 설정하면 모든 조합 논리(Combinational Logic) 구현 가능
    • 기본적으로 작은 메모리 구조를 이용하여 동작
  2. Sequential Elements (플립플롭 & 래치)
    • 플립플롭(Flip-Flop, FF): 클럭 신호에 따라 데이터 저장
    • 래치(Latch): 클럭 신호 없이 입력값이 변화할 때 즉시 변경 (FPGA 설계에서는 주로 플립플롭 사용 권장)
  3. Multiplexer
    • 여러 개의 입력 중 하나를 선택하여 출력으로 전달
  4. Carry Logic
    • 산술 연산(덧셈, 뺄셈 등)에서 발생하는 캐리(Carry) 처리를 위한 블록
    • 캐리 연산이 없을 경우 LUT를 추가로 사용해야 하므로 비효율적임
    • FPGA 내부에 최적화된 캐리 로직이 포함되어 있음


==========𝔼𝔼𝟚𝟚==========

 

4. 라우팅 (Routing)

: FPGA 내부의 다양한 블록들을 연결하는 네트워크

  1. General Interconnect Routing
    • CLB, IOB, BRAM, DSP 등 주요 블록을 연결하는 기본 라우팅
    • 신호 전달 최적화를 위해 가로(Horizontal) 및 세로(Vertical) 채널로 나뉨
  2. Clock Routing (전용 클럭 라우팅)
    • FPGA에서 가장 중요한 신호인 클럭(Clock)은 일반적인 interconnect가 아닌 전용 routing 경로를 가짐
    • 클럭이 지연되거나 왜곡되지 않도록 별도의 Clock Tree로 배치
  3. Dedicated Routing for Carry Chain
    • 연산을 빠르게 수행하기 위해 Carry Chain 신호는 일반 interconnect와 별도로 최적화됨


==========𝔼𝔼𝟚𝟚==========

 

5. FPGA 설계 시 고려 사항

  1. Timing & Power Optimization
    • CLB만으로 모든 논리를 구현할 수 있으나, 타이밍 지연 및 전력 소모가 증가할 수 있음
    • 따라서 DSP, BRAM, PLL 등 전용 블록을 활용하여 최적화
  2. FPGA 모델 선택
    • 연산 중심 설계 → DSP 블록 개수 중요
    • 데이터 저장이 많은 설계 → BRAM 용량 고려
    • 외부와의 고속 통신 필요 → Serial Transceiver 유무 확인
  3. 비트스트림 관리
    • 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
반응형