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

FPGA를 사용한 임베디드 디자인:개발 프로세스

편집자 주:스마트 제품 설계를 위한 고급 알고리즘이 계속 등장함에 따라 개발자는 종종 이러한 알고리즘의 관련 처리 요구를 충족할 수 있는 임베디드 시스템을 구현하는 데 어려움을 겪고 있습니다. FPGA는 필요한 성능을 제공할 수 있지만 FPGA를 사용한 설계는 오랫동안 FPGA 프로그래밍 전문가의 범위에 국한된 것으로 여겨져 왔습니다. 그러나 오늘날에는 더욱 강력한 FPGA와 보다 효과적인 개발 환경을 이용할 수 있게 되면서 FPGA 개발에 폭넓게 접근할 수 있게 되었습니다. Architecting High-Performance Embedded Systems 책의 4장에서 발췌한 내용에서 저자는 FPGA 디바이스, 구현 언어, FPGA 개발 프로세스에 대한 포괄적인 검토와 FPGA 구현을 시작하는 방법에 대한 자세한 설명을 제공합니다. 설계. 전체 발췌 내용은 다음 시리즈로 제공됩니다.
1:하드웨어 리소스
2:구현 언어
3:개발 프로세스(이 문서)
4:프로젝트 구축
5:구현

Jim Ledin의 Architecting High-Performance Embedded Systems에서 각색


FPGA 개발 프로세스

FPGA는 서로 다른 다양한 애플리케이션 도메인에서 사용되지만 모든 FPGA 개발 프로젝트에 광범위하게 적용할 수 있는 일련의 개발 단계를 식별하는 것이 가능합니다. 이 섹션에서는 프로젝트 중에 일반적으로 발생하는 시퀀스의 일반적인 FPGA 개발 단계에 대해 설명합니다.

시스템 요구사항 정의

새로운 시스템을 개발하거나 기존 시스템에 대한 상당한 업그레이드를 시작할 때의 첫 번째 단계는 시스템이 수행해야 하는 작업에 대한 명확하고 상세한 이해를 개발하는 것입니다. 요구 사항 정의 프로세스는 시스템의 의도된 기능, 작동 모드 및 주요 기능에 대한 일반적인 설명으로 시작됩니다. 이 정보는 명확하고 모호하지 않은 언어로 작성되어야 하며 개발 노력의 성공에 이해 관계가 있는 모든 당사자와 공유되어야 합니다. 시스템 요구 사항을 공유하는 목표는 설명의 완전성과 정확성에 대해 모든 당사자 간에 합의를 도출하는 것입니다.

요구 사항 설명은 입력 신호의 샘플링 속도 및 액추에이터 출력 명령의 업데이트 속도와 같은 측면에서 요구되는 시스템 성능 수준에 대한 사양을 포함하도록 구체화되어야 합니다. 물리적 크기 제약, 최소 배터리 수명 및 허용 가능한 환경 온도 범위와 같은 추가 세부 정보는 설계 프로세스를 안내합니다. 일반적으로 전체 시스템 성공과 관련이 있다고 판단되는 모든 시스템 매개변수에 대한 최소 성능 임계값을 설명하는 포괄적인 사양 세트를 개발해야 합니다.

명시된 모든 사양을 준수하는 설계 솔루션이 적절한 솔루션이어야 하는 정도로 전체 시스템 요구 사항 세트가 완전해야 합니다. 모든 사양을 충족하는 디자인이 관련 없는 이유로 허용되지 않는 것으로 판명되면 시스템 요구 사항을 완전히 명시하지 못한 것입니다.

예를 들어, 기술적으로 적절한 솔루션이 생산하기에 너무 비싸다고 결정되면 문제의 원인은 요구 사항 개발 프로세스 동안 비용 억제 제약 조건을 완전히 정의하지 못하는 데 있을 수 있습니다.

최상위 시스템 요구 사항이 정의되고 합의된 후에는 일반적으로 전체 시스템 구성을 일관된 목적과 고유한 설명 요구 사항 및 기술 사양을 가진 하위 시스템 모음으로 나눌 필요가 있습니다. 실시간 임베디드 시스템 아키텍처에서 디지털 처리 기능은 해당 요구 사항 모음이 있는 하위 시스템으로 표현될 가능성이 높습니다.

FPGA에 기능 할당

시스템 아키텍처에서 디지털 처리에 대한 요구 사항이 시스템에서 사용하기에 적합할 마이크로컨트롤러 및 마이크로프로세서의 기능을 초과하는 경우 설계에 FPGA를 통합하는 것을 고려하는 것이 적절할 수 있습니다. 일부 시스템 아키텍처, 특히 병렬 작업을 수행하는 고속 디지털 하드웨어의 이점이 있는 아키텍처는 FPGA 구현을 위한 자연스러운 후보입니다. 다른 시스템 아키텍처는 기존의 디지털 처리로 적절한 성능을 발휘할 수 있지만 향후 상당한 시스템 업그레이드를 계획하는 계획된 수명 동안 FPGA 구현이 제공하는 유연성과 확장성을 활용할 수 있는 귀중한 기회가 있을 수 있습니다.

설계에 FPGA를 통합하기로 결정한 후 다음 단계는 전체 시스템 디지털 처리 요구 사항의 일부를 FPGA 장치에 할당하는 것입니다. 여기에는 일반적으로 FPGA 입력 및 출력 신호의 사양, 입력 및 출력의 업데이트 속도, ADC 및 RAM 장치와 같은 부품을 포함하여 FPGA가 상호 작용해야 하는 구성 요소 식별이 포함됩니다.

필수 FPGA 기능 식별

FPGA가 수행할 기능을 정의하고 FPGA가 지원해야 하는 다른 장치에 대한 인터페이스에 대한 지식을 갖추고 있으면 후보 FPGA 장치가 제공해야 하는 기능 목록을 개발할 수 있습니다.

일부 FPGA 제품군은 저렴하고 덜 복잡한 애플리케이션을 위해 설계되었으므로 디지털 로직을 구현하기 위한 제한된 리소스 세트를 제공합니다. 이러한 장치는 배터리 전원으로 작동할 수 있으며 수동 냉각만 필요합니다. 더 강력한 다른 FPGA 제품군은 대규모의 완전한 기능을 갖춘 디지털 설계를 지원하고 최고 성능에서 작동하도록 설계되었으며 지속적인 능동 냉각이 필요할 수 있습니다.

임베디드 애플리케이션과 관련된 시스템 요구 사항은 애플리케이션에 적합한 FPGA 제품군을 선택하는 데 지침이 됩니다. 이 시점에서 FPGA 구현의 리소스 요구 사항이 완전히 정의되지 않았기 때문에 선호하는 제품군 내에서 특정 FPGA 모델을 식별하는 것이 불가능할 수 있습니다. 그러나 경험을 통해 설계에 적합한 소수의 FPGA 모델을 식별할 수 있습니다.

디지털 회로 구현을 위한 FPGA 리소스 외에도 많은 FPGA 모델에는 시스템 설계에 중요할 수 있는 추가 기능이 포함되어 있습니다. 예를 들어 내장 ADC는 시스템 부품 수를 최소화하는 데 유용할 수 있습니다. 필수 및 원하는 FPGA 기능 목록은 시스템에 적합한 FPGA 장치의 선택 범위를 더욱 좁히는 데 도움이 됩니다.

FPGA 디자인 구현

후보 FPGA 모델을 식별하고 FPGA에 할당된 기능에 대한 자세한 정의를 알고 나면 FPGA 설계 구현을 시작할 때입니다. 이것은 일반적으로 FPGA 개발 도구 모음의 사용을 포함하며 일반적으로 프로젝트에 선호되는 언어로 HDL 코드를 개발하는 것으로 주로 구성됩니다.

적절한 경우 FPGA 구현은 최상위 FPGA 디자인의 블록 다이어그램 표현으로 시작할 수 있습니다. 필요에 따라 HDL 또는 C/C++로 개발된 구성 요소를 블록 설계에 통합하여 전체 시스템 구현을 완료할 수 있습니다.

또는 전체 시스템 설계가 HDL에서 직접 개발되는 것도 일반적입니다. 언어에 익숙하고 사용 중인 FPGA 모델의 기능 및 제약 조건을 완전히 이해하고 있는 개발자의 경우 이는 리소스 효율성이 가장 높고 성능이 가장 우수한 설계 결과로 이어질 수 있습니다.

FPGA 개발은 FPGA 디바이스를 위한 프로그래밍 파일이 생성될 때까지 초기 설계가 더 자세하게 지정됨에 따라 단계적으로 진행됩니다. 대규모 프로젝트의 경우 이러한 단계를 여러 번 반복하여 각 단계를 통과하는 동안 전체 디자인의 작은 부분을 개발하는 것이 일반적입니다. 이러한 단계는 다음 섹션에 설명되어 있습니다.

디자인 출품

디자인 출품 시스템 개발자가 HDL 코드, 블록 다이어그램 및/또는 C/C++ 코드를 사용하여 시스템 기능을 정의하는 단계입니다. 코드 및 블록 다이어그램과 같은 기타 아티팩트는 추상적인 용어로 시스템의 논리적 기능을 정의합니다. 다시 말해, 설계 아티팩트는 논리 회로를 정의하지만 시스템의 나머지 부분과 통합되는 방식은 정의하지 않습니다.

I/O 계획

FPGA I/O 계획 특정 I/O 기능을 수행하기 위해 할당된 핀을 식별하고 각 신호에 사용할 I/O 신호 표준과 같은 장치 기능을 연결하는 프로세스입니다. I/O 계획 프로세스의 일부로 물리적 장치 패키지에서 I/O 핀이 있는 위치와 같은 문제를 고려하는 것이 중요할 수 있습니다. 이 단계는 고속 신호에 대한 인쇄 회로 기판 트레이스 길이를 최소화하고 회로 신호 트레이스가 서로 불필요하게 교차하지 않도록 하는 데 중요합니다.

I/O 신호 요구사항의 정의는 제약조건 의 한 형태입니다. FPGA 개발 과정에서 다른 주요 제약 범주는 FPGA 솔루션의 성능을 결정하는 타이밍 요구 사항으로 구성됩니다. FPGA 합성 프로세스는 정의된 모든 제약 조건을 충족하는 기능적으로 올바른 FPGA 솔루션을 개발하기 위해 HDL 코드와 프로젝트 제약 조건을 사용합니다. 도구가 모든 제약 조건을 만족하지 못하면 합성이 실패합니다.

합성

합성 소스 코드를 netlist라는 회로 설계로 변환 . 넷리스트는 타겟 FPGA 모델의 리소스로 구성된 회로를 나타냅니다. 넷리스트는 회로의 논리적 또는 도식적 버전을 나타냅니다. 물리적 FPGA 장치에서 회로가 구현되는 방식은 정의하지 않습니다. 이것은 다음 단계에서 발생합니다.

장소 및 경로

장소 프로세스는 넷리스트에 정의된 FPGA 리소스를 가져와 선택한 FPGA 내의 특정 로직 요소에 할당합니다. 결과 리소스 배치는 I/O 제약 조건 및 타이밍 제약 조건을 포함하여 이러한 요소의 할당을 제한하는 모든 제약 조건을 충족해야 합니다.

배치 프로세스 동안 논리 요소에 물리적 위치가 할당된 후 논리 요소 간의 연결 집합이 경로 동안 구성됩니다. 프로세스. 라우팅은 논리 요소 간의 모든 연결을 구현하고 회로가 HDL 코드에 설명된 대로 기능하도록 합니다. 배치 및 경로 작업이 완료된 후 FPGA 구성이 완전히 결정됩니다.

비트스트림 생성

FPGA 개발 프로세스의 마지막 단계는 비트스트림 파일을 생성하는 것입니다. 최고의 성능을 달성하기 위해 대부분의 최신 FPGA 장치는 정적 RAM 을 사용하여 구성을 내부적으로 저장합니다. (SRAM ).

FPGA 구성 SRAM은 아마도 수백만 비트를 포함하는 매우 큰 시프트 레지스터로 생각할 수 있습니다. 이 시프트 레지스터의 내용은 FPGA 장치 구성 및 작동의 모든 측면을 완전히 지정합니다. FPGA 개발 중에 생성된 비트스트림 파일은 장치가 HDL 및 제약 조건에 지정된 의도된 기능을 수행하도록 하는 시프트 레지스터에 대한 설정을 나타냅니다. 기존 소프트웨어 개발 프로세스의 관점에서 비트스트림 파일은 링커에서 생성된 실행 프로그램과 유사합니다.

SRAM은 휘발성이며 장치 전원이 제거될 때마다 내용이 손실됩니다. 실시간 임베디드 시스템 아키텍처는 전원이 공급될 때마다 비트스트림 파일을 FPGA로 로드하는 수단을 제공해야 합니다. 일반적으로 비트스트림은 장치 내부에 있는 플래시 메모리에서 로드되거나 각 전원이 켜질 때마다 장치에 연결된 PC와 같은 외부 소스에서 로드됩니다.

FPGA 비트스트림 컴파일을 완료한 다음 단계는 구현을 테스트하여 올바르게 작동하는지 확인하는 것입니다. 이 단계는 기존 소프트웨어 빌드 프로세스의 마지막에 필요한 테스트와 다르지 않습니다.

구현 테스트

FPGA 개발은 전통적인 소프트웨어 개발 노력을 방해하는 모든 유형의 버그에 취약합니다. FPGA 개발 중에 잘못된 구문, 현재 액세스할 수 없는 리소스 사용 시도 및 기타 여러 유형의 위반과 관련된 많은 오류 메시지가 표시될 수 있습니다. 모든 프로그래밍 작업과 마찬가지로 각 오류의 원인을 식별하고 문제를 수정해야 합니다.

FPGA 애플리케이션이 비트스트림 생성에 대한 모든 단계를 성공적으로 진행한 후에도 설계가 의도한 대로 수행된다는 보장은 없습니다. 합리적인 일정에 성공적인 디자인을 달성하려면 개발의 각 단계에서 적절한 테스트를 수행하는 것이 절대적으로 중요합니다.

테스트의 첫 번째 단계에서는 HDL 코드가 의도한 대로 수행되는지 보여주기 위해 HDL 코드의 동작을 철저히 연습해야 합니다. 이 장의 끝에 있는 예제 프로젝트는 설계에서 HDL 로직의 철저한 테스트를 수행하기 위해 Vivado 도구 모음을 사용하는 방법을 보여줍니다.

비트스트림이 생성된 후에는 최종 시스템 구성에서 구현된 FPGA의 포괄적인 테스트를 대체할 수 없습니다. 이 테스트는 범위를 벗어난 오류 조건에 대한 응답을 포함하여 FPGA의 모든 기능과 모드를 철저히 실행해야 합니다.

설계, 개발 및 테스트 프로세스의 각 단계에서 프로젝트 담당자는 가능성이 희박하거나 드문 상황에서 부적절한 동작을 하기 쉬운 시스템 기능을 구현할 가능성에 주의를 기울여야 합니다. 이러한 종류의 문제가 발생하면 복제하기가 극히 어려운 버그가 나타날 수 있으며 임베디드 시스템 설계 및 이를 생성한 조직에 대한 인식이 영원히 손상될 수 있습니다. 테스트를 훌륭하게 수행하면 이러한 결과가 나올 가능성이 크게 줄어듭니다.

다음 섹션에서는 Arty A7 개발 보드와 Xilinx Vivado 도구 모음을 사용하여 간단한 FPGA 프로젝트를 개발, 테스트 및 구현하는 단계에 대한 자세한 설명을 제공합니다.

Packt Publishing의 허가를 받아 재인쇄했습니다. 저작권 © 2021 팩트 퍼블리싱


짐 레딘 Ledin Engineering, Inc.의 CEO입니다. Jim은 임베디드 소프트웨어 및 하드웨어 설계, 개발 및 테스트 전문가입니다. 그는 또한 임베디드 시스템 사이버 보안 평가 및 침투 테스트를 수행합니다. 그는 학사 학위가 있습니다. Iowa State University에서 항공우주 공학 학위 및 M.S. Georgia Institute of Technology에서 전기 및 컴퓨터 공학 학위를 취득했습니다. Jim은 캘리포니아에 등록된 전문 전기 엔지니어이자 CISSP(공인 정보 시스템 보안 전문가), CEH(공인 윤리 해커) 및 CPT(공인 침투 테스터)입니다.

관련 콘텐츠:

  • FPGA를 사용한 임베디드 디자인:하드웨어 리소스
  • FPGA를 사용한 임베디드 디자인:구현 언어
  • 오픈 소스 도구로 FPGA 프로그래밍 간소화
  • FPGA 또는 ASIC에서 부동 소수점 알고리즘 구현
  • 딥 러닝을 위한 FPGA 활용
  • AI 애플리케이션을 위해 GPU 코드를 FPGA로 마이그레이션하는 소프트웨어 도구
  • FPGA는 Subaru Eyesight 비전 기반 ADAS에서 ASIC을 대체합니다.

더 많은 Embedded를 보려면 Embedded의 주간 이메일 뉴스레터를 구독하세요.


임베디드

  1. 고장 방지 설계
  2. 임베디드 시스템 프로그래밍 및 해당 언어란
  3. 챗봇이란 무엇입니까:디자인 프로세스 및 아키텍처
  4. 임베디드 시스템 디자인이란:디자인 프로세스의 단계
  5. 임베디드 시스템 및 애플리케이션의 기본
  6. ADI는 임베디드 시스템 설계의 모든 영역에 대한 기술을 보여줍니다
  7. Axiomtek:통합 레이어 2 관리 PoE 스위치가 있는 임베디드 시스템
  8. IBASE:온보드 AMD Ryzen Embedded V1000 SoC가 있는 슬림형 Mini-ITX 시스템
  9. MicroSys:NPX LS1028A CPU 및 IEEE TSN을 사용한 임베디드 에지 컴퓨팅
  10. 첨가제 결합