FPGA & Verilog БлогFPGA chips

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


raspberry pi4 with FPGA Cyclone IV board marsohod2rpi

Раздобыли плату Raspberry Pi4 и попробовали подключать к ней нашу FPGA плату Марсоход2RPI. В принципе все работает, но JTAG сервер пришлось слегка модифицировать. Все из-за того, что базовый адрес периферии в Raspberry Pi4 изменился.

Поэтому вот, новая версия сетевого программатора-загрузчика JTAG:

Этот набор из двух файлов:

  • nw_jtag_srv, версия 1.2
  • jtag_hw_net_blaster64.dll, версия 1.8b

Первый исполняемый файл nw_jtag_srv запускается на Raspberry и выполняет роль JTAG сервера. По идее поддерживаются все версии одноплатников: Pi-Zero, Pi2, Pi3 и теперь уже Pi4. Сервер nw_jtag_srv слушает по сети входящие соединения от Quartus Prime Programmer и исполняет JTAG команды. Запускать сервер нужно через sudo.

В новой версии 1.2 сервера nw_jtag_srv предусмотрено использование конфигурационного файла jconfig.txt. Он может выглядеть вот так:

PERI_BASE=0xFE000000
TMS_RPI_PIN=0
TDI_RPI_PIN=11
TCK_RPI_PIN=7
TDO_RPI_PIN=1

Этот конфигурационный файл позволяет назначить новые параметры для сервера, альтернативные номера пинов для сигналов JTAG и альтернативный базовый адрес периферии в плате Raspberry. Я столкнулся с тем, что не вполне понимаю, как распознать платы. Написано про это много в интернете, но четкого описания нет. Так, что если по каким-то причинам nw_jtag_srv неправильно определяет тип платы вы сможете переназначить базовый адрес периферии в конфигурационном файле.

Типичные значения базового адреса для платы Pi-Zero: 0x0x20000000. Для Pi3 - это 0x3F000000. Ну и для Pi4 0xFE000000.

Со стороны Quartus Prime все довольно просто: копируйте jtag_hw_net_blaster64.dll в папку c:\intelFPGA_lite\18.1\quartus\bin64 или соответсвующую ей на вашем компьютере. После этого программатор должен появиться в диалоговом окне Quartus Prime Programmer.

Я проверил имеющиеся у нас проекты к плате Марсоход2RPI - все они успешно загружаются по сети в FPGA Cyclone IV платы.

 

verilator amber arm soc

Поскольку я начал изучать этот очень быстрый симулятор Verilog HDL - Verilator, то подумал, мне, чтобы лучше понять и освоить его нужен конкретный проект. Но ведь у меня их много! Почему бы мне не попробовать симулировать скажем Amber SoC - систему на кристалле с процессором ARM v2a? Когда-то я занимался этим проектом и запустил эту SoC в плате Марсоход2 и даже какой-то Linux у меня там стартовал. Я когда-то даже симулировал этот проект в Icarus Verilog, но работала та симуляция чрезвычайно медленно. Это то, что нужно. Я попробую теперь симулировать этот же Amber SoC с помощью Verilator. Посмотрим насколько он окажется быстрее.

verilator logo

Я уже писал про симуляцию Verilog HDL проектов в ModelSim и с помощью Icarus Verilog. Однако, конечно, существуют и другие средства. Один из самых быстрых симуляторов, и к тому же свободный и бесплатный, - это Verilator. У него есть свои особенности:

  1. Verilator позволяет преобразовать Verilog модули в C++ классы, которые потом компилируются в обычную исполняемую программу. Запускаем получившуюся программу - запускаем симуляцию. Это позволяет достичь очень высокой производительности.
  2. Verilator, может обрабатывать только синтезируемый Verilog, то есть именно тот код, из которого потом получается "прошивка" для FPGA. Поведенческие модели, всякие присвоения с задержками вроде A = #5 ~A; работать не будут.
  3. Из пункта 2 следует, что тестбенч для симуляции нужно будет писать не на самом верилоге, как обычно, а на C++. Впрочем, в некотором смысле это даже плюс.

Ниже я приведу несколько очень простых примеров использования симулятора Verilator. Я умышленно буду все упрощать, возможно даже слишком упрощать, чтобы было лучше понятно, что из себя представляет Verilator.

Пошаговое руководство.

1. Создадим новый проект.

quartus prime create new project
Для этого в среде САПР Intel Quartus Prime выбираем пункт меню File -> New Project Wizard.. Появляется новое окно диалога, в котором задаются некоторые параметры нового проекта.

В этой обзорной статье я постараюсь рассказать какие действия выполняются тем или иным пунктом меню САПР Quartus Prime. Я сделаю акцент только на самых часто используемых действиях, так что это будет не полное руководство, а скрорее краткий справочник. Тем не менее, такое, даже поверхностное знакомство поможет лучше ориентироваться в программе начинающим разработчикам. Некоторые пункты меню САПР Quartus являются совсем тривиальными, такими же как и в других программах вроде офисных пакетов, а некоторые очень специфичными. В целом среда Quartus не является очень сложной для освоения.