FPGA 설계 경험이 없어도 알고리즘을 FPGA 기반 하드웨어에 프로토타이핑할 수 있습니다.
MATLAB 및 Simulink로 다음과 같은 작업을 수행할 수 있습니다.
- 검증된 IP 블록과 서브시스템을 사용하여 하드웨어에 바로 사용할 수 있는 설계 구축
- 시스템 수준 하드웨어 동작을 시뮬레이션하여 FPGA에 배포하기 전에 버그 제거
- 모든 FPGA 또는 SoC 기기를 타겟팅할 수 있는 HDL 및 C 코드 생성
- AMD® 및 Intel® FPGA 및 SoC 보드와 키트에 자동으로 배포
- 하드웨어에서 실행되는 신호의 탐색 및 포착
MATLAB을 이용한 FPGA 프로토타이핑
무선 응용 분야
실시간 무선 입력/출력을 이용한 알고리즘 시뮬레이션부터 FPGA 또는 SoC 소프트웨어 정의 무선 통신 플랫폼이나 사용자 지정 보드에 대한 전체 배포까지, 실시간 하드웨어 요소를 설계에 점진적으로 추가할 수 있습니다.
Wireless HDL Toolbox에 있는 하드웨어 검증된 무선 설계 IP 블록과 서브시스템으로 빠르게 시작할 수 있습니다. IP에는 MATLAB을 사용한 알고리즘 설계부터 Simulink에서 무선 시스템 구현 모델까지 점진적으로 이행하는 방법을 보여주는 예제가 있습니다. 모든 IP가 고정소수점으로 양자화되어 있어서, 추가한 사용자 지정 로직을 Fixed-Point Designer를 사용하여 관리하고 HDL Coder로 배포할 수 있습니다.
모터 및 전력 전자 제어 응용 분야
FPGA 기반 하드웨어에서 실행되는 제어 알고리즘의 성능을 살펴보고, FPGA 기반 HIL(Hardware-in-the-Loop)로 플랜트 모델을 가속화할 수 있습니다. 고정소수점 또는 네이티브 부동소수점 (9:19)으로 수학 및 삼각 함수에 대한 다양한 HDL 코드 생성 지원을 통해 HDL Coder는 Simulink 모델을 곧바로 하드웨어에 배포할 수 있는 간편한 방법을 제공합니다.
SoC 배포를 위해 알고리즘을 분할하는 방법을 고민 중이라면 프로토타입 플랫폼에 배포하기 전에 분할 전략을 탐색하고 시뮬레이션하여 성능을 평가할 수 있습니다. 그런 다음 사전 구성 키트, Speedgoat FPGA 기술 개요 (7:53), 자체 사용자 지정 보드를 타겟팅할 수 있습니다.
비디오 및 영상 처리 응용 분야
자동으로 HDL 및 C 코드를 생성하여 MATLAB 및 Simulink에 연결된 FPGA 기반 플랫폼에 비전 알고리즘을 프로토타이핑할 수 있습니다. 또한 하드웨어 검증된 비전 처리 블록을 사용하여 구현 모델을 구축하고 픽셀 스트리밍, 이웃 기반 알고리즘, 외부 메모리 액세스, 제어 신호 등 하드웨어 거동을 시뮬레이션할 수 있습니다.
카메라가 달린 기성품 FPGA 평가 키트에 대한 모델 배포를 지원합니다. 아니면, 하드웨어 팀에서 플랫폼 지원을 구축하여 MATLAB 및 Simulink에서 직접 프로토타입을 배포하는 방법도 있습니다.
딥러닝 추론
단지 몇 개의 MATLAB 명령만으로 신경망을 FPGA 및 SoC 보드에 프로토타이핑하여 딥러닝 추론을 가속화할 수 있습니다. 이어서 MATLAB 내에서 FPGA에서의 추론 성능을 분석함으로써 반복을 통해 신경망을 조정하며 고정소수점으로 양자화하고 재배포할 수 있습니다. 마지막으로 타겟 독립적인 HDL IP 코어를 생성하여 구현을 위해 하드웨어 팀에 제공할 수 있습니다.
FPGA 프로토타입 디버그
실제 입력으로 FPGA 프로토타이핑을 하면 조기 시뮬레이션에서는 발견 및 수정하지 못했던 버그를 발견할 수 있습니다. FPGA 또는 SoC 프로토타입에 MATLAB 명령을 사용할 수 있는 로직을 삽입하여 대화형 방식으로 AXI 액세스 가능한 레지스터를 읽거나 쓰고, 또는 FPGA 패브릭 내부의 테스트 지점에서 데이터를 수집할 수 있습니다.
MATLAB 또는 Simulink 테스트벤치를 사용하여 FPGA 프로토타입을 실행하기 원하면, FPGA-in-the-Loop를 통해 설정을 자동화하고 시뮬레이션 인터페이스를 관리하여 데이터를 FPGA로 전송하고 다시 테스트벤치로 읽어올 수 있습니다.
이러한 기법은 AMD, Intel, Microsemi 기기 등의 다양한 보드를 별다른 설정 없이 지원하며, 또는 사용자는 자신만의 사용자 지정 보드를 정의할 수도 있습니다.