FPGA Gowin GW5AR первое впечатление
| Pavel Ivanchenko |
|
 |
| Admin |
|
|
|
|
| Пункты: 1166 |
| Регистрация: 24.03.2009 |
| Пол: Мужчина |
|
|
Ведем отладку нового модуля SK-RK3506-GW5AR, чип GW5AR-LV25:
23K FF/LUT, 1008Kb BSRAM, 128Mb PSRAM
Несколько лет назад, спрашивая людей пытающихся использовать FPGA Gowin, получал реакцию в виде скошенного лица и фразы "ну что ты хочешь от чипов с таким названием ;)" ...
Поэтому, бравшись за него больших надежд не испытывал.
И ... в итоге, я оказался приятно удивлен!
Структура документации, изложение (да даже шрифт:) - все как у Xilinx.
Софт -GOWIN FPGA Designer (v1.9) бесплатный, но для пользователей России нужно лекарство. Как мне показалось, практически копия Xilinx ISE 15 летней давности, все простенько, зато "летает". Единственно P&R использовал 1 ядро.
Загрузка конфигурации FPGA была предусмотрена с процессора, старая утилита загрузки Xilinx заработала без правок (только управление портами переписали).
Далее начались тесты-эксперименты взаимодействия с процессором RK3506 через интерфейс FLEXBUS.
Сгенерированное IP двухпортовое FIFO дало ограничение (передача прием без ошибок) в 40МГц, разбираться сразу в причине такого ограничения не стал - переключился на эксперимент PSRAM FIFO.
Далее деферамбы недавно обновленному Deepseek :)
Дал ему обложку сгенерированной IP PSRAM Memory controller и сказал сделать из этого FIFO ...
C 4 итерации, выданное даже смогло синтезироваться без ошибок :) ...
Естественно, автомат был не рабочим, но шаг за шагом и примерно через 8 часов получил очень частный случай PSRAM FIFO (работал только на 10МГц ни больше ни меньше).
Примерно еще через 4 часа совместных усилий (я непрерывно копи-пастил :) был получен полноценный 128M PSRAM (работает на 400МГц) FIFO (правда протестировать с блоками более 64k не настроен дпрйвер-ядро) с частотой работы 55МГц , занял 25% FF/LUT FPGA.
После этого вернулся к экспериментам с обыкновенной FIFO для понимания причины ограничения в 40МГц, Deepseek с ходу предложил написать свою корку FIFO на BSRAM, за 5-10 итераций ее отладил и получил FIFO с максимальной частотой 80МГц!
Надо еще с силой буферов процессора поэкспериментировать, возможно еще получится поднять частоту. |
|
|
|
|
|
|
| rw9uao |
|
 |
|
 |
|
|
Группа: Клиенты |
| Пункты: 21 |
| Регистрация: 26.03.2009 |
|
|
|
привет
ты бы спросил =) я с tangnano давно играюсь =) |
|
|
|
|
|
|
| Pavel Ivanchenko |
|
 |
| Admin |
|
|
|
|
| Пункты: 1166 |
| Регистрация: 24.03.2009 |
| Пол: Мужчина |
|
|
Продолжил эксперимент.
Драйвер Flexbus включен в режиме SPI, а это означает, что при чтении подчиненный выставляет свои данные на срезе тактового (остается только половина такта), т.е. для высоких частот взаимодействия SPI режим работы не оптимален.
Ради эксперимента ковыряться с драйвером Flexbus желания не возникло, сделал другой пример FPGA (max_speed_test) в котором в FPGA передается пакет инкрементированных данных, автомат в FPGA анализирует входные данные и в случае несоответствия регистрирует ошибку.
На частотах работы до 100МГц ошибок нет, выше 100МГц начинает сбоить DMA механизм, возможно в нем можно что-нибудь "подкрутить", но думаю и текущих 100МГц 16Бит вполне "за глаза".
На блоках размером 64k измеритель скорости (по таймеру) показывает:
Average write speed: 113.31 MB/s
Что почти в двое меньше ожидания, это связано с накладными расходами ядра - от момента отправки пакета в приложении пользователя, до физического момента начала передачи проходит около 40мкс (на сам пакет передачи уходит ~65мкс). |
|
|
|
|
|
|
|