Max 10 instability issues, what to check
Hi.
I have migrated an existing project from a cyclone 1 FPGA to a MAX10 FPGA.
I had no constraints, I have added just master clock that is a 32MHz clock. External signal can be asynchronous (from identical boards connected by wire and physical 485 Transceiver), and runs at 4MHz or less.
I solved some issues, related to:
- uncorrect sampling of asynchronous signals (followed intel design guidelines and added a couple of flip flop to prevent metastability)
- Used safe state machines compiler option to prevent that state machine get into an unknown state (observed in some case via GPIO and/or Signal Tap)
In this way I solved some strange behaviour. Notice that, before this fix, I get communication problems in some condition, ad just moving a pin, shorting a cable, inserting signal tap seemed to solved the issues, except that just touching something else and the issues get back again.
Last fix to increase stability is to set compiler option to have gray code for machine state.
What else can I do? I have looked at intel design guidelines and everything seems ok about clock and reset management. What else to look for? How gray code for machine states can improve stability?
Thank you, regards, roberto