Hello John_Correa & Kvingle,
I double checked to review the function of a keeper circuit and it was as follows for spartan family:
"Each I/O has an optional keeper circuit that keeps bus lines from floating when not being actively driven. The KEEPER circuit retains the last logic level on a line after all drivers have been turned off."
so thanks kvingle for correction.
Again to the main topic, How to protect our FPGA ? for me I had a tough experience in this issue on my custom PCB. I suffered from 3 or 4 FPGA burnouts! and the solution can be summarized as follows:
1- Pay a great attention for the common ground between all chips on the same PCB. Also pay a great attention for common ground between all cards. Usually the system contains a back-plane or motherboard, this back-plane must have a ground plane at one of its layers.
2- The power supply ripples is an evil. Be extremely sure that your power supply doesn't have a bad transient response. You can measure this using an oscilloscope.
3- use the internal pull-up and pull-down resistors that are located at the IOB of the FPGA, they can easily be programmed from ISE instead of soldering external resistors. To use the pull-up and pull-down resistors, you can easily specify that using either the UCF file or graphically from the GUI.
example, to drive the pin clk_out as pull-down from ucf as text file
Code:
NET "clk_out" LOC="B17" | PULLDOWN;
regards,