Las FPGAs Xilinx Spartan 3AN tienen una flash interna que las hace no volátiles. Su pregunta es en realidad múltiples preguntas.
1) ¿Las FPGA son volátiles o no volátiles? La mayoría son volátiles, lo que requiere que el flujo de bits de configuración se lea en la FPGA desde un dispositivo de almacenamiento no volátil externo en cada encendido. Hay algunas que son no volátiles. Como la Xilinx S3AN que mencioné.
2) ¿Cómo se protege el flujo de bits de la configuración? Hay múltiples respuestas a esta pregunta.
Se puede cifrar el flujo de bits; lo que significa decir que el flujo de bits que se almacena en el dispositivo de almacenamiento no volátil antes mencionado es un texto cifrado único que sólo puede ser descifrado por el fpga único con la clave adecuada. Esto protegerá la funcionalidad del flujo de bits de ser descubierta por ingeniería inversa. Es decir, que aunque se pueda extraer el flujo de bits cifrado del dispositivo de almacenamiento no volátil, ya sea in situ o por medios más destructivos, no se podrá dar sentido al archivo extraído ya que está cifrado.
También se puede establecer que se prohíba la lectura del flujo de bits. La interfaz JTAG que se utiliza para programar una FPGA en tiempo de depuración puede utilizarse generalmente para leer el flujo de bits de configuración del fpga. Establecer la opción NO_READBACK prohíbe esto.