Bueno, realmente depende de qué tan grandes sean sus datos, con qué frecuencia necesita acceso a ellos y qué tipo de ancho de banda necesita. No hay una buena solución de "talla única" para esto.
Para datos pequeños, la RAM en bloque FPGA es una buena opción. La memoria RAM del bloque en chip se puede inicializar a partir de los datos del flujo de bits, por lo que se puede utilizar como una ROM. La ubicación en el chip de la RAM del bloque también proporciona el mayor ancho de banda posible. No se requieren pines externos. Sin embargo, la RAM del bloque es muy limitada en tamaño, así que no desperdicie este recurso a menos que sea absolutamente necesario. Tampoco es realmente posible que el FPGA edite las entradas de la ROM, ya que tendría que editar los datos de inicialización de la RAM del bloque en el flujo de bits (una operación que dista mucho de ser trivial), por lo que realmente solo son útiles para el almacenamiento constante o el almacenamiento volátil. .
Ahora, en cuanto a la memoria no volátil externa, esto es un poco más difícil. Hay muchos tipos diferentes de memoria que podrían usarse, con muchos protocolos diferentes. Esto podría abarcar desde un simple chip flash I2C o SPI o tarjeta SD, hasta un flash NOR paralelo o flash NAND, o un SSD o HDD conectado a través de SATA o PATA, hasta acceder a un servidor de archivos o SAN a través de Ethernet. Lo que tiene sentido depende de qué tan grandes sean sus datos, la latencia de acceso requerida y el ancho de banda de acceso requerido. Las conexiones a través de I2C o SPI serán muy lentas, quizás hasta un par de MB por segundo. Sin embargo, los protocolos son muy simples. Entonces, si solo necesita transmitir datos de audio de 48 ksps, esta podría ser una buena opción. Sin embargo, esto no funcionará para algo que requiere una gran cantidad de ancho de banda como el video de alta definición completa. Para algo así, necesitarías una interfaz con mucho más ancho de banda. Aquí es donde la ingeniería puede ser un poco desafiante: no es fácil interactuar con el almacenamiento grande y rápido. Una opción podría ser abrir una interfaz SATA y conectar un SSD grande. Habrá un poco de latencia solicitando los datos, pero podrá transmitir muchos gigabytes de datos desde el dispositivo a varios cientos de Mbps.
Además, no olvide que probablemente también necesitará alguna forma de escribir en el almacenamiento no volátil. Si esto debe hacerse con un gran ancho de banda, entonces eso significa que necesitará alguna otra interfaz para el mundo exterior. Ethernet y USB 3 son opciones razonables.