1

I'm using max10 FPGA user flash memory in my project . It has 4 pages in one sector each page is 64kbits of size. Now how to identify what is starting and ending address of each page in memory to write or read data from flash memory.

toolic
  • 57,801
  • 17
  • 75
  • 117
manu
  • 41
  • 2

1 Answers1

1

You can find a design example here:

https://fpgacloud.intel.com/devstore/platform/17.1std.1/Standard/utilizing-the-user-flash-memory-ufm-on-max-10-devices-with-a-nios-ii-processor/

The User Guide is here:

https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/max-10/ug_m10_ufm.pdf

The UFM & CFM array size is dependent on the device you have chosen as shown in the following table:

enter image description here

Also, the sectors you can access depend on the configuration mode you use. These are shown in the following tables:

enter image description here

So, my latest design uses a flash 10M08 with dual compressed images. That means I can only access Sector 0 & 1 and each Sector has 8 pages with each page have a size of 16 Kb. Note that the datasheet states sizes in Kibibits where a Kb is 1024 bits, not 1000. Converting to bytes gives a page size of 2048 Bytes. The Avalon Interface requires you to access using Hex addresses that refer to the actual byte number. This means that, in my example, each page would be 0x0800 bytes in size. Thus, the each page would start at + 0x0800 e.g.

Sector 0 Page 0 Start Addr = 0x0000
Sector 0 Page 1 Start Addr = 0x0800
Sector 0 Page 2 Start Addr = 0x1000
...
Sector 1 Page 7 Start Addr = 0x7800

Another way to identify the addresses is to look at what's reported in the IP Parameter Editor:

enter image description here

As you can see, it gives the start and end addresses of each sector. To find the page sizes, just divide the given address space by 8 and then you can work out the start address for each one.

Why Intel/ Altera had to use Kibibits rather than just Bytes in their datasheet is beyond me.

Vance
  • 201
  • 1
  • 4