FPGA & Verilog БлогFPGA chips

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


 amd xilinx

Вчера, 27 октября, прошла интересная новость о том, что AMD приобретает компанию Xilinx.
Xilinx - одна из ведущих компаний разрабатывающих FPGA чипы. Общая сумма сделки вероятно будет около 35 миллиардов долларов, причем, похоже произойдет оплата путем обмена акциями. По сути дела, стороны просто обменяются акциями из расчёта ~1,7 акции AMD за одну акцию Xilinx. Сделка должна быть завершена до конца года. После сделки у акционеров AMD будет 74 процента акций объединённой компании, а у акционеров Xilinx будет 26%. Общая стоимость объединенной компании составит около 135 миллиардов.

Интересно, что в 2015-м году компания Intel приобрела другого производителя FPGA - компанию Altera. Тогда Интел заплатила живыми деньгами почти 16,7 миллиарда долларов.

Получается, что два извечных конкурента Intel и AMD производили процессоры для компьютеров и серверов и каждый купил себе в портфолио технологию FPGA. А Xilinx и Altera ведь тоже извечные конкуренты были...

В продолжении предыдущей статьи про процессор 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).