Имеется плата Arrow SocKit, с гигом ddr3 памяти подцепленной к фпга части. Если использовать софт-контроллер, то через hps2fpga шлюз можно добиться скорости записи где то ~240мбит/с, это если верить расчетам и софту из статьи на хабре(Поднимаем SOC: ARM + FPGA). Скорость чтения в 1,5-2 раза меньше. С он-чип памятью скорость чтения и записи почти одинаковая. У меня непонятки с использованием аппаратного контроллера. pll_ref_clk памяти клокается от 50мгц с топа, частота памяти 300мгц, Rate on Avalon MM - Full. Аfi_clk из контроллера используется для тактирования h2f_axi_clock в hps и Altera PLL, с которого 50мгц идет на переферию. На MPFE (mp_wfifo_clk, mp_rfifo_clk, mp_cmd_clk) клок также с топа, потому что если взять с плл того, то почемуто иногда глючит, зависимость не отловил пока. Если клок для фифо увеличить до 100, то как повезет, или пишется с ошибками или виснет все, хотя написано что частота может быть до "...one-half of the memory interface frequency...", тоесть до 150мгц в моем случае. Скорость записи в такой схеме ~145мбит/с, чтения соответственно ~70мбит/с, а это как то не прилично даже. Если увеличить частоту памяти до 350 софт также регулярно виснет. В qsys есть готовый пресет для памяти, которая установлена, но в ней тайминги почему отличаются от тех которые в модели на оффсайте, да и с ними глючит запись.
Результаты примерно такие:

софт контроллер
память 300мгц запись:
root@socfpga:~# time ./memclock 0 0xc0000000 0x10000 1000

real 0m9.194s
user 0m9.180s
sys 0m0.000s
чтение:
root@socfpga:~# time ./memclock 2 0xc0000000 0x10000 1000

real 0m17.743s
user 0m17.730s
sys 0m0.000s

память 400мгц
root@socfpga:~# time ./memclock 0 0xc0000000 0x10000 1000

real 0m8.535s
user 0m8.520s
sys 0m0.000s
root@socfpga:~# time ./memclock 2 0xc0000000 0x10000 1000

real 0m14.676s
user 0m14.660s
sys 0m0.000s

hard EMI
300мгц память, 50мгц фифо
root@socfpga:~# time ./memclock 0 0xc0000000 0x10000 1000

real 0m14.442s
user 0m14.430s
sys 0m0.000s
root@socfpga:~# time ./memclock 2 0xc0000000 0x10000 1000

real 0m29.353s
user 0m29.330s
sys 0m0.000s
последние 3 числа это адрес, сколько слов записать и сколько раз повторить.
Если фифо до 100 поднять то записывает за ~12сек, но, как указано выше стабильности никакой. Скорость чтения - отдельные танцы. Думал что тормозит так потомучто цикл 1000 раз(типа как рандомное чтение), но пробовал писать цельный блок, без повторов, результат такойже.
Тайминги из сэплов. Память, h2f bridge и Avalon MM burst length 32бита. С ддр памятью раньше не работал. Как разогнать?. Где подкрутить?