이 문서에서는 ChatGPT가 FPGA 코드 개발을 어떻게 단순화하는지 살펴봅니다. Python 스크립트를 HDL로 변환하여 사용자 정의 FPGA 프로그래밍을 더 쉽게 접근할 수 있습니다. 신속한 프로토타입 제작 및 사용자 정의 계측기 생성을 위해 AI를 활용하는 방법을 알아보세요.

VHDL 및 Verilog와 같은 하드웨어 기술 언어(HDL)는 배우기 매우 어렵기로 악명 높습니다. 복잡성에도 불구하고, Liquid Instruments의 재구성 가능한 Moku 테스트 장치와 같은 FPGA(Field-Programmable Gate Array)를 사용하여 맞춤형 알고리즘을 실행하려면 이러한 강력한 도구가 필수적입니다. Python과 같은 다른 언어는 쉽게 접근할 수 있는 풍부한 정보를 지원하여 연구, 학습 및 숙달을 용이하게 합니다. 이제 ChatGPT와 같은 고급 언어 학습 모델 덕분에 Python과 같이 접근하기 쉽고 잘 알려진 프로그래밍 언어로 스크립트를 입력하고 구문 수준뿐 아니라 동작 수준에서 FPGA 코드로 빠르게 변환할 수 있습니다. 이를 통해 테스트 목표 달성을 가속화할 수 있는 새로운 가능성이 열립니다.

이 새로운 기능을 사용하면 코드가 FPGA에서 어떻게 실행되는지 완전히 이해할 필요가 없습니다. 오히려 필요한 코드를 생성하려면 몇 가지 기본적인 컴퓨터 프로그래밍만 알면 됩니다. 인공 지능(AI)을 사용하여 FPGA 코드 개발을 가속화하는 것은 편리하지만 ChatGPT와 같은 도구에서 발생할 수 있는 일반적인 오류를 인식하는 것이 중요합니다. 이 예에서는 제곱근 함수를 변환하는 방법을 보여주고 ChatGPT를 사용하여 파이선에서 FPGA 코드를 작성할 때 가장 중요한 고려 사항을 간략하게 설명합니다. 하지만 먼저 FPGA 코드 작성 시의 과제를 검토해 보겠습니다.

  • 프로그래밍 패러다임은 C 및 파이선과 같은 보다 일반적인 언어의 절차적 실행과 매우 다릅니다.
  • 이는 매우 일반적인 기술이 아니므로 Stack Overflow 게시물 및 예제 디자인과 같은 리소스도 그리 일반적이지 않습니다.
  • 디버깅이 어렵습니다. FPGA에서 실행할 디자인을 구축하는 데는 상대적으로 오랜 시간이 걸리므로 반복이 제한됩니다. 거기에 있으면 장치 내부에서 무슨 일이 일어나고 있는지 확인하기 어려울 수 있습니다. 반면에 아주 단순한 초보 실수일 수 있는 것을 밝혀내기 위해 고품질 시뮬레이션을 설정하는 데는 많은 시간이 걸립니다.

FPGA 코딩 분석

FPGA 프로그래밍을 컴퓨터 프로그래밍과 비슷하게 만드는 것은 제조업체의 오랜 목표였습니다. HLS(고수준 합성) 도구를 사용하면 C 또는 유사한 언어로 코드를 작성하고 이를 FPGA에서 실행할 수 있지만 손수 만든 HDL 실행 효율성에는 결코 접근하지 못했습니다. MathWorks HDL Coder™ 및 MyHDL과 같은 도구를 사용하면 각각 매트랩 또는 파이선에서 특별히 설계된 코드를 작성하고 다시 FPGA에서 실행되도록 변환할 수 있지만 이러한 프로그램의 특수 설계는 어쨌든 FPGA 프로그래밍 패러다임을 이해해야 함을 의미합니다. — 적어도 더 나은 구문과 테스트 환경을 사용하는 동안은 말입니다.

ChatGPT와 같은 대형 언어 모델(LLM)의 출현으로 이제 하나의 패러다임(예: 파이선의 절차 코드)으로 작성된 프로그램을 사용하여 달성하려는 작업을 이해하고 다른 패러다임으로 코드를 다시 작성할 수 있는 시스템에 액세스할 수 있습니다. 패러다임(예: FPGA용 하드웨어 설명 언어). 이는 근본적으로 상위 수준 합성 문제에 접근하는 다른 방법으로, 몇 가지 큰 장점과 몇 가지 흥미로운 단점이 있습니다.

  • 좋아하는 프로그래밍 언어로 알고리즘을 작성할 수 있습니다.
  • 간단한 인쇄 문부터 전체 대화형 디버거에 이르기까지 기대했던 모든 기능을 사용하여 동일한 언어로 알고리즘을 디버깅할 수 있습니다.
  • 변환이 처음에 완벽하지 않더라도 ChatGPT 출력을 완벽하게 제작된 예제 코드처럼 처리할 수 있습니다. 여기에서 배우고 이해하면 귀하와 ChatGPT가 서로 문제와 해결책을 더 잘 이해하도록 도울 수 있습니다.

물론 문제가 있습니다. 절차적 코드로 반드시 표현할 수 없는 FPGA 개념이 있습니다. 그렇다면 ChatGPT가 올바른 코드를 생성할 것이라고 어떻게 기대할 수 있습니까? ChatGPT의 대화 인터페이스가 작동하는 곳입니다. 무엇을 해야 할지 말해 보세요! 프롬프트에 원하는 만큼 추가 정보를 추가할 수 있으며 ChatGPT를 몇 번 반복하면 지금까지 함께 작업한 것 중 가장 유용한 쌍 프로그래머가 될 것입니다.

예: FPGA에서 제곱근 구하기

FPGA에서 제곱근을 취하는 예를 들어보겠습니다. 이는 일반적으로 부동 소수점 연산을 사용하는 다소 복잡한 작업으로, 둘 다 FPGA에서 처리하기 쉽지 않습니다. 그림 1과 같이 문제에 대한 몇 가지 접근 방식을 생각하는 데 도움을 주기 위해 ChatGPT를 요청하는 것부터 시작할 수 있습니다.

그림 1: 정수 연산으로 제곱근을 계산하는 일반적인 알고리즘

그런 다음 이를 사용하여 그림 2와 같이 파이선의 알고리즘 중 하나를 작성하고 테스트하는 데 도움을 받을 수 있습니다. 이는 GitHub Copilot 또는 AWS CodeWhisperer와 같은 전용 AI 코딩 도구를 사용해 볼 수 있는 기회입니다.

그림 2: 16비트 정밀도 결정

Python에서 코드를 디버그하면서 정확한 비트 수와 예상 출력 값을 유지하는지 확인하세요. 그런 다음 그림 3과 같이 변환을 수행할 차례입니다.

그림 3 : 파이선 함수를 VHDL 엔터티로 변환하는 과정

작업 확인 중

FPGA 코드가 처음에 올바르게 실행되는 경우가 많습니다. 그러나 변환을 수행할 때 ChatGPT에서 저지를 수 있는 몇 가지 일반적인 실수가 있습니다.

  • 정확한 정밀도 비트 수를 유지하지 않아 출력이 항상 0으로 반올림되거나 최대값으로 반올림되거나 단순히 세부 정보가 충분하지 않게 됩니다.
  • 신호를 생성할 때 비트 폭을 제대로 추적하지 않습니다. HDL을 사용하려면 모든 변수의 비트 너비를 수동으로 정확하게 지정해야 하는데, 이는 파이선이 신경 쓸 필요가 없습니다. 입력 및 출력 신호에 원하는 정밀도 비트 수에 대한 정보를 프롬프트에 명시적으로 추가하면 이 문제를 완화할 수 있지만, 일치하지 않으면 합성 오류가 계속 발생할 수 있습니다.
  • 왼쪽 시프트를 오른쪽 시프트로 변환, 알고리즘을 중단시키는 중간 변수 추가 등과 같은 간단한 변환 오류.

이 모든 것이 보여줍니다. 솔루션이 완벽해지기를 기대하기보다는 솔루션에 대해 ChatGPT와 함께 작업할 때 최상의 결과를 얻을 수 있습니다.

그래도 점점 나아지고 있어요. 예를 들어, Python for-loop를 살펴보겠습니다. 이는 VHDL for-loop로 변환될 수 있지만 실제로는 의미상 매우 다릅니다. Python에서는 각 반복이 차례로 발생하는 반면, VHDL에서는 각 반복이 동시에 발생하지만 서로 다른 논리 게이트 세트에서 발생합니다.

ChatGPT의 현재 무료 버전은 차이점을 이해하지 못하고 Python for-loop를 VHDL 루프로 직접 변환했습니다.

현재 GPT4 모델은 루프의 각 반복을 차례로 실행하고 루프의 각 호출을 차례로 실행하여 상태 머신을 올바르게 추론했습니다. 예를 들어, 반복 제곱근 알고리즘이 완료하는 데 16번의 반복이 필요한 경우 이전 입력이 완료될 때까지 다른 입력 처리를 시작할 수 없으며 처리량은 16클록 주기마다 하나의 값이었습니다. 

GPT4 모델은 완전히 파이프라인된 구현을 내보낼 수 있습니다. 여기서 알고리즘은 계속해서 16클럭 주기 대기 시간을 가지지만 16개의 계산이 모두 한 번에 진행되어 클럭 주기마다 하나의 새로운 결과가 나올 수 있습니다.

ChatGPT 기능의 이러한 급속한 개선으로 Python 또는 기타 일반적인 프로그래밍 언어로 FPGA 코드를 작성하는 것이 점점 더 빠르고 효과적으로 이루어지고 있으며, 더 많은 사용자가 사용자 프로그래밍 가능한 FPGA를 사용하여 맞춤형 테스트 장비, 프로토타입 및 기타 알고리즘을 구현할 수 있는 기회를 열어줍니다. 맞춤형 프로그래밍 기능을 갖춘 FPGA에 대한 접근성이 높아짐에 따라 HDL 전문가가 아닌 사람이라도 FPGA가 제공하는 시간 결정적 처리 및 병렬 처리의 이점을 누릴 수 있습니다. 다음과 같은 도구를 사용하여 Moku 클라우드 컴파일 Liquid Instruments에서는 다음과 같은 소프트웨어 정의 테스트 및 측정 장비와 함께 이러한 설계를 테스트할 수 있습니다. 오실로스코프, 스펙트럼 분석기글렌데일 PID 컨트롤러 단일 장치에 완벽하게 통합된 맞춤형 시스템을 구축합니다.

Moku Cloud Compile과 함께 ChatGPT를 사용하는 방법에 대한 더 많은 예를 보려면, 웨비나 시청. 여러 가지 예가 포함된 자세한 블로그를 확인해 볼 수도 있습니다. 여기에서 확인하세요 (사용자 정의 일시적 오류 감지) 및 여기에서 확인하세요 (절대값).

Moku Cloud Compile로 개발하려는 맞춤형 도구에 대해 질문이 있습니까? 다음 주소로 문의하세요. support@liquidinstruments.com 엔지니어와 연결합니다.


데모 모드에서 Moku를 사용해 보세요

macOS 및 Windows용 Moku 앱을 다운로드할 수 있습니다. 여기에서 확인하세요.


FAQ에 대한 답변을 받으세요

장치 및 계측기에 대한 질문과 답변을 찾아보세요. 기술 자료.


Moku 사용자와 연결

또한 사용자 포럼 새로운 기능을 요청하고, 지원 팁을 공유하고, 글로벌 사용자 커뮤니티와 소통하세요.