a第27章 FLASH内存控制器(FMC)
27.1 介绍
FLASH内存控制器(FMC)是一个内存加速单元提供: ? 在设备和双行之间的一个接口,64位不易失性内存。 ? 缓存可以加速FLASH,和FlexNVM数据传输。 27.1.1 概述
FLASH内存控制器管理设备和双行之间的一个接口,64位不易失性内存。FMC接收状态信息详细记录了内存的配置,使用该信息可确保一个正确的接口。下表显示了支持8位,16位和32位读/写操作。 Flash内存类型 编程Flash内存 FlexNVM 读 X X 写 —1 —1 X X FlexRAM 另外,FMC位加速设备和Flash内存之间的接口提供了3个分开的机制。一个64位预缓冲可以预先得到下一个64位flash内存的位置,两个4路,8位设置的缓存和一个单入口的64位缓冲可以存储预先访问的flash内存或者快速访问时间的FlexMemory数据。 27.1.2 特征
FMC特征包括:
1. flash内存的一个写操作或者在错误环境了的FlexNVM结果。 ? 设备和双行之间的一个接口,64位flash内存和FlexMemory:
? 8位,16位,32位读操作到程序flash内存和FlexNVM。
? 8位,16位,32位读操作和写操作到FlexRAM作为EEPROM。
? 连续的读访问(如0x0,,0x4)返回第二次读数据且没有等待状态。内存
通过32位总线访问返回64位。
? 为设置没有访问,只读访问,只写访问提供保护的交叉主访问,或位每个
交叉主访问的读写访问。
? 加速从flash内存和FlexMemory到设备的数据传输:
? 每个主机和行的指令/数据访问的带有控制的64位预缓冲
? 带有每行替换算法和每行锁定控制的32个64位条目的4路,8集,64
位行大小的缓存。
? 可以使能每行的单条目的缓存 ? 每个缓存的无效控制。 27.2 操作模式
FMC只在设备访问flash内存或者FlexMemory时操作。就设备电源模式而言: ? FMC只在运行和等待模式操作,包括VLPR和VLPW模式。
? 对于任何模式,在FMC禁止时,FlexMemory或者flash内存不能被访问。
27.3 外部信号描述 FMC没有外部信号
27.4 内存映射和寄存器描述
编程模型包括FMC控制寄存器和编程可见的缓存(数据和标签/有效条目)。
注解
当flash控制器空闲时只能编程寄存器(比如:从RAM执行)。在flash访问的过程中改变
配置设置可以导致非确定性的行为。
注解
在FMC4KB地址空间内访问为实现的寄存器可以导致没有定义行为。
注解
当任何flash缓存的部分被编程时系统软件的需要保持内存的连续性。例如:所有重新编程的flash数据缓冲续保持无效性。相应地,缓存编程可见写必须发生在一个编程或者擦除事
件之后,在内存图像访问之前。
内存图像可见写必须32位长,必须在特权模式下执行。
缓存是一个4路,8集的缓存。0-3路,0-7集。在下表详细描述了标签/有效性数据条目。
表 27-2 程序可见缓存寄存器 缓存存储 Directory Data 偏移 100h 32位读内容 命名 命名例子 TAGVDW2S7 is the 13-bit tag and 1-bit valid for cache entry way 2, set 7. DATAW1S3U represents bits[63:32] of data entry way 1,set 3, and DATAW1S3L rep' resents bits [31:0] of data en' try way 1, set 3. 13’h0, 在TAGVDWxSy,xtag[18:6], 表示way,y表示5’h0,有效 set 数据字的大写或小写 在DATAWxSyU 和 DATAWxSyL,x表示way,y表示set,U和L分别表示大写字和小写字。 200h
FMC内存映射
Width SectionRegister Access Reset e / (in name value 4001_F000 Flash Access Protection Register (FMC_PFAPR) 32 R/W 00F8_003Fh 27.4.1/ 619 4001_F004 Flash Bank 0 Control Register (FMC_PFB0CR) 32 R/W 3002_001Fh 27.4.2/ 622 4001_F008 Flash Bank 1 Control Register (FMC_PFB1CR) 32 R/W 3002_001Fh 27.4.3/ 624 4001_F100 Cache Directory Storage (FMC_TAGVDW0S0) 32 R/W 0000_0000h 27.4.4/ 626 Absolut 4001_F104 Cache Directory Storage (FMC_TAGVDW0S1) 4001_F108 Cache Directory Storage (FMC_TAGVDW0S2) 4001_F10C Cache Directory Storage (FMC_TAGVDW0S3) 4001_F110 Cache Directory Storage (FMC_TAGVDW0S4) 4001_F114 Cache Directory Storage (FMC_TAGVDW0S5) 4001_F118 Cache Directory Storage (FMC_TAGVDW0S6) 4001_F11C Cache Directory Storage (FMC_TAGVDW0S7) 4001_F120 Cache Directory Storage (FMC_TAGVDW1S0) 4001_F124 Cache Directory Storage (FMC_TAGVDW1S1) 4001_F128 Cache Directory Storage (FMC_TAGVDW1S2) 4001_F12C Cache Directory Storage (FMC_TAGVDW1S3) 4001_F130 Cache Directory Storage (FMC_TAGVDW1S4) 4001_F134 Cache Directory Storage (FMC_TAGVDW1S5) 4001_F138 Cache Directory Storage (FMC_TAGVDW1S6) 4001_F13C Cache Directory Storage (FMC_TAGVDW1S7) 4001_F140 Cache Directory Storage (FMC_TAGVDW2S0) 4001_F144 Cache Directory Storage (FMC_TAGVDW2S1) 4001_F148 Cache Directory Storage (FMC_TAGVDW2S2) 4001_F14C Cache Directory Storage (FMC_TAGVDW2S3) 4001_F150 Cache Directory Storage (FMC_TAGVDW2S4) 4001_F154 Cache Directory Storage (FMC_TAGVDW2S5) 4001_F158 Cache Directory Storage (FMC_TAGVDW2S6) 4001_F15C Cache Directory Storage (FMC_TAGVDW2S7) 4001_F160 Cache Directory Storage (FMC_TAGVDW3S0) 4001_F164 Cache Directory Storage (FMC_TAGVDW3S1) 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W 0000_0000h 27.4.4/ 626 0000_0000h 27.4.4/ 626 0000_0000h 27.4.4/ 626 0000_0000h 27.4.4/ 626 0000_0000h 27.4.4/ 626 0000_0000h 27.4.4/ 626 27.4.40000_0000h / 626 0000_0000h 27.4.5/ 627 0000_0000h 27.4.5/ 627 0000_0000h 27.4.5/ 627 0000_0000h 27.4.5/ 627 27.4.50000_0000h / 627 0000_0000h 27.4.5/ 627 0000_0000h 27.4.5/ 627 0000_0000h 27.4.5/ 627 0000_0000h 27.4.6/ 627 27.4.60000_0000h / 627 0000_0000h 27.4.6/ 627 0000_0000h 27.4.6/ 627 0000_0000h 27.4.6/ 627 0000_0000h 27.4.6/ 627 27.4.60000_0000h / 627 0000_0000h 27.4.6/ 627 0000_0000h 27.4.7/ 628 0000_0000h 27.4.7/ 628 4001_F168 Cache Directory Storage (FMC_TAGVDW3S2) 4001_F16C Cache Directory Storage (FMC_TAGVDW3S3) 4001_F170 Cache Directory Storage (FMC_TAGVDW3S4) 4001_F174 Cache Directory Storage (FMC_TAGVDW3S5) 4001_F178 Cache Directory Storage (FMC_TAGVDW3S6) 4001_F17C Cache Directory Storage (FMC_TAGVDW3S7) 32 32 32 32 32 32 R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W 4001_F200 Cache Data Storage (upper word) (FMC_DATAW0S0U) 32 4001_F204 Cache Data Storage (lower word) (FMC_DATAW0S0L) 32 4001_F208 Cache Data Storage (upper word) (FMC_DATAW0S1U) 32 4001_F20C Cache Data Storage (lower word) (FMC_DATAW0S1L) 32 4001_F210 Cache Data Storage (upper word) (FMC_DATAW0S2U) 32 4001_F214 Cache Data Storage (lower word) (FMC_DATAW0S2L) 32 4001_F218 Cache Data Storage (upper word) (FMC_DATAW0S3U) 32 4001_F21C Cache Data Storage (lower word) (FMC_DATAW0S3L) 32 4001_F220 Cache Data Storage (upper word) (FMC_DATAW0S4U) 32 4001_F224 Cache Data Storage (lower word) (FMC_DATAW0S4L) 32 4001_F228 Cache Data Storage (upper word) (FMC_DATAW0S5U) 32 4001_F22C Cache Data Storage (lower word) (FMC_DATAW0S5L) 32 4001_F230 Cache Data Storage (upper word) (FMC_DATAW0S6U) 32 4001_F234 Cache Data Storage (lower word) (FMC_DATAW0S6L) 32 4001_F238 Cache Data Storage (upper word) (FMC_DATAW0S7U) 32 4001_F23C Cache Data Storage (lower word) (FMC_DATAW0S7L) 32 4001_F240 Cache Data Storage (upper word) (FMC_DATAW1S0U) 32 4001_F244 Cache Data Storage (lower word) (FMC_DATAW1S0L) 32 4001_F248 Cache Data Storage (upper word) (FMC_DATAW1S1U) 32 0000_0000h 27.4.7/ 628 0000_0000h 27.4.7/ 628 0000_0000h 27.4.7/ 628 0000_0000h 27.4.7/ 628 0000_0000h 27.4.7/ 628 0000_0000h 27.4.7/ 628 27.4.80000_0000h / 629 0000_0000h 27.4.9/ 630 0000_0000h 27.4.8/ 629 0000_0000h 27.4.9/ 630 0000_0000h 27.4.8/ 629 27.4.90000_0000h / 630 0000_0000h 27.4.8/ 629 0000_0000h 27.4.9/ 630 0000_0000h 27.4.8/ 629 0000_0000h 27.4.9/ 630 27.4.80000_0000h / 629 0000_0000h 27.4.9/ 630 0000_0000h 27.4.8/ 629 0000_0000h 27.4.9/ 630 0000_0000h 27.4.8/ 629 27.4.90000_0000h / 630 0000_0000h 27.4.10/ 631 0000_0000h 27.4.11/ 631 0000_0000h 27.4.10/ 631 4001_F24C Cache Data Storage (lower word) (FMC_DATAW1S1L) 32 4001_F250 Cache Data Storage (upper word) (FMC_DATAW1S2U) 32 4001_F254 Cache Data Storage (lower word) (FMC_DATAW1S2L) 32 4001_F258 Cache Data Storage (upper word) (FMC_DATAW1S3U) 32 4001_F25C Cache Data Storage (lower word) (FMC_DATAW1S3L) 32 4001_F260 Cache Data Storage (upper word) (FMC_DATAW1S4U) 32 4001_F264 Cache Data Storage (lower word) (FMC_DATAW1S4L) 32 4001_F268 Cache Data Storage (upper word) (FMC_DATAW1S5U) 32 4001_F26C Cache Data Storage (lower word) (FMC_DATAW1S5L) 32 4001_F270 Cache Data Storage (upper word) (FMC_DATAW1S6U) 32 4001_F274 Cache Data Storage (lower word) (FMC_DATAW1S6L) 32 4001_F278 Cache Data Storage (upper word) (FMC_DATAW1S7U) 32 4001_F27C Cache Data Storage (lower word) (FMC_DATAW1S7L) 32 4001_F280 Cache Data Storage (upper word) (FMC_DATAW2S0U) 32 4001_F284 Cache Data Storage (lower word) (FMC_DATAW2S0L) 32 4001_F288 Cache Data Storage (upper word) (FMC_DATAW2S1U) 32 4001_F28C Cache Data Storage (lower word) (FMC_DATAW2S1L) 32 4001_F290 Cache Data Storage (upper word) (FMC_DATAW2S2U) 32 4001_F294 Cache Data Storage (lower word) (FMC_DATAW2S2L) 32 4001_F298 Cache Data Storage (upper word) (FMC_DATAW2S3U) 32 4001_F29C Cache Data Storage (lower word) (FMC_DATAW2S3L) 32 4001_F2A0 Cache Data Storage (upper word) (FMC_DATAW2S4U) 32 4001_F2A4 Cache Data Storage (lower word) (FMC_DATAW2S4L) 32 4001_F2A8 Cache Data Storage (upper word) (FMC_DATAW2S5U) 32 4001_F2AC Cache Data Storage (lower word) (FMC_DATAW2S5L) 32 R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W 0000_0000h 27.4.11/ 631 0000_0000h 27.4.10/ 631 0000_0000h 27.4.11/ 631 0000_0000h 27.4.10/ 631 0000_0000h 27.4.11/ 631 0000_0000h 27.4.10/ 631 27.4.10000_0000h 1/ 631 0000_0000h 27.4.10/ 631 27.4.10000_0000h 1/ 631 0000_0000h 27.4.10/ 631 0000_0000h 27.4.11/ 631 0000_0000h 27.4.10/ 631 0000_0000h 27.4.11/ 631 0000_0000h 27.4.12/ 632 0000_0000h 27.4.13/ 633 0000_0000h 27.4.12/ 632 27.4.10000_0000h 3/ 633 0000_0000h 27.4.12/ 632 0000_0000h 27.4.13/ 633 0000_0000h 27.4.12/ 632 0000_0000h 27.4.13/ 633 27.4.10000_0000h 2/ 632 0000_0000h 27.4.13/ 633 0000_0000h 27.4.12/ 632 0000_0000h 27.4.13/ 633 4001_F2B0 Cache Data Storage (upper word) (FMC_DATAW2S6U) 32 4001_F2B4 Cache Data Storage (lower word) (FMC_DATAW2S6L) 32 4001_F2B8 Cache Data Storage (upper word) (FMC_DATAW2S7U) 32 4001_F2BC Cache Data Storage (lower word) (FMC_DATAW2S7L) 32 4001_F2C0 Cache Data Storage (upper word) (FMC_DATAW3S0U) 32 4001_F2C4 Cache Data Storage (lower word) (FMC_DATAW3S0L) 32 4001_F2C8 Cache Data Storage (upper word) (FMC_DATAW3S1U) 32 4001_F2CC Cache Data Storage (lower word) (FMC_DATAW3S1L) 32 4001_F2D0 Cache Data Storage (upper word) (FMC_DATAW3S2U) 32 4001_F2D4 Cache Data Storage (lower word) (FMC_DATAW3S2L) 32 4001_F2D8 Cache Data Storage (upper word) (FMC_DATAW3S3U) 32 4001_F2DC Cache Data Storage (lower word) (FMC_DATAW3S3L) 32 4001_F2E0 Cache Data Storage (upper word) (FMC_DATAW3S4U) 32 4001_F2E4 Cache Data Storage (lower word) (FMC_DATAW3S4L) 32 4001_F2E8 Cache Data Storage (upper word) (FMC_DATAW3S5U) 32 4001_F2EC Cache Data Storage (lower word) (FMC_DATAW3S5L) 32 4001_F2F0 Cache Data Storage (upper word) (FMC_DATAW3S6U) 32 4001_F2F4 Cache Data Storage (lower word) (FMC_DATAW3S6L) 32 4001_F2F8 Cache Data Storage (upper word) (FMC_DATAW3S7U) 32 4001_F2FC Cache Data Storage (lower word) (FMC_DATAW3S7L) 32 R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W 0000_0000h 27.4.12/ 632 0000_0000h 27.4.13/ 633 0000_0000h 27.4.12/ 632 27.4.10000_0000h 3/ 633 0000_0000h 27.4.14/ 633 0000_0000h 27.4.15/ 634 0000_0000h 27.4.14/ 633 0000_0000h 27.4.15/ 634 27.4.10000_0000h 4/ 633 0000_0000h 27.4.15/ 634 0000_0000h 27.4.14/ 633 0000_0000h 27.4.15/ 634 0000_0000h 27.4.14/ 633 0000_0000h 27.4.15/ 634 0000_0000h 27.4.14/ 633 0000_0000h 27.4.15/ 634 27.4.10000_0000h 4/ 633 0000_0000h 27.4.15/ 634 0000_0000h 27.4.14/ 633 0000_0000h 27.4.15/ 634 27.4.1 Flash访问保护寄存器(FMC_PFAPR)
FMC_PFAPR 位描述 位 31–24 保留 23 M7PFD 描述 这个只读位域被保留,始终具有值为零。 Master 7预取禁用 这些位控制是否启用预取对数为基础的逻辑要求Master转换开关. 此字段进一步限定了PFBnCR[BxDPE,BxIPE]位 0 此Master预取启用 1 此Master预取禁用 Master 6预取禁用 这些位控制是否启用预取对数为基础的逻辑要求Master转换开关. 此字段进一步限定了PFBnCR[BxDPE,BxIPE]位 0 此Master预取启用 1 此Master预取禁用 Master 5预取禁用 这些位控制是否启用预取对数为基础的逻辑要求Master转换开关. 此字段进一步限定了PFBnCR[BxDPE,BxIPE]位 0 此Master预取启用 1 此Master预取禁用 Master 4预取禁用 这些位控制是否启用预取对数为基础的逻辑要求Master转换开关. 此字段进一步限定了PFBnCR[BxDPE,BxIPE]位 0 此Master预取启用 1 此Master预取禁用 Master 3预取禁用 这些位控制是否启用预取对数为基础的逻辑要求Master转换开关. 此字段进一步限定了PFBnCR[BxDPE,BxIPE]位 0 此Master预取启用 1 此Master预取禁用 Master 2预取禁用 22 M6PFD 21 M5PFD 20 M4PFD 19 M3PFD 18 M2PFD 18 M2PFD 位 17 M1PFD 这些位控制是否启用预取对数为基础的逻辑要求Master转换开关. 此字段进一步限定了PFBnCR[BxDPE,BxIPE]位 Master 2预取禁用 这些位控制是否启用预取对数为基础的逻辑要求Master转换开关. 此字段进一步限定了PFBnCR[BxDPE,BxIPE]位 描述 0 此Master预取启用 1 此Master预取禁用 Master 1预取禁用 这些位控制是否启用预取对数为基础的逻辑要求Master转换开关. 此字段进一步限定了PFBnCR[BxDPE,BxIPE]位 0 此Master预取启用 1 此Master预取禁用 Master 0预取禁用 这些位控制是否启用预取对数为基础的逻辑要求Master转换开关. 此字段进一步限定了PFBnCR[BxDPE,BxIPE]位 0 此Master预取启用 1 此Master预取禁用 16 M0PFD 15–14 Master 7 访问保护 M7AP[1:0] 此位的控制是否读写访问Flash是基于允许在提出请求的交叉转换逻辑master 00对此master无法访问。 01对此master只可进行读访问。 10对此master只写访问。 11对此master可读可写。 13–12 Master 6 访问保护 M6AP[1:0] 此位的控制是否读写访问Flash是基于允许在提出请求的交叉转换逻辑master 00对此master无法访问。 01对此master只可进行读访问。 10对此master只写访问。 11对此master可读可写。 11–10 Master 5 访问保护 M5AP[1:0] 此位的控制是否读写访问Flash是基于允许在提出请求的交叉转换逻辑master 00对此master无法访问。 01对此master只可进行读访问。 10对此master只写访问。 11对此master可读可写。 9–8 Master 4 访问保护 M4AP[1:0] 此位的控制是否读写访问Flash是基于允许在提出请求的交叉转换逻辑master 00对此master无法访问。 01对此master只可进行读访问。 10对此master只写访问。 11对此master可读可写。 7–6 Master 3 访问保护 M3AP[1:0] 此位的控制是否读写访问Flash是基于允许在提出请求的交叉转换逻辑master 00对此master无法访问。 01对此master只可进行读访问。 10对此master只写访问。 11对此master可读可写。 5–4 Master 2 访问保护 M2AP[1:0] 此位的控制是否读写访问Flash是基于允许在提出请求的交叉转换逻辑master 00对此master无法访问。 01对此master只可进行读访问。 10对此master只写访问。 11对此master可读可写。 3–2 Master 1 访问保护 M1AP[1:0] 此位的控制是否读写访问Flash是基于允许在提出请求的交叉转换逻辑master 00对此master无法访问。 01对此master只可进行读访问。 10对此master只写访问。 11对此master可读可写。 1–0 Master 0 访问保护 M0AP[1:0] 此位的控制是否读写访问Flash是基于允许在提出请求的交叉转换逻辑master 00对此master无法访问。 01对此master只可进行读访问。 10对此master只写访问。 11对此master可读可写。
27.4.2 闪存Bank0控制寄存器 (FMC_PFB0CR)
FMC_PFB0CR位描述 位 31–28 B0RWSC[3:0] 描述 Bank 0阅读等待状态控制 此只读字段定义所需的访问Bank 0快闪记忆体等待状态的数目。 闪存阵列的读取时间(在系统时钟周期表示)和RWSC之间的关系定义为: 此master预取启用。 FMC的自动计算上的系统时钟速度的值基于闪存的时钟速度的比例。 例如,当这个比例为4:1,该字段的值是3h 27–24 缓存锁线路 x CLCK_WAY[3:0] 这些位决定是否给定的缓存的方法是锁住的内容不会被以后的误操作替换 该位的设置定义字段中的每个位。 0 高速缓存线路解锁,可能被取代 1 高速缓存线路被锁定,其内容不会被以后的误操作替换 23–20 缓存无效线路x CINV_WAY[3:0] 这些位决定是否给定的缓存的方法是无效(清除)。当一个位在此字段被写时,相应的缓存线路立即失效:此路的标签,数据和有效的内容被清除。该字段始终读为零。 缓存失效接管锁定优先。高速缓存是系统复位无效。系统软件是需要保持连贯性,当任何内存闪存市场的编程或擦除。因此,缓存失效后,必须发生的事件编程或擦除之前完成新的内存映像访问。 该位的设置定义字段中的每个位。 0没有相应的高速缓存缓存的方式失效 1无效缓存线路:清除标签,数据和vld位 19 S_B_INV 无效预取缓冲器 此位决定了FMC的Prefetch投机缓冲区和缓冲区单入页面将被失效(清除)。当该位被写入时,投机缓冲区和缓冲区的单入立即清除。该位总是读为零 0 缓冲区和单入缓冲区不会受到影响。 1无效(清除)的缓冲和单缓冲区。 Bank 0存储宽度 这个只读字段定义了Bank 0内存的宽度 00 32位 01 64位 1x 保留 这个只读位保留,始终具有值为零。 这个只读位域被保留,始终具有值为零。 000 LRU替换算法 001保留 010与独立的LRU方式为ifetches[0-1],数据[2-3] 011与独立的LRU方式为ifetches[0-2],数据[3] 1xx 保留 Bank 0数据高速缓存启用 该位控制是否引用数据加载到缓存中。 0没有缓存数据的引用。 1高速缓存数据的引用。 Bank 0指令高速缓存启用 该位控制是否取指加载到缓存中。 18–17 B0MW[1:0] 16 保留 15–8 保留 7–5 CRC[2:0] 4 B0DCE 3 B0ICE 0无缓存取指 1缓存取指 2 B0DPE Bank 0数据预取启用 该位控制是否(或随机访问)预取数据的引用启动对应。 0不响应预取数据的引用。 1启用预取响应数据的引用。 Bank 0指令预取启用 该位控制是否预取(或投机性的访问)是回应指令的提取操作。 0不响应预取到指令读取。 1启用预取指令获取响应。 Bank 0单入缓冲器启用 该位控制是否单一入口页面缓冲区是响应闪存读访问启用。它的运作是从Bank 1的缓存无关。 从高到低的过渡使页面缓冲区无效 0单入缓冲区禁用。 1单入缓冲区启用。 1 B0IPE 0 B0SEBE 27.4.3 闪存 Bank 1 控制寄存器 (FMC_PFB1CR)
该寄存器有一种格式类似PFB0CR,除了它控制闪存Bank 1的操作,而”全局”高速缓存控制字段为空。
FMC_PFB1CR位描述 位 31-28 B1RWSC[3:0] 27-19 预留 18-17 B1MW[1:0] 描述 BANK 1读状态控制 该只读域定义了访问1flash内存需要的等待状态号。 只读,永远为0 BANK 1内存宽度 该只读域定义了BANK 1内存的宽度。 00 32位 01 64位 1x 预留 只读,永远为0 16 预留 15-8 预留 7-5 预留 4 B1DCE 只读,永远为0 只读,永远为0 BANK 1数据缓存使能 该位控制数据参考是否加载到缓存。 0 不缓存数据参考 1 缓存数据参考 BANK 1指令缓存使能 该位控是否制指令获取加载到缓存 0 不缓存指令获取 1缓存指令获取 BANK 1数据预获取使能 该位控制是否预获取(预访问)开始作为对数据参考的回应。 0 不预获取 1 预获取 BANK 1指令预获取使能 该位控制是否预获取(预访问)开始作为对指令获取的回应。 0 不预获取 1 预获取 BANK 1但条目缓冲使能 该位控制是否单条目缓冲是否使能最为对flash读取访问的回应。它从BANK 0的缓冲的操作是独立的。 该一个高到低传输强制页缓冲无效 0 单条目缓冲禁止 1单条目缓冲使能 3 B1ICE 2 B1DPE 1 B1IPE 0 B1SEBE 27.4.4 缓存目录存储(FMC_TAGVDW0Sn)
32个条目缓存是一个4路,级联的8级缓存。0-3路,0-7集。在TAGVDWxSn,x表示way,y表示集。为所有的8集(n=0-7)在way0给部分表示tag/vld信息。
Addresses: FMC_TAGVDW0S0 – 4001_F000h base + 100h offset = 4001_F100h
FMC_TAGVDW0S1 – 4001_F000h base + 104h offset = 4001_F104h FMC_TAGVDW0S2 – 4001_F000h base + 108h offset = 4001_F108h FMC_TAGVDW0S3 – 4001_F000h base + 10Ch offset = 4001_F10Ch FMC_TAGVDW0S4 – 4001_F000h base + 110h offset = 4001_F110h FMC_TAGVDW0S5 – 4001_F000h base + 114h offset = 4001_F114h FMC_TAGVDW0S6 – 4001_F000h base + 118h offset = 4001_F118h FMC_TAGVDW0S7 – 4001_F000h base + 11Ch offset = 4001_F11Ch
FMC_TAGVDW0Sn位描述
位 31-19 预留 18-6 只读,永远为0 缓存条目的13位标签 描述 Tag[18:6] 5-1 预留 0 有效 只读,永远为0 缓存条目的1位有效 27.4.5 缓存目录存储(FMC_TAGVDW1Sn)
32个条目缓存是一个4路,级联的8级缓存。0-3路,0-7集。在TAGVDWxSn,x表示way,y表示集。为所有的8集(n=0-7)在way1给部分表示标签/信息。
Addresses: FMC_TAGVDW1S0 – 4001_F000h base + 120h offset = 4001_F120h
FMC_TAGVDW1S1 – 4001_F000h base + 124h offset = 4001_F124h FMC_TAGVDW1S2 – 4001_F000h base + 128h offset = 4001_F128h FMC_TAGVDW1S3 – 4001_F000h base + 12Ch offset = 4001_F12Ch FMC_TAGVDW1S4 – 4001_F000h base + 130h offset = 4001_F130h FMC_TAGVDW1S5 – 4001_F000h base + 134h offset = 4001_F134h FMC_TAGVDW1S6 – 4001_F000h base + 138h offset = 4001_F138h FMC_TAGVDW1S7 – 4001_F000h base + 13Ch offset = 4001_F13Ch
FMC_TAGVDW1Sn位描述 位 31-19 预留 18-6 Tag[18:6] 5-1 预留 0 有效
27.4.6 缓存目录存储(FMC_TAGVDW2Sn)
32个条目缓存是一个4路,级联的8级缓存。0-3路,0-7集。在TAGVDWxSn,x表示way,y表示集。为所有的8集(n=0-7)在way2给部分表示标签/信息。
Addresses: FMC_TAGVDW2S0 – 4001_F000h base + 140h offset = 4001_F140h
FMC_TAGVDW2S1 – 4001_F000h base + 144h offset = 4001_F144h FMC_TAGVDW2S2 – 4001_F000h base + 148h offset = 4001_F148h FMC_TAGVDW2S3 – 4001_F000h base + 14Ch offset = 4001_F14Ch FMC_TAGVDW2S4 – 4001_F000h base + 150h offset = 4001_F150h FMC_TAGVDW2S5 – 4001_F000h base + 154h offset = 4001_F154h FMC_TAGVDW2S6 – 4001_F000h base + 158h offset = 4001_F158h FMC_TAGVDW2S7 – 4001_F000h base + 15Ch offset = 4001_F15Ch
FMC_TAGVDW2Sn位描述
只读,永远为0 缓存条目的13位标签 只读,永远为0 缓存条目的1位有效 描述 位 31-19 预留 18-6 Tag[18:6] 5-1 预留 0 有效 只读,永远为0 缓存条目的13位标签 只读,永远为0 缓存条目的1位有效 描述 27.4.7 缓存目录存储(FMC_TAGVDW3Sn)
32个条目缓存是一个4路,级联的8级缓存。0-3路,0-7集。在TAGVDWxSn,x表示way,y表示集。为所有的8集(n=0-7)在way3给部分表示标签/信息。
Addresses: FMC_TAGVDW3S0 – 4001_F000h base + 160h offset = 4001_F160h
FMC_TAGVDW3S1 – 4001_F000h base + 164h offset = 4001_F164h FMC_TAGVDW3S2 – 4001_F000h base + 168h offset = 4001_F168h FMC_TAGVDW3S3 – 4001_F000h base + 16Ch offset = 4001_F16Ch FMC_TAGVDW3S4 – 4001_F000h base + 170h offset = 4001_F170h FMC_TAGVDW3S5 – 4001_F000h base + 174h offset = 4001_F174h FMC_TAGVDW3S6 – 4001_F000h base + 178h offset = 4001_F178h FMC_TAGVDW3S7 – 4001_F000h base + 17Ch offset = 4001_F17C
FMC_TAGVDW3Sn位描述 位 31-19 预留 18-6 Tag[18:6] 5-1 预留 0 有效 只读,永远为0 缓存条目的13位标签 只读,永远为0 缓存条目的1位有效 描述 27.4.8 缓存数据存储(高位字)(FMC_DATAW0SnU)
32个64-bit项的高速缓存是4路的,8组的组相连缓存。路编号为0-3,组被编号为0-7.在DATAWxSyU和DATAWxSyL,x表示路,y表示组,U和L分别代表高位字和低位字。这一部分代表为高位字(【63:32】位)的所有8组0路的数据。
Addresses: FMC_DATAW0S0U – 4001_F000h base + 200h offset = 4001_F200h
FMC_DATAW0S1U – 4001_F000h base + 208h offset = 4001_F208h FMC_DATAW0S2U – 4001_F000h base + 210h offset = 4001_F210h FMC_DATAW0S3U – 4001_F000h base + 218h offset = 4001_F218h FMC_DATAW0S4U – 4001_F000h base + 220h offset = 4001_F220h FMC_DATAW0S5U – 4001_F000h base + 228h offset = 4001_F228h
FMC_DATAW0S6U – 4001_F000h base + 230h offset = 4001_F230h FMC_DATAW0S7U – 4001_F000h base + 238h offset = 4001_F238h
FMC_DATAW0SnU位描述
位 31-0 data[63:32] 数据记录的位[63:32] 描述 27.4.9 缓存数据存储(低位字)(FMC_DATAW0SnL)
32个64-bit项的高速缓存是4路的,8组的组相连缓存。路编号为0-3,组被编号为0-7.在DATAWxSyU和DATAWxSyL,x表示路,y表示组,U和L分别代表高位字和低位字。这一部分代表为低位字(【31:0】位)的所有8组0路的数据。
Addresses: FMC_DATAW0S0L – 4001_F000h base + 204h offset = 4001_F204h
FMC_DATAW0S1L – 4001_F000h base + 20Ch offset = 4001_F20Ch FMC_DATAW0S2L – 4001_F000h base + 214h offset = 4001_F214h FMC_DATAW0S3L – 4001_F000h base + 21Ch offset = 4001_F21Ch FMC_DATAW0S4L – 4001_F000h base + 224h offset = 4001_F224h FMC_DATAW0S5L – 4001_F000h base + 22Ch offset = 4001_F22Ch FMC_DATAW0S6L – 4001_F000h base + 234h offset = 4001_F234h FMC_DATAW0S7L – 4001_F000h base + 23Ch offset = 4001_F23Ch
FMC_DATAW0SnL位描述
位 31-0 data[31:0] 数据记录的位[31:0] 描述 27.4.10 缓存数据存储(高位字)(FMC_DATAW1SnU)
32个64-bit项的高速缓存是4路的,8组的组相连缓存。路编号为0-3,组被编号为0-7.在DATAWxSyU和DATAWxSyL,x表示路,y表示组,U和L分别代表高位字和低位字。这一部分代表为高位字(【63:32】位)的所有8组(n=0-7)1路的数据。
Addresses: FMC_DATAW1S0U – 4001_F000h base + 240h offset = 4001_F240h
FMC_DATAW1S1U – 4001_F000h base + 248h offset = 4001_F248h FMC_DATAW1S2U – 4001_F000h base + 250h offset = 4001_F250h FMC_DATAW1S3U – 4001_F000h base + 258h offset = 4001_F258h FMC_DATAW1S4U – 4001_F000h base + 260h offset = 4001_F260h FMC_DATAW1S5U – 4001_F000h base + 268h offset = 4001_F268h FMC_DATAW1S6U – 4001_F000h base + 270h offset = 4001_F270h FMC_DATAW1S7U – 4001_F000h base + 278h offset = 4001_F278
FMC_DATAW1SnU位描述
位 31-0 data[63:32] 数据记录的位[63:32] 描述 27.4.11 缓存数据存储(低位字)(FMC_DATAW1SnL)
32个64-bit项的高速缓存是4路的,8组的组相连缓存。路编号为0-3,组被编号为0-7.在DATAWxSyU和DATAWxSyL,x表示路,y表示组,U和L分别代表高位字和低位字。这一部分代表为低位字(【31:0】位)的所有8组(n=0-7)1路的数据。
Addresses: FMC_DATAW1S0L – 4001_F000h base + 244h offset = 4001_F244h
FMC_DATAW1S1L – 4001_F000h base + 24Ch offset = 4001_F24Ch FMC_DATAW1S2L – 4001_F000h base + 254h offset = 4001_F254h FMC_DATAW1S3L – 4001_F000h base + 25Ch offset = 4001_F25Ch FMC_DATAW1S4L – 4001_F000h base + 264h offset = 4001_F264h FMC_DATAW1S5L – 4001_F000h base + 26Ch offset = 4001_F26Ch FMC_DATAW1S6L – 4001_F000h base + 274h offset = 4001_F274h FMC_DATAW1S7L – 4001_F000h base + 27Ch offset = 4001_F27Ch
FMC_DATAW1SnL位描述 位 31-0 data[31:0] 数据记录的位[31:0] 描述 27.4.12 缓存数据存储(高位字)(FMC_DATAW2SnU)
32个64-bit项的高速缓存是4路的,8组的组相连缓存。路编号为0-3,组被编号为0-7.在DATAWxSyU和DATAWxSyL,x表示路,y表示组,U和L分别代表高位字和低位字。这一部分代表为高位字(【63:32】位)的所有8组(n=0-7)2路的数据。
Addresses: FMC_DATAW2S0U – 4001_F000h base + 280h offset = 4001_F280h
FMC_DATAW2S1U – 4001_F000h base + 288h offset = 4001_F288h FMC_DATAW2S2U – 4001_F000h base + 290h offset = 4001_F290h FMC_DATAW2S3U – 4001_F000h base + 298h offset = 4001_F298h FMC_DATAW2S4U – 4001_F000h base + 2A0h offset = 4001_F2A0h FMC_DATAW2S5U – 4001_F000h base + 2A8h offset = 4001_F2A8h FMC_DATAW2S6U – 4001_F000h base + 2B0h offset = 4001_F2B0h FMC_DATAW2S7U – 4001_F000h base + 2B8h offset = 4001_F2B8h
FMC_DATAW2SnU位描述 位 31-0 data[63:32] 数据记录的位[63:32] 描述 27.4.13 缓存数据存储(低位字)(FMC_DATAW2SnL)
32个64-bit项的高速缓存是4路的,8组的组相连缓存。路编号为0-3,组被编号为0-7.在DATAWxSyU和DATAWxSyL,x表示路,y表示组,U和L分别代表高位字和低位字。这一部分代表为低位字(【31:0】位)的所有8组(n=0-7)2路的数据。
Addresses: FMC_DATAW2S0L – 4001_F000h base + 284h offset = 4001_F284h
FMC_DATAW2S1L – 4001_F000h base + 28Ch offset = 4001_F28Ch FMC_DATAW2S2L – 4001_F000h base + 294h offset = 4001_F294h FMC_DATAW2S3L – 4001_F000h base + 29Ch offset = 4001_F29Ch FMC_DATAW2S4L – 4001_F000h base + 2A4h offset = 4001_F2A4h FMC_DATAW2S5L – 4001_F000h base + 2ACh offset = 4001_F2ACh FMC_DATAW2S6L – 4001_F000h base + 2B4h offset = 4001_F2B4h FMC_DATAW2S7L – 4001_F000h base + 2BCh offset = 4001_F2BC
FMC_DATAW2SnL位描述
位 31-0 data[31:0] 数据记录的位[31:0] 描述 27.4.14 缓存数据存储(高位字)(FMC_DATAW3SnU)
32个64-bit项的高速缓存是4路的,8组的组相连缓存。路编号为0-3,组被编号为0-7.在DATAWxSyU和DATAWxSyL,x表示路,y表示组,U和L分别代表高位字和低位字。这一部分代表为高位字(【63:32】位)的所有8组(n=0-7)3路的数据。
Addresses: FMC_DATAW3S0U – 4001_F000h base + 2C0h offset = 4001_F2C0h
FMC_DATAW3S1U – 4001_F000h base + 2C8h offset = 4001_F2C8h FMC_DATAW3S2U – 4001_F000h base + 2D0h offset = 4001_F2D0h FMC_DATAW3S3U – 4001_F000h base + 2D8h offset = 4001_F2D8h FMC_DATAW3S4U – 4001_F000h base + 2E0h offset = 4001_F2E0h FMC_DATAW3S5U – 4001_F000h base + 2E8h offset = 4001_F2E8h FMC_DATAW3S6U – 4001_F000h base + 2F0h offset = 4001_F2F0h FMC_DATAW3S7U – 4001_F000h base + 2F8h offset = 4001_F2F8h
FMC_DATAW3SnU位描述
位 31-0 data[63:32] 数据记录的位[63:32] 描述 27.4.15 缓存数据存储(低位字)(FMC_DATAW3SnL)
32个64-bit项的高速缓存是4路的,8组的组相连缓存。路编号为0-3,组被编号为0-7.在DATAWxSyU和DATAWxSyL,x表示路,y表示组,U和L分别代表高位字和低位字。这一部分代表为低位字(【31:0】位)的所有8组(n=0-7)3路的数据。
Addresses: FMC_DATAW3S0L – 4001_F000h base + 2C4h offset = 4001_F2C4h
FMC_DATAW3S1L – 4001_F000h base + 2CCh offset = 4001_F2CCh
FMC_DATAW3S2L – 4001_F000h base + 2D4h offset = 4001_F2D4h FMC_DATAW3S3L – 4001_F000h base + 2DCh offset = 4001_F2DCh FMC_DATAW3S4L – 4001_F000h base + 2E4h offset = 4001_F2E4h FMC_DATAW3S5L – 4001_F000h base + 2ECh offset = 4001_F2ECh FMC_DATAW3S6L – 4001_F000h base + 2F4h offset = 4001_F2F4h FMC_DATAW3S7L – 4001_F000h base + 2FCh offset = 4001_F2FCh
FMC_DATAW3SnL位描述 位 31-0 data[31:0] 27.5 功能描述
FMC是有着灵活的缓冲区的供用户配置的闪存加速单元。除了管理设备与闪存、FlexMemory的接口,FMC可以被用于限制来自纵横开关控制(crossbar switch master)的访问和通过自定义高速缓存和缓冲来提供单周期系统时钟数据访问次数。每当预取推测缓冲,高速缓存或者单入口缓冲命中时,被请求的数据在一个系统时钟内被传送。
当系统复位时,FMC被配置来提供显著等级的来自闪存记忆体或FlexMemory的传输缓冲。对于数据和指令的预取支持可以用于主控(master)0,主控1,主控2(ARM系统总线,ARM代码总线,DMA/RzPort)。这些主控有着对存储体(bank)0,存储体1读写的权限,对于所以4个路高速缓存被配置为最近最少使用算法(LRU),并且高速缓存被配置成用于数据或者指令更换。单入口缓冲对于存储体0和存储体1开启。
尽管默认的配置提供了一个高水平的闪存加速,高级用户可能希望为他们自己的使用情况通过自定义FMC缓存配置来最大程度的提高吞吐量。当为了用户使用情况重新配置FMC的时候,在闪存存储器或者FlexMemory正在被访问时,不要编程修改FMC控制寄存器。而应该,在特权模式下从RAM中通过程序的执行来修改控制寄存器。
FMC的控制寄存器允许为了特定的使用案例微调缓冲。比如,高速缓存可以被配置用于来自存储体0的替换,而单入口缓冲可以仅为存储体1使能。这个配置的想法是为了那种使用存储体0来作为程序空间,使用存储体2 作为数据空间。三个中的每个缓冲通过FMC控制寄存器分别控制。这些控制器可以使能缓冲、预取每个内存bank并且使能访问类型(数据或是指令)。高速缓存对于替换算法也有控制。FMC提供3种类型的LRU替换算法:
LRU 各个组访问4路,
LRU [0-1]指令获取,路[2-3]数据获取,LRU 路[0-2]指令获取,路[3]数据获取。
数据记录的位[31:0] 描述