FPGA 프로그래밍 자습서

FPGA와 프로그래머블 SoC는 계산 가능한 범위 내에서 CPU, MCU, DSP, GPU 장치와 별도로 존재하는 종류의 장치입니다. FPGA는 개발자에게 처리량을 증가시키고, 지연 시간을 줄이고, 확실성을 제고하는 구현을 제공합니다.

FPGA와 프로그래머블 SoC는 계산 가능한 범위 내에서 CPU, MCU, DSP, GPU 장치와 별도로 존재하는 종류의 장치입니다. FPGA는 개발자에게 처리량을 증가시키고, 지연 시간을 줄이고, 확실성을 제고하는 구현을 제공합니다.

FPGA와 프로그래머블 SoC 모두에는 순람표, 레지스터, 블록 RAM 등의 프로그래머블 로직 셀이 포함되어 있습니다. 개발자가 프로그래머블 로직 솔루션을 생성할 때는 개발자가 이들 로직 셀의 구성과 연결을 정의합니다.

개발자가 실행 순서 지침 대신 로직 셀의 구성을 설명한다면 개발 흐름이 상당히 달라지게 될 것입니다. 이러한 차이는 개발자에게 다음과 같은 새로운 과제로 대두될 것입니다.

- 검증 — 설계자는 해당 기능을 어떻게 검증하고 디버그합니까?
- 리소스 배분 — 해당 장치에는 설계에 구현할 충분한 로직 리소스가 포함되어 있습니까?
- 타이밍 클로저 — 활용되는 로직 셀은 필요에 따라 연결되고 원하는 작동 주파수를 달성할 수 있습니까?
- 전력 소멸 — 최종 설계의 전력 소멸은 전력 공급 및 열 환경 용도로 허용 가능합니까?


디자인 캡처

프로그래머블 로직 설계는 1984년에 소개된 이래로 그 캡처 방식이 크게 바뀌었습니다. 그러한 변화로 인해 각 로직 셀의 로직 방정식에서 로직 회로의 도식상 캡처, 하드웨어 기술 언어의 사용, 그리고 보다 최근의 고수준 합성에 이르는 설계 엔트리 혁명이 나타났습니다.

물론, 프로그램 장치에 사용된 추상화 수준 증가의 이면에 있는 주요 추진 요인 한 가지는 장치의 용량과 성능의 증가입니다.

대부분의 최신 설계는 Verilog, VHDL 등의 하드웨어 기술 언어(HDL)를 사용하여 캡처됩니다. 두 언어 모두 개발자가 원하는 기능을 기술하여 해당 기능이 RTL(register transfer level)에서 구현될 수 있게 합니다. RTL 설계를 정의하는 일은 개발자가 동기식 로직 설계에 대해, 그리고 레지스터(예: 상태 기계 및 계수기)

사이의 정보 이전에 대해 기술하고 있다는 점을 뜻합니다.

HDL 언어는 프로그램 언어로서 예상되는 구성체(예: 파일을 통해 작업)를 포함하는 반면, 프로그래머블 로직 솔루션을 생성하기 위해 해당 언어의 제한적인 서브셋만 사용될 수 있습니다. 남아 있는 구성체는 설계의 검증 과정에서 사용됩니다.

하지만 더 많은 수의 프로그래머블 로직 솔루션의 개발자들이 설계 캡처에 C, C++, OpenCL, Matlab/Simulink 등의 보다 높은 수준의 언어를 사용하고 있습니다. 이들 언어는 고수준 언어를 VHDL이나 Verilog 기술로 변환하는 작업을 담당하는 고수준 합성 툴(예: Vivado HLx 또는 Intel의 HLS Compiler)과 함께 사용됩니다. 그리고 나서 이러한 HDL 기술은 표준 FPGA 개발 흐름을 사용하여 구현됩니다.

다른 모든 개발과 마찬가지로 HDL과 고수준 언어 가운데 무엇이 사용되는지에 관계 없이, 보다 이해하기 쉽고 원하는 대로 재사용할 수 있게 해 주는 모듈식 접근법을 사용하는 것이 좋습니다.


테스트 벤치

HDL 또는 HLS 모듈이 각각 개발됨에 따라 기능이 예상대로 잘 작동하는지 확인할 테스트를 필요로 할 것입니다. 이 단계에서 테스트 벤치가 등장합니다. 테스트 벤치는 모듈의 입력에 대한 자극으로서 적용되고 모니터링을 수행할 것입니다. 나중 사례에서는 출력 신호의 작용 이후에 보고가 이뤄질 것입니다. 설계상의 모든 레지스터에 대해 트랜잭션을 시뮬레이션하고 있기 때문에 로직 시뮬레이션이 훨씬 느려질 수 있습니다.

테스트 벤치는 개념적으로 소프트웨어 테스트 하네스와 유사하기는 하지만 각 신호와 버스가 올바르게 구동되어야 하고 모듈을 자극하도록 시점이 설정되어 있기 때문에 보다 자세한 상호작용을 필요로 할 수 있습니다. 자극 설정이 판독되거나 결과가 텍스트 파일에 기록되면서 해당 언어의 보다 폭넓은 구성체가 사용되는 일은 테스트 벤치의 내에서 이뤄집니다.

시뮬레이션의 한 가지 주요 요소는 코너 케이스에 대한 테스트와 경계 조건이며, 이로 인해 모듈이 의도한 대로 작동하지 않을 수 있습니다.

테스트 벤치를 테스트 대상 유닛에 적용하려면, 개발자가 로직 설계의 시뮬레이션을 수행할 수 있게 해 주는 Vivado Simulator(Vivado HLx와 함께 제공됨)같은 HDL 시뮬레이터가 필요합니다.

설계를 장치 내에서 구현하기 전에 시뮬레이션하는 것이 보편적입니다. 하지만 이는 시뮬레이션 결과가 구현된 장치에 발생하는 시간 지연(예: 설치 및 유지 시간)을 고려하지 않는다는 점을 뜻합니다. 이와 같이 기능적 성능에 대한 시뮬레이션만 이뤄집니다. 설계가 구현된 이후에 시뮬레이션이 해당 정보를 사용하여 백 애노테이션될 수 있긴 하지만, 그렇게 하는 것은 시뮬레이션 런타임을 상당히 증가시킵니다.


구현

개발자가 기능적 성능에 만족하게 되면, 개발의 최종 단계는 구현입니다.

구현은 합성, 배치, 라우팅, 프로그래밍 파일 생성의 서로 다른 네 가지 단계로 나뉠 수 있습니다. 구현은 여러 단계로 이뤄지긴 하지만 그 모든 단계는 엄선된 장치 업체가 공급한 관련 툴(예: Intel Quartus, Xilinx Vivado)을 사용하여 수행됩니다.

합성에는 HDL 파일이 소요되며 이 파일을 로직 회로의 기술이 구현되도록 통합시킵니다. 따라서 합성은 구성이 가능한 로직 셀, 레지스터 및 블록 RAM과 그 밖에 목표 장치 내에서 이용할 수 있는 전용 로직 리소스 설정을 결정합니다. 대부분의 로직 최적화가 이뤄지고 사용되지 않는 신호와 변수의 트리밍이 수행되는 때는 합성 단계 중입니다. 이로 인해 원치 않는 최적화나 합성 결정이 이뤄질 수 있습니다. 따라서 개발자는 합성 제한을 통해 합성 옵션, 전력, 최적화를 관리할 수 있습니다. 제한은 텍스트에 기반하며 합성 툴이 작동되는 동안 이끌어가는 역할을 할 것입니다.

합성을 통해 설계의 논리적 동작을 기술하는 네트리스트가 출력됩니다. 구현의 다음 단계는 각각의 논리 기능을 장치 내에 물리적으로 배치하는 것입니다. 일반적으로 배치 툴은 설계 내에서 로직 셀을 배치하는 방식을 정의하는 내장 알고리즘을 사용합니다. 하지만 원하는 경우 사용자는 배치 제한을 사용하여 로직 셀의 배치를 검사하고 이동시킬 수 있습니다. 이는 타이밍 클로저를 설계상에서 달성하고자 할 때 매우 유용합니다.

구현의 끝에서 두 번째 단계는 로직 함수가 매핑되고 나서 수행됩니다. 매핑된 이러한 리소스는 장치에서 이용 가능한 리소스를 활용하여 설계에서 정해진 대로 연결되어야 합니다. 이러한 프로세스를 "라우팅"이라고 하며 라우팅 알고리즘에 의해 원하는 타이밍 성능이 사용될 때 원하는 작동 주파수에 이를 수 있게 됩니다. 원하는 작동 주파수에 이르는 일을 "타이밍 클로저"라고 하며, 설계에 있는 각각의 레지스터와 클럭 요소가 필수 설정을 달성하고 정지하는 것을 뜻합니다.

타이밍 클로징을 이루지 못하는 경우, 다른 구현 전략을 선택, 중요 타이밍 블록을 가깝게 하기 위한 배치 제한 업데이트, 통합 중에 보다 최적에 가까운 로직 구조를 구현하기 위한 HDL 설계를 업데이트 등 여러 방법을 사용할 수 있습니다.

구현 프로세스의 최종 단계는 목표 장치를 구성하는 데 사용될 수 있는 프로그래밍 파일의 생성입니다. 이 단계가 완료되면 장치에 다운로드하고 보다 광범위한 시스템을 통해 통합하는 즐거움을 누릴 준비가 된 것입니다.

물론 통합은 FPGA 개발자와 시스템 통합자에게 그 자체의 문제를 야기할 수 있습니다.


결론

FPGA 개발 과정은 보다 전통적인 계산 솔루션을 생성하는 데 사용되는 것과는 확실히 다릅니다. 하지만 여러 언어와 툴체인에 관련되기 때문에 그 학습 곡선은 처음에 생각했던 것처럼 가파르지 않습니다. 개발자가 충분한 시간을 들여 이러한 과정을 학습한다면 처리량을 증가시키고, 지연 시간을 줄이고, 확실성을 제고하는 FPGA 기반 솔루션의 구현을 시작할 수 있습니다.

 

 

최신 뉴스

Sorry, your filter selection returned no results.

개인정보 보호정책이 업데이트되었습니다. 잠시 시간을 내어 변경사항을 검토하시기 바랍니다. 동의를 클릭하면 Arrow Electronics 개인정보 보호정책 및 이용 조건에 동의하는 것입니다.

당사의 웹사이트에서는 사용자의 경험 향상과 사이트 개선을 위해 사용자의 기기에 쿠키를 저장합니다. 당사에서 사용하는 쿠키 및 쿠키 비활성화 방법에 대해 자세히 알아보십시오. 쿠키와 추적 기술은 마케팅 목적으로 사용될 수 있습니다. '동의'를 클릭하면 기기에 쿠키를 배치하고 추적 기술을 사용하는 데 동의하는 것입니다. 쿠키 및 추적 기술을 해제하는 방법에 대한 자세한 내용과 지침을 알아보려면 아래의 '자세히 알아보기'를 클릭하십시오. 쿠키 및 추적 기술 수락은 사용자의 자발적 선택이지만, 웹사이트가 제대로 작동하지 않을 수 있으며 사용자와 관련이 적은 광고가 표시될 수 있습니다. Arrow는 사용자의 개인정보를 존중합니다. 여기에서 당사의 개인정보 보호정책을 읽을 수 있습니다.