Xilinx Spartan 3AN FPGA tiene flash interno que los hace no volátiles. Tu pregunta es en realidad múltiples preguntas.
1) ¿Los FPGA son volátiles o no volátiles? La mayoría son volátiles, lo que requiere que la corriente de bits de configuración se lea en el FPGA desde un dispositivo de almacenamiento externo no volátil en cada encendido. Hay algunos que son no volátiles. Como el Xilinx S3AN que menciono.
2) ¿Cómo protege el flujo de bits de configuración? Hay múltiples respuestas a esta pregunta.
Puedes 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 descrito anteriormente es un texto cifrado único que solo puede ser descifrado por el único fpga con la clave apropiada. Esto protegerá la funcionalidad del flujo de bits de ser descubierta por ingeniería inversa. Es decir, incluso si el flujo de bits cifrado se puede extraer del dispositivo de almacenamiento no volátil, ya sea in situ o por medios más destructivos, no se podrá crear el sentido del archivo extraído ya que está cifrado.
También puede configurar que se prohíba que la corriente de bits sea de lectura. La interfaz JTAG que se usa para programar un FPGA en el momento de la depuración generalmente se puede usar para leer el flujo de bits de configuración fuera del fpga. La configuración de la opción NO_READBACK prohíbe esto.