He hecho algo muy similar en el pasado. Mi objetivo era transferir una imagen (* .bmp) de PC a FPGA (BRAM interna) y enviarla de vuelta a PC después del proceso de marca de agua. Como se mencionó anteriormente, UART es su mejor apuesta. Implementar un UART en FPGA o usar un diseño existente. Para Xilinx, consulte este diseño proporcionado con el Picoblaze.
Está bien documentado y puede utilizarse como independiente en su diseño. También puede encontrar versiones anteriores de este diseño para los FPGA Xilinx más antiguos. Creo que puedes encontrar diseños similares para Altera (o proveedor independiente) fácilmente.
En el MATLAB, puede leer y escribir datos en un objeto serie utilizando estas funciones. He tenido problemas con velocidades de transmisión por encima del estándar 115200, por lo que si necesita un rendimiento en tiempo real, UART podría no ser suficiente. De lo contrario, comience con la tasa de baudios más baja y realice una prueba de errores e intente alcanzar el máximo.
Aunque MATLAB será rápido y fácil para esta aplicación; Como no es gratis y no todos pueden tener acceso a él, otra opción es usar Python. En mi caso, he escrito un script de Python para comunicarme con el FPGA. Tiene una biblioteca en serie agradable y simple llamada pyserial para la comunicación en serie. Puede usar PIL (Python Imaging Library) para el procesamiento de imágenes y números para el proceso de cálculo.
Sin embargo; Si solo está interesado en probar la funcionalidad del diseño, solo puede leer los datos de píxeles de un archivo para procesarlos en simulación. Envíe los datos de la imagen a un archivo de texto utilizando MATLAB y luego léalos en una matriz de memoria definida en su archivo de banco de pruebas. Puede simular su diseño como si se estuviera ejecutando en el hardware (suponiendo que el diseño sea sintetizable) y probarlo. Puede enviar datos procesados a un archivo en cualquier etapa del proceso y leerlos de MATLAB para compararlos. Después de asegurarse de que el diseño funciona perfectamente, puede comenzar a implementar la interfaz de comunicación en el hardware real.