편집자 주: 고급 알고리즘이 계속 진화함에 따라 임베디드 설계자들은 현대 애플리케이션의 처리 요구를 충족하기 위해 고군분투합니다. FPGA가 필요한 성능을 제공하며, 최근 하드웨어와 툴링 발전으로 FPGA 개발이 더 넓은 청중에게 접근 가능해졌습니다. Jim Ledin의 Architecting High-Performance Embedded Systems에서 파생된 시리즈의 네 번째 기사인 이 글은 단순하지만 완전한 FPGA 프로젝트를 구축하는 실습 연습을 제공합니다.
첫 FPGA 프로젝트 개발하기
Digilent Arty A7 개발 보드에 탑재된 Xilinx Artix-7 FPGA에서 4비트 이진 가산기를 구축하겠습니다. 두 가지 보드 변형이 있습니다: 비용 효율적인 35T 모델(미화 $129)과 더 강력한 100T 모델(미화 $249). 유일한 차이는 사용 가능한 로직 리소스에 영향을 주는 FPGA 변형입니다. 100T는 디지털 오실로스코프 예제 같은 향후 더 많은 리소스를 요구하는 프로젝트에 더 적합합니다.
이 튜토리얼에서는 FPGA 코어, 4개 사용자 스위치, 4개 푸시버튼, 5개 LED에 집중합니다. 아래 단계는 Vivado 툴 스위트 설치, 프로젝트 생성, VHDL 코드 작성, 비트스트림을 보드에 로드하는 것(휘발성 구성 메모리와 온보드 플래시로 영구 동작 모두)을 다룹니다.
프로젝트 개요
설계는 4비트 가산기를 구현합니다. 4개 스위치가 첫 번째 4비트 피연산자를, 4개 푸시버튼이 두 번째 피연산자를 제공합니다. FPGA는 이 피연산자를 지속적으로 더해 4비트 합을 4개 LED에 표시하고, 5번째 LED로 캐리 아웃을 표시합니다. 이 단순한 설계로 복잡한 로직 대신 툴체인 워크플로에 집중할 수 있습니다.
Vivado 설치
Windows와 Linux에서 무료로 사용할 수 있는 Xilinx Vivado를 사용합니다. 다음 지침은 Windows를 가정하며, Linux 설치 단계는 유사합니다.
Xilinx Unified Installer(Windows Self-Extracting Web Installer) 다운로드. 이 책과의 일관성을 위해 버전 2020.1 선택, 아니면 최신 릴리스 사용
설치 프로그램 실행(예: Xilinx_1_0602_1208_Win64.exe). Windows가 다운로드를 차단하면 "Install anyway" 선택
환영 화면에서 Next 클릭
Xilinx 자격 증명 입력 후 Next 클릭
라이선스 동의 확인 후 Next 클릭
Vitis를 제품으로 선택(Vitis는 Vivado와 추가 도구를 번들로 포함). Next 클릭
기본 구성 요소 선택 유지 후 Next 클릭
대상 디렉토리 선택(예: C:\Xilinx) 후 Next 클릭
요약 검토 후 Install 클릭. 설치에 몇 분 소요
설치 완료 후 바탕화면 바로가기나 시작 메뉴에서 Vivado를 실행합니다.
프로젝트 생성
Vivado를 열고 Quick Start 패인에서 Create Project 클릭
프로젝트 이름으로 ArtyAdder 입력, 디렉토리 선택(예: C:\Projects), Create a subdirectory for this project 체크 후 Next 클릭
RTL Project 선택, Do not specify sources at this time 체크 후 Next 클릭
Boards 탭에서 "Arty" 검색 후 하드웨어에 따라 Arty A7-100 또는 Arty A7-35 선택, Next 클릭
마법사 완료로 빈 프로젝트 생성
VHDL 소스 파일 추가
Sources 패인에서 Design Sources 우클릭 → Add Sources…
Add or create design sources 선택 후 Next 클릭
Create File 선택, 파일명을 FullAdder.vhdl로 지정 후 OK 클릭
Adder4.vhdl 생성 반복 후 Finish 클릭
Define Modules 대화상자 무시, OK 클릭 후 Yes로 확인
FullAdder.vhdl 열기 후 다음 코드 붙여넣기:
library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity FULL_ADDER is port ( A : in std_logic; B : in std_logic; C_IN : in std_logic; S : out std_logic; C_OUT : out std_logic ); end entity FULL_ADDER; architecture BEHAVIORAL of FULL_ADDER is begin S <= (A XOR B) XOR C_IN; C_OUT <= (A AND B) OR ((A XOR B) AND C_IN); end architecture BEHAVIORAL;
Adder4.vhdl 열기 후 내용 교체:
library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity ADDER4 is port ( A4 : in std_logic_vector(3 downto 0); B4 : in std_logic_vector(3 downto 0); SUM4 : out std_logic_vector(3 downto 0); C_OUT4: out std_logic ); end entity ADDER4; architecture BEHAVIORAL of ADDER4 is component FULL_ADDER is port ( A : in std_logic; B : in std_logic; C_IN : in std_logic; S : out std_logic; C_OUT : out std_logic ); end component; signal c0, c1, c2 : std_logic; begin FULL_ADDER0 : FULL_ADDER port map ( A => A4(0), B => B4(0), C_IN => '0', S => SUM4(0), C_OUT => c0 ); FULL_ADDER1 : FULL_ADDER port map ( A => A4(1), B => B4(1), C_IN => c0, S => SUM4(1), C_OUT => c1 ); FULL_ADDER2 : FULL_ADDER port map ( A => A4(2), B => B4(2), C_IN => c1, S => SUM4(2), C_OUT => c2 ); FULL_ADDER3 : FULL_ADDER port map ( A => A4(3), B => B4(3), C_IN => c2, S => SUM4(3), C_OUT => C_OUT4 ); end architecture BEHAVIORAL;
다음 단계
다음 기사에서는 이 설계를 시뮬레이션하고, Arty 보드용으로 합성하고, 결과 비트스트림을 FPGA에 프로그래밍하는 과정을 안내합니다.
Jim Ledin은 Ledin Engineering, Inc.의 CEO입니다. 임베디드 소프트웨어 및 하드웨어 설계, 개발, 테스트 전문가이며 임베디드 시스템 사이버보안, 침투 테스트, 윤리적 해킹 전문성을 보유합니다. Iowa State University에서 항공우주공학 학사, Georgia Institute of Technology에서 전기컴퓨터공학 석사 학위를 취득했습니다. 캘리포니아 면허 전문 전기 엔지니어, CISSP, CEH, CPT 보유.