Я делаю проект с использованием DE1-SoC (FPGA + ARM cortex A9). Вы можете увидеть часть дизайна (Qsys, дизайнер платформы) здесь
Встроенная память (RAM, image_memory) управляется двумя разными мастерами. Один из мастеров хорошо известен h2f_lw_axi_master (предоставляется программным обеспечением Quartus Prime для обеспечения возможности обмена данными ARM и FPGA), а другой zpc_1 представляет собой пользовательский мастер-блок, который Я разработал.
Основная идея в этом проекте заключается в том, что после настройки ПЛИС нужно иметь возможность записывать данные во встроенную память, а zpc_1 считывает содержимое памяти и работает с ним.
Длина каждого слова составляет 512 бит (64 байта), всего 1200 слов (поэтому назначенный адрес начинается с 0x0002_0000 и заканчивается на 0x0003_2bff, достаточно места для 76800 = (512 * 1200) /8 байт. HPS использует для записи данные типа uint512_t (из библиотеки boost C++), а zpc_1 имеет ширину чтения 512 бит. Адреса назначаются относительно h2f_lw_axi_master.
У меня есть два вопроса, связанных с этой системой.
1. Должен ли адрес для чтения данных в HDL-коде zpc_1 начинаться со смещения 0x20000 и увеличиваться на 0x40 (64) в каждом цикле для чтения данных слово за словом? (или любой другой способ)
2. zpc_1 может прочитать первое слово и постоянно работает в соответствии с инструкциями в первом слове, в чем может быть причина?
Если вам нужна дополнительная информация для ответа на вопрос и/или вопрос недостаточно ясен для понимания, не стесняйтесь спрашивать дополнительную информацию (комментарий).
writedata
/readdata
) и какую единицу представляет каждый адрес (по умолчанию он адресуемый, но он можно изменить, изменив свойствоaddressUnits
шины)? Я не уверен, что вы спрашиваете во втором вопросе. - person Unn   schedule 13.09.2018zpc_1
, чтобы понять, почему он не читает из ОЗУ больше, чем первое 512-битное слово. (address <= address + 'd64
должно быть правильно) - person Unn   schedule 14.09.2018