Если вы читаете сейчас, я предполагаю, что вам в некоторой степени (очень даже очень) интересно ПЛИС. В отличие от другого процесса обучения программированию, кажется, что начать работу с FPGA намного сложнее. Но если вы хотите учиться, эта статья может быстро намочить ваши ноги, не требуя больших затрат. И я предполагаю, что у вас нет абсолютно никакого опыта программирования FPGA.

Что вы должны получить

Есть много вариантов для начала, здесь мы собираемся использовать чипсет Altera Cyclone II FPGA, плата разработчика на Amazon стоит 19,99 доллара. (EP2C5T144 Altera Cyclone II FPGA Mini Development Board). Честно говоря, я немного обманул заголовок статьи, чтобы заманить вас сюда, извините за это. Вам также понадобится USB Blaster (менее 10 долларов на Amazon) для подключения вашего ПК (Windows или Linux) для программирования платы разработки FPGA и источника питания 5 В (менее 10 долларов на Amazon) для питания платы. Я надеялся, что у вас уже есть USB Blaster и блок питания от некоторых других ваших проектов, и я также слышал, что люди купили весь набор на Ebay менее чем за 20 долларов. Вот и все, что вам нужно в отношении оборудования.

Что вам следует установить

В программной среде IDE мы собираемся использовать Altera Quartus II v13.0sp1, которая является самой низкой версией программного обеспечения, бесплатного в сети. Обратите внимание, что Intel приобрела Altera около 5 лет назад, так что вы увидите много материалов и ссылок от обоих названий компаний, но сейчас это всего лишь одна компания. Мы также собираемся использовать IDE на платформе Windows, и вот ссылка, необходимая для загрузки и установки программного обеспечения Quartus II (включая Nios II EDS) в вашей системе Windows: https: // fpgasoftware.intel.com/13.0sp1/?edition=web&platform=windows

(если вы предпочитаете работать с Linux, вы можете просто загрузить ту же версию для платформы Linux и установить в своей системе. Linux IDE на самом деле меньше и проще в установке, поскольку мы покажем вам процесс установки Windows, чтобы понять, почему)

Прежде чем мы сможем начать наш проект, вам нужно сделать еще две вещи:

  1. Нам необходимо загрузить и установить «Поддержка устройств Cyclone II, Cyclone III, Cyclone IV (включая все варианты)» в разделе «Устройство» на странице загрузки веб-сайта. (см. как установить ниже)
  2. Нам нужно установить драйвер для USB Blaster. мы можем просто открыть «Панель управления», щелкнув значок «Пуск» в Windows, а затем выполнить поиск «Другие устройства» в «Диспетчере устройств», чтобы найти USB Blaster.
Right click on "USB-Blaster" and select "Update Drivers"
On the "Update Drivers - USB-Blaster" popup page, select "Browse my computer for drivers"
select "Browse..." to the driver directory: "C:\altera\13.0sp1\quartus\drivers\usb-blaster"
then click on "Next" and on the next page,
select "Install" and then click on "Close" after the driver is successfully installed.

После установки необходимого драйвера элемент «Altera USB-Blaster» отобразится в «Контроллерах универсальной последовательной шины». Не забудьте подключить USB Blaster к своему ПК, чтобы выполнить этот шаг! Мы также подключим другой конец USB Blaster к разъему «JTAG» на плате для нашего проекта. (мы собираемся игнорировать коннектор «AS» рядом с коннектором «JTAG» в нашем проекте)

Примечание: на платформе Linux два вышеуказанных шага включены в процесс установки IDE.

Наш проект

Наш проект «Hello, World» предназначен не для отображения текста на экране, а для того, чтобы увидеть, что что-то происходит на плате разработчика: на одной стороне платы, рядом с разъемом JTAG, есть кнопка (клавиша) и 3 светодиода, отмеченные как «ключ JTAG D5 D4 D2» на плате. Наш проект состоит в том, чтобы запрограммировать плату FPGA так, чтобы она отображала видимую диаграмму направленности светодиода, а затем изменила ее, нажав кнопку.

Кнопка и светодиоды подключены и доступны для контактов на плате разработчика, мы собираемся программировать контакты и управлять ими для реализации нашего проекта.

Существует два популярных языка программирования FPGA: VHDL и Verilog. Здесь мы собираемся использовать VHDL.

«Привет, FPGA!»

После всех вышеперечисленных приготовлений давайте начнем наш проект с запуска Quartus II 13.0sp1, установленного в вашей системе.

Установите поддерживаемое устройство, если вы еще не сделали этого:

Щелкните «Инструменты», а затем выберите «Установить устройства…», чтобы установить «cyclone_web-13.0.1.232.qdz», загруженный ранее.

Чтобы создать проект, в раскрывающемся меню «Файл» выберите «Мастер создания нового проекта…», нажмите «Далее» во введении.

Страница 1:

В поле «Каталог, имя, объект верхнего уровня [Страница 1 из 5]» заполните поля следующим образом:
«Каков рабочий каталог для этого проекта?»
C: / Projects / Altera / MyProj
(Вы должны создать папку, прежде чем сможете выбрать указанную выше папку)
«Как называется этот проект»
MyProj
«Как называется верхний уровень дизайн объекта для этого проекта? »
MyProj
Нажмите« Далее »

Страница 2:

На «Добавить файлы [страница 2 из 5]»
Нажмите «Далее», так как мы добавим файлы позже.

Стр. 3:

В разделе «Семейство и настройки устройства [Страница 3 из 5]»
В раскрывающемся списке «Семейство:» выберите «Cyclone II»
В таблице «Доступные устройства:» выберите «EP2C5T144C8»
Нажмите "Далее"

Стр. 4:

В «Настройки инструмента EDA [страница 4 из 5]»
Нажмите «Далее»

Стр. 5:

На «Сводке [страница 5 из 5]»
Нажмите «Готово».

(программное обеспечение выдает сообщения с просьбой купить программное обеспечение, вы можете просто отменить, чтобы игнорировать их для этого проекта)

В меню «Файл» выберите «Создать…»
В разделе «Файлы дизайна» выберите «Файл VHDL»
и нажмите «ОК»

Скопируйте следующий код VHDL в новый файл:

-- MyProj "Hello, FPGA"
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity MyProj is
 Port (PB   : in  STD_lOGIC;  -- pin 144
       LED0 : out STD_lOGIC;  -- pin 3
       LED1 : out STD_lOGIC;  -- pin 7
       LED2 : out STD_lOGIC); -- pin 9
end MyProj;
architecture Behavioral of MyProj is
begin
 LED0 <= not PB;
 LED1 <= PB;
 LED2 <= not PB;
end Behavioral;

Сохраните файл как «MyProj.vhd», поскольку расширение программы VDHL - .vhd.

В языке программирования VHDL два дефиса «-» обозначают строку комментария. Здесь мы используем стандартную логическую библиотеку «IEEE». В разделе «сущность» имя «MyProj» должно совпадать с именем «проектной сущности верхнего уровня» выше на «[страница 1 из 5]». Здесь мы также определяем все порты. PB представляет собой кнопку, которая используется для ввода и подключена к выводу 144 на плате; 3 светодиода - это выходы, подключенные к контактам 3, 7 и 9 соответственно на плате. В разделе «Поведение архитектуры» LED1 назначается то же состояние, что и PB, а LED0 и LED2 назначаются в состояния, противоположные состоянию LED1. Когда вы нажимаете кнопку, три состояния светодиода изменяются, и вы можете наблюдать за ними. Мы не собираемся здесь больше говорить о языке программирования VHDL, о котором вы можете узнать из множества источников в сети.

На этом этапе мы должны иметь возможность скомпилировать программу, щелкнув «Обработка» и выбрав «Начать компиляцию» с успехом, если все синтаксисы верны. Результат компиляции должен выглядеть примерно так:

Однако нам нужно «подключить» определенную логику входа и выхода к фактическим контактам на плате:

Нажмите «Назначения», а затем выберите «Планировщик контактов».

Вы можете поработать либо с изображением микросхемы, либо с таблицей для соединения контактов, но результат должен отображаться как следующий снимок экрана на столе:

В таблице вы можете щелкнуть место под «Местоположение», чтобы выбрать контакты из раскрывающегося списка.

Теперь вы можете снова его скомпилировать. Если компиляция прошла успешно, мы можем запустить ее на плате:

В «Инструменты» выберите «Программист». Появится диалоговое окно программиста:

Есть несколько шагов, о которых нам нужно позаботиться:

  1. Щелкнув «Настройка оборудования…», мы сможем выбрать «USB-Blaster» в таблице «Доступные элементы оборудования».

2. Нажав на «Добавить устройство…», мы выберем семейство устройств «Cyclone II» и устройство «EP2C5T144»:

3. Нажав на «Добавить файл…», мы сможем выбрать «MyProj.sof» из папки «output_files»:

После 3 шагов, описанных выше, он должен выглядеть примерно так:

Обратите внимание, что «Program / Configure» должен быть отмечен!

Теперь, нажав кнопку «Пуск» слева, программа будет загружена и запущена на плате FPGA, вы должны увидеть результаты светящихся светодиодных диаграмм. При нажатии PB на плате рисунок светодиода изменится так, как мы разработали!

Бонус

Если вам интересно, как программа Verilog будет работать сразу, вы можете загрузить http://doolittle.icarus.com/~larry/vhd2vl/ в Linux (обычно я просто использую Windows WSL в своей системе):

$ tar — extract — file vhd2vl-2.5.tar.gz
$ ./vhd2vl MyProj.vhd > MyProj.v

обратите внимание, что расширение файла Verilog - .v

Затем вы можете создать другой проект, чтобы поиграть с версией вашего проекта Verilog.

Домашнее задание

На плате Cyclone II dev на самом деле есть микросхема EEPROM, вы можете создать файл .jic для прошивки на нем, чтобы в следующий раз, когда вы включите свою плату, она запустит вашу программу, которая была на ней в последний раз прошита.

Кончик

Если вам сложно читать текст на плате или микросхеме, вы можете сделать хороший снимок на свой смартфон и посмотреть на него в увеличенном виде.

Рекомендация:

«Go Board» рекомендован обучающими материалами и проектами на nandland.com.

Использованная литература:

[1] www.altera.com

[2] www.nandland.com