Para las aplicaciones que requieren diseño en FPGA que utilizará varios archivos de imagen, archivos de sonido u otras formas de archivos, ¿pueden simplemente incluirse en el archivo de configuración de diseño de FPGA? En cualquier caso, si estas cosas se almacenan en una memoria flash externa o EEPROM, ¿existe un diseño de referencia que:
Bueno, realmente depende del tamaño de sus datos, con qué frecuencia necesita acceder a ellos y qué tipo de ancho de banda necesita. No existe una buena solución de "talla única" para esto.
Para datos pequeños, la RAM de bloque en FPGA es una buena opción. El bloque de RAM en el chip se puede inicializar a partir de los datos de flujo de bits, por lo que se puede usar como una ROM. La ubicación en el chip del bloque de RAM también proporciona el mayor ancho de banda posible. No se requieren pines externos. Sin embargo, el bloque de RAM tiene un tamaño muy limitado, 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 para el bloque de RAM en el flujo de bits (una operación que dista mucho de ser trivial), por lo que en realidad solo son útiles para el almacenamiento constante o 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 variar desde un simple chip flash I2C o SPI o una tarjeta SD, hasta un flash NOR paralelo o flash NAND, un SSD o HDD conectado a través de SATA o PATA, para acceder a un servidor de archivos o SAN a través de Ethernet. Lo que tiene sentido depende del tamaño de 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 mucho ancho de banda, como un video Full HD. 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 un almacenamiento grande y rápido. Una opción podría ser abrir una interfaz SATA y conectar un SSD grande. Habrá cierta latencia al solicitar 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 ancho de banda alto, eso significa que necesitará alguna otra interfaz con el mundo exterior. Ethernet y USB 3 son opciones razonables.
Creo que no hay una solución general porque:
Además de un controlador de interfaz de bus para los protocolos mencionados, existe la necesidad de un controlador de lectura/escritura/borrado, que aborde cada posible tipo de memoria, tamaño... y proveedor.
Además de eso, necesitará una CPU de núcleo suave o un FSM grande para leer los flujos de configuración de:
y escribirlo en la memoria externa. Después de la configuración, este circuito debe puentearse, intercambiarse, ...
Por lo tanto, se necesita otro controlador de bus más varias capas de protocolo para leer el flujo de entrada: por ejemplo, MAC, IPv4, UDPv4
Para omitir el configurador de memoria, puede usar:
¿Puedes precisar tu pregunta?
cuántico231
Paebbels
cuántico231