Как я могу написать программу VHDL для записи цифровых данных в памяти DDR в Zynq Board - PullRequest
0 голосов
/ 02 февраля 2019

Я подключил АЦП к FPGA на плате Zynq.Так что теперь у меня есть цифровые данные в FPGA.И я хочу сохранить эти данные в памяти ddr на моей плате zynq, для этого мне нужно написать программу vhdl.Любая помощь очень ценится.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

обычно ваша плата самостоятельно конфигурируется с памятью io и DDR, к которой вы можете получить доступ через DMA, используя Linux или baremetal.Я думаю, что управлять DDR было бы проще с меньшим развитием.Только код HDL для вождения АЦП.

0 голосов
/ 09 февраля 2019

Предполагая, что ваша DDR подключена к ARM PS, самый простой способ передать эти данные в DDR - это направить цифровые данные в регистр, к которому может обращаться шина AXI.Это типичный способ перемещения данных между матрицей FPGA и процессором ARM.Тогда процессор ARM будет отвечать за чтение шины AXI в этот регистр и сохранение результатов в DDR.Если ваша частота дискретизации достаточно низкая, вы можете просто создать экземпляр блока AXI_GPIO на блок-диаграмме Vivado и направить цифровой сигнал во «входной» порт.Процессор будет просто периодически запрашивать регистр AXI_GPIO и искать новую выборку данных.Этот метод прост, но имеет много проблем.Во-первых, ЦП должен периодически тратить время на проверку регистра.

Небольшое улучшение будет заключаться в подключении сигнала прерывания AXI_GPIO к процессору ARM.Ваш VHDL-код будет затем запускать прерывание всякий раз, когда появляется новая выборка данных.Таким образом, ЦПУ не нужно постоянно опрашивать.

Следующим улучшением будет создание собственного пользовательского модуля шины AXI.Он может иметь Fabric FIFO для буферизации нескольких выборок, иметь регистр флага состояния, чтобы центральный процессор знал, что происходит, а также иметь прерывание.Существует множество шаблонов и примеров для создания собственных шинных модулей AXI.

Если у вас относительно высокая скорость передачи данных, следующим улучшением будет добавление блоков AXI DMA в микс.Таким образом, ЦПУ не нужно выполнять чтение шины AXI для каждого образца данных, но он может периодически настраивать передачу аппаратного блока с шины AXI на DDR.Процессору все еще приходится время от времени настраивать дескрипторы DMA, но это намного лучше для пропускной способности и загрузки процессора.Сложно заставить это работать правильно, пока процессор работает в Linux.

Наконец, вы можете разработать модуль для доступа к подчиненному порту HP AXI шины ARM-процессора, который может передавать данные в DDR непосредственно из FPGA.ткань без участия процессора.Есть множество препятствий, которые нужно преодолеть, особенно если вы используете Linux на своем процессоре.Это несколько сложнее, поэтому потребуется некоторое время, чтобы все заработало правильно.

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

...