FPGA & Verilog БлогFPGA chips

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


forth j1

Наверное каждый разработчик FPGA рано или поздно решает создать свой процессор. Понятно, что есть много общеизвестных и распространенных процессоров у которых исходные тексты открыты для изучения и использования. Даже у нас на сайте мы уже запускали в плате Марсоход2 систему на кристалле ARMv2a и в плате Марсоход3 систему с процессором MIPS. Но и это не все! На opencores.org в разделе "процессоры" можно взять различные исходники более двухсот процессоров! Из широко известных там и Z80 и OpenRISC и RISC-V.

В этой статье я не буду изобретать свой процессор, однако, расскажу о довольно специфичном ядре - Forth-J1. Этот процессор специально разработан для исполнения "шитого кода" языка программирования Forth и хорошо подходит для использования внутри FPGA.

Автор этого ядра James Bowman, его страница на github здесь https://github.com/jamesbowman/j1
Я взял его Verilog исходники и адаптировал к нашим платам: Марсоход3, Марсоход3bis и новой плате M02mini. Вы можете взять мой адаптированный проект вот здесь: https://github.com/marsohod4you/M02mini/tree/master/forth_j1

Этот проект компилируется в среде САПР Intel Quartus Prime Lite для ПЛИС MAX10 наших плат и, в частности, для платы M02mini. При компиляции проекта смотрите, какая выбрана ревизия, для какой платы.

На плате M02mini стоит ПЛИС Intel MAX10 всего 2 тысячи логических элементов, но и здесь может работать 32х битный процессор J1 благодаря своей компактности.

 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.
Для каждой из наших плат мы делаем самый первый проект очень простым, "почти пустым". Как правило, в нем используются только светодиоды платы, они отображают двоичный счет и кнопки, которые либо останавливают счет либо сбрасывают его.

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