FPGA & Verilog БлогFPGA chips

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


В продолжении предыдущей статьи про процессор Forth ji в FPGA.. Мне удалось написать на форте простой интерпретатор. Он принимает из консоли через последовательный порт строки и разбирает их. Если выбранное слово из потока это число, то оно остается на стеке. Если не число, то возможно это форт слово. Интерпретатор пытается найти слово с своем словаре и если находит, то исполняет его.

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

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.