FPGA chips

Изучаем САПР Altera Quartus II / Intel Quartus Prime, язык описания аппаратуры Verilog HDL и кое-что про VHDL. Программируем FPGA Altera / Intel Cyclone III, Cyclone IV, MAX II, MAX10. Экспериментируем с платами разработчика  FPGA серии Марсоход, Марсоход2, Марсоход3. А еще разбираемся с FPGA Gowin.


Уроки Verilog

Verilog HDL - это язык описания цифровых схем. Он используется для проектирования цифровых микросхем ASIC и загружаемой логики FPGA (Field Programmable Gate Array). В рускоязычных статьях часто вместо слова FPGA пишут ПЛИС - Программируемая Логическая Интегральная Схема. Мы научим вас программировать ПЛИС на  языке Verilog за 5 уроков (а эта статья это уже второй урок):

  • Часть 1. Базовые типы источников сигнала в языке Verilog HDL - это wire, reg, шины. Группирование логики в модули (module / endmodule). Входные и выходные сигналы модулей (input, output, inout).
  • Часть 2. Простейшие модули AND, NAND, OR, NOR, XOR, XNOR, NOT. Установка экземпляров модулей и соединение их проводами. Иерархия модулей в языке описания аппаратуры Verilog HDL.
  • Часть 3. Арифметические и логические действия в языке Verilog. Операторы сложения и вычитания (+ , -) , логический и арифметический сдвиг ( << , >> , >>> ), битовые операции ( & , | , ^, ~ ), булевые операции ( && , || , ! ), операторы редукции, условного выбора ( ? ) и сравнения.
  • Часть 4. Поведенческие блоки. Конструкции always, if-else, case-endcase, циклы for(...).
  • Часть 5. Синхронная логика и триггера в Verilog HDL. Блокирующее и не блокирующее присваивание.

Из первого урока мы уже знаем, что такое модуль.

В проекте, особенно сложном, бывает много модулей, соединенных между собой. Прежде всего, нужно заметить, что в проекте всегда есть один модуль самого верхнего уровня (top level). Он состоит из нескольких других модулей. Те в свою очередь могут содержать еще модули и так далее. Не обязательно, чтобы все модули были написаны на одном языке описания аппаратуры. Совсем наоборот. Довольно удобно и наглядно иметь модуль самого верхнего уровня выполненным в виде схемы, состоящей из модулей более низкого уровня. Эти модули могут быть написаны разными людьми, на разных языках (Verilog, VHDL, AHDL, и даже выполнены в виде схемы). На самом деле – это все дело вкуса и возможностей компилятора (синтезатора), а так же требований заказчика.

В этой статье я расскажу, как создать новый проект в среде Altera Quartus II, как его откомпилировать и как прошить плату Марсоход.

В предыдущей статье "Введение в Verilog, урок первый" я писал о простых "программах" на языке Verilog. Мы изучили простое понятие провод (wire) и регистр (reg). Я хочу сделать совсем простой проект - соединить проводами кнопочки и светодиоды на плате Марсоход. Чтоб было не совсем скучно, добавим совсем простую логику в наш проект - две логические функции И и ИЛИ.

Соединить проводами - это не значит, что мы будем что-то паять. Мы напишем "программу" на языке Verilog, откомпилируем ее средствами среды разработки Quartus II и зашьем в плату Марсоход.

Вот какая у меня будет программа на Verilog:


module test_wires(
     input wire key0,
     input wire key1,
     input wire key2,
     input wire key3,
     output wire led0,
     output wire led1
     );

assign led0 = key0 & key1;
assign led1 = key2 | key3;

endmodule


Светодиод led0 будет гореть если от кнопочек key0 И key1 будет приходить сигнал единица.

Светодиод led1 будет гореть если от кнопочек key2 ИЛИ key3 будет приходить сигнал единица.

Посмотрим, что у нас получится (внимание траффик - более 30 картинок - очень подробная инструкция).

Шаг 1.

Шаг 1 - делаем простой проект для ПЛИС Altera в Quartus II

Запускаем среду разработки Altera Quartus II Web Edition и выбираем пункт меню File/New Project Wizard. (Нажмите на картинку, чтобы посмотреть крупнее).

Verilog

Verilog HDL - язык описания цифровых схем. Он используется для проектирования цифровых микросхем ASIC и микросхем загружаемой логики FPGA (Field Programmable Gate Array) - по этой ссылке можно прочитать про их внутреннее устройство. Программировать FPGA не очень сложно. Мы научим вас этими уроками:

  • Часть 1. Базовые типы источников сигнала в языке Verilog HDL - это wire, reg, шины. Группирование логики в модули (module / endmodule). Входные и выходные сигналы модулей (input, output, inout).
  • Часть 2. Простейшие модули AND, NAND, OR, NOR, XOR, XNOR, NOT. Установка экземпляров модулей и соединение их проводами. Иерархия модулей в языке описания аппаратуры Verilog HDL.
  • Часть 3. Арифметические и логические действия в языке Verilog. Операторы сложения и вычитания (+ , -) , логический и арифметический сдвиг ( << , >> , >>> ), битовые операции ( & , | , ^, ~ ), булевые операции ( && , || , ! ), операторы редукции, условного выбора ( ? ) и сравнения.
  • Часть 4. Поведенческие блоки. Конструкции always, if-else, case-endcase, циклы for(...).
  • Часть 5. Синхронная логика и триггера в Verilog HDL. Блокирующее и не блокирующее присваивание.

На первом уроке познакомимся с базовыми типами источников сигнала используемыми в языке.

Многие спрашивают, "Почему у вас до сих пор ничего не летает?"
Итак - наш ответ - "Летающая тарелка":

Летающая тарелка своими руками

Сегодня сделали небольшие изменения на нашем сайте. Мы их давно обсуждали меж собой и вот наконец дошли руки реализовать задуманное. Надеюсь так сайт будет удобнее.

Изменений в общем не много:

  • При заходе на главную страницу читатель сразу попадает в раздел "Наш блог".
  • В разделе "Наш блог" отображаются и просто статьи про разное и проекты для платы Марсоход.
  • Отображается количество просмотров статьи в разделе "Наш блог".
  • Отображется имя автора (надеюсь со временем количество авторов увеличится Smile).
  • Модуль "Последнее" убрали и вместо него теперь "Последние комментарии". Тоже довольно удобно.

Пока все. Предложения по улучшению пишите Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.