임베디드
보다 강력한 FPGA와 보다 효과적인 프로그래밍 환경의 가용성으로 인해 FPGA 구현이 가능해졌습니다. 광범위하게 액세스할 수 있지만 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 내부에서 실행되는 로직보다 시뮬레이션 환경에서 문제를 감지하고 수정하는 것이 훨씬 쉽기 때문입니다. Vivado 시뮬레이션 도구는 회로 동작을 매우 잘 나타냅니다.
<올>
그림 4.18 – 소스 추가… 시뮬레이션 소스에 대한 메뉴 선택
이 코드는 각 A4에 4비트 숫자의 모든 조합을 제시하여 4비트 가산기 기능을 실행합니다. 및 B4 Adder4에 대한 입력 요소. SUM4를 비교합니다. 및 C_OUT4 Adder4의 출력 구성 요소를 동일한 입력에 대해 독립적으로 계산된 값으로 변환합니다. 각 추가 작업 후에 오류 Adder4인 경우 신호가 0으로 설정됩니다. 출력이 예상 값과 일치하거나 1로 설정됨 불일치가 있는 경우.
Adder4TestBench.vhdl의 코드 중첩 for 루프를 사용하여 모든 테스트 입력 조합을 Adder4에 적용한다는 점에서 기존 소프트웨어 코드와 유사합니다. 테스트 중인 구성 요소. 시뮬레이션 모드에서 테스트를 실행하는 코드는 합성할 수 없습니다. 즉, 순수하게 하드웨어 논리 회로를 나타내지 않으며 for<의 반복 실행과 같은 기존 소프트웨어와 유사한 작업이 가능합니다. /글꼴> 루프.
그러나 물리적 회로에서와 같이 <=연산자를 사용하여 테스트 벤치 코드에서 값이 할당된 신호는 후속 표현식에서 동일한 순간에 사용할 수 없습니다. 이는 시뮬레이션 환경이 전파 지연의 실제 효과를 나타내기 때문이며, 이는 매우 작은 FPGA 장치 내에서도 중요합니다. 세 개의 1ns 기다림; 테스트 벤치 코드의 문은 전파 지연을 허용하기 위해 회로 작업을 일시 중지합니다. 이러한 1ns 지연은 대기 직전에 계산된 신호 값에 대한 시간을 제공합니다. 다음 문에서 사용할 수 있도록 문을 전파합니다. 마지막 7ns 기다림; 내부 루프의 문은 신호 추적 디스플레이에서 시뮬레이션 루프의 각 반복 결과를 명확하게 볼 수 있도록 하는 일시 중지입니다.
<올 시작="7">
그림 4.19 – 자동 업데이트 및 컴파일 순서를 설정하기 위한 메뉴 선택
그림 4.20 – 행동 시뮬레이션 실행 메뉴 선택
그림 4.21 – 시뮬레이션 결과 창
내부 루프를 통과하는 각 패스의 총 시뮬레이션 시간은 10ns입니다. Adder4TestBench.vhdl 루프를 통과하는 256개의 패스가 있기 때문에 , 시뮬레이션 실행 시간은 2560ns입니다.
그림 4.22 – 실행의 시작부터 끝까지의 시뮬레이션 결과
돋보기 아이콘을 사용하여 추적의 모든 지점을 확대하고 테스트 중에 수행된 각 추가 작업의 결과를 관찰할 수 있습니다. 예를 들어, 다음 그림은 캐리가 0인 결과 8을 생성하기 위해 십진수 값 6과 2가 추가되었음을 보여줍니다. 이 값은 예상 값과 일치하여 오류가 발생했습니다. 0으로 설정합니다. 오류 신호는 256개의 모든 테스트 사례에 대해 0이며, 이는 논리 회로가 모든 테스트를 통과했음을 나타냅니다.
그림 4.23 – 시뮬레이션 결과 확대 보기
행동 테스트를 통과하면 디자인에 사용되는 I/O 신호를 정의합니다.
I/O 신호 정의
다음 단계는 회로의 입력과 출력을 Arty 보드의 하드웨어 장치에 연결하는 것입니다. 입력은 보드 스위치와 푸시버튼이 되고 출력은 LED가 됩니다.
다음 단계는 FPGA 장치에서 사용할 I/O 핀과 Arty 보드의 해당 핀에 연결된 기능을 설명하는 제약 파일을 생성합니다. 제약 파일에는 xdc 확장자가 있습니다.
<올>
그림 4.24 – Constraints 편집기 창
다음 섹션에서는 가산기 코드를 I/O 장치와 인터페이스하는 최상위 VHDL 파일을 생성합니다.
최상위 VHDL 파일 만들기
다음으로 4비트 가산기 구성요소를 해당 보드 I/O 신호에 연결하는 최상위 VHDL 파일을 생성합니다.
<올>-- IEEE 표준 라이브러리 라이브러리를 로드합니다. IEEE.STD_LOGIC_1164.ALL 사용, 엔터티 ARTY_ADDER는 포트입니다( sw:STD_LOGIC_VECTOR에서 3(3에서 0으로), btn:에서 STD_LOGIC_VECTOR에서(3에서 0으로), led:아웃 STD_LOGIC_VECTOR(3에서 0으로), led0_g:아웃에서 ARTY_ADDER;아키텍처 BEHAVIORAL of ARTY_ADDER -- 4비트 가산기 구성 요소의 이전 정의 참조 ADDER4는 포트입니다( A4:in std_logic_vector(3 downto 0); B4:in std_logic_vector(3 downto 0); SUM4 :out std_logic 아래로 0); C_OUT4 :std_logic 밖으로 ); 끝 구성 요소, 시작 ADDER :ADDER4 포트 맵 ( A4 => sw, B4 => btn, SUM4 => led, C_OUT4 => led0_g ), 아키텍처 종료 BEHAVIORAL;
이 코드는 Arty-A7-100.xdc에 명명된 I/O 장치의 신호 이름을 매핑합니다. sw로 (스위치 4개), btn (푸시버튼 4개), led (단색 LED 4개) 및 led0_g (첫 번째 다중 색상 LED의 녹색 채널) ADDER4 입력 및 출력.
VHDL은 대소문자를 구분하지 않지만 xdc 처리 Vivado의 제약 파일은 대소문자를 구분합니다. xdc에 정의된 I/O 장치 이름에 사용된 대소문자 파일은 VHDL 파일에서 참조할 때 동일해야 합니다. 특히, VHDL의 I/O 신호 이름은 제약 파일에서 소문자이기 때문에 이 파일에서 소문자여야 합니다.
이제 Arty 보드용 디자인을 합성, 구현 및 프로그래밍할 준비가 되었습니다.
FPGA 비트스트림 합성 및 구현
또는 비트스트림 생성 을 선택할 수 있습니다. Vivado는 추가 사용자 개입 없이 합성, 구현 및 비트스트림 생성을 포함하여 필요한 모든 단계를 수행합니다. 치명적인 오류가 발생하면 프로세스가 중지되고 오류 메시지가 표시됩니다. 비트스트림을 생성하려면 다음 단계를 수행하십시오.
<올>
그림 4.25 – Bitstream 메뉴 선택 생성
그림 4.26 – 실행 실행 대화 상자 시작
그림 4.27 – 컴파일 상태 표시
그림 4.28 – 비트스트림 생성 완료 대화 상자
다음으로 비트스트림을 FPGA로 다운로드합니다.
보드에 비트스트림 다운로드
Arty A7 보드에 비트스트림을 다운로드하려면 다음 단계를 수행하십시오.
<올>
그림 4.29 – 대상 열기 및 자동 연결 선택
그림 4.30 – 프로그램 장치 대화 상자
여기에서 수행된 프로그래밍 프로세스는 프로그램을 FPGA RAM에 저장했습니다. FPGA 보드의 전원을 껐다 켜면 프로그램을 다시 로드하기 위해 프로그래밍 프로세스를 반복해야 합니다. 또는 다음 섹션에 설명된 대로 FPGA 구성 파일을 온보드 플래시 메모리에 저장할 수 있습니다.
온보드 플래시 메모리를 위한 비트스트림 프로그래밍
Arty 보드에 전원이 공급될 때마다 FPGA를 구성하려면 FPGA 구성 파일을 보드의 플래시 메모리에 저장해야 합니다. MODE 점퍼가 설치된 경우 FPGA는 전원을 켤 때 온보드 플래시 메모리에서 구성 파일 다운로드를 시도합니다. 이 메모리는 Artix-7 FPGA에 인접한 별도의 칩에 있습니다. 구성 파일을 플래시 메모리에 프로그래밍하려면 다음 단계를 따르십시오.
<올>
그림 4.31 – 비트스트림 설정 대화상자
그림 4.32 – 구성 메모리 장치 추가… 메뉴 선택
그림 4.33 – 구성 메모리 장치 추가 대화 상자
그림 4.34 – 프로그램 구성 메모리 장치 대화 상자
그림 4.35 – 프로그램 플래시 완료 대화 상자
그 후, 보드 전원을 껐다 켤 때마다 4비트 가산기 프로그램이 로드되고 실행됩니다. 구성 파일 로드에 사용한 설정으로 프로그램을 로드하는 데 오랜 시간이 걸립니다. FPGA가 프로그램을 로드할 때까지 기다리지 않으려면 다음 단계를 수행하여 구성 파일 로드 속도를 향상시킬 수 있습니다.
<올>이 섹션에서는 FPGA I/O 핀의 신호와 상호 작용하는 간단한 조합 논리의 예를 제시했습니다. 여기서 의도는 귀하가 Vivado에 익숙해지도록 하는 것이었습니다.
도구 모음 및 도구가 전체 FPGA 개발 주기를 수행하는 데 사용되는 방법을 보여줍니다.
요약
이 장은 리얼타임 임베디드 시스템 아키텍처에서 FPGA의 효과적인 사용에 대한 논의로 시작하여 표준 FPGA 디바이스와 여기에 포함된 로우 레벨 컴포넌트에 대한 설명으로 계속되었습니다. HDL, 블록 다이어그램 방법 및 C/C++와 같은 인기 있는 소프트웨어 프로그래밍 언어를 포함한 다양한 FPGA 설계 언어가 도입되었습니다. FPGA 개발 프로세스의 개요가 제시되었습니다. 이 장은 요구 사항 설명으로 시작하여 저비용 FPGA 개발 보드에 구현된 기능 시스템으로 끝나는 FPGA 개발 주기의 전체 예제로 마무리되었습니다.
이 장을 마치면 FPGA가 실시간 임베디드 시스템 아키텍처에 효과적으로 적용될 수 있는 방법과 FPGA 집적 회로 내부의 구성 요소를 이해해야 합니다. FPGA 알고리즘 설계에 사용되는 프로그래밍 언어, FPGA 개발 주기의 단계, FPGA 개발 프로세스의 단계 순서를 이해했습니다.
다음 장에서는 FPGA 개발 프로세스를 확장하여 FPGA를 포함하는 실시간 임베디드 시스템을 설계하는 완전한 접근 방식을 제공합니다. 또한 다음 장에서 예제로 사용할 디지털 오실로스코프인 프로토타입 고성능 임베디드 시스템의 개발을 시작할 것입니다.
Packt Publishing의 허가를 받아 재인쇄했습니다. 저작권 © 2021 팩트 퍼블리싱
관련 콘텐츠:
더 많은 Embedded를 보려면 Embedded의 주간 이메일 뉴스레터를 구독하세요.
임베디드
로봇 시뮬레이션은 로봇 시스템의 설계 및 프로그래밍 문제를 해결하는 데 이상적입니다. 시뮬레이션의 두 가지 가장 일반적인 형태인 불연속 이벤트와 연속 시뮬레이션의 조합입니다. 수년에 걸쳐 시뮬레이션의 이점은 로봇 기술 로봇 기술의 발전으로 인해 엄청나게 커졌습니다. 시뮬레이션의 이점 로봇 시뮬레이션은 자동화 시스템 설계에 적합하며 CAD 시스템보다 훨씬 유리합니다. 시뮬레이션은 자동화를 위한 고품질 설계를 생성합니다. 개념과 디자인의 열린 커뮤니케이션을 통해 동기화된 그룹 제조가 가능합니다. 도구 효율성을 통해 엔지니어는
산업공학의 전문분야인 공구공학은 제조과정을 계획하기 위해 존재합니다. 이 분야의 작업자는 도구와 기계를 개발하고 설비를 통합하여 제품을 생산합니다. 공구 공학에 대한 배경 지식은 지그 설계, 프레스 공구 설계, 다이캐스팅 설계, 플라스틱 금형 설계 및 절삭 공구 설계 분야에 대한 연구가 필요합니다. 도구 엔지니어는 전통적으로 엔지니어링 도면에서 작업하여 원자재에 디자인을 표시했습니다. 선반, 밀링 머신, 연삭기, 지그 보어 및 그라인더와 같은 수동 제어 공작 기계는 엔지니어가 디자인의 크기와 모양을 자르는 데 도움이 됩니다. 컴퓨