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.


 M02mini

 У меня уже была статья о том, как адаптировать существующие FPGA проекты к имеющейся у вас плате. Если повторить кратко, то нужно в свойствах проекта нужно:

  • назначить новый тип микросхемы FPGA, указать именно ту микросхему, которая стоит на имеющейся плате;
  • выполнить назначения сигналов проекта к выводам FPGA чипа на вашей плате, все платы разные, но как правило многие имеют общие черты: некоторое число кнопок, светодиодов, или есть линии последовательного порта. На этом этапе, конечно, возможно не все сигналы получится вывести, тогда придется ограничиться имеющимеся ресурсами;
  • установить неиспользуемые выводы FPGA в состояние input tristate;
  • возможно, придется некоторые компоненты созданные визардом квартуса: PLL, блоки памяти, FIFO и прочее, сгенерировать заново. Это не всегда требуется, но иногда нужно.
    После всех этих манипуляций можно пробовать компилировать проект в среде Intel Quartus Prime и загружать в FPGA платы.

Сегодня я адаптировал два моих проекта платы Марсоход3bis для работы в плате M02mini. Далее расскажу об этом подробнее.

 enigma crypto machine

 

Шифровальная машина Энигма была разработана еще до Второй мировой войны и использовалась как в коммерческих целях, так и в военных целях в армиях разных стран. Однако, именно нацистская Германия произвела большое число модификаций этой машины и массово использовала её для передачи секретных донесений и приказов. Особенное распространение Энигма получила во флоте на атлантике, однако, и на восточном фронте она использовалась. О самой шифровальной машине сложилось много мифов и легенд и про нее писали книги и снимали фильмы. И это понятно, ведь использование шифров при передаче оперативной информации напрямую влияло на исход военных, морских сражений, а значит на судьбы многих тысяч людей.

Подробнее об Энигме можно почитать, например, в Википедии. Я же в свою очередь так же постараюсь кратко рассказать о ее устройстве и о моей реализации шифроалгоритма в FPGA Intel MAX10 нашей платы M02mini. Я буду реализовывать конкретно одну модель - Enigma M3 использовавшуюся в основном военно-морскими силами Германии (Kriegsmarine).

 

Мы разработали новую FPGA плату M02mini.
Для каждой из наших плат мы делаем самый первый проект очень простым, "почти пустым". Как правило, в нем используются только светодиоды платы, они отображают двоичный счет и кнопки, которые либо останавливают счет либо сбрасывают его.

Вот и сейчас расскажу немного про такой проект.

Обычно, когда нужно симулировать FPGA проект, то создают специальные программы тестбенчи, например, на Verilog.

FPGA проект содержит модуль верхнего уровня со своими входами и выходами. Этот модуль нужно протестировать. Тестбенчи генерируют внешние сигналы к исследуемому модулю и потом, в процессе симуляции, можно будет увидеть все внутренние сигналы проекта. Написание тестбенчей не всегда простое занятие.
У нас было несколько статей на эту тему, например, вот симуляция с Icarus Verilog или вот про ModelSim.

Иногда можно обойтись и без тестбенчей. Я уже когда-то очень давно (хех, 10 лет назад) писал статью про симуляцию проекта в Quartus II v9 через Waveform.. Позже была статья про симуляцию в Quartus v13.

Там входные сигналы для тестирование проекта можно было просто рисовать в специальном редакторе. Было время и Альтера убрала эту возможность из Quartus. Потом, под влиянием общественности (университеты), снова вернула. Честно говоря, я давно не пробовал эту функцию квартуса, как-то не было потребности. Однако, на форуме человек спросил, а я не знаю что ответить. Решил попробовать сам, как работает такая симуляция в версии 20.1.


Я продолжил работу над своим проектом USB хост контроллера для платы Марсоход3. Описание первой версии проекта вот здесь. Там я подключал USB мышь. Теперь в моем проекте уже есть два USB порта и они все так же управляются через последовательный порт.

Это видео демонстрирует работу хост контроллера и подключенных к плате мыши и клавиатуры. На плату Марсоход3 установлен наш шилд разъемов.