В моих предыдущих сообщениях я представил программируемые логические устройства (PLD) и FPGA, которые являются подкатегорией PLD. Здесь я собираюсь показать вам, как должна быть реализована аппаратная реализация, на нескольких базовых примерах с кодами, которые я сделал.

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

ВЕРИЛОГ

В этом случае я использовал Verilog HDL. Verilog — это язык описания оборудования (HDL), который можно использовать для описания цифровых схем в текстовой форме. Изучить Verilog не так сложно, если у вас есть опыт программирования. VHDL также является еще одним популярным HDL, широко используемым в отрасли. Verilog и VHDL имеют более или менее одинаковую популярность на рынке, но я выбрал Verilog, потому что его легко освоить, он синтаксически похож на язык C, и большинство наших университетских заданий рекомендуется выполнять на Verilog. Как только вы освоитесь с Verilog, вам будет легко выучить и VHDL.

Ниже приводится небольшое сравнение между VHDL и Verilog.

Если вы новичок в программировании Verilog, вы можете легко изучить Verilog по этой ссылке. Нажмите здесь, чтобы изучить Verilog

Совет по развитию

Здесь я использовал макетную плату Altera (теперь это Intel) DE2–115, в которой есть много периферии для наших целей. Он имеет микросхему Cyclone IV FPGA от Altera. Плата DE2 немного дороже. Однако мы смогли позаимствовать их из наших университетских лабораторий. Вы можете использовать более дешевую плату, такую ​​как плата Altera DE0-nano, а не DE2, которая также содержит тот же чип Cyclone IV FPGA.

Плата ДЭ2–115

DE0-нано плата

Имеется 27 управляемых пользователем зеленых и красных светодиодов, 18 скользящих переключателей включения/выключения и 4 кнопочных переключателя. На этой плате и на большинстве других плат для разработки FPGA есть отдельные контакты GPIO (входной выход общего назначения), которые можно использовать для подключения внешних периферийных устройств, таких как светодиоды или переключатели. Таким образом, вам не следует сильно беспокоиться о встроенной периферии вашей платы.

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

Скачать руководство пользователя DE2–115

Подробнее о плате ДЭ2–115

Поток проектирования

Типичный поток проектирования для аппаратной реализации соответствует приведенному выше рисунку. Узнать больше об этом потоке можно по этой ссылке.

Давайте начнем с простого примера, который представляет собой простой сумматор. Чтобы написать код Verilog, мы можем использовать простой текстовый редактор, такой как блокнот Windows, или использовать интеллектуальный текстовый редактор в программном инструменте Electronic Design, который специализируется на кодировании Verilog.

Дизайн

Мы собираемся реализовать однобитный полный сумматор, используя Verilog. Итак, прежде всего вам нужно определить потребность и сделать поток сумматора текстовым способом с использованием синтаксиса Verilog.

Мы добавляем два бита и бит переноса и назначаем вывод на два бита, которые называются суммой и переносом. Должно быть 3 входных переменных и 2 выходных переменных. Здесь я использовал поведенческую модель и назначал выходы сумме всех трех входов в единицу. С помощью любого текстового редактора скопируйте приведенный ниже код Verilog и сохраните его как «full_adder.v».

модуль full_adder(

вход х,

ввод у,

ввод син,

выход г,

выход cout

);

присвоить {cout,z} = cin + x + y;

конечный модуль

Создать новый проект

Затем мы перенесем созданный нами дизайн в специализированный программный пакет, где мы можем сгенерировать

требования к оборудованию и разверните его на FPGA. Поскольку мы используем Altera FPGA, для нашей платы мы будем использовать совместимый программный пакет под названием Altera Quartus II. Я предполагаю, что вы правильно установили Quartus II, загруженную с веб-сайта Altera или с диска с программным обеспечением, поставляемого с платой разработки.

Если у вас нет программного обеспечения, вы можете загрузить веб-версию (бесплатную) по следующей ссылке, зарегистрировавшись на сайте Altera. Скачать Altera quartus II v12.0

Сначала перейдите в меню «Файл» на верхней панели инструментов и выберите «Создать». Там вы увидите новое окно со списком типов файлов, и вы должны выбрать «новый проект quartus II» и нажать «ОК».

Затем появится окно мастера создания нового проекта. вы должны указать путь и имя для проекта. Имя объекта верхнего уровня также автоматически заменяется именем проекта.

В следующей вкладке нужно указать путь к нашему файлу «full_adder.v» и нажать «добавить».

Затем вы должны выбрать тип FPGA в соответствии с вашей макетной платой или отдельной FPGA. Здесь мы используем Cyclone IV E FPGA, и вы можете найти точное название устройства в их руководстве пользователя или на коробке устройства.

После этого появятся еще два окна для завершения настройки. Вы можете пропустить их, дважды нажав «Далее» и завершив настройку. Затем появится рабочая область с несколькими поддонами, содержащими детали проекта и файлы, как показано на следующем изображении.

На левой боковой панели «Навигатор проекта» вы увидите файлы проекта и иерархический дизайн проекта. Там единственный модуль в этом проекте «полный сумматор» уже назначен как «сущность верхнего уровня». На вкладке файлов вы можете выбрать наш файл Verilog и внести любые изменения, которые вы хотите сделать.

Далее мы должны назначить контакты для входов и выходов.

Пин-планирование

Чтобы назначить фактические выводы FPGA,

  1. Выберите ОбработкаНачатьНачать анализ и уточнение. Инструмент проанализирует дизайн и сообщит вам о любых предупреждениях или ошибках в дизайне.
  2. Выберите НазначенияПланировщик контактов, чтобы изменить назначения контактов. Вы должны увидеть выходные контакты нашего полного сумматора, как показано ниже.

В соответствии с руководством пользователя устройства вы должны определить, какие выводы назначены какому периферийному устройству, и заполнить их в столбце местоположения таблицы. Здесь нам нужны только три переключателя в качестве входов и два светодиода в качестве выходных битов.

Здесь я дал некоторые назначения контактов платы DE2-115 в Cyclone IV FPGA.

По мере заполнения таблицы вы заметите, что схема расположения выводов меняется в соответствии с ней автоматически. Новые назначенные контакты будут выделены красным цветом. Кроме того, строки в таблице будут окрашены в соответствии с физическим расположением вывода на ПЛИС.

Сборник

После выполнения вышеуказанных шагов для проекта его следует загрузить в FPGA в виде битового потока. Для этого нам нужно скомпилировать конструкцию следующим образом. Перейдите в раздел КомпиляцияНачать компиляцию в главном окне Quartus II. Запускается автоматизированная цепочка инструментов, которая преобразует описание Verilog в цифровую схему, помещает схему в FPGA и прокладывает проводные соединения между логическими элементами и регистрами.

Если все настроено правильно, процесс компиляции должен завершиться успешно, без каких-либо ошибок или критических предупреждений.

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

Программное обеспечение

После компиляции нам необходимо загрузить битовый поток в FPGA с помощью встроенного программатора программного обеспечения Quartus II.

Перейдите в раздел Инструменты › Программатор и откройте окно программатора.

Там вы увидите загружаемый файл битового потока с именем «full_adder.sof», который будет добавлен в программатор. Если такого файла нет, необходимо добавить файл вручную с помощью кнопки «Добавить файл».

Итак, нам нужно добавить наше устройство. Подключите USB-кабель к плате FPGA, подключите его к компьютеру и включите плату стандартным блоком питания для платы. Убедитесь, что вы установили поппер-драйверы макетной платы на компьютер. Затем перейдите в «Настройка оборудования», выберите там свою плату и нажмите «Закрыть».

Наконец, нажмите кнопку «start», и поток битов будет загружен в FPGA.

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

Смоделируйте дизайн

Согласно схеме проектирования у нас есть еще один промежуточный шаг перед этапом программирования, который называется «моделирование». Чтобы смоделировать проект, нам нужно написать еще один код, который называется «Код испытательного стенда» с синтаксисом Verilog. Эти коды представляют собой программы Verilog, предназначенные не для построения цифровых систем, а для их тестирования.

Возможно, вы помните, что наш модуль «full_adder», который мы создали на предыдущем шаге, имел входы и выходы для связи с внешним миром с помощью переключателей и светодиодов. Тестовый стенд можно рассматривать как более крупный модуль, который существует вокруг full_adder, подключается к его портам и получает значения. Обычно тестовый стенд не имеет внешних портов, так как предполагается, что это независимая изолированная система.

Перейдите в раздел files›new ›Verilog HDL file и скопируйте туда следующий код тестового стенда. Сохраните файл как «full_adder_tb.v».

модуль full_adder_tb;

рег х, у; // Входы

рег син;

проволочная сумма; // Выходы

проволочный вырез;

// Тестируемый блок (UUT)

full_adder uut(x,y,cin,sum,cout);

исходный

начинать

// Инициализировать входы

х = 0; у = 0; цин = 0;

#10

// Подождать 100 нс, пока не завершится глобальный сброс

Х=1;у=0;цин=1;

#10

Х=0;у=1;цин=0;

#10

$ закончить;

конец

конечный модуль

Запустите симуляцию

После добавления файла тестового стенда мы собираемся запустить симуляцию с помощью программного обеспечения для моделирования Altera под названием «ModelSim». Программный пакет Quartus II включает этот сторонний инструмент моделирования, который является одним из самых мощных инструментов моделирования, существующих в отрасли.

Чтобы открыть симулятор, перейдите в раздел ИнструментыЗапустить инструмент моделированияRTL Simulation, который откроет ModelSim . После этого откроется новое окно с ModelSim, и в левой части окна появится вкладка Библиотека. Перейдите в «рабочую» библиотеку и посмотрите, есть ли там модуль full_adder. При выборе этого параметра откроются входные и выходные переменные.

Затем щелкните правой кнопкой мыши модуль Test Up Counter в рабочей библиотеке и выберите параметр Simulate. Программное обеспечение запустит симуляцию модуля, вы увидите Objects и Processes. окна заполнятся новыми записями, и новое окно моделирования откроется параллельно окну Библиотеки. Вы можете добавить одну или несколько переменных в окно Wave и настроить Продолжительность выполнения в соответствии со временем выполнения кода вашего тестового стенда.