GMC

1. 简介

通用存储器控制器 (GMC) 包含两类存储器控制器:

  • NOR/PSRAM 存储器控制器

  • 同步 DRAM (SDRAM/移动 LPSDR SDRAM) 控制器

2. 主要特性

GMC 功能块与以下设备接口:同步和异步静态存储器、SDRAM 存储器。其主要目的是:

  • 将总线事务转换为适当的外部设备协议

  • 满足外部存储器设备的访问时间要求

所有外部存储器与控制器共享地址、数据和控制信号。每个外部设备通过唯一的片选信号进行访问。GMC 一次仅对一个外部设备执行访问。

GMC 控制器的主要特性如下:

  • 与静态存储器映射设备接口,包括:

    • 静态随机存取存储器 (SRAM)

    • NOR Flash 存储器 / OneNAND Flash 存储器

    • PSRAM (4 个存储体)

  • 与同步 DRAM (SDRAM/移动 LPSDR SDRAM) 存储器接口

  • 支持突发模式,以更快地访问同步设备,如 NOR Flash 存储器、PSRAM 和 SDRAM

  • 可编程的连续时钟输出,用于异步和同步访问

  • 8位、16位或32位宽数据总线

  • 每个存储体独立的片选控制

3. 功能描述

GMC 由以下主要模块组成:

  • NOR Flash/PSRAM/SRAM 控制器。

  • SDRAM 控制器。

  • ICB 接口。

模块框图如图所示:

GMC 模块框图如图

图 3.1: GMC 模块框图

ICB 接口

ICB 从接口允许内部 CPU 和其他总线主设备外设访问外部存储器。 ICB 事务被转换为外部设备协议。由于 ICB 数据总线为 32 位宽,ICB 事务可能会根据数据访问大小拆分为几个连续的 16 位或 8 位访问。GMC 片选信号 (GMC_NEx) 在连续访问之间不会切换。 当满足以下条件之一时,GMC 会产生 ICB 从设备错误:

  • 读取或写入未启用的 GMC 存储体(Bank 1 到 4)。

  • 在 GMC_BCRx 寄存器中的 FACCEN 位被复位时,读取或写入 NOR Flash 存储体。

  • 写入写保护的 SDRAM 存储体(SDRAM_SDCRx 寄存器中设置了 WE 位)。

  • 违反 SDRAM 地址范围(访问保留地址范围)。

  • 在 SDRAM 存储体尚未初始化时尝试进行读/写访问。

支持的存储器与事务

请求的 ICB 事务数据大小可以是 8 位、16 位或 32 位宽,而访问的外部设备具有固定的数据宽度。ICB 事务大小取决于存储器区域的 MPU 属性。这可能导致不一致的传输。 因此,可以根据 ICB 事务大小与存储器数据大小的关系遵循一些简单的事务规则:

  • ICB 事务大小和存储器数据大小相等,以防止问题发生。

  • ICB 事务大小大于存储器数据大小:在这种情况下,GMC 将 ICB 事务拆分为更小的连续存储器访问,以满足外部数据宽度。

  • ICB 事务大小小于存储器数据大小。

传输是否一致取决于外部设备的类型:

  • 访问具有字节选择功能的设备(SRAM、ROM、PSRAM、SDRAM):在这种情况下,GMC 允许读/写事务,并通过其 NBL[3:0] 字节通道访问正确的数据。要写入的字节由 NBL[3:0] 寻址。所有存储器字节都被读取(读事务期间 NBL[3:0] 被驱动为低电平),无用的字节被丢弃。

  • 访问没有字节选择功能的设备(NOR Flash 存储器):当向 16 位宽的 Flash 存储器请求字节访问时会发生这种情况。由于设备无法以字节模式访问(只能从 Flash 存储器读/写 16 位字),因此不允许写事务,而允许读事务(控制器读取整个 16 位存储器字,仅使用所需的字节)。

外部设备地址映射

从 GMC 的角度来看,外部存储器被划分为固定大小的存储体,每个存储体为 256 M字节(参见图3.2 GMC 存储体(默认映射):

GMC 存储体

图 3.2: GMC 存储体(默认映射)

ADDR[29:28] 位用于选择 SDRAM 和 NOR/PSRAM 之一,如表3.1 SDRAM 和 NOR/PSRAM 选择所示

表3.1 SDRAM 和 NOR/PSRAM 选择

ADDR[29:28]

选中的存储体

00

SDRAM Bank 0

01

SDRAM Bank 1

10

NOR/PSRAM

11

非法,将响应错误

NOR/PSRAM 地址映射

ADDR[27:26] 位用于选择四个存储体之一,如表3.2 NOR/PSRAM 存储体选择所示

表3.2 NOR/PSRAM 存储体选择

ADDR[27:26]

选中的存储体

00

NOR/PSRAM Bank 0

01

NOR/PSRAM Bank 1

10

NOR/PSRAM Bank 2

11

NOR/PSRAM Bank 3

ADDR 是内部地址线,会被转换为外部存储器地址。 ADDR[25:0] 位包含外部存储器地址。由于 ADDR 为字节地址,而存储器以字为单位进行寻址,实际输出到存储器的地址会根据存储器的数据宽度而变化,如表3.3 NOR/PSRAM 外部存储器地址所示。

表3.3 NOR/PSRAM 外部存储器地址

存储器位宽

发给存储器的数据地址

最大存储器容量(比特)

8-bit

ADDR[25:0]

64Mbytesx8 = 512Mbit

16-bit

ADDR[25:0] >> 1

64Mbytes/2x16 = 512Mbit

32-bit

ADDR[25:0] >> 2

64Mbytes/4x32 = 512Mbit

在外部存储器宽度为16位的情况下,GMC将在内部使用ADDR[25:1]来生成地址。对于外部存储器,输出地址为GMC_ADDR[24:0]。在外部存储器宽度为32位的情况下,GMC将在内部使用ADDR[25:2]来生成外部地址。不论外部存储器宽度如何,GMC_ADDR[0]都应连接到外部存储器地址ADDR[0]。

SDRAM 地址映射

表3.4 SDRAM 地址映射采用13位行地址和11位列地址配置的SDRAM地址映射。

表3.4 SDRAM 地址映射

存储器位宽

内部bank

行地址

列地址

最大存储器容量

8-bit

ADDR[25:24]

ADDR[23:11]

ADDR[10:0]

64MB

16-bit

ADDR[26:25]

ADDR[24:12]

ADDR[11:1]

128MB

32-bit

ADDR[27:26]

ADDR[25:13]

ADDR[12:2]

256MB

NOR Flash/PSRAM 控制器

GMC 生成适当的信号时序以驱动以下类型的存储器:

  • 异步 SRAM 和 ROM

    • 8 位

    • 16 位

    • 32位

  • PSRAM (Cellular RAM)

    • 异步模式

    • 用于同步访问的突发模式,具有可配置选项,可在跨 CRAM 1.5 的边界页时拆分突发访问

    • 复用或非复用

  • NOR Flash 存储器

    • 异步模式

    • 用于同步访问的突发模式

    • 复用或非复用

GMC 每个存储体输出一个唯一的片选信号 NE[3:0]。所有其他信号(地址、数据和控制)是共享的。 GMC 通过可编程时序支持多种设备,包括:

  • 可编程等待状态(最多 15 个)

  • 可编程总线周转周期(最多 15 个)

  • 可编程输出使能和写使能延迟(最多 15 个)

  • 独立的读写时序和协议,以支持最广泛的存储器和时序

  • 可编程连续时钟 (gmc_npc_clk) 输出。

GMC 输出时钟 (gmc_npc_clk) 是总线时钟 (bus_clk) 的分频。根据 GMC_BCR0 寄存器中 CCLKEN 位的配置,它可以在仅同步访问期间或在异步和同步访问期间提供给选定的外部设备:

  • 如果 CCLKEN 位复位,GMC 仅在同步访问(读/写事务)期间生成时钟 (gmc_npc_clk)。

  • 如果 CCLKEN 位置位,GMC 在异步和同步访问期间生成连续时钟。要生成 gmc_npc_clk 连续时钟,Bank 1 必须配置为同步模式。由于所有同步存储器使用同一时钟,当生成连续输出时钟并执行同步访问时,总线数据大小必须与存储器数据宽度 (MWID) 相同,否则 gmc_npc_clk 频率将根据总线数据事务而变化。

每个存储体的大小固定为 64 M字节。每个存储体通过专用寄存器配置。 可编程存储器参数包括访问时间(参见表 3.5)和对等待管理的支持(对于以突发模式访问的 PSRAM 和 NOR Flash 存储器)。

表3.5 可编程 NOR/PSRAM 访问参数

参数

功能

访问模式

单位

最小值

最大值

地址建立

地址建立阶段的持续时间

异步

GMC 时钟周期 (bus_clk)

1

15

地址保持

地址保持阶段的持续时间

异步, 复用 I/O

GMC 时钟周期 (bus_clk)

1

15

数据建立预置

数据预建立阶段的持续时间

异步

GMC 时钟周期 (bus_clk)

2

255

数据建立

数据建立阶段的持续时间

异步

GMC 时钟周期 (bus_clk)

2

255

总线周转

总线周转阶段的持续时间

异步和同步读

GMC 时钟周期 (bus_clk)

1

15

时钟分频比

构建一个存储器时钟周期 (gmc_npc_clk) 所需的 GMC 时钟周期 (bus_clk) 数

同步

GMC 时钟周期 (bus_clk)

1

15

数据延迟

在突发第一个数据之前发送给存储器的时钟周期数

同步

gmc_npc_clk 时钟周期

2

15

NWE 之后时间

NWE 拉高后,NE 有效的持续时间

异步

GMC 时钟周期 (bus_clk)

1

3

外部存储器接口信号

表 3.6、3.7、3.8 和 3.9 列出了通常用于与 NOR Flash 存储器、SRAM 和 PSRAM 接口的信号。

注意: 前缀 “N” 标识低电平有效的信号。

表3.6 非复用 I/O NOR Flash 存储器

GMC 信号

方向

宽度

描述

GMC_NPC_CLK

输出

1

时钟(用于同步访问)

GMC_NPC_ADDR[25:0]

输出

26

地址总线

GMC_NPC_DATA[31:0]

输入/输出

32

双向数据总线

GMC_NPC_NE

输出

4

片选

GMC_NPC_NOE

输出

1

读使能

GMC_NPC_NWE

输出

1

写使能

GMC_NPC_NADV

输出

1

地址有效

GMC_NPC_NWAIT

输入

1

NOR Flash 等待输入信号到 GMC

最大容量为 512 Mbits(26 条地址线)。

表3.7 16 位复用 I/O NOR Flash 存储器

GMC 信号

方向

宽度

描述

GMC_NPC_CLK

输出

1

时钟(用于同步访问)

GMC_NPC_ADDR[9:0]

输出

10

地址总线 bit0-bit9 是地址 MSB

GMC_NPC_DATA[15:0]

输入/输出

16

16 位复用双向地址/数据总线(16 位地址[15:0] 和数据 Data[15:0] 在数据总线上复用)

GMC_NPC_NE

输出

4

片选

GMC_NPC_NOE

输出

1

读使能

GMC_NPC_NWE

输出

1

写使能

GMC_NPC_NADV

输出

1

地址有效

GMC_NPC_NWAIT

输入

1

NOR Flash 等待输入信号到 GMC

最大容量为 512 Mbits(26 条地址线)。

表3.8 非复用 I/O PSRAM/SRAM

GMC 信号

方向

宽度

描述

GMC_NPC_CLK

输出

1

时钟(用于同步访问)

GMC_NPC_ADDR[25:0]

输出

26

地址总线

GMC_NPC_DATA[31:0]

输入/输出

32

双向数据总线

GMC_NPC_NE

输出

4

片选

GMC_NPC_NOE

输出

1

读使能

GMC_NPC_NWE

输出

1

写使能

GMC_NPC_NADV

输出

1

地址有效

GMC_NPC_NWAIT

输入

1

PSRAM 等待输入信号到 GMC

GMC_NPC_NBL

输出

4

字节通道输出。Byte 0 到 Byte 3 控制(高位和低位字节使能)

最大容量为 512 Mbits(26 条地址线)。

表3.9 非复用 I/O PSRAM

GMC 信号

方向

宽度

描述

GMC_NPC_CLK

输出

1

时钟(用于同步访问)

GMC_NPC_ADDR[9:0]

输出

10

地址总线

GMC_NPC_DATA[15:0]

输入/输出

16

16 位复用双向地址/数据总线

GMC_NPC_NE

输出

4

片选

GMC_NPC_NOE

输出

1

读使能

GMC_NPC_NWE

输出

1

写使能

GMC_NPC_NADV

输出

1

地址有效

GMC_NPC_NWAIT

输入

1

PSRAM 等待输入信号到 GMC

GMC_NPC_NBL

输出

2

字节通道输出。Byte 0 到 Byte 1 控制(高位和低位字节使能)

最大容量为 512 Mbits(26 条地址线)。

NOR Flash/PSRAM 控制器异步事务

对静态存储器(NOR Flash 存储器、PSRAM、SRAM)的异步事务执行如下:

  • 信号由内部时钟同步。此时钟不发送到存储器。

  • GMC 总是在取消断言片选信号之前采样数据。这保证了满足存储器数据保持时序约束(片选使能高电平到数据转换的最小时间通常为 0 ns)

模式 1 - SRAM/PSRAM (CRAM)

图3.3 和图3.4 分别显示了受支持模式的读写事务波形,表3.10、3.11、3.12和3.13 列出了 GMC_BCRx、GMC_BTRx、GMC_BTRPREx 和 GMC_BTO 寄存器所需的配置。

GMC 图3.3

图 3.3: 模式 1 读访问波形

GMC 图3.4

图 3.4: 模式 1 写访问波形

写事务结束时的总线时钟周期有助于保证 NWE 上升沿后的地址和数据保持时间。由于存在此总线时钟周期,DATAST 值必须大于零 (DATAST > 0)。

表3.10 GMC_BCRx 位域

位编号

位名称

要设置的值

31

GMCEN

0x1

30

Reserved

0x0

23:22

BMAP

根据需要

21

Reserved

0x0

20

CCLKEN

0x0

19

CBURSTRW

0x0(在异步模式下无效)

18:16

CPSIZE

0x0(在异步模式下无效)

15

ASYNCWAIT

如果存储器支持此功能则置 1。否则保持为 0

14

EXTMOD

0x0

13

WAITEN

0x0(在异步模式下无效)

12

WREN

根据需要

11

WAITCFG

无关

9

WAITPOL

仅在位 15 ASYNCWAIT 为 1 时有意义

8

BURSTEN

0x0

7

MODEEXMC

0x0

6

FACCEN

无关

5:4

MWID

根据需要

3:2

MTYP

根据需要,排除 0x2 (NOR Flash 存储器)

1

MUXEN

0x0

0

MBKEN

0x1

表3.11 GMC_BTRx 位域

位编号

位名称

要设置的值

31:30

EARLYTIME

根据需要

29:28

ACCMOD

无关

27:24

DATLAT

无关

23:20

CLKDIV

无关

19:16

BUSTURN

NEx 高电平到 NEx 低电平之间的时间 (BUSTURN 总线时钟周期)

15:8

DATAST

第二访问阶段的持续时间(写访问为 DATAST+1 总线时钟周期,读访问为 DATAST 总线时钟周期)

7:4

ADDHLD

无关

3:0

ADDSET

第一访问阶段的持续时间(ADDSET 总线时钟周期)。ADDSET 的最小值为 0

表3.12 GMC_BTRPREx 位域

位编号

位名称

要设置的值

31:8

Reserved

0x0

7:0

DATASPRE

无关

表3.13 GMC_BTO 位域

位编号

位名称

要设置的值

31:0

TIME

根据需要

模式 A - SRAM/PSRAM (CRAM) OE 切换

图3.5 和图3.6 分别显示了受支持模式的读写事务波形,表3.14、3.15、3.16、3.17和3.18 列出了 GMC_BCRx、GMC_BTRx、GMC_BTRPREx、GMC_BTO 和 GMC_BWTRx 寄存器所需的配置。

GMC 图3.5

图 3.5: 模式 A 读访问波形

GMC 图3.6

图 3.6: 模式 A 写访问波形

读访问期间 NBL[3:0] 被驱动为低电平。与模式 1 相比,差异在于 NOE 的切换以及独立的读写时序。

表3.14 GMC_BCRx 位域

位编号

位名称

要设置的值

31

GMCEN

0x1

30

Reserved

0x0

23:22

BMAP

根据需要

21

Reserved

0x0

20

CCLKEN

0x0

19

CBURSTRW

0x0(在异步模式下无效)

18:16

CPSIZE

0x0(在异步模式下无效)

15

ASYNCWAIT

如果存储器支持此功能则置 1。否则保持为 0

14

EXTMOD

0x1

13

WAITEN

0x0(在异步模式下无效)

12

WREN

根据需要

11

WAITCFG

无关

9

WAITPOL

仅在位 15 ASYNCWAIT 为 1 时有意义

8

BURSTEN

0x0

7

MODEEXMC

0x0

6

FACCEN

无关

5:4

MWID

根据需要

3:2

MTYP

根据需要,排除 0x2 (NOR Flash 存储器)

1

MUXEN

0x0

0

MBKEN

0x1

表3.15 GMC_BTRx 位域

位编号

位名称

要设置的值

31:30

EARLYTIME

根据需要

29:28

ACCMOD

0x0

27:24

DATLAT

无关

23:20

CLKDIV

无关

19:16

BUSTURN

NEx 高电平到 NEx 低电平之间的时间 (BUSTURN 总线时钟周期)

15:8

DATAST

第二访问阶段的持续时间(写访问为 DATAST+1 总线时钟周期,读访问为 DATAST 总线时钟周期)

7:4

ADDHLD

无关

3:0

ADDSET

第一访问阶段的持续时间(读访问为 ADDSET 总线时钟周期)。ADDSET 的最小值为 0

表3.16 GMC_BTRPREx 位域

位编号

位名称

要设置的值

31:8

Reserved

0x0

7:0

DATASPRE

无关

表3.17 GMC_BTO 位域

位编号

位名称

要设置的值

31:0

TIME

根据需要

表3.18 GMC_BWTRx 位域

位编号

位名称

要设置的值

31:30

Reserved

0x0

29:28

ACCMOD

0x0

27:24

DATLAT

无关

23:20

CLKDIV

无关

19:16

BUSTURN

NEx 高电平到 NEx 低电平之间的时间 (BUSTURN 总线时钟周期)

15:8

DATAST

第二访问阶段的持续时间(写访问为 DATAST 总线时钟周期)

7:4

ADDHLD

无关

3:0

ADDSET

第一访问阶段的持续时间(写访问为 ADDSET 总线时钟周期)。ADDSET 的最小值为 0

模式 2/B - NOR Flash

图3.7、图3.8 和 图3.9 分别显示了受支持模式的读写事务波形,表3.19、3.20、3.21和3.22 列出了 GMC_BCRx、GMC_BTRx、GMC_BTRPREx、GMC_BTO 寄存器所需的配置。

GMC 图3.7

图 3.7: 模式 2 和模式 B 读访问波形

GMC 图3.8

图 3.8: 模式 2 写访问波形

GMC 图3.9

图 3.9: 模式 B 写访问波形

表3.19 GMC_BCRx 位域

位编号

位名称

要设置的值

31

GMCEN

0x1

30

Reserved

0x0

23:22

BMAP

根据需要

21

Reserved

0x0

20

CCLKEN

0x0

19

CBURSTRW

0x0(在异步模式下无效)

18:16

CPSIZE

0x0(在异步模式下无效)

15

ASYNCWAIT

如果存储器支持此功能则置 1。否则保持为 0

14

EXTMOD

模式 B 为 0x1,模式 2 为 0x0

13

WAITEN

0x0(在异步模式下无效)

12

WREN

根据需要

11

WAITCFG

无关

9

WAITPOL

仅在位 15 ASYNCWAIT 为 1 时有意义

8

BURSTEN

0x0

7

MODEEXMC

0x0

6

FACCEN

0x1

5:4

MWID

根据需要

3:2

MTYP

0x2 (NOR Flash 存储器)

1

MUXEN

0x0

0

MBKEN

0x1

表3.20 GMC_BTRx 位域

位编号

位名称

要设置的值

31:30

EARLYTIME

根据需要

29:28

ACCMOD

0x0

27:24

DATLAT

无关

23:20

CLKDIV

无关

19:16

BUSTURN

NEx 高电平到 NEx 低电平之间的时间 (BUSTURN 总线时钟周期)

15:8

DATAST

第二访问阶段的持续时间(读访问为 DATAST 总线时钟周期)

7:4

ADDHLD

无关

3:0

ADDSET

第一访问阶段的持续时间(读访问为 ADDSET 总线时钟周期)。ADDSET 的最小值为 0

表3.21 GMC_BTRPREx 位域

位编号

位名称

要设置的值

31:8

Reserved

0x0

7:0

DATASPRE

无关

表3.22 GMC_BTO 位域

位编号

位名称

要设置的值

31:0

TIME

根据需要

模式 C - NOR Flash OE 切换

图3.10 和 图3.11 分别显示了受支持模式的读写事务波形,表3.23、3.24、3.25、3.26 和3.27 列出了 GMC_BCRx、GMC_BTRPREx、GMC_BTO、GMC_BTRx 和 GMC_BWTRx 寄存器所需的配置。

GMC 图3.10

图 3.10: 模式 C 读访问波形

GMC 图3.11

图 3.11: 模式 C 写访问波形

与模式 1 相比,差异在于 NOE 的切换以及独立的读写时序。

表3.23 GMC_BCRx 位域

位编号

位名称

要设置的值

31

GMCEN

0x1

30

Reserved

0x0

23:22

BMAP

根据需要

21

Reserved

0x0

20

CCLKEN

0x0

19

CBURSTRW

0x0(在异步模式下无效)

18:16

CPSIZE

0x0(在异步模式下无效)

15

ASYNCWAIT

如果存储器支持此功能则置 1。否则保持为 0

14

EXTMOD

0x1

13

WAITEN

0x0(在异步模式下无效)

12

WREN

根据需要

11

WAITCFG

无关

9

WAITPOL

仅在位 15 ASYNCWAIT 为 1 时有意义

8

BURSTEN

0x0

7

MODEEXMC

0x0

6

FACCEN

0x1

5:4

MWID

根据需要

3:2

MTYP

0x2 (NOR Flash 存储器)

1

MUXEN

0x0

0

MBKEN

0x1

表3.24 GMC_BTRPREx 位域

位编号

位名称

要设置的值

31:8

Reserved

0x0

7:0

DATASPRE

无关

表3.25 GMC_BTO 位域

位编号

位名称

要设置的值

31:0

TIME

根据需要

表3.26 GMC_BTRx 位域

位编号

位名称

要设置的值

31:30

EARLYTIME

根据需要

29:28

ACCMOD

0x2

27:24

DATLAT

0x0

23:20

CLKDIV

0x0

19:16

BUSTURN

NEx 高电平到 NEx 低电平之间的时间 (BUSTURN 总线时钟周期)

15:8

DATAST

第二访问阶段的持续时间(读访问为 DATAST 总线时钟周期)

7:4

ADDHLD

无关

3:0

ADDSET

第一访问阶段的持续时间(读访问为 ADDSET 总线时钟周期)。ADDSET 的最小值为 0

表3.27 GMC_BWTRx 位域

位编号

位名称

要设置的值

31:30

Reserved

0x0

29:28

ACCMOD

0x2

27:24

DATLAT

无关

23:20

CLKDIV

无关

19:16

BUSTURN

NEx 高电平到 NEx 低电平之间的时间 (BUSTURN 总线时钟周期)

15:8

DATAST

第二访问阶段的持续时间(写访问为 DATAST 总线时钟周期)

7:4

ADDHLD

无关

3:0

ADDSET

第一访问阶段的持续时间(写访问为 ADDSET 总线时钟周期)。ADDSET 的最小值为 0

模式 D - 带扩展地址的异步访问

图3.12 和图3.13 分别显示了受支持模式的读写事务波形,表3.28、3.29、3.30、3.31和3.32 列出了 GMC_BCRx、GMC_BTRx、GMC_BTRPREx、GMC_BTO 和 GMC_BWTRx 寄存器所需的配置。

GMC 图3.12

图 3.12: 模式 D 读访问波形

GMC 图3.13

图 3.13: 模式 D 写访问波形

与模式 1 相比,差异在于 NOE 在 NADV 改变后继续切换以及独立的读写时序。

表3.28 GMC_BCRx 位域

位编号

位名称

要设置的值

31

GMCEN

0x1

30

Reserved

0x0

23:22

BMAP

根据需要

21

Reserved

0x0

20

CCLKEN

0x0

19

CBURSTRW

0x0(在异步模式下无效)

18:16

CPSIZE

0x0(在异步模式下无效)

15

ASYNCWAIT

如果存储器支持此功能则置 1。否则保持为 0

14

EXTMOD

0x1

13

WAITEN

0x0(在异步模式下无效)

12

WREN

根据需要

11

WAITCFG

无关

9

WAITPOL

仅在位 15 ASYNCWAIT 为 1 时有意义

8

BURSTEN

0x0

7

MODEEXMC

0x0

6

FACCEN

根据存储器支持设置

5:4

MWID

根据需要

3:2

MTYP

根据需要

1

MUXEN

0x0

0

MBKEN

0x1

表3.29 GMC_BTRx 位域

位编号

位名称

要设置的值

31:30

EARLYTIME

根据需要

29:28

ACCMOD

0x3

27:24

DATLAT

无关

23:20

CLKDIV

无关

19:16

BUSTURN

NEx 高电平到 NEx 低电平之间的时间 (BUSTURN 总线时钟周期)

15:8

DATAST

第二访问阶段的持续时间(读访问为 DATAST 总线时钟周期)

7:4

ADDHLD

读访问中间阶段的持续时间(ADDHLD 总线时钟周期)

3:0

ADDSET

第一访问阶段的持续时间(读访问为 ADDSET 总线时钟周期)。ADDSET 的最小值为 1

表3.30 GMC_BTRPREx 位域

位编号

位名称

要设置的值

31:8

Reserved

0x0

7:0

DATASPRE

无关

表3.31 GMC_BTO 位域

位编号

位名称

要设置的值

31:0

TIME

根据需要

表3.32 GMC_BWTRx 位域

位编号

位名称

要设置的值

31:30

Reserved

0x0

29:28

ACCMOD

0x3

27:24

DATLAT

无关

23:20

CLKDIV

无关

19:16

BUSTURN

NEx 高电平到 NEx 低电平之间的时间 (BUSTURN 总线时钟周期)

15:8

DATAST

第二访问阶段的持续时间(写访问为 DATAST + 1 总线时钟周期)

7:4

ADDHLD

写访问中间阶段的持续时间(ADDHLD 总线时钟周期)

3:0

ADDSET

第一访问阶段的持续时间(写访问为 ADDSET 总线时钟周期)。ADDSET 的最小值为 1

复用模式 - 对 NOR Flash 存储器的复用异步访问

图3.14 和图3.15 分别显示了受支持模式的读写事务波形,表3.33、3.34、3.35、3.36 列出了 GMC_BCRx、GMC_BTRx、GMC_BTRPREx、GMC_BTO 寄存器所需的配置。

GMC 图3.14

图 3.14: 复用模式读访问波形

GMC 图3.15

图 3.15: 复用模式写访问波形

与模式 D 的差异在于低位地址字节在数据总线上驱动。

表3.33 GMC_BCRx 位域

位编号

位名称

要设置的值

31

GMCEN

0x1

30

Reserved

0x0

23:22

BMAP

根据需要

21

Reserved

0x0

20

CCLKEN

0x0

19

CBURSTRW

0x0(在异步模式下无效)

18:16

CPSIZE

0x0(在异步模式下无效)

15

ASYNCWAIT

如果存储器支持此功能则置 1。否则保持为 0

14

EXTMOD

0x0

13

WAITEN

0x0(在异步模式下无效)

12

WREN

根据需要

11

WAITCFG

无关

9

WAITPOL

仅在位 15 ASYNCWAIT 为 1 时有意义

8

BURSTEN

0x0

7

MODEEXMC

0x0

6

FACCEN

0x1

5:4

MWID

根据需要

3:2

MTYP

0x2 (NOR Flash 存储器)

1

MUXEN

0x1

0

MBKEN

0x1

表3.34 GMC_BTRx 位域

位编号

位名称

要设置的值

31:30

EARLYTIME

根据需要

29:28

ACCMOD

0x0

27:24

DATLAT

无关

23:20

CLKDIV

无关

19:16

BUSTURN

NEx 高电平到 NEx 低电平之间的时间 (BUSTURN 总线时钟周期)

15:8

DATAST

第二访问阶段的持续时间(读访问为 DATAST 总线时钟周期,写访问为 DATAST+1 总线时钟周期)

7:4

ADDHLD

读访问中间阶段的持续时间(ADDHLD 总线时钟周期)

3:0

ADDSET

第一访问阶段的持续时间(读访问为 ADDSET 总线时钟周期)。ADDSET 的最小值为 1

表3.35 GMC_BTRPREx 位域

位编号

位名称

要设置的值

31:8

Reserved

0x0

7:0

DATASPRE

无关

表3.36 GMC_BTO 位域

位编号

位名称

要设置的值

31:0

TIME

根据需要

异步 exmc 模式

exmc 模式与其他异步模式的区别在于,在 NWE 下降沿之前有数据预建立时间。对于读事务,建立时间由寄存器 DATASPRE 配置。

图3.16、3.17 和图3.18、3.19 分别显示了受支持模式的读写事务波形,表3.37、3.38、3.39、3.40 列出了 GMC_BCRx、GMC_BTRx、GMC_BTRPREx、GMC_BTO 寄存器所需的配置。

GMC 图3.16

图 3.16: 异步 Exmc 模式读访问波形

GMC 图3.17

图 3.17: 异步 Exmc 模式写访问波形

GMC 图3.18

图 3.18: 异步复用 Exmc 模式读访问波形

GMC 图3.19

图 3.19: 异步复用 Exmc 模式写访问波形

表3.37 GMC_BCRx 位域

位编号

位名称

要设置的值

31

GMCEN

0x1

30

Reserved

0x0

23:22

BMAP

根据需要

21

Reserved

0x0

20

CCLKEN

0x0

19

CBURSTRW

0x0(在异步模式下无效)

18:16

CPSIZE

0x0(在异步模式下无效)

15

ASYNCWAIT

如果存储器支持此功能则置 1。否则保持为 0

14

EXTMOD

0x0

13

WAITEN

0x0(在异步模式下无效)

12

WREN

根据需要

11

WAITCFG

无关

9

WAITPOL

仅在位 15 ASYNCWAIT 为 1 时有意义

8

BURSTEN

0x0

7

MODEEXMC

0x1

6

FACCEN

无关

5:4

MWID

根据需要

3:2

MTYP

根据需要,排除 0x2 (NOR Flash 存储器)

1

MUXEN

0x0

0

MBKEN

0x1

表3.38 GMC_BTRx 位域

位编号

位名称

要设置的值

31:30

EARLYTIME

根据需要

29:28

ACCMOD

无关

27:24

DATLAT

无关

23:20

CLKDIV

无关

19:16

BUSTURN

NEx 高电平到 NEx 低电平之间的时间 (BUSTURN 总线时钟周期)

15:8

DATAST

第二访问阶段的持续时间(写访问为 DATAST+1 总线时钟周期,读访问为 DATAST 总线时钟周期)

7:4

ADDHLD

无关

3:0

ADDSET

第一访问阶段的持续时间(读访问为 ADDSET 总线时钟周期)。ADDSET 的最小值为 0

表3.39 GMC_BTRPREx 位域

位编号

位名称

要设置的值

31:8

Reserved

0x0

7:0

DATASPRE

根据需要

表3.40 GMC_BTO 位域

位编号

位名称

要设置的值

31:0

TIME

根据需要

异步访问中的 WAIT 管理

如果异步存储器断言 WAIT 信号以指示其尚未准备好接收或提供数据,则必须在 GMC_BCRx 寄存器中设置 ASYNCWAIT 位。 如果 WAIT 信号有效(根据 WAITPOL 位为高电平或低电平),则由 DATAST 位编程的第二访问阶段(数据建立阶段)将延长,直到 WAIT 变为无效。与数据建立阶段不同,由 ADDSET 和 ADDHLD 位编程的第一访问阶段(地址建立和地址保持阶段)对 WAIT 不敏感,因此不会延长。 数据建立阶段必须编程为 WAIT 可以在存储器事务结束前 4 个 bus_clk 周期被检测到。必须考虑以下情况:

  1. 存储器断言 WAIT 信号与切换的 NOE/NWE 对齐

  • DATAST >= (4 x GMC_CLK) + max_wait_assertion_time

  1. 存储器断言 WAIT 信号与 NEx 对齐(或 NOE/NWE 不切换)

  • DATAST >= (4 x HCLK) + (max_wait_assertion_time - address_phase - hold_phase)(如果大于0)

  • DATAST >= (4 x HCLK)

其中 max_wait_assertion_time 是存储器在 NEx/NOE/NWE 变低后断言 WAIT 信号所需的最长时间。 NWAIT 极性取决于 GMC_BCRx 寄存器中 WAITPOL 位的设置。

同步事务

存储器时钟 GMC_CLK 是 bus_clk 的分频。它取决于 CLKDIV 的值,遵循以下公式:

  • GMC_NPC_CLK = bus_clk / (2 x CLKDIV)

NOR Flash 存储器指定了从 NADV 断言到 GMC_CLK 高电平的最小时间。为了满足此约束,GMC 在同步访问的第一个内部时钟周期(NADV 断言之前)不向存储器发送时钟。这保证了存储器时钟的上升沿出现在 NADV 低电平脉冲的中间

数据延迟与 NOR 存储器延迟

数据延迟是在采样数据之前等待的周期数。DATLAT 值必须与 NOR Flash 配置寄存器中指定的延迟值一致。GMC 在数据延迟计数中不包括 NADV 为低的时钟周期。 注意: 一些 NOR Flash 存储器在数据延迟计数中包括 NADV 低电平周期,因此 NOR Flash 延迟与 GMC DATLAT 参数之间的确切关系可以是:

  • NOR Flash 延迟 = (DATLAT + 2) 个 GMC_CLK 时钟周期

  • 或 NOR Flash 延迟 = (DATLAT + 3) 个 GMC_CLK 时钟周期

一些较新的存储器在延迟阶段断言 NWAIT。在这种情况下,DATLAT 可以设置为其最小值。因此,GMC 采样数据并等待足够长的时间来评估数据是否有效。这样 GMC 可以检测存储器何时退出延迟并处理真实数据。 其他存储器在延迟期间不断言 NWAIT。在这种情况下,GMC 和存储器的延迟都必须正确设置,否则无效数据会被误认为是好数据,或者有效数据在存储器访问的初始阶段丢失。

等待管理

对于同步 NOR Flash 存储器,NWAIT 在编程的延迟期之后被评估,该延迟期对应于 (DATLAT+2) 个 GMC_CLK 时钟周期。 如果 NWAIT 有效(WAITPOL = 0 时为低电平,WAITPOL = 1 时为高电平),则插入等待状态,直到 NWAIT 无效(WAITPOL = 0 时为高电平,WAITPOL = 1 时为低电平)。 当 NWAIT 无效时,数据被视为立即有效(位 WAITCFG = 1)或在下一个时钟沿有效(位 WAITCFG = 0)。 在通过 NWAIT 信号插入等待状态期间,控制器继续向存储器发送时钟脉冲,保持片选和输出使能信号有效。它不认为数据有效。 在突发模式下,NOR Flash NWAIT 信号有两种时序配置:

  • Flash 存储器在等待状态前一个数据周期断言 NWAIT 信号(复位后默认)。

  • Flash 存储器在等待状态期间断言 NWAIT 信号

GMC 通过 GMC_BCRx 寄存器(x = 0..3)中的 WAITCFG 位,支持每个片选的两种 NOR Flash 等待状态配置。 字节通道输出(NBL 未显示;对于 NOR 访问,它们保持高电平;对于 PSRAM (CRAM) 访问,它们保持低电平。 存储器必须提前一个周期发出 NWAIT 信号,因此 WAITCFG 必须编程为 0。 字节通道 (NBL) 输出未显示,它们在 NEx 有效时保持低电平。

GMC 图3.20

图 3.20: 同步复用模式读访问波形

GMC 图3.21

图 3.21: 同步复用模式写访问波形

表3.41 GMC_BCRx 位域

位编号

位名称

要设置的值

31

GMCEN

0x1

30

Reserved

0x0

23:22

BMAP

根据需要

21

Reserved

0x0

20

CCLKEN

0x0

19

CBURSTRW

0x1

18:16

CPSIZE

根据需要

15

ASYNCWAIT

0x0

14

EXTMOD

0x0

13

WAITEN

如果存储器支持此功能则设置为 1,否则保持为 0

12

WREN

对同步读无影响

11

WAITCFG

根据存储器设置

9

WAITPOL

根据存储器设置

8

BURSTEN

0x1

7

MODEEXMC

0x0

6

FACCEN

根据存储器支持设置(NOR Flash 存储器)

5:4

MWID

根据需要

3:2

MTYP

0x1

1

MUXEN

根据需要

0

MBKEN

0x1

表3.42 GMC_BTRx 位域

位编号

位名称

要设置的值

31:30

EARLYTIME

无关

29:28

ACCMOD

0x0

27:24

DATLAT

数据延迟

23:20

CLKDIV

根据需要

19:16

BUSTURN

NEx 高电平到 NEx 低电平之间的时间 (BUSTURN 总线时钟周期)

15:8

DATAST

无关

7:4

ADDHLD

无关

3:0

ADDSET

无关

表3.43 GMC_BCRx 位域

位编号

位名称

要设置的值

31

GMCEN

0x1

30

Reserved

0x0

23:22

BMAP

根据需要

21

Reserved

0x0

20

CCLKEN

0x1

19

CBURSTRW

0x1

18:16

CPSIZE

根据需要

15

ASYNCWAIT

0x0

14

EXTMOD

0x0

13

WAITEN

如果存储器支持此功能则设置为 1,否则保持为 0

12

WREN

对同步读无影响

11

WAITCFG

根据存储器设置

9

WAITPOL

根据存储器设置

8

BURSTEN

0x1

7

MODEEXMC

0x0

6

FACCEN

根据存储器支持设置(NOR Flash 存储器)

5:4

MWID

根据需要

3:2

MTYP

0x1

1

MUXEN

根据需要

0

MBKEN

0x1

表3.44 GMC_BTRx 位域

位编号

位名称

要设置的值

31:30

EARLYTIME

无关

29:28

ACCMOD

0x0

27:24

DATLAT

数据延迟

23:20

CLKDIV

根据需要

19:16

BUSTURN

NEx 高电平到 NEx 低电平之间的时间 (BUSTURN 总线时钟周期)

15:8

DATAST

无关

7:4

ADDHLD

无关

3:0

ADDSET

无关

SDRAM 控制器

SDRAM 控制器的主要特性如下:

  • 8位、16位、32位数据总线宽度

  • 2 或 4 个内部存储体

  • 11位、12位、13位行地址

  • 8位、9位、10位、11位列地址

  • SDRAM 时钟可分频为 1/2、1/4、1/6、1/8

  • 自动行和存储体边界管理

  • 可编程时序参数

  • 具有可编程刷新率的自动刷新操作

  • 自刷新模式

  • 掉电模式

  • 由软件触发的 SDRAM 上电初始化

SDRAM 框图

SDRAM 控制器如图3.22 中的主要模块组成

GMC 图3.22

图 3.22: SDRAM 控制器框图

SDRAM 初始化

  1. 向 SDRAM 控制器和设备供电

  2. 配置 CSR sden_init_en 为 0x1 以启动 SDRAM 初始化 FSM,SDRAM 控制器将按照下图3.23 所示的序列初始化 SDRAM 设备

GMC 图3.23

图 3.23: SDRAM 初始化序列

  1. CSR sdsr_init_stat 用于反馈 SDRAM 初始化的状态,当此 CSR 置位时,可以通过 ICB 总线发送写和读操作

SDRAM 写操作

SDRAM 控制器接受单次和突发写请求,并将它们转换为单次存储器访问。在这两种情况下,SDRAM 控制器跟踪每个存储体的活动行,以便能够对不同的存储体执行连续的写访问。 SDRAM 控制器总是检查下一次访问:

  • 如果下一次访问在同一行或另一个活动行中,则执行写操作。

  • 如果下一次访问目标为另一行(非活动),SDRAM 控制器生成预充电命令,激活新行并启动写命令。

GMC 图3.24

图 3.24: SDRAM 下一次写操作访问同一行

GMC 图3.25

图 3.25: SDRAM 下一次写操作访问不同行

SDRAM 读操作

SDRAM 控制器接受单次和突发读请求,并将它们转换为单次存储器访问。在这两种情况下,SDRAM 控制器跟踪每个存储体的活动行,以便能够对不同存储体执行连续的读访问。

GMC 图3.26

图 3.26: SDRAM 下一次读操作访问同一行

GMC 图3.27

图 3.27: SDRAM 下一次读操作访问不同行

SDRAM 边界管理

当读或写访问跨越行边界时,如果下一次读或写访问是顺序的,并且当前访问是对行边界执行的,SDRAM 控制器执行以下操作:

  1. 预充电活动行

  2. 激活新行

  3. 启动读/写命令

在行边界处,支持所有列和数据总线宽度配置的下一个行的自动激活。

SDRAM 自动刷新

自动刷新命令用于刷新 SDRAM 设备内容。SDRAM 控制器定期发出自动刷新命令。内部计数器加载了寄存器 sdrtr_tref 中的 COUNT 值。此值定义了刷新周期之间的存储器时钟周期数(刷新率)。当此计数器达到零时,生成内部请求。 如果正在进行的存储器访问,自动刷新请求被延迟。但是,如果存储器访问和自动刷新请求同时生成,则自动刷新请求优先。 如果存储器访问发生在自动刷新操作期间,则访问被缓冲并在自动刷新完成后处理。

SDRAM 低功耗模式

有两种低功耗模式可用:

  • 自刷新模式

  • 掉电模式

自刷新模式通过将 MODE 位设置为 “0001” 来选择。SDRAM 设备必须在自刷新模式下保持至少 TRAS 时间,并且可以在此之后无限期保持自刷新模式。 要退出自刷新模式,必须将 MODE 位设置为 “0000”(正常模式)。

GMC 图3.28

图 3.28: SDRAM 自刷新进入和退出序列

掉电模式通过将 MODE 位设置为 “0010” 来选择。在掉电模式期间,所有 SDRAM 设备输入和输出缓冲区都被停用,除了保持低电平的 sdr_cke。SDRAM 设备不能保持掉电模式超过刷新周期,并且不能自行执行自动刷新周期。 要退出掉电模式,必须将 MODE 位设置为 “0000”(正常模式)。

GMC 图3.29

图 3.29: SDRAM 掉电进入和退出序列

4. GMC 寄存器

表 4.1 显示了 GMC 中的寄存器及其对应的偏移地址。

表 4.1:GMC 中寄存器的偏移地址

偏移量

寄存器名称

功能描述

0x0

BCR0

Bank 0 的 SRAM/NOR-Flash 片选控制寄存器

0x8

BCR1

Bank 1 的 SRAM/NOR-Flash 片选控制寄存器

0x10

BCR2

Bank 2 的 SRAM/NOR-Flash 片选控制寄存器

0x18

BCR3

Bank 3 的 SRAM/NOR-Flash 片选控制寄存器

0x4

BTR0

Bank 0 的 SRAM/NOR-Flash 片选时序寄存器

0x20

BTRPRE0

Bank 0 的 SRAM/NOR-Flash 数据建立时间预置寄存器

0xC

BTR1

Bank 1 的 SRAM/NOR-Flash 片选时序寄存器

0x28

BTRPRE1

Bank 1 的 SRAM/NOR-Flash 数据建立时间预置寄存器

0x14

BTR2

Bank 2 的 SRAM/NOR-Flash 片选时序寄存器

0x30

BTRPRE2

Bank 2 的 SRAM/NOR-Flash 数据建立时间预置寄存器

0x1C

BTR3

Bank 3 的 SRAM/NOR-Flash 片选时序寄存器

0x38

BTRPRE3

Bank 3 的 SRAM/NOR-Flash 数据建立时间预置寄存器

0x24

BWTR0

Bank 0 的 SRAM/NOR-Flash 写时序寄存器

0x2C

BWTR1

Bank 1 的 SRAM/NOR-Flash 写时序寄存器

0x34

BWTR2

Bank 2 的 SRAM/NOR-Flash 写时序寄存器

0x3C

BWTR3

Bank 3 的 SRAM/NOR-Flash 写时序寄存器

0x50

BTO

Bank0~3 的 SRAM/NOR-Flash 超时寄存器

0x60

SDCR0

SDRAM 控制寄存器

0x68

SDTR0

SDRAM 时序寄存器

0x70

SDCMR

SDRAM 命令模式寄存器

0x74

SDEN

SDRAM 使能寄存器

0x78

SDRTR

SDRAM 刷新定时器控制寄存器

0x7C

SDSR

SDRAM 状态寄存器

0x80

MISC

SDRAM 杂项寄存器

0x84

GMCVER

GMC 版本寄存器

SRAM/NOR-FLASH 片选控制寄存器 (GMC_BCR0)

地址偏移:0x0

表 4.2:GMC_BCR0 寄存器格式

字段

位

访问

复位值

描述

MBKEN

0

RW

0x1

  • 存储体使能位

  • 1’b0: 存储体禁用

  • 1’b1: 对应存储体使能

MUXEN

1

RW

0x0

  • 地址/数据复用使能位

  • 1’b0: 地址/数据非复用

  • 1’b1: 地址/数据复用

MTYP

3:2

RW

0x2

  • 存储器类型

  • 2’b00: SRAM

  • 2’b01: PSRAM (CRAM)

  • 2’b10: NOR(oneNAND) Flash

MWID

5:4

RW

0x2

  • 存储器数据总线宽度

  • 2’b00: 8位

  • 2’b01: 16位

  • 2’b10: 32位

FACCEN

6

RW

0x1

  • Flash 访问使能

  • 1’b0: 对应 NOR Flash 存储器访问禁用

  • 1’b1: 对应 NOR Flash 存储器访问使能

MODEEXMC

7

RW

0x0

  • EXMC 模式使能

  • 1’b0: EXMC 模式禁用

  • 1’b1: EXMC 模式使能

BURSTEN

8

RW

0x0

  • 突发使能位

  • 1’b0: 突发模式禁用

  • 1’b1: 突发模式使能

WAITPOL

9

RW

0x0

  • 等待信号极性位

  • 1’b0: NWAIT 低电平有效

  • 1’b1: NWAIT 高电平有效

Reserved

10

/

0x0

/

WAITCFG

11

RW

0x0

  • 等待时序配置

  • 1’b0: NWAIT 信号在等待状态前一个数据周期有效

  • 1’b1: NWAIT 信号在等待状态期间有效

WREN

12

RW

0x1

  • 写使能位

  • 1’b0: GMC 在存储体中禁用写操作

  • 1’b1: GMC 在存储体中使能写操作

WAITEN

13

RW

0x1

  • 等待使能位

  • 1’b0: NWAIT 信号禁用

  • 1’b1: NWAIT 信号使能

EXTMOD

14

RW

0x0

  • 扩展模式使能

  • 1’b0: 不考虑 GMC_BWTR 寄存器内的值

  • 1’b1: 考虑 GMC_BWTR 寄存器内的值

ASYNCWAIT

15

RW

0x0

  • 异步传输期间的等待信号

  • 1’b0: 运行异步协议时不考虑 NWAIT 信号

  • 1’b1: 运行异步协议时考虑 NWAIT 信号

CPSIZE

18:16

RW

0x0

  • 页面大小:这些用于 Cellular RAM 1.5,它不允许突发访问跨越页面之间的地址边界。配置这些位后,当达到存储器页面大小时,GMC 控制器会自动拆分突发访问(页面大小请参阅存储器数据手册)

  • 3’b000: 跨页面边界时不拆分突发(复位后默认)

  • 3’b001: 128 字节

  • 3’b010: 256 字节

  • 3’b100: 1024 字节

CBURSTRW

19

RW

0x0

  • 写突发使能

  • 1’b0: 写操作始终以异步模式执行

  • 1’b1: 写操作以同步模式执行

CCLKEN

20

RW

0x0

  • 连续时钟使能

  • 1’b0: GMC_CLK 仅在同步存储器访问期间生成

  • 1’b1: GMC_CLK 在异步和同步访问期间连续生成

Reserved

21

/

0x0

/

BMAP

23:22

RW

0x2

  • GMC 存储体映射

  • 2’b00: 默认映射

  • 2’b01: NOR/PSRAM 存储体和 SDRAM Bank 1/Bank 2 交换

  • 2’b10: SDRAM Bank2 重映射到 GMC Bank2 并且仍然可以通过默认映射访问

Reserved

30:24

/

0x0

/

GMC_EN

31

RW

0x1

  • GMC 控制器使能

  • 1’b0: 禁用 GMC 控制器

  • 1’b1: 使能 GMC 控制器

注意:

  • GMC_BCR1 ~ 3 寄存器的 GMCEN 位无关紧要。它仅通过 GMC_BCR0 寄存器使能。

  • GMC_BCR1 ~ 3 寄存器的 BMAP 位无关紧要。它仅通过 GMC_BCR0 寄存器使能。

  • GMC_BCR1 ~ 3 寄存器的 CCLKEN 位无关紧要。它仅通过 GMC_BCR0 寄存器使能。Bank 1 必须配置为同步模式以生成 GMC_CLK 连续时钟。

SRAM/NOR-FLASH 片选控制寄存器 (GMC_BCR1)

地址偏移:0x8

表 4.3:GMC_BCR1 寄存器格式

字段

位

访问

复位值

描述

MBKEN

0

RW

0x0

  • 存储体使能位

  • 1’b0: 存储体禁用

  • 1’b1: 对应存储体使能

MUXEN

1

RW

0x1

  • 地址/数据复用使能位

  • 1’b0: 地址/数据非复用

  • 1’b1: 地址/数据在数据总线上复用

MTYP

3:2

RW

0x0

  • 存储器类型

  • 2’b00: SRAM

  • 2’b01: PSRAM (CRAM)

  • 2’b10: NOR(oneNAND) Flash

MWID

5:4

RW

0x1

  • 存储器数据总线宽度

  • 2’b00: 8位

  • 2’b01: 16位

  • 2’b10: 32位

FACCEN

6

RW

0x1

  • Flash 访问使能

  • 1’b0: 对应 NOR Flash 存储器访问禁用

  • 1’b1: 对应 NOR Flash 存储器访问使能

MODEEXMC

7

RW

0x0

  • EXMC 模式使能

  • 1’b0: EXMC 模式禁用

  • 1’b1: EXMC 模式使能

BURSTEN

8

RW

0x0

  • 突发使能位

  • 1’b0: 突发模式禁用

  • 1’b1: 突发模式使能

WAITPOL

9

RW

0x0

  • 等待信号极性位

  • 1’b0: NWAIT 低电平有效

  • 1’b1: NWAIT 高电平有效

Reserved

10

/

0x0

/

WAITCFG

11

RW

0x0

  • 等待时序配置

  • 1’b0: NWAIT 信号在等待状态前一个数据周期有效

  • 1’b1: NWAIT 信号在等待状态期间有效

WREN

12

RW

0x1

  • 写使能位

  • 1’b0: GMC 在存储体中禁用写操作

  • 1’b1: GMC 在存储体中使能写操作

WAITEN

13

RW

0x1

  • 等待使能位

  • 1’b0: NWAIT 信号禁用

  • 1’b1: NWAIT 信号使能

EXTMOD

14

RW

0x0

  • 扩展模式使能

  • 1’b0: 不考虑 GMC_BWTR 寄存器内的值

  • 1’b1: 考虑 GMC_BWTR 寄存器内的值

ASYNCWAIT

15

RW

0x0

  • 异步传输期间的等待信号

  • 1’b0: 运行异步协议时不考虑 NWAIT 信号

  • 1’b1: 运行异步协议时考虑 NWAIT 信号

CPSIZE

18:16

RW

0x0

  • 页面大小:这些用于 Cellular RAM 1.5,它不允许突发访问跨越页面之间的地址边界。配置这些位后,当达到存储器页面大小时,GMC 控制器会自动拆分突发访问(页面大小请参阅存储器数据手册)

  • 3’b000: 跨页面边界时不拆分突发(复位后默认)

  • 3’b001: 128 字节

  • 3’b010: 256 字节

  • 3’b100: 1024 字节

CBURSTRW

19

RW

0x0

  • 写突发使能

  • 1’b0: 写操作始终以异步模式执行

  • 1’b1: 写操作以同步模式执行

CCLKEN

20

RW

0x0

  • 连续时钟使能

  • 1’b0: GMC_CLK 仅在同步存储器访问期间生成

  • 1’b1: GMC_CLK 在异步和同步访问期间连续生成

Reserved

31:21

/

0x0

/

SRAM/NOR-FLASH 片选控制寄存器(用于 BANK 2)(GMC_BCR2)

地址偏移:0x10

表 4.4:GMC_BCR2 寄存器格式

字段

位

访问

复位值

描述

MBKEN

0

RW

0x0

  • 存储体使能位

  • 1’b0: 存储体禁用

  • 1’b1: 对应存储体使能

MUXEN

1

RW

0x1

  • 地址/数据复用使能位

  • 1’b0: 地址/数据非复用

  • 1’b1: 地址/数据在数据总线上复用

MTYP

3:2

RW

0x0

  • 存储器类型

  • 2’b00: SRAM

  • 2’b01: PSRAM (CRAM)

  • 2’b10: NOR(oneNAND) Flash

MWID

5:4

RW

0x1

  • 存储器数据总线宽度

  • 2’b00: 8位

  • 2’b01: 16位

  • 2’b10: 32位

FACCEN

6

RW

0x1

  • Flash 访问使能

  • 1’b0: 对应 NOR Flash 存储器访问禁用

  • 1’b1: 对应 NOR Flash 存储器访问使能

MODEEXMC

7

RW

0x0

  • EXMC 模式使能

  • 1’b0: EXMC 模式禁用

  • 1’b1: EXMC 模式使能

BURSTEN

8

RW

0x0

  • 突发使能位

  • 1’b0: 突发模式禁用

  • 1’b1: 突发模式使能

WAITPOL

9

RW

0x0

  • 等待信号极性位

  • 1’b0: NWAIT 低电平有效

  • 1’b1: NWAIT 高电平有效

Reserved

10

/

0x0

/

WAITCFG

11

RW

0x0

  • 等待时序配置

  • 1’b0: NWAIT 信号在等待状态前一个数据周期有效

  • 1’b1: NWAIT 信号在等待状态期间有效

WREN

12

RW

0x1

  • 写使能位

  • 1’b0: GMC 在存储体中禁用写操作

  • 1’b1: GMC 在存储体中使能写操作

WAITEN

13

RW

0x1

  • 等待使能位

  • 1’b0: NWAIT 信号禁用

  • 1’b1: NWAIT 信号使能

EXTMOD

14

RW

0x0

  • 扩展模式使能

  • 1’b0: 不考虑 GMC_BWTR 寄存器内的值

  • 1’b1: 考虑 GMC_BWTR 寄存器内的值

ASYNCWAIT

15

RW

0x0

  • 异步传输期间的等待信号

  • 1’b0: 运行异步协议时不考虑 NWAIT 信号

  • 1’b1: 运行异步协议时考虑 NWAIT 信号

CPSIZE

18:16

RW

0x0

  • 页面大小:这些用于 Cellular RAM 1.5,它不允许突发访问跨越页面之间的地址边界。配置这些位后,当达到存储器页面大小时,GMC 控制器会自动拆分突发访问(页面大小请参阅存储器数据手册)

  • 3’b000: 跨页面边界时不拆分突发(复位后默认)

  • 3’b001: 128 字节

  • 3’b010: 256 字节

  • 3’b100: 1024 字节

CBURSTRW

19

RW

0x0

  • 写突发使能

  • 1’b0: 写操作始终以异步模式执行

  • 1’b1: 写操作以同步模式执行

CCLKEN

20

RW

0x0

  • 连续时钟使能

  • 1’b0: GMC_CLK 仅在同步存储器访问期间生成

  • 1’b1: GMC_CLK 在异步和同步访问期间连续生成

Reserved

31:21

/

0x0

/

SRAM/NOR-FLASH 片选控制寄存器(用于 BANK 3)(GMC_BCR3)

地址偏移:0x18

表 4.5:GMC_BCR3 寄存器格式

字段

位

访问

复位值

描述

MBKEN

0

RW

0x0

  • 存储体使能位

  • 1’b0: 存储体禁用

  • 1’b1: 对应存储体使能

MUXEN

1

RW

0x1

  • 地址/数据复用使能位

  • 1’b0: 地址/数据非复用

  • 1’b1: 地址/数据在数据总线上复用

MTYP

3:2

RW

0x0

  • 存储器类型

  • 2’b00: SRAM

  • 2’b01: PSRAM (CRAM)

  • 2’b10: NOR(oneNAND) Flash

MWID

5:4

RW

0x1

  • 存储器数据总线宽度

  • 2’b00: 8位

  • 2’b01: 16位

  • 2’b10: 32位

FACCEN

6

RW

0x1

  • Flash 访问使能

  • 1’b0: 对应 NOR Flash 存储器访问禁用

  • 1’b1: 对应 NOR Flash 存储器访问使能

MODEEXMC

7

RW

0x0

  • EXMC 模式使能

  • 1’b0: EXMC 模式禁用

  • 1’b1: EXMC 模式使能

BURSTEN

8

RW

0x0

  • 突发使能位

  • 1’b0: 突发模式禁用

  • 1’b1: 突发模式使能

WAITPOL

9

RW

0x0

  • 等待信号极性位

  • 1’b0: NWAIT 低电平有效

  • 1’b1: NWAIT 高电平有效

Reserved

10

/

0x0

/

WAITCFG

11

RW

0x0

  • 等待时序配置

  • 1’b0: NWAIT 信号在等待状态前一个数据周期有效

  • 1’b1: NWAIT 信号在等待状态期间有效

WREN

12

RW

0x1

  • 写使能位

  • 1’b0: GMC 在存储体中禁用写操作

  • 1’b1: GMC 在存储体中使能写操作

WAITEN

13

RW

0x1

  • 等待使能位

  • 1’b0: NWAIT 信号禁用

  • 1’b1: NWAIT 信号使能

EXTMOD

14

RW

0x0

  • 扩展模式使能

  • 1’b0: 不考虑 GMC_BWTR 寄存器内的值

  • 1’b1: 考虑 GMC_BWTR 寄存器内的值

ASYNCWAIT

15

RW

0x0

  • 异步传输期间的等待信号

  • 1’b0: 运行异步协议时不考虑 NWAIT 信号

  • 1’b1: 运行异步协议时考虑 NWAIT 信号

CPSIZE

18:16

RW

0x0

  • 页面大小:这些用于 Cellular RAM 1.5,它不允许突发访问跨越页面之间的地址边界。配置这些位后,当达到存储器页面大小时,GMC 控制器会自动拆分突发访问(页面大小请参阅存储器数据手册)

  • 3’b000: 跨页面边界时不拆分突发(复位后默认)

  • 3’b001: 128 字节

  • 3’b010: 256 字节

  • 3’b100: 1024 字节

CBURSTRW

19

RW

0x0

  • 写突发使能

  • 1’b0: 写操作始终以异步模式执行

  • 1’b1: 写操作以同步模式执行

CCLKEN

20

RW

0x0

  • 连续时钟使能

  • 1’b0: GMC_CLK 仅在同步存储器访问期间生成

  • 1’b1: GMC_CLK 在异步和同步访问期间连续生成

Reserved

31:21

/

0x0

/

SRAM/NOR-FLASH 片选时序寄存器(用于 BANK 0)(GMC_BTR0)

该寄存器包含每个存储器组的控制信息,用于 SRAM、PSRAM 和 NOR Flash 存储器。如果 GMC_BCR0 寄存器中的 EXTMOD 位被置位,则该寄存器分为写访问和读访问两部分,即有两个寄存器可用:一个用于配置读访问(本寄存器),一个用于配置写访问(GMC_BWTR0 寄存器)。

地址偏移:0x4

表 4.6:GMC_BTR0 寄存器格式

字段

位

访问

复位值

描述

ADDSET

3:0

RW

0x4

地址建立阶段持续时间:ADDSET 阶段持续时间 = ADDSET × 总线时钟周期

ADDHLD

7:4

RW

0xF

地址保持阶段持续时间:ADDHLD 阶段持续时间 = ADDHLD × 总线时钟周期(ADDHLD 不能设为 0

DATAST

15:8

RW

0x4

数据阶段持续时间:DATAST 阶段持续时间 = DATAST × 总线时钟周期(DATAST 不能设为 0)

BUSTURN

19:16

RW

0xF

总线周转阶段持续时间:BUSTURN 阶段持续时间 = BUSTURN × 总线时钟周期(BUSTURN 不能设为 0)

CLKDIV

23:20

RW

0xF

时钟分频比(用于 GMC_CLK 信号):GMC_CLK 周期 = (CLKDIV + 1) × bus_clk 周期(CLKDIV 不能设为 0)

DATLAT

27:24

RW

0xF

同步存储器的数据延迟:首次突发访问的数据延迟为 (DATLAT + 2) 个 GMC_CLK 时钟周期

ACCMOD

29:28

RW

0x0

  • 访问模式

  • 2’b00:访问模式 A

  • 2’b01:访问模式 B

  • 2’b10:访问模式 C

  • 2’b11:访问模式 D

EARLYTIME

31:30

RW

0x1

在异步模式下,NWE 的上升沿与 NE 的上升沿之间的总线时钟周期数。仅适用于写事务。

注意: - 在同步访问中,DATAST 为无关项。 - 在同步访问中,ADDHLD 不使用,地址保持阶段始终为 1 个存储器时钟周期。 - 在同步访问中,ADDSET 为无关项。 - 在复用模式或模式 D 中,ADDSET 的最小值为 1。 - 在模式 1 和 PSRAM 存储器中,ADDSET 的最小值为 1。

PSRAM(CRAM)由于内部刷新而具有可变延迟。因此,这些存储器在整个延迟阶段发出 NWAIT 信号以根据需要延长延迟。 对于 PSRAM(CRAM),填充的 DATLAT 必须设置为 0,以便 GMC 尽快退出其延迟阶段并开始采样来自存储器的 NWAIT,然后在存储器准备就绪时开始读取或写入。 此方法也可用于支持发出 NWAIT 信号的最新同步 Flash 存储器,这与不发出 NWAIT 信号的旧式 Flash 存储器不同(请检查所使用的具体 Flash 存储器的数据手册)。

SRAM/NOR-FLASH 数据建立时间预置寄存器(用于 BANK 0)(GMC_BTRPRE0)

该寄存器包含异步模式下每个存储器组的控制信息,用于 SRAM、PSRAM 和 NOR Flash 存储器。如果启用 EXMC 模式,则 datastpre 个 bus_clk 是数据在 NWE 下降沿之前的建立时间,而 datastpre+2 个 bus_clk 是数据在 NOE 上升沿之前的建立时间。如果禁用 EXMC 模式,则这些位无效。

地址偏移:0x20

表 4.7:GMC_BTRPRE0 寄存器格式

字段

位

访问

复位值

描述

DATASTPRE

7:0

RW

0xF

数据在 NWE 下降沿之前的建立时间: datastpre × 总线时钟周期

保留

31:8

/

0x0

/

SRAM/NOR-FLASH 片选时序寄存器(用于 BANK 1)(GMC_BTR1)

该寄存器包含每个存储器组的控制信息,用于 SRAM、PSRAM 和 NOR Flash 存储器。如果 GMC_BCR1 寄存器中的 EXTMOD 位被置位,则该寄存器分为写访问和读访问两部分,即有两个寄存器可用:一个用于配置读访问(本寄存器),一个用于配置写访问(GMC_BWTR1 寄存器)。

地址偏移:0xC

表 4.8:GMC_BTR1 寄存器格式

字段

位

访问

复位值

描述

ADDSET

3:0

RW

0x4

地址建立阶段持续时间:ADDSET 阶段持续时间 = ADDSET × 总线时钟周期

ADDHLD

7:4

RW

0xF

地址保持阶段持续时间:ADDHLD 阶段持续时间 = ADDHLD × 总线时钟周期(ADDHLD 不能设为 0

DATAST

15:8

RW

0x4

数据阶段持续时间:DATAST 阶段持续时间 = DATAST × 总线时钟周期(DATAST 不能设为 0)

BUSTURN

19:16

RW

0xF

总线周转阶段持续时间:BUSTURN 阶段持续时间 = BUSTURN × 总线时钟周期(BUSTURN 不能设为 0)

CLKDIV

23:20

RW

0xF

时钟分频比(用于 GMC_CLK 信号):GMC_CLK 周期 = (CLKDIV + 1) × bus_clk 周期(CLKDIV 不能设为 0)

DATLAT

27:24

RW

0xF

同步存储器的数据延迟:首次突发访问的数据延迟为 (DATLAT + 2) 个 GMC_CLK 时钟周期

ACCMOD

29:28

RW

0x0

  • 访问模式

  • 2’b00:访问模式 A

  • 2’b01:访问模式 B

  • 2’b10:访问模式 C

  • 2’b11:访问模式 D

EARLYTIME

31:30

RW

0x1

在异步模式下,NWE 的上升沿与 NE 的上升沿之间的总线时钟周期数。仅适用于写事务。

注意:

  • 在同步访问中,DATAST 为无关项。

  • 在同步访问中,ADDHLD 不使用,地址保持阶段始终为 1 个存储器时钟周期。

  • 在同步访问中,ADDSET 为无关项。

  • 在复用模式或模式 D 中,ADDSET 的最小值为 1。

  • 在模式 1 和 PSRAM 存储器中,ADDSET 的最小值为 1。

PSRAM(CRAM)由于内部刷新而具有可变延迟。因此,这些存储器在整个延迟阶段发出 NWAIT 信号以根据需要延长延迟。 对于 PSRAM(CRAM),填充的 DATLAT 必须设置为 0,以便 GMC 尽快退出其延迟阶段并开始采样来自存储器的 NWAIT,然后在存储器准备就绪时开始读取或写入。 此方法也可用于支持发出 NWAIT 信号的最新同步 Flash 存储器,这与不发出 NWAIT 信号的旧式 Flash 存储器不同(请检查所使用的具体 Flash 存储器的数据手册)。

SRAM/NOR-FLASH 数据建立时间预置寄存器(用于 BANK 1)(GMC_BTRPRE1)

该寄存器包含异步模式下每个存储器组的控制信息,用于 SRAM、PSRAM 和 NOR Flash 存储器。如果启用 EXMC 模式,则 datastpre 个 bus_clk 是数据在 NWE 下降沿之前的建立时间,而 datastpre+2 个 bus_clk 是数据在 NOE 上升沿之前的建立时间。如果禁用 EXMC 模式,则这些位无效。

地址偏移:0x28

表 4.9:GMC_BTRPRE1 寄存器格式

字段

位

访问

复位值

描述

DATASTPRE

7:0

RW

0xF

数据在 NWE 下降沿之前的建立时间: datastpre × 总线时钟周期

保留

31:8

/

0x0

/

SRAM/NOR-FLASH 片选时序寄存器(用于 BANK 2)(GMC_BTR2)

该寄存器包含每个存储器组的控制信息,用于 SRAM、PSRAM 和 NOR Flash 存储器。如果 GMC_BCR2 寄存器中的 EXTMOD 位被置位,则该寄存器分为写访问和读访问两部分,即有两个寄存器可用:一个用于配置读访问(本寄存器),一个用于配置写访问(GMC_BWTR2 寄存器)。

地址偏移:0x14

表 4.10:GMC_BTR2 寄存器格式

字段

位

访问

复位值

描述

ADDSET

3:0

RW

0x4

地址建立阶段持续时间:ADDSET 阶段持续时间 = ADDSET × 总线时钟周期

ADDHLD

7:4

RW

0xF

地址保持阶段持续时间:ADDHLD 阶段持续时间 = ADDHLD × 总线时钟周期(ADDHLD 不能设为 0

DATAST

15:8

RW

0x4

数据阶段持续时间:DATAST 阶段持续时间 = DATAST × 总线时钟周期(DATAST 不能设为 0)

BUSTURN

19:16

RW

0xF

总线周转阶段持续时间:BUSTURN 阶段持续时间 = BUSTURN × 总线时钟周期(BUSTURN 不能设为 0)

CLKDIV

23:20

RW

0xF

时钟分频比(用于 GMC_CLK 信号):GMC_CLK 周期 = (CLKDIV + 1) × bus_clk 周期(CLKDIV 不能设为 0)

DATLAT

27:24

RW

0xF

同步存储器的数据延迟:首次突发访问的数据延迟为 (DATLAT + 2) 个 GMC_CLK 时钟周期

ACCMOD

29:28

RW

0x0

  • 访问模式

  • 2’b00:访问模式 A

  • 2’b01:访问模式 B

  • 2’b10:访问模式 C

  • 2’b11:访问模式 D

EARLYTIME

31:30

RW

0x1

在异步模式下,NWE 的上升沿与 NE 的上升沿之间的总线时钟周期数。仅适用于写事务。

注意:

  • 在同步访问中,DATAST 为无关项。

  • 在同步访问中,ADDHLD 不使用,地址保持阶段始终为 1 个存储器时钟周期。

  • 在同步访问中,ADDSET 为无关项。

  • 在复用模式或模式 D 中,ADDSET 的最小值为 1。

  • 在模式 1 和 PSRAM 存储器中,ADDSET 的最小值为 1。

PSRAM(CRAM)由于内部刷新而具有可变延迟。因此,这些存储器在整个延迟阶段发出 NWAIT 信号以根据需要延长延迟。 对于 PSRAM(CRAM),填充的 DATLAT 必须设置为 0,以便 GMC 尽快退出其延迟阶段并开始采样来自存储器的 NWAIT,然后在存储器准备就绪时开始读取或写入。 此方法也可用于支持发出 NWAIT 信号的最新同步 Flash 存储器,这与不发出 NWAIT 信号的旧式 Flash 存储器不同(请检查所使用的具体 Flash 存储器的数据手册)。

SRAM/NOR-FLASH 数据建立时间预置寄存器(用于 BANK 2)(GMC_BTRPRE2)

该寄存器包含异步模式下每个存储器组的控制信息,用于 SRAM、PSRAM 和 NOR Flash 存储器。如果启用 EXMC 模式,则 datastpre 个 bus_clk 是数据在 NWE 下降沿之前的建立时间,而 datastpre+2 个 bus_clk 是数据在 NOE 上升沿之前的建立时间。如果禁用 EXMC 模式,则这些位无效。

地址偏移:0x30

表 4.11:GMC_BTRPRE2 寄存器格式

字段

位

访问

复位值

描述

DATASTPRE

7:0

RW

0xF

数据在 NWE 下降沿之前的建立时间: datastpre × 总线时钟周期

保留

31:8

/

0x0

/

SRAM/NOR-FLASH 片选时序寄存器(用于 BANK 3)(GMC_BTR3)

该寄存器包含每个存储器组的控制信息,用于 SRAM、PSRAM 和 NOR Flash 存储器。如果 GMC_BCR3 寄存器中的 EXTMOD 位被置位,则该寄存器分为写访问和读访问两部分,即有两个寄存器可用:一个用于配置读访问(本寄存器),一个用于配置写访问(GMC_BWTR3 寄存器)。

地址偏移:0x1C

表 4.12:GMC_BTR3 寄存器格式

字段

位

访问

复位值

描述

ADDSET

3:0

RW

0x4

地址建立阶段持续时间:ADDSET 阶段持续时间 = ADDSET × 总线时钟周期

ADDHLD

7:4

RW

0xF

地址保持阶段持续时间:ADDHLD 阶段持续时间 = ADDHLD × 总线时钟周期(ADDHLD 不能设为 0

DATAST

15:8

RW

0x4

数据阶段持续时间:DATAST 阶段持续时间 = DATAST × 总线时钟周期(DATAST 不能设为 0)

BUSTURN

19:16

RW

0xF

总线周转阶段持续时间:BUSTURN 阶段持续时间 = BUSTURN × 总线时钟周期(BUSTURN 不能设为 0)

CLKDIV

23:20

RW

0xF

时钟分频比(用于 GMC_CLK 信号):GMC_CLK 周期 = (CLKDIV + 1) × bus_clk 周期(CLKDIV 不能设为 0)

DATLAT

27:24

RW

0xF

同步存储器的数据延迟:首次突发访问的数据延迟为 (DATLAT + 2) 个 GMC_CLK 时钟周期

ACCMOD

29:28

RW

0x0

  • 访问模式

  • 2’b00:访问模式 A

  • 2’b01:访问模式 B

  • 2’b10:访问模式 C

  • 2’b11:访问模式 D

EARLYTIME

31:30

RW

0x1

在异步模式下,NWE 的上升沿与 NE 的上升沿之间的总线时钟周期数。仅适用于写事务。

注意:

  • 在同步访问中,DATAST 为无关项。

  • 在同步访问中,ADDHLD 不使用,地址保持阶段始终为 1 个存储器时钟周期。

  • 在同步访问中,ADDSET 为无关项。

  • 在复用模式或模式 D 中,ADDSET 的最小值为 1。

  • 在模式 1 和 PSRAM 存储器中,ADDSET 的最小值为 1。

PSRAM(CRAM)由于内部刷新而具有可变延迟。因此,这些存储器在整个延迟阶段发出 NWAIT 信号以根据需要延长延迟。 对于 PSRAM(CRAM),填充的 DATLAT 必须设置为 0,以便 GMC 尽快退出其延迟阶段并开始采样来自存储器的 NWAIT,然后在存储器准备就绪时开始读取或写入。 此方法也可用于支持发出 NWAIT 信号的最新同步 Flash 存储器,这与不发出 NWAIT 信号的旧式 Flash 存储器不同(请检查所使用的具体 Flash 存储器的数据手册)。

SRAM/NOR-FLASH 数据建立时间预置寄存器(用于 BANK 3)(GMC_BTRPRE3)

该寄存器包含异步模式下每个存储器组的控制信息,用于 SRAM、PSRAM 和 NOR Flash 存储器。如果启用 EXMC 模式,则 datastpre 个 bus_clk 是数据在 NWE 下降沿之前的建立时间,而 datastpre+2 个 bus_clk 是数据在 NOE 上升沿之前的建立时间。如果禁用 EXMC 模式,则这些位无效。

地址偏移:0x38

表 4.13:GMC_BTRPRE3 寄存器格式

字段

位

访问

复位值

描述

DATASTPRE

7:0

RW

0xF

数据在 NWE 下降沿之前的建立时间: datastpre × 总线时钟周期

保留

31:8

/

0x0

/

SRAM/NOR-FLASH 写时序寄存器(用于 BANK 0)(GMC_BWTR0)

该寄存器包含每个存储器组的控制信息。用于 SRAM、PSRAM 和 NOR Flash 存储器。当 GMC_BCR0 寄存器中的 EXTMOD 位置位时,此寄存器对写访问有效。

地址偏移:0x24

表 4.14:GMC_BWTR0 寄存器格式

字段

位

访问

复位值

描述

ADDSET

3:0

RW

0x4

地址建立阶段持续时间:ADDSET 阶段持续时间 = ADDSET × 总线时钟周期

ADDHLD

7:4

RW

0xF

地址保持阶段持续时间:ADDHLD 阶段持续时间 = ADDHLD × 总线时钟周期(ADDHLD 不能设为 0

DATAST

15:8

RW

0x4

数据阶段持续时间:DATAST 阶段持续时间 = DATAST × 总线时钟周期(DATAST 不能设为 0)

BUSTURN

19:16

RW

0xF

总线周转阶段持续时间:BUSTURN 阶段持续时间 = BUSTURN × 总线时钟周期(BUSTURN 不能设为 0)

保留

27:20

/

0x0

/

ACCMOD

29:28

RW

0x0

  • 访问模式

  • 2’b00:访问模式 A

  • 2’b01:访问模式 B

  • 2’b10:访问模式 C

  • 2’b11:访问模式 D

保留

31:30

/

0x0

/

注意:

  • 在同步 NOR Flash 访问中,ADDHLD 不使用,地址保持阶段始终为 1 个 Flash 时钟周期。

  • 在同步访问中,ADDSET 不使用,地址建立阶段始终为 1 个 Flash 时钟周期。

  • 在复用模式中,ADDSET 的最小值为 1。

SRAM/NOR-FLASH 写时序寄存器(用于 BANK 1)(GMC_BWTR1)

该寄存器包含每个存储器组的控制信息。用于 SRAM、PSRAM 和 NOR Flash 存储器。当 GMC_BCR1 寄存器中的 EXTMOD 位置位时,此寄存器对写访问有效。

地址偏移:0x2C

表 4.15:GMC_BWTR1 寄存器格式

字段

位

访问

复位值

描述

ADDSET

3:0

RW

0x4

地址建立阶段持续时间:ADDSET 阶段持续时间 = ADDSET × 总线时钟周期

ADDHLD

7:4

RW

0xF

地址保持阶段持续时间:ADDHLD 阶段持续时间 = ADDHLD × 总线时钟周期(ADDHLD 不能设为 0

DATAST

15:8

RW

0x4

数据阶段持续时间:DATAST 阶段持续时间 = DATAST × 总线时钟周期(DATAST 不能设为 0)

BUSTURN

19:16

RW

0xF

总线周转阶段持续时间:BUSTURN 阶段持续时间 = BUSTURN × 总线时钟周期(BUSTURN 不能设为 0)

保留

27:20

/

0x0

/

ACCMOD

29:28

RW

0x0

  • 访问模式

  • 2’b00:访问模式 A

  • 2’b01:访问模式 B

  • 2’b10:访问模式 C

  • 2’b11:访问模式 D

保留

31:30

/

0x0

/

注意:

  • 在同步 NOR Flash 访问中,ADDHLD 不使用,地址保持阶段始终为 1 个 Flash 时钟周期。

  • 在同步访问中,ADDSET 不使用,地址建立阶段始终为 1 个 Flash 时钟周期。

  • 在复用模式中,ADDSET 的最小值为 1。

SRAM/NOR-FLASH 写时序寄存器(用于 BANK 2)(GMC_BWTR2)

该寄存器包含每个存储器组的控制信息。用于 SRAM、PSRAM 和 NOR Flash 存储器。当 GMC_BCR2 寄存器中的 EXTMOD 位置位时,此寄存器对写访问有效。

地址偏移:0x34

表 4.16:GMC_BWTR2 寄存器格式

字段

位

访问

复位值

描述

ADDSET

3:0

RW

0x4

地址建立阶段持续时间:ADDSET 阶段持续时间 = ADDSET × 总线时钟周期

ADDHLD

7:4

RW

0xF

地址保持阶段持续时间:ADDHLD 阶段持续时间 = ADDHLD × 总线时钟周期(ADDHLD 不能设为 0

DATAST

15:8

RW

0x4

数据阶段持续时间:DATAST 阶段持续时间 = DATAST × 总线时钟周期(DATAST 不能设为 0)

BUSTURN

19:16

RW

0xF

总线周转阶段持续时间:BUSTURN 阶段持续时间 = BUSTURN × 总线时钟周期(BUSTURN 不能设为 0)

保留

27:20

/

0x0

/

ACCMOD

29:28

RW

0x0

  • 访问模式

  • 2’b00:访问模式 A

  • 2’b01:访问模式 B

  • 2’b10:访问模式 C

  • 2’b11:访问模式 D

保留

31:30

/

0x0

/

注意:

  • 在同步 NOR Flash 访问中,ADDHLD 不使用,地址保持阶段始终为 1 个 Flash 时钟周期。

  • 在同步访问中,ADDSET 不使用,地址建立阶段始终为 1 个 Flash 时钟周期。

  • 在复用模式中,ADDSET 的最小值为 1。

SRAM/NOR-FLASH 写时序寄存器(用于 BANK 3)(GMC_BWTR3)

该寄存器包含每个存储器组的控制信息。用于 SRAM、PSRAM 和 NOR Flash 存储器。当 GMC_BCR3 寄存器中的 EXTMOD 位置位时,此寄存器对写访问有效。

地址偏移:0x3C

表 4.17:GMC_BWTR3 寄存器格式

字段

位

访问

复位值

描述

ADDSET

3:0

RW

0x4

地址建立阶段持续时间:ADDSET 阶段持续时间 = ADDSET × 总线时钟周期

ADDHLD

7:4

RW

0xF

地址保持阶段持续时间:ADDHLD 阶段持续时间 = ADDHLD × 总线时钟周期(ADDHLD 不能设为 0

DATAST

15:8

RW

0x4

数据阶段持续时间:DATAST 阶段持续时间 = DATAST × 总线时钟周期(DATAST 不能设为 0)

BUSTURN

19:16

RW

0xF

总线周转阶段持续时间:BUSTURN 阶段持续时间 = BUSTURN × 总线时钟周期(BUSTURN 不能设为 0)

保留

27:20

/

0x0

/

ACCMOD

29:28

RW

0x0

  • 访问模式

  • 2’b00:访问模式 A

  • 2’b01:访问模式 B

  • 2’b10:访问模式 C

  • 2’b11:访问模式 D

保留

31:30

/

0x0

/

注意:

  • 在同步 NOR Flash 访问中,ADDHLD 不使用,地址保持阶段始终为 1 个 Flash 时钟周期。

  • 在同步访问中,ADDSET 不使用,地址建立阶段始终为 1 个 Flash 时钟周期。

  • 在复用模式中,ADDSET 的最小值为 1。

SRAM/NOR-FLASH 超时寄存器(用于 BANK0~3)(GMC_BTO)

SDRAM 控制器长时间占用总线。当其占用时间超过特定值时,NOR/PSRAM 控制器的事务会被强制结束。

地址偏移:0x50

表 4.18:GMC_BTO 寄存器格式

字段

位

访问

复位值

描述

TIME

31:0

RW

0x78

SDRAM 控制器长时间占用总线。当其占用时间超过特定值时,NOR/PSRAM 控制器的事务会被强制结束。

SDRAM 控制寄存器 (GMC_SDCR0)

地址偏移:0x60

表 4.19:GMC_SDCR0 寄存器格式

字段

位

访问

复位值

描述

NC

1:0

RW

0x2

  • 列地址位数

  • 2’b00:8位

  • 2’b01:9位

  • 2’b10:10位

  • 2’b11:11位

NR

3:2

RW

0x2

  • 行地址位数

  • 2’b00:11位

  • 2’b01:12位

  • 2’b10:13位

  • 2’b11:保留

MWID

5:4

RW

0x1

  • 存储器数据总线宽度

  • 2’b00: 8位

  • 2’b01: 16位

  • 2’b10: 32位

  • 2’b11:保留

NB

6

RW

0x1

  • 内部存储组数量

  • 1’b0: 2个内部存储组

  • 1’b1: 4个内部存储组

WE

7

RW

0x0

  • 写使能

  • 1’b0: 写访问使能

  • 1’b1: 写访问被忽略

SDCLK

10:8

RW

0x1

  • SDC 时钟配置

  • 3’b001: sdc 时钟周期为 gmc 时钟周期的 1/2

  • 3’b011: sdc 时钟周期为 gmc 时钟周期的 1/4

  • 3’b101: sdc 时钟周期为 gmc 时钟周期的 1/6

  • 3’b111: sdc 时钟周期为 gmc 时钟周期的 1/8

Reserved

31:11

/

0x0

/

SDRAM 时序寄存器 (GMC_SDTR0)

地址偏移:0x68

表 4.20:GMC_SDTR0 寄存器格式

字段

位

访问

复位值

描述

TMRD

3:0

RW

0x0

  • 加载模式寄存器到激活的延迟

  • 4’b0000:1个 gmc 时钟周期

  • 4’b0001:2个 gmc 时钟周期

  • 4’b0010:3个 gmc 时钟周期

  • …

  • 4’b1111:16个 gmc 时钟周期

TXSR

7:4

RW

0x0

  • 发出激活命令前退出自刷新的延迟

  • 4’b0000:1个 gmc 时钟周期

  • 4’b0001:2个 gmc 时钟周期

  • 4’b0010:3个 gmc 时钟周期

  • …

  • 4’b1111:16个 gmc 时钟周期

TRAS

11:8

RW

0x0

  • 激活到预充电的延迟

  • 4’b0000:1个 gmc 时钟周期

  • 4’b0001:2个 gmc 时钟周期

  • 4’b0010:3个 gmc 时钟周期

  • …

  • 4’b1111:16个 gmc 时钟周期

TRC

15:12

RW

0x8

  • 行激活到激活的延迟,也是自动刷新周期

  • 4’b0000:1个 gmc 时钟周期

  • 4’b0001:2个 gmc 时钟周期

  • 4’b0010:3个 gmc 时钟周期

  • …

  • 4’b1111:16个 gmc 时钟周期

TWR

19:16

RW

0x1

  • 写恢复延迟

  • 4’b0000:1个 gmc 时钟周期

  • 4’b0001:2个 gmc 时钟周期

  • 4’b0010:3个 gmc 时钟周期

  • …

  • 4’b1111:16个 gmc 时钟周期

TRP

23:20

RW

0x1

  • 发出另一个命令前行预充电的延迟

  • 4’b0000:1个 gmc 时钟周期

  • 4’b0001:2个 gmc 时钟周期

  • 4’b0010:3个 gmc 时钟周期

  • …

  • 4’b1111:16个 gmc 时钟周期

TRCD

27:24

RW

0x1

  • 行到列的延迟(即激活到读/写命令的延迟)

  • 4’b0000:1个 gmc 时钟周期

  • 4’b0001:2个 gmc 时钟周期

  • 4’b0010:3个 gmc 时钟周期

  • …

  • 4’b1111:16个 gmc 时钟周期

TPWRUP

31:28

RW

0x0

  • CKE 断言后的延迟时间

  • 4’b0000:1个 gmc 时钟周期

  • 4’b0001:2个 gmc 时钟周期

  • 4’b0010:3个 gmc 时钟周期

  • …

  • 4’b1111:16个 gmc 时钟周期

SDRAM 命令模式寄存器 (GMC_SDCMR)

地址偏移:0x70

表 4.21:GMC_SDCMR 寄存器格式

字段

位

访问

复位值

描述

MODE

3:0

RW

0x0

  • 命令模式

  • 4’b0000:正常操作(读/写)

  • 4’b0001:进入自刷新

  • 4’b0010:低功耗模式

  • 其他:保留

CTB

5:4

RW

0x0

  • 命令目标 rank0/1

  • 2’b00:命令未发向 rank0/1

  • 2’b01:命令发向 rank0

  • 2’b10:命令发向 rank1

  • 2’b11:命令发向 rank0/1

NRFS

9:6

RW

0x1

  • SDRAM 初始化过程中发送的刷新命令数量

  • 4’b0000:1

  • 4’b0001:2

  • 4’b0010:3

  • …

  • 4’b1111:16

MRD

22:10

RW

0x0

  • SDRAM 模式寄存器内容

保留

31:23

/

0x0

/

SDRAM 使能寄存器 (GMC_SDEN)

地址偏移:0x74

表 4.22:GMC_SDEN 寄存器格式

字段

位

访问

复位值

描述

INIT_EN

0

RW

0x0

  • 触发初始化过程

  • 1’b0:无操作

  • 1’b1:开始初始化

保留

31:1

/

0x0

/

SDRAM 刷新定时器控制寄存器 (GMC_SDRTR)

地址偏移:0x78

表 4.23:GMC_SDRTR 寄存器格式

字段

位

访问

复位值

描述

CRE

0

RW

0x0

  • 清除刷新错误标志

  • 1’b0:无效果

  • 1’b1:清除刷新错误标志

TREF

13:1

RW

0xc35

刷新时间周期

保留

31:14

/

0x0

/

SDRAM 状态寄存器 (GMC_SDSR)

地址偏移:0x7C

表 4.24:GMC_SDSR 寄存器格式

字段

位

访问

复位值

描述

MODES0

1:0

RO

0x0

  • BANK0 的状态模式

  • 2’b00: 正常操作,读/写进行中

  • 2’b01: 自刷新模式

  • 2’b10: 软件掉电模式

  • 2’b11: 硬件掉电模式

MODES1

3:2

RO

0x0

  • BANK1 的状态模式

  • 2’b00: 正常操作,读/写进行中

  • 2’b01: 自刷新模式

  • 2’b10: 软件掉电模式

INIT_STAT

4

RO

0x0

  • 初始化状态

  • 1’b0: 初始化未完成

  • 1’b1: 初始化完成

保留

31:5

/

0x0

/

SDRAM 杂项寄存器 (GMC_MISC)

地址偏移:0x80

表 4.25:GMC_MISC 寄存器格式

字段

位

访问

复位值

描述

AREF_REQ

7:0

RW

0x80

  • 在内部自动刷新请求断言前的这么多时钟周期(AREF_REQ × 8)内,需要将 SDRAM 总线的请求传输到 Flash 控制器。

  • 8’b00000000:0个 gmc 时钟周期

  • 8’b00000001:8个 gmc 时钟周期

  • 8’b00000010:16个 gmc 时钟周期

  • …

  • 8’b11111111:2040个 gmc 时钟周期

PWD_ENT

15:8

RW

0x80

  • 在命令通道空闲这么多时钟周期(PWD_ENT × 16)后,SDRAM 控制器自动将 SDRAM 置于掉电模式。

  • 8’b00000000:0个 gmc 时钟周期

  • 8’b00000001:16个 gmc 时钟周期

  • 8’b00000010:32个 gmc 时钟周期

  • …

  • 8’b11111111:4080个 gmc 时钟周期

MAP_MODE

16

RW

0x0

  • 地址映射模式

  • 1’b0: bank_row_column

  • 1’b1: row_bank_column

XOP_STATE

21:17

RO

0x0

全局有限状态机状态,用于调试

AREF_ERROR

22

RO

0x0

自动刷新错误标志,用于调试。

保留

31:23

/

0x0

/

GMC 版本寄存器 (GMCVER)

地址偏移:0x84

表 4.26:GMCVER 寄存器格式

字段

位

访问

复位值

描述

IDVAL

23:0

RO

0X10301

GMC 版本 ID