Hi deebar,
I don't think is that easy to fry an FPGA.
You have to drive PROG# low for a period longer than XX (check the datasheet), imaging 300ns.
Then DONE and INIT# go low.
The INIT# stays low for some time (in this time the FPGA is clearing the internal memory), when it finishes it goes high.
Then you start clocking data in until the DONE signal goes high, that means you have finished and don't need to push any more data in.
If you are clocking data in an INIT# goes low bad news, it implies CRC Error.
There are two very common mistakes.
-byte swapping
flash_data(0) -> D7 in FPGA
flash_data(7) -> D0 in FPGA
This depends of the format you are using in your file, for RBT and BIT files the data must be byte swapped (if is not dine in HW). The HEX format can be swapped or not, depends of a flga in the generation of your file (for exmaple PromGEN in ISE)
-The settings in the generation of your file are not right.
There are lots of settings there, for exmple if you protect your FPGA agains reporgramming you want be able to reprogram it twice.
Have a look to them
I hope it helps and good luck
Regards,
-Maestor