본문 바로가기
기본 이론

[Vivado] Logic Block

by smileww 2024. 9. 17.

Vivado에서 "logic block"은 FPGA(Field-Programmable Gate Array)에서 디지털 회로를 구성하기 위한 기본적인 빌딩 블록을 말합니다.

 

이 블록들은 다양한 디지털 로직을 구현할 수 있는 구성요소로, 주로 LUT(Look-Up Table), 플립플롭, 입력/출력 포트 등으로 구성되어 있습니다.

 

LUT는 입력에 따라 출력을 결정하는데 사용되는 메모리 테이블로, 특정한 논리 함수를 실현할 수 있습니다. 이러한 logic block들은 상호 연결되어 복잡한 디지털 회로나 알고리즘을 구현할 수 있도록 합니다.

 

Vivado 툴 자체는 이러한 logic block들을 효율적으로 배치하고 라우팅하여 FPGA의 전체적인 성능과 자원 활용을 최적화하는 데 중점을 두고 있습니다.

 

 

FPGA에서 "매핑된다"는 표현은 특정 논리 기능이나 연산이 FPGA의 구조 내부에서 사용가능한 물리적 자원으로 변환되어 구현되는 과정을 의미합니다. FPGA의 핵심 구성 요소인 LUT(Look-Up Table)는 이러한 매핑 과정에서 중요한 역할을 합니다.

매핑 과정의 상세 설명:

  1. 논리 함수의 식별: 먼저, 사용자가 제공한 RTL 코드 내의 논리 함수를 식별합니다. 이 함수는 AND, OR, XOR 등의 기본 게이트 또는 더 복잡한 수학적 연산일 수 있습니다.
  2. LUT 설정: 각 논리 함수는 하나 이상의 LUT에 할당됩니다. FPGA의 LUT는 일정 수의 입력을 받아서 하나의 출력을 생성할 수 있는 구성가능한 메모리 테이블입니다. 예를 들어, AND 게이트 같은 간단한 논리 연산은 한 개의 LUT에 매핑될 수 있습니다. 이 LUT는 모든 가능한 입력 조합에 대해 출력 값을 저장하는 진리표를 구성합니다.
  3. LUT 구성: 매핑 과정에서 각 LUT는 그에 해당하는 논리 함수의 진리표에 따라 설정됩니다. 이를 통해 논리 회로의 동작이 실제로 FPGA 내에서 구현됩니다.
  4. 자원 할당: 매핑된 LUT는 FPGA 칩 내의 특정 위치에 배치되며, 필요한 경우 추가적인 논리 리소스나 라우팅 리소스와 연결됩니다.

매핑의 중요성:

  • 효율성: FPGA의 물리적 자원을 효율적으로 사용하여 주어진 논리를 최소한의 공간과 전력으로 구현할 수 있게 합니다.
  • 성능 최적화: 논리 블록의 배치와 라우팅은 신호의 지연 시간과 전체 칩의 성능에 큰 영향을 미칩니다. 효율적인 매핑은 이러한 요소를 최적화하여 더 빠르고 신뢰성 있는 설계를 가능하게 합니다.
  • 유연성: FPGA는 필드에서 프로그래밍이 가능하므로, 설계 변경이 필요할 때 새로운 논리를 다시 매핑하여 기기를 업데이트할 수 있습니다.

결국, 매핑은 FPGA 설계에서 논리 코드를 실제 하드웨어로 변환하는 핵심 단계입니다.

 

 

 

 

CLB(Configurable Logic Block)와 IOB(Input/Output Block)

이들은 FPGA 내부의 기능적 및 물리적 구성을 나타내며, 각각의 역할과 구조가 FPGA의 성능과 가능성을 결정합니다.

 

CLB (Configurable Logic Block)

  • 정의: CLB는 FPGA에서 가장 기본적인 논리 구성 단위로, 사용자가 구성할 수 있는 다양한 논리 회로를 만드는 데 사용됩니다. CLB는 여러 개의 LUT(Look-Up Tables), 플립플롭, 그리고 다양한 논리 게이트와 연산을 수행할 수 있는 다른 요소들을 포함할 수 있습니다.
  • 역할: CLB는 FPGA에서 주요한 연산과 데이터 처리 작업을 담당합니다. 복잡한 논리 회로, 연산기, 타이밍 제어 회로 등을 구현하는 데 사용됩니다.
  • 유연성: CLB의 구성 요소들은 프로그래밍을 통해 다양한 논리 기능을 수행하도록 설정할 수 있어, 설계 변경이 필요할 때 쉽게 적용할 수 있는 유연성을 제공합니다.

IOB (Input/Output Block)

  • 정의: IOB는 FPGA의 외부 세계와의 인터페이스를 담당하는 구성 요소로, FPGA 칩의 주변에 위치하며, 외부 신호를 내부 논리 회로로 전달하거나 내부에서 처리된 데이터를 외부로 출력하는 기능을 합니다.
  • 역할: 모든 외부 입력과 출력 신호를 처리하며, 이러한 신호들을 적절히 버퍼링하고 조절하여 FPGA 내부의 논리 회로와 적절히 연결됩니다.
  • 구성: IOB는 일반적으로 다양한 신호 레벨과 전기적 특성을 지원할 수 있도록 다양하게 구성될 수 있으며, 보통은 입력 버퍼, 출력 버퍼, 양방향 버퍼 등을 포함합니다.

설계와 구현의 통합

설계 합성에서 생성된 netlist는 논리 연결과 구성 정보를 포함하고 있으며, 이는 특정 FPGA의 CLB 내에서 구현될 수 있습니다. Constraint 파일은 설계 요구 사항을 담고 있으며, 이를 통해 IOB 설정, 타이밍 요구 사항, 배치 제약 등을 정의합니다. 이러한 정보를 바탕으로, 실제 물리적 설계 정보로 변환되며, CLB와 IOB에 해당하는 논리와 연결이 매핑되어 전체 칩의 물리적 배치와 라우팅을 결정합니다. 이 과정은 FPGA의 성능, 효율, 그리고 신뢰성을 최적화하는 핵심 단계입니다.

'기본 이론' 카테고리의 다른 글

AXI & BRAM  (0) 2024.09.21
데이터 흐름 시나리오  (0) 2024.09.19
베릴로그 방과후 1  (0) 2024.09.08
BRAM  (1) 2024.09.08
FPGA와 ARM CPU 관계  (1) 2024.09.08