Hi @YuanLi_S_Intel ,
>>1) But the .map file generated stated that all addresses in the .map file are byte addresses. Does it mean each address location contains a byte of data ?
>> It means the data of is stored from 0x00020000 to 0x0043241B. Each address has data.
So Initial address 0x00020000 stores 8bit of data
Next address 0x00020001 stores 8bit of data (ie for byte addressing, using address increments of 1)
etc up until address location 0x0043241B
1) Does the tool currently take special care when addressing the PFL / Flash which is 16bit data ?
Wrt Page 0: Start address: 0x00020000, End address: 0x0043241B (4.269083MB of data)
Do I then try to relate above addresses to the flash S29GL01GT/S29GL512T, 1-Gb (128 MB)/512-Mb (64 MB), GL-T MirrorBit® Eclipse™ Flash (cypress.com) Table1 as follows wrt start address 0x00020000 ?
- A25:A16 -> 002h # Sector 2 of 1023 (Normally 0 – 1023 sectors)
- A15:A8 -> 00h # Write Buffer Line 0 of 255 (Normally 0 – 255 Write Buffers)
- A7:A0 -> 00h # Start address within Write Buffer line 0 is 0
- # (Normally 0 – 255 addresses within Write Buffer)
- A15:A4 -> 000h # Page 0 of 4095 (Normally 0 – 4095 Pages)
- A3:A0 -> 0h # Start address within Page 0 is 0 (Normally 0 – 15 addresses within a Page)
The above Flash spec states for x16 it is possible to write from 1 to 256 words, anywhere within the Write Buffer (there look to also be 256 line buffers per sector) before starting a programming operation
Our address range for eg Page 0 is huge actual page contents of our .pof is 4.269083MB from the above address range.
I looks like it uses Sectors: 2 -> 67 (i.e 66 sectors)
66 sectors * 256 line buffers * 256 words per line buffer = 4.325376MB
(4.325376MB > 4.269083MB => ok ie can fit this requested data within 66 Sectors)
Is my assumption (ie calculation above) correct here ?
2) Ok thanks. My OPTI0N_BITS were reported with the <auto> selected
- Start Address: 0x00000000
- End Address: 0x00000080 <- .pof version
Will keep this as it is.
>> 3) Our system uses flash_addr(25:0) & flash_data(15:0). How will we address our PFL correctly ?
>> Are you saying hardware connection with flash? If it so, take a look below:
>> https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/ug/ug_pfl.pdf (Page 14)
I noticed that figure. Since we are using Cypress Flash in 16-bit mode, address bits of PFL & Flash match exactly, so in our case we will have :
- Addr(0) of PFL connects to Addr(0) of flash
- ::::::::::::::::::::::::::
- Addr(25) of PFL connects to Addr(25) of flash
Wrt my question "How will we address our PFL correctly ?"
Our PFL is connected to the flash directly. We can program the flash with the current .pof generated by the 'Convert Programming files' tool.
3) To implement our own 'user logic' within the Cyclone V FPGA (and avoid using the Remote Update IP as discussed already) our option now is the FPGA to read in the updated .pof file via the I2C and then ?
One of your answers to my one of my previous ticket :
>> Our remote host I2C has just links to our FPGA Cyclone V (and not direct links to the CPLD (MAX V)) before the new application image data gets forwarded to the CPLD (MAX V) with the use of the PFL IP core to program the flash :
>> Can we just implement our own logic circuitry within Cyclone V FPGA (without the use of the Remote Update IP) to receive remotely the new application image data (just chunk bare data) from our external host via I2C serially (and also convert it from Serial-2-Parallel within the Cyclone V FPGA) and then be able to load/update/store it to the PFL (PFL is within CPLD MAX V) new sector location as parallel data ready to program the flash?
>> Yes, you can do that.
4) How can we implement the 'user logic' circuitry? FPGA can decode the stream of incoming .pof data from I2C byte at a time until the entire .pof file is been transmitted through. I'm I right to think this way?
How are we able to then load/update/store it to the flash via PFL? Your answer was we can do that but how?
We currently have a flow to program the flash via the USB blaster jtag with the current .pof file that is generated by the 'Convert Programming files' tool.
The new user_logic communication/interaction with the PFL / Flash is what I am trying to figure out (ie the interaction of the Flash (& not PFL as I originally thought) from the FPGA when forwarding/sending the updated .pof addr/data + other flash control info..
I am thinking breaking the current link of the PFL within the CPLD MAX V to the flash address/data & flash control signals via multiplexers. The multiplexer could then select 'User Mode control' (ie controlling the flash via the 'user logic' circuitry within the Cyclone V FPGA so that the flash can receive address / data & control signals from the FPGA) or 'Non User mode control' (ie the muxes will re-connect it as it is at the moment ie direct PFL-to-Flash connection to maintain this connectivity too during non-user mode control).
So basically, the direct connection of the PFL to Flash when forwarding the User addr/data & control signals via FPGA user logic will be accessed by the 'User logic' from the FPGA.
What is your opinion on this ? I'm I thinking in the right direction ? Please comment here