산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial Internet of Things >> 임베디드

FPGA 구현 언어: VHDL과 Verilog에서 고수준 C/C++까지

FPGA 구현 언어: VHDL과 Verilog에서 고수준 C/C++까지 편집자 주: 스마트 제품의 고급 알고리즘은 무거운 처리 부하를 감당할 임베디드 시스템을 요구합니다. FPGA가 필요한 성능을 제공하지만 많은 개발자는 FPGA 설계를 전문가의 영역으로 여깁니다. 현대 하드웨어와 강력한 개발 환경이 FPGA 프로그래밍을 민주화했습니다. Jim Ledin의 Architecting High-Performance Embedded Systems 4장에서 발췌한 이 글은 FPGA 디바이스, 구현 언어, 개발 워크플로를 철저히 개요하고 실용적인 가이드로 마무리합니다.
1: 하드웨어 리소스
2: 구현 언어 (이 기사)
3: 개발 프로세스
4: 프로젝트 구축
5: 구현

Architecting High-Performance Embedded Systems에서 발췌, Jim Ledin 저.


FPGA 구현 언어

FPGA 설계는 궁극적으로 디바이스의 동작을 기술하기 위해 하나 이상의 고수준 HDL 계열 언어를 선택하는 것을 포함합니다.

전통적인 선택지는 VHDL과 Verilog입니다. 현대 툴체인은 일반적으로 둘 다 지원하며, 블록 다이어그램 구성도 지원하고, 많은 경우 자동 HDL 생성을 위한 소스로 C/C++도 수용합니다.

VHDL

VHSIC Hardware Description Language (VHDL) — VHSIC은 Very High-Speed Integrated Circuit을 의미하며, 1983년 미국 국방부 주도로 개발되었습니다. 문법은 Ada를 연상시키며 장황하고 강타입입니다. 이 언어는 boolean, bit, bit_vector, character, string, integer, real, time, array 같은 고정된 기본 타입 세트를 제공하며, 다른 모든 타입은 이 프리미티브 위에 구축됩니다.

IEEE 1164는 VHDL 표준 라이브러리를 정의하며, 단일 비트 신호를 나타내는 널리 쓰이는 std_logic 타입을 포함합니다. 다음 표는 std_logic의 논리 값을 보여줍니다:

FPGA 구현 언어: VHDL과 Verilog에서 고수준 C/C++까지

강한 0/1은 구동되는 이진 상태를 나타내며, 약한 신호는 버스에서의 경합을 나타냅니다. Z는 고임피던스(CMOS 출력 분리), U는 기본 미초기화 상태, X는 드라이버 없음, -는 미사용 입력을 표시합니다.

일반적인 VHDL 설계는 IEEE 1164 라이브러리 임포트로 시작합니다:

library IEEE;
use IEEE.std_logic_1164.all;

이 장에서는 VHDL을 예로 사용하지만, VHDL과 Verilog 모두 FPGA 합성 가능한 설계를 완전히 표현할 수 있습니다.

Verilog

1984년 도입되어 IEEE 1364(2005)로 표준화된 Verilog는 C를 모델로 하여 학습 곡선을 완만하게 만들었습니다. 2009년 SystemVerilog와 합쳐져 IEEE 1800-2009를 형성하며 핵심 HDL 구조 위에 광범위한 검증 기능을 추가했습니다.

Verilog의 wire 타입은 0, 1, 돈케어(x), 고임피던스(z) 신호 상태를 나타내며 각각 강한 또는 약한 강도를 가집니다. VHDL과 Verilog 모두 하드웨어 설계를 위한 합성 가능한 부분집합을 가지며, 추가 구조는 시뮬레이션을 지원합니다.

예를 들어, 비합성 가능한 for 루프는 소프트웨어 루프처럼 순차적으로 반복됩니다. 합성 가능한 for 루프는 반복 횟수만큼 병렬 하드웨어 복사본으로 언롤됩니다.

블록 다이어그램

텍스트 HDL 외에도 현대 FPGA 스위트는 그래픽 블록 다이어그램 편집기를 제공해 설계자가 저수준 코드 작성 없이 마이크로프로세서와 고급 I/O 같은 복잡한 시스템을 조립할 수 있게 합니다. 그림 4.2는 MicroBlaze 소프트 프로세서를 포함한 Xilinx Vivado 블록 다이어그램을 보여줍니다.

클릭하면 전체 크기 이미지
FPGA 구현 언어: VHDL과 Verilog에서 고수준 C/C++까지
그림 4.2 – MicroBlaze 소프트 마이크로프로세서를 포함한 블록 다이어그램

MicroBlaze는 Artix-7 및 기타 패밀리에서 사용 가능한 Xilinx의 소프트 코어 프로세서입니다. 블록 다이어그램이 시스템 레이아웃을 단순화하지만, 툴은 결국 내부적으로 VHDL이나 Verilog를 생성합니다. 생성된 코드(예: design_1_microblaze_0_0_stub.vhdl)를 검사하면 HDL 엔티티 인터페이스가 드러납니다:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity design_1_microblaze_0_0 is
  Port (
    Clk: in STD_LOGIC;
    Reset: in STD_LOGIC;
    Interrupt: in STD_LOGIC;
    Interrupt_Address: in STD_LOGIC_VECTOR (0 to 31);
    Interrupt_Ack: out STD_LOGIC_VECTOR (0 to 1);
    Instr_Addr: out STD_LOGIC_VECTOR (0 to 31);
    Instr: in STD_LOGIC_VECTOR (0 to 31);

이 파일은 프로세서 인터페이스만 정의하며, 핵심 로직은 라이선스 IP로 제공되며 주로 지적 재산권 보호를 위해 컴파일된 형태입니다.

C/C++

여러 공급업체가 이제 C나 C++을 HDL로 변환하는 고수준 합성(HLS) 도구를 제공해 개발자가 기존 알고리즘을 FPGA 하드웨어로 이식할 수 있게 합니다. 기본 FPGA는 병렬로 실행되지만, 생성된 설계는 순차적 C/C++ 문을 스테이트 머신으로 매핑하는 경우가 많습니다. 소스 코드에서 병렬성 기회가 제공되면 FPGA는 기존 프로세서 대비 상당한 속도 향상을 제공할 수 있습니다.

현대 툴체인은 VHDL, Verilog, 블록 다이어그램, HLS 유도 HDL이 단일 프로젝트 내에서 공존할 수 있게 합니다. 팀은 기술 세트에 따라 언어를 혼합할 수 있지만, 유지보수 오버헤드를 피하고 미래 유지보수를 보장하기 위해 신중한 계획이 필수적입니다.

다음 섹션에서는 컨셉부터 구현까지 표준 FPGA 개발 프로세스를 안내합니다.

Packt Publishing 허가 하에 재인쇄. Copyright © 2021 Packt Publishing


FPGA 구현 언어: VHDL과 Verilog에서 고수준 C/C++까지 Jim Ledin은 Ledin Engineering, Inc.의 CEO입니다. Jim은 임베디드 소프트웨어 및 하드웨어 설계, 개발, 테스트 전문가입니다. 또한 임베디드 시스템 사이버보안 평가와 침투 테스트에도 숙련되어 있습니다. Iowa State University에서 항공우주공학 학사, Georgia Institute of Technology에서 전기컴퓨터공학 석사 학위를 취득했습니다. 캘리포니아 등록 전문 전기 엔지니어, CISSP, CEH, CPT 자격 보유.

관련 콘텐츠

더 많은 Embedded 소식을 원하시면 Embedded의 주간 이메일 뉴스레터를 구독하세요.

임베디드

  1. 임베디드 시스템 프로그래밍: 언어, 아키텍처 및 응용
  2. 임베디드 시스템 설계: 단계, 원칙, 실전 적용 사례
  3. 임베디드 AI로 빅데이터를 실행 가능한 스마트 인사이트로 변환
  4. USB-C 마스터하기: 고속 데이터와 전력을 위한 설계 과제와 실용적 솔루션
  5. 기술의 미래를 재편하는 임베디드 설계 트렌드
  6. MIPI 카메라용 임베디드 비전 고성능 FPGA 가속기
  7. 클라이언트론 PST650: 내장형 열전사 프린터 탑재 올인원 POS 단말기
  8. MAXREFDES220#: 광학 센서로 커프리스 혈압 모니터링 구현
  9. 마이크로칩, 조기 액세스 프로그램으로 방산 등급 PolarFire SoC FPGA 출시
  10. 첨단 적층 제조 소프트웨어로 생산 극대화