Nota importante: esto es imposible de resolver. Como mencioné en un comentario: esperar que el estado interno se corrompa y agregar más estado interno para detectar la corrupción conduce invariablemente al nido de avispas.
Dicho esto, hay un precedente para hacer esto: spaaaaace. Los chips que se envían al espacio requieren que cualquier estado interno pueda corromperse de cualquier forma sin que se bloquee el chip. En general, solo los errores de un solo bit deben ser detectados y reparados por los estándares ESA / NASA, pero el código se escribirá para detectar tantos de ellos como sea posible.
Las soluciones deben tener en cuenta dos corrupciones principales:
Una codificación en caliente para máquinas de estado con un estado seguro Codifique todas sus FSM utilizando una técnica de codificación en caliente y comience desde un estado de restablecimiento seguro que precede a su estado inicial. Cuando detecte una codificación imposible, siempre vuelva a ese estado de reinicio. Tenga en cuenta que esto no significa que no pueda usar tipos autodefinidos para estados en VHDL, el uso correcto de when others =>
y sus herramientas de síntesis pueden hacerlo por usted.
Verifique sus datos Tenga una condición adicional al escribir los datos en el siguiente sistema: los datos que prepara para enviar cheques. Si no es así, recargas. Dado que esta suma de comprobación se puede realizar sobre la marcha en prácticamente todos los FPGA modernos, no es necesario un estado adicional. Los paquetes CRC se pueden descargar a través de la web (por ejemplo, aquí )
Estas dos soluciones combinadas con un diseño limpio capturan todo el estado que el sistema que usted describe debe contener, si hay más, eso es simplemente un mal diseño. Por supuesto, las fallas eléctricas ni siquiera le darán una garantía de que su flujo de bits sobrevivió con un MAX10.