Начало FPGA-разработки: построение 4-битного сумматора на Xilinx Artix-7
Примечание редактора: По мере эволюции продвинутых алгоритмов, embedded дизайнеры часто борются за удовлетворение вычислительных требований современных приложений. Field-Programmable Gate Arrays (FPGA) предоставляют необходимую производительность, и недавние достижения в железе и тулчейнах сделали FPGA-разработку доступной для более широкой аудитории. Эта статья, четвёртая в серии из «Architecting High-Performance Embedded Systems» Джима Ледина, предлагает практическое пошаговое руководство по построению простого но полного FPGA-проекта.
Разработка вашего первого FPGA-проекта
Мы построим 4-битный бинарный сумматор на Xilinx Artix-7 FPGA в плате разработки Digilent Arty A7. Доступны две вариации платы: стоимостно-эффективная 35T модель (US $129) и более мощная 100T модель (US $249). Единственное различие — вариант FPGA, влияющий на доступные логические ресурсы. 100T предпочтительна для будущих проектов, требующих больше ресурсов, таких как пример digital oscilloscope в последующих главах.
Варианты покупки: Digilent Store, Amazon и другие ритейлеры.
Для этого туториала мы сфокусируемся на FPGA core, четырёх user switches, четырёх pushbuttons и пяти LED. Шаги ниже покрывают установку тулсьюта Vivado, создание проекта, написание VHDL кода и загрузку битстрима на плату — как в volatile configuration memory, так и во onboard flash для персистентной работы.
Обзор проекта
Дизайн реализует 4-битный сумматор. Четыре переключателя дают первый 4-битный операнд, четыре кнопки — второй. FPGA непрерывно складывает эти операнды и отображает 4-битную сумму на четырёх LED, с пятым LED индицирующим carry-out. Этот прямолинейный дизайн позволяет сфокусироваться на workflow тулчейна вместо сложной логики.
Установка Vivado
Мы используем Xilinx Vivado, доступный бесплатно для Windows и Linux. Следующие инструкции предполагают Windows; Linux установка аналогична.
- Создайте аккаунт пользователя Xilinx: https://www.xilinx.com/registration/create-account.html
- Залогиньтесь на https://xilinx.com и перейдите на страницу загрузки.
- Скачайте 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 из ярлыка на рабочем столе или меню Start.
Создание проекта
- Откройте Vivado и нажмите Create Project в панели Quick Start.
- Введите 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.
Reprinted with permission from Packt Publishing. Copyright © 2021 Packt Publishing
Джим Ледин — CEO Ledin Engineering, Inc. Специализируется на встраиваемом ПО и аппаратном дизайне, разработке и тестировании, экспертизе в кибербезопасности встраиваемых систем, тестировании на проникновение и этическом хакинге. Джим получил B.S. в аэрокосмической инженерии от Iowa State University и M.S. в электротехнике и компьютерной инженерии от Georgia Institute of Technology. Лицензированный профессиональный электроинженер в Калифорнии, CISSP, CEH и CPT.
Связанный контент
- Embedded design with FPGAs: Hardware resources
- Embedded design with FPGAs: Implementation languages
- Embedded design with FPGAs: Development process
- Open-source tools simplify FPGA programming
- Implementing floating-point algorithms in FPGAs or ASICs
- Leveraging FPGAs for deep learning
- Software tools migrate GPU code to FPGAs for AI applications
- FPGAs displace ASICs in Subaru Eyesight vision-based ADAS
Подпишитесь на еженедельную рассылку Embedded для больших инсайтов.
Встроенный
- Жидкое аддитивное производство: создание 3D-объектов из жидких материалов
- Проектирование встроенных систем: этапы, принципы и реальные применения
- Использование встроенного ИИ для превращения Big Data в действенные Smart Insights
- Arrow Electronics объявляет европейский FPGA‑конкурс — бесплатная отладочная плата и ценные призы
- MAXREFDES220# — Бесманжетный мониторинг артериального давления с оптическими датчиками
- Microchip запускает defense-grade PolarFire SoC FPGA с Early Access Program
- Создание робота на Raspberry Pi и Python: полное руководство
- Сборка самобалансирующегося Segway на Raspberry Pi
- Расширение GoPiGo v2 на Windows 10 IoT Core для Raspberry Pi 3
- Максимизация производства с передовым ПО для аддитивного производства