Я, как и ROMЫ4, создавший эту тему, "удивился,что скорость маленькая". К сожелению понятных ответов я не увидел, может ROMЫ4 спрашивал как то не так? Спрошу тогда я по-своему, может кто знает?
Отсимулировал я проект работы с SSRAM, который выложил vadimuzzz, и получил при тактовой частоте 80 MHz следующее
Нажмите для просмотра прикрепленного файлаТакже отсимулировал сборку NIOSa-fast, кот. меня ещё больше интересует: тактовая 50МГц, память программ и данных в SDRAM 16-бит, обмен с асинхронной SRAM, обмен для примера происходит так:
while (1)
{
IOWR_32DIRECT(SRAM_0_BASE, 0, 9);
IOWR_32DIRECT(SRAM_0_BASE, 4, 10);
IOWR_32DIRECT(SRAM_0_BASE, 8, 11);
IOWR_32DIRECT(SRAM_0_BASE, 12, 12);
IORD_32DIRECT(SRAM_0_BASE, 0);
IORD_32DIRECT(SRAM_0_BASE, 4);
IORD_32DIRECT(SRAM_0_BASE, 8);
IORD_32DIRECT(SRAM_0_BASE, 12);
}
Получил следующие результаты:
Нажмите для просмотра прикрепленного файлаВ связи с этим вопросы:
1) Можно как-то ускорить обмен с SRAM без DMA? Понимаю, что больше всего обмен тормозит 16-бит память программ и данных, думал, что кэширование инструкций как-то эффективней будет работать. Может что не так делаю?
2) Как работать с ДМА? Пробовал пример из Quartusa 9.0 memtest.c, что то не заработало. Может кто покажет, как надо сделать программу отдельно для записи в SRAM и отдельный пример для чтения из SRAM.