12-17-2014 07:15 AM
I am working with the ML605 board, ISE 13.3.
I want to store a bitstream in the CF memory when FPGA is active. I am reading DS617 and UG438 files. I have already managed to read and write from memory. Now, I would like to write in memory the bitstream, which will be provided by the user to the FPGA, but I have some doubts I would like to solve.
- Do I have to store the MCS file "raw" in the memory? Or just one "piece" of it? Or should I modify it in some way?
- Where do I have to store it? I am working in Slave SelectMap mode so, as far as I have understood from the documents, I should begin writting at address 0x000000 since there are pull-down registers in address bus.
That would be nice for beginning.
Thank you very much in advance,
12-17-2014 07:20 AM
I don't know if I have explained well what I want to do. I want to store the bitstream without iMPACT tool, but taking control of the memory signals and writing bitstream data word by word in the memory.
12-17-2014 10:13 AM
12-17-2014 11:36 AM
I'm going to preface this by saying I haven't used CF for configuration before, so I may be off base. However, generally you don't store the .mcs file "as is" into any coniguration memory. The .MCS format is first of all ASCII hex (meaning two 8-bit characters per 8 bits of data), and secondly contains addressing information and checksums. All you really want in the configuration memory is the actual bitstream data. You could probably go on line and find software that reads .MCS files and makes a simple binary from it. However you can also get the data directly by generating a .bin file when you run BitGen to create the .bit file. If your .mcs file contains more than just the bitstream, for example ELF data for a microblaze, then it may also contain gaps between valid data locations. In this case you would need to decode the .MCS file to determine where to write data within the CF card. You could also write your own code to deal with the .MCS format, which is available on line if you google (I'd actually start at Wikipedia).
There's one case where you don't just use the .bin file when programming a bitstream into flash. That's when the data from the flash device comes out serially LSB first. This was true of early Xilinx PROMs. The .bit and .bin files are generated such that the MSB should shift out first, so you'd need bit swapping when programming the flash. SPI serial flash outputs the MSB first so it doesn't require swapping. I was under the impression that CF cards are parallel out only, so you'd need to check whether your programming method (SelectMap?) requires bit swapping.
12-17-2014 11:09 PM
CF generally is programmed with .ace file format with CF card reader
You will use impact for converting .bit to .ace format. The .ace file will be programmed to CF and this configures the fpga.
The following application notes discusses on this file .ace file format, this might be of helpful in understanding and use in your design to write the config file(.ace)
Hope this will help you to proceed.