Estoy tratando de trasladar un diseño de Xilinx a Altera, y tengo problemas con el controlador DRAM IP (para un Cyclone-V y un LPDDR2 mem).
He logrado generar la IP, pero no entiendo qué reloj debería usarse para la interfaz Avalon-MM.
He visto un diseño de muestra que usa Qsys, el avl_0
bus está marcado con associated clock = mp_cmd_clk0
, no el reloj usado por la CPU NIOSII, que es pll_ref_clock
usado por el PLL del controlador de memoria.
Como mi diseño solo usa VHDL, no NIOS ni ningún otro Altera IP, me gustaría evitar que Qsys conecte los bloques.
Entonces:
-
¿Cuál es el reloj de referencia para el bus Avalon?
pll_ref_clk
,afi_clk
,afi_half_clk
, ¿algo más? -
¿Puedo elegir la frecuencia, o es una proporción fija basada en el índice de DRAM, el ancho del bus?
(Como comparación, el controlador Xilinx MIG DRAM tiene FIFO internos, los relojes son entradas y pueden tener cualquier frecuencia)
EDIT
Finalmente he encontrado información relevante.
enlace (10MB!)
Volumen III, Capítulo 4: Interfaz de memoria dura.
El bus Avalon [ses] es administrado por el "Multi-Port Front End (MPFE)"
Los buses Avalon están asociados con las señales mp_cmd_xxx_clk , mp_rfifo_xxx_clk , mp_wfifo_xxx_clk , y hay cierta resincronización interna en el controlador de memoria para que Se puede utilizar cualquier reloj: "El MPFE maneja el cruce del reloj entre la lógica del usuario y la interfaz de la memoria dura".
No todas las familias de Altera FPGA parecen tener esa característica disponible, o usan diferentes controladores. Este controlador DRAM de Altera para Cyclone V tiene finalmente características muy similares a las de Xilinx MIG IP.