FPGA & Verilog БлогFPGA chips

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


 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).

M02mini plug into USB port

У нас появилась идея разработать очень простую в освоении и в использовании отладочную плату FPGA и мы воплотили ее в жизнь!

На этом фото наша новая плата подключена к USB порту ноутбука.

Многие из наших клиентов это начинающие разработчики и студенты. У студентов не всегда есть время на доскональное изучение всех учебных дисциплин, но и без практики никак нельзя. Для самостоятельного освоения азов цифровой схемотехники как раз и подойдет новая плата. Все очень просто: никаких проводов, блоков питания, дополнительных программаторов, просто маленькая USB плата, воткнул в порт ноутбука, настроил САПР, работаешь.

У нас уже была (и есть) другая простая плата, "Марсоход", но там стоит микросхема CPLD малой емкости и требуется внешний программатор и дополнительное питание. А здесь уже хоть и не очень большая, но полноценная FPGA. В этой FPGA есть и PLL и блочное ОЗУ, а это значительно расширяет возможности разработки. Например, с этой платой можно использовать инструмент внутрисхемной отладки Intel Quartus SignalTap.

Сама плата выполнена, как USB-dongle, программатор уже установлен на плате, питание от USB.

 

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

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

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

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

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

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