Cambiar el contenido de la memoria de SoC de FPGA (DE1-SoC) usando software mientras .sof (EPCQ) se está ejecutando en FPGA

0

Soy nuevo en el mundo FPGA y FPGA-SoC. Tengo una placa DE1-SoC. Estoy haciendo un proyecto. El diseño de hardware del proyecto contiene un bloque de memoria que se inicializa utilizando el archivo .mif. Sé que podemos usar la dirección asignada por qsys (diseñador de plataforma) para controlar cualquier bloque en el lado de FPGA usando ARM (Linux).

Quiero cambiar el contenido del bloque de memoria en la parte FPGA utilizando la parte ARM (con un programa de software) mientras la parte FPGA está configurada. ¿Cómo se puede hacer eso?

El sistema HW en sus propios trabajos (fue probado y simulado), pero el contenido de la memoria no se puede cambiar después de que el sistema HW esté configurado. Tengo que cambiar el archivo .mif, compilar y reconfigurar el HW para poder cambiar el contenido de la memoria ahora. Creo que debe haber una solución de software para eso que todavía no sé.

    

2 respuestas

1

Segunda respuesta, ya que los comentarios salen de la página ...

Primero descubra cómo está configurada la memoria:

  • Rango de direcciones en el bus
  • ancho de datos
  • ¿Se habilita el byte?

Entonces la mejor solución es simular el acceso a su memoria.
Usted puede tener un problema allí. He utilizado principalmente Xilinx pero en, por ejemplo, El sistema zynq tiene que desembolsar una cantidad decente de dinero para obtener un modelo de simulación del sistema de CPU.

¡La alternativa es construirte un módulo de acceso de autobús!
Es un módulo de comportamiento simple que genera ciclos de lectura y escritura AXI. No tiene que hacer todas las transferencias AXI posibles: solo la lectura y escritura básicas de un solo latido.

Si planea hacer cualquier trabajo con AXI, es tiempo de gastar, ya que puede usarlo una y otra vez. Otras ventajas:

  • No tiene que pasar horas trabajando en un manual sobre cómo conectarlo / usarlo.
  • Puede ampliarlo a su debido tiempo para realizar ciclos más complejos.

Desventaja: puede que no sea 100% compatible con AXI y en algún momento tendrá que averiguar si el error que tiene está en el módulo o en el banco de pruebas.

Es posible que desee ver en esta página web donde parece haber un modelo de bus AXI gratuito.

    
respondido por el Oldfart
0

ok, bueno ... ¿Cómo planeas cambiarlo? (algo retórico) ... tiene un ARM ... ¿es parte del FPGA o una interfaz externa (es decir, a través de pines)? Suponiendo que es parte del FPGA, o incluso que no, ¿no puede escribir un programa de SW que entienda las direcciones? El diseño de FPGA lo hace y tiene un espacio de direcciones mapeado en memoria (por diseño) que tiene una dirección relativa a la ARM .. es de esperar, algo que se aborde directamente para su facilidad. Perdóneme si simplifico esto en exceso, pero creo que esto es solo un ARM, y una memoria que reside en el bus AMBA (?) ARM es Maestro, la memoria es Esclavo (?) Que recibe transacciones AMBA a través del Esclavo, y luego , a través de un puente de protocolo, satisface las transacciones de memoria (es decir, una función de transferencia) para poner sus nuevos valores en la memoria ... ¿Tal vez me esté faltando algo?

puedes publicar un dibujo de diseño?

    
respondido por el CapnJJ

Lea otras preguntas en las etiquetas