Я хочу перенести чип ракеты на не-Zynq FPGA (altera Stratix V), плату, которая не содержит ядра ARM, используемого для запуска riscv-fesvr. Как мне запустить порт? А еще кто-нибудь пробовал запустить на такой плате чип ракеты? Могу я указать на какие-то ресурсы для этого?
Ракетный чип на ПЛИС других производителей
Ответы (3)
В основном это проблема взаимодействия, поскольку Rocket Chip не использует ничего специфического для Zynq внутри себя. Если этот интерфейс выполнен правильно, вам не нужно менять pk / linux или сам Rocket Chip. Вам нужно будет как обернуть Rocket Chip для целевой FPGA, так и взаимодействовать с ней с помощью Frontend Server (fesvr).
Для упаковки Rocket Chip я бы посмотрел на ожидаемый ввод-вывод верхнего уровня (RocketChip.scala), что наиболее важно включает HostIO (для HTIF) и MemIO (для DRAM). Для получения дополнительной информации об этих интерфейсах я бы проконсультировался с слайдами из первого семинара. Наша текущая оболочка (rocketchip_wrapper.v) мультиплексирует эти интерфейсы через AXI к ядру ARM хоста, на котором работает fesvr.
Ваше предложение, отправленное в список рассылки о запуске fesvr на ядре NIOS II и общении с ним через AXI, может сработать. Для этого потребуется изменить (fesvr-zedboard.cc), чтобы соответствовать интерфейсу AXI, который NIOS предоставляет программному обеспечению. Этот подход может потребовать минимум новых разработок, но программное ядро будет потреблять ресурсы FPGA и может работать медленнее.
Другой способ добиться этого - запустить интерфейсный сервер на ПК, подключенном к плате через Ethernet. Вам нужно будет создать мост между MemIO Rocket Chip и встроенной памятью DRAM. Вам также потребуется запустить HTIF через Ethernet, для чего потребуется еще один мост между HostIO и MAC-адресом Ethernet платы. Много лет назад fesvr поддерживал это (fesvr-eth.cc), но этот код не поддерживается и почти наверняка нуждается в обновлении.
Все это предполагает, что вы хотите запустить процессор в режиме привязки. Для его самозагрузки потребуется больше работы. Есть работа над спецификацией платформы, которая стандартизирует это, но до тех пор вам нужно будет разработать свой собственный или продолжать использовать привязанный Rocket Chip.
Я портировал одноядерный чип Rocket на не-Zynq FPGA (платы: ML605 и KC705), и мне интересно перенести его на другие цели (см. Сообщение выше 'https://github.com/sergeykhbr/riscv_vhdl '). Так что, если вы хотите использовать предложенный дизайн vhdl и готовы к сотрудничеству, я думаю, что могу помочь вам с этим и в результате добавить файл проекта Quartus в репозиторий.
Кроме того, есть возможность повторно использовать периферийные устройства под лицензией GPL, реализованные в 'grlib': http://www.gaisler.com/index.php/downloads/leongrlib. такие как MAC, SD-контроллер и многие другие.
Взгляните на пример использования ядра Rocket-chip внутри портативного верхнего уровня VHDL. Этот проект имеет очень похожую структуру на Leon3, который, возможно, очень легко перенести на любую плату FPGA. Видеть:
https://github.com/sergeykhbr/riscv_vhdl