用户闪存页面地址

User Flash Memory Page Address

我在我的项目中使用 max10 FPGA 用户闪存。它在一个扇区中有 4 页,每页大小为 64kbits。现在如何识别内存中每一页的起始地址和结束地址,以便从闪存写入或读取数据。

您可以在此处找到设计示例:

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/

用户指南在这里:

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

UFM 和 CFM 阵列大小取决于您选择的设备,如下所示table:

此外,您可以访问的扇区取决于您使用的配置模式。这些显示在以下 table 中:

因此,我的最新设计使用了具有双重压缩图像的闪存 10M08。这意味着我只能访问扇区 0 和 1,每个扇区有 8 页,每页大小为 16 Kb。请注意,数据表以 Kibibits 为单位说明大小,其中 Kb 是 1024 位,而不是 1000。转换为字节后,页面大小为 2048 字节。 Avalon 接口要求您使用引用实际字节数的十六进制地址进行访问。这意味着,在我的示例中,每个页面的大小为 0x0800 字节。因此,每个页面将从 + 0x0800 开始,例如

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

另一种识别地址的方法是查看 IP 参数编辑器中报告的内容:

如你所见,它给出了每个扇区的开始和结束地址。要找到页面大小,只需将给定地址 space 除以 8,然后就可以计算出每个页面的起始地址。

为什么 Intel/Altera 在他们的数据表中必须使用 Kibibit 而不仅仅是字节,这让我无法理解。