|
|
|||
Question & AnswerClassification: Date: Feb 11, 2000 |
Programming the Atmel AT17C256 PROM for the Spartan XL familyQ:I heard the bad news that we can't program the Atmel AT17C256 Flash PROM with the Spartan XL family of FPGAs. I know that Xilinx has fewer mode pins in that family, and with the architecture of the xs40 board, which uses the mode pins to program the PROM, it's impossible to do it. I believe that XSLOAD v3.0 can be fixed to donwload the bitsream of the Spartan FPGA, using some device from the XC40-xxXL family. Then once the PROM is programmed, the user changes the FPGA in the socket to a SpartanXL FPGA.
A:It doesn't seem worthwhile to change the XSLOAD program to support this programming feature since very few people would have any use for it. There is another way to solve this problem. XSLOAD looks in the header of a BIT file to find the field which stores the type of FPGA chip the bitstream is for. It uses this information to fetch a second BIT file which stores the configuration for a circuit that implements a programming interface to the Atmel PROM. The second BIT file is loaded into the FPGA on the XS40 Board so that the Atmel PROM can be programmed. Then the first BIT file is sent to the XS40 Board whereupon the PROM programming interface in the FPGA stores it in the PROM. In order to program a Spartan BIT file into the Atmel PROM using the XC4010XL FPGA on an XS40 Board, all we have to do is change the Spartan FPGA chip type id in the Spartan BIT file to make it an XC4010XL FPGA chip id. This will make the XSLOAD load the XC4010XL FPGA with the PROM programming circuit for the XC4010XL FPGA, and then this circuit will transfer the bitstream for the Spartan FPGA into the PROM. If you do a dump of a BIT file for an XC4010XL, then you will see this at the top of the file: 00 09 0F F0 0F F0 0F F0 0F F0 00 00 01 61 00 0A ???ð?ð?ð?ð???a??
75 69 6E 66 63 2E 6E 63 64 00 62 00 0B 34 30 31 uinfc.ncd?b??401
30 78 6C 70 63 38 34 00 63 00 0B 31 39 39 39 2F 0xlpc84?c??1999/
30 39 2F 32 33 00 64 00 09 31 30 3A 34 36 3A 30 09/23?d??10:46:0
37 00 65 00 00 8A 64 FF 20 45 31 9F 5B FF FF DD 7?e??Šdÿ E1Ÿ[ÿÿÝ
FD FF DD FD DF DF 7F 7F 77 7F 77 F7 F7 7F FF 77 ýÿÝýßßww÷÷ÿw
F7 7F 7B F7 7F 6D FD DF DD FD DF DD FD FF D3 BF ÷{÷mýßÝýßÝýÿÓ¿
FD FF DF FD DF DF FD FF F7 FF 7F F7 FF 7F FF FF ýÿßýßßýÿ÷ÿ÷ÿÿÿYou can see the chip identifier ("4010xlpc84") starting at the end of the second line and continuing on to the third line. A Spartan file starts like this: 00 09 0F F0 0F F0 0F F0 0F F0 00 00 01 61 00 0A ???ð?ð?ð?ð???a?? 75 69 6E 66 63 2E 6E 63 64 00 62 00 08 73 31 30 uinfc.ncd?b??s10 70 63 38 34 00 63 00 0B 31 39 39 39 2F 30 39 2F pc84?c??1999/09/ 32 33 00 64 00 09 31 30 3A 34 38 3A 31 34 00 65 23?d??10:48:14?e 00 00 2E 64 FF 20 17 31 9F 57 FF D6 BF BD EB FB ??.dÿ ?1ŸWÿÖ¿½ëû B6 BF B7 EE FD 7F 6F D7 F5 FD 7F 5F DF C1 FF F7 ¶¿·îýo×õý_ßÁÿ÷ DD FF 7F DF F6 DD FF FB FF FB FF FF BF EF FB FE ÝÿßöÝÿûÿûÿÿ¿ïûþ FF FF C7 FF FF FF FF FF FF FF FF FF FF FF FF FF ÿÿÇÿÿÿÿÿÿÿÿÿÿÿÿÿ The chip identifier for the Spartan is "s10pc84". So all you need to do is change the "s10pc84" in the Spartan BIT file to "4010xlpc84". Then you can use an XS40-010XL Board to program the modified Spartan BIT file into an Atmel PROM. Then place the Atmel PROM into the socket on an XSP-010 Board and the Spartan FPGA will be programmed from the PROM when power is applied to the XSP Board. The BIT files are binary, so you will need a binary file editor to do this, or you will have to write a small program to handle the substitution.
|
||