Operaciones de escritura en el chip eMMC (no SPI) con datos entrantes de MCU

0

Estoy trabajando en la integración de un envío de eMMC a un FPGA. Por ahora, la inicialización está funcionando bien, he logrado recibir los registros CSD y CID correctamente, y puedo seleccionar y mover el chip al estado de transferencia.

La forma en que se construye mi diseño, tengo que enviar datos a la FPGA desde la MCU, que luego se pueden reenviar para su programación en el eMMC.

Mi pregunta es, ¿cómo se supone que debo hacer eso correctamente, cuál es el buen patrón de diseño para esto? ¿Algún tipo de FIFO amortiguado? La comunicación MCU / FPGA es serial, para tener un byte completo para enviar Necesito 8 ciclos de reloj SPI, mientras que solo necesito 1 ciclo de reloj de MMC para enviarlo a la MMC, su enlace es paralelo. Y no puedo hacer que la MMC espere a que esté listo el próximo byte, de lo contrario, solo estaré programando los bits establecidos previamente para la cantidad de ciclos de reloj de mmc necesarios para que se reciba el siguiente byte.

El reloj FPGA es de 12MHz, los SPI son de 1.5MHz, los MMC se pueden sintonizar hasta 12MHz. Un bloque completo de datos es de 512 bytes, es un vector lógico de 4096 bits que supongo que no debería asignar como búfer, ¿no?

    
pregunta Fluffy

1 respuesta

1

Usted querría algún tipo de fifo orientado a bytes, preferiblemente en una RAM de bloque en el FPGA. Luego, solo inicie la transferencia a EMMC una vez que el fifo esté parcialmente lleno.

  

Incluso si almaceno en búfer un conjunto de datos de 512 bytes, lo vaciaré más rápido de lo que lo lleno y se volverá lento nuevamente, eventualmente

Luego, debe diseñar el sistema para tolerar este bloqueo de manera sensata y no dejar bloques incompletos. Espere 512 bytes, comience a escribir (acumulando más bytes mientras tanto), luego vea si hay otro bloque listo para escribir

    
respondido por el pjc50

Lea otras preguntas en las etiquetas