FPGA: ¿Cómo se almacena el diseño?

1

Estoy intentando aprender sobre el funcionamiento interno de los FPGA y cómo el VHDL / Verilog de alto nivel se convierte en el FPGA que funciona. Entiendo lo esencial, pero todavía siento que me faltan algunos detalles. Solo estoy familiarizado con Xilinx pero me gustaría obtener una comprensión general, si hay mucha diferencia entre las herramientas.

Lo que entiendo hasta ahora es que Xilinx compila mi vhdl en una lista de redes en un archivo NGC que luego se convierte en un flujo de bits. El flujo de bits se coloca en la memoria flash PROM de mi FPGA. Cada vez que enciendo el tablero, la lista de redes se carga desde la PROM a la matriz de la puerta.

¿Es posible aplicar ingeniería inversa a lo que se encuentra en el FPGA o incluso simplemente leer el diseño de la PROM?

    
pregunta nhoughto

2 respuestas

3

Aquí solo hablaremos de FPGA basados en SRAM, que es lo que Xilinx y Altera (principalmente) fabrican: Spartan, Artix, Kintex, Virtex, Cyclone, Arria, Stratix son algunas de las marcas de la familia.

Este tipo de FPGA carga su flujo de bits de configuración desde alguna fuente de memoria externa, o está configurado en el sistema por otro procesador. De cualquier manera, el FPGA mismo no almacena su configuración internamente (ignorando Tipos de flash y anti-fusibles aquí).

Por lo tanto, puede decir 'bueno, obviamente solo puedo copiar la información del dispositivo de memoria externo' (generalmente una memoria SPI) y, por supuesto, está correcto. Para aplicaciones que requieren seguridad de IP, los diseñadores aprovechan las características de seguridad ofrecidas por el fabricante. En la fábrica (del producto, no del FPGA), se programa una clave de cifrado en el FPGA (generalmente a través de eFUSE). Los archivos de flujo de bits se cifran con esta clave y se cargan en el dispositivo de memoria. De esta manera, incluso si alguien clonara el diseño de hardware mediante ingeniería inversa de la PCB, no podrían usar la IP con éxito ya que sus FPGA carecerían de la clave.

Si el flujo de bits en el dispositivo de memoria externo está cifrado, está SOL sin la clave de descifrado. Si no es así, puede leer el flujo de bits de ese dispositivo y crear sus propios productos de clonación, pero la ingeniería inversa del flujo de bits es una tarea muy compleja. Actualmente, algunas personas han diseñado por ingeniería inversa el formato de un dispositivo Lattice Semiconductor, pero, por lo que sé, no hay un conjunto completo de herramientas o documentación que le permita realizar copias de seguridad de una lista de redes de un flujo de bits de Xilinx o Altera.

También escribí información adicional sobre esto aquí: FPGA: Bitstream vs. SRAM Object File

    
respondido por el Krunal Desai
0

Aquí está el mapa de fusibles para mis FPGA solo para el CLB. El CLB tiene 8 entradas y 4 salidas. Dependiendo de la arquitectura, la serie de bits del mapa de fusibles cambia.

El "fusible" es SRAM, FLASH o anti-fusible. Las versiones FLASH tienen una corriente de reposo significativamente más baja, pero tienen cierta complejidad relacionada con la implementación de FLASH. Además, FLASH tiene características de "encendido instantáneo" después de un restablecimiento completo, como un apagado debido a un destello solar. Para la versión de flujo de bits, tengo una palabra clave para un cifrado de flujo que se almacena en FLASH o por batería que decodifica el flujo de bits en el camino de entrada.

    
respondido por el b degnan

Lea otras preguntas en las etiquetas