En el integrador IP de Xilinx Vivado, quiero crear un bloque de construcción personalizado. El bloque debe poder acceder al espacio de memoria (posiblemente RAM externa) por sí mismo.
La función de destino del bloque se puede describir en los siguientes pasos:
- Le doy al bloque de esclavos AXI-MM dos direcciones:
- 0x ???? _ ??? 0: una dirección de memoria base, por ejemplo, "0x0000_ABC0".
- 0x ???? _ ??? 4: una dirección de memoria de desplazamiento, por ejemplo. "0x0000_000D".
- El bloque ahora determinará automáticamente la dirección de la memoria resultante ("0x0000_ABCD") y recuperará los datos de esa ubicación de la memoria, por ejemplo. "0x0000_0100". Esta lectura de datos representa una nueva dirección de memoria.
- El bloque ahora debería recuperar datos de esa ubicación de memoria (por ejemplo, "0x0000_0005") y escribirlos en la dirección AXI_MM 0x ???? _ ??? 8.
p.s. Estoy usando 0x ???? _ ??? x, ya que la dirección base de AXI-MM depende de la configuración del configurador de IP y de otros posibles bloques conectados.
No he encontrado ninguna descripción de cómo un bloque personalizado debe leerse de la memoria. ¿Cómo debo abordar este problema?
Estoy usando la placa de entrenamiento de SoC ARM / FPGA Zybo Zynq-7000 de Digilent.