DTR Flash¶
芯片内置了支持以DTR、单线、四线方式工作的Nor Flash控制器,可以支持各类Nor Flash器件。芯片已内置有Nor Flash,用户使用时可以直接调用SDK中的相应驱动代码,来实现Flash烧写和读取等功能。
功能介绍¶
DMA控制器主要特征如下:
- 数据总线接口:
- 支持BIT/HALF-WORD/WORD读写操作
- 支持SINGLE/BURST4/BURST8/BUSRT16操作
- SPI接口:
- 支持4线SPI
- 支持SPI(单线)/OCTAL(4线)/DTR(4线双沿)三种传输模式
- 兼容FLASH各种命令操作
- 支持发送操作的相位调整
- 支持采集数据时的采集时钟相位调整及delayline微调
- 支持DQS方式采集数据
- 三种控制器操作模式:
- 预取读操作模式(XIP)
- 通用操作模式
- 传输支持寄存器或FIFO缓存
- 一个读操作异步FIFO,数据宽度32BIT,深度64,触发阈值可配置
- 一个写操作异步FIFO,数据宽度32BIT,深度64,触发阈值可配置
- 两个32BIT的数据配置寄存器
- 两个32BIT的数据读取寄存器
- 支持的中断类型:
- 通用操作模式完成标志中断源
- 错误的写操作中断源
- FIFO underflow\overflow中断源
- 复位期间操作中断源
- 支持DMA传输
寄存器映射¶
DTR Flash控制器的寄存器映射基地址为0x40004000,详见表F-1。
表F-1 DTR Flash寄存器映射
偏移量 | 名称 | 位宽 | 类型 | 复位值 | 描述 |
---|---|---|---|---|---|
0x00 | GLOBE_CFG | 32 | R/W | 0x00000000 | 全局配置寄存器 |
0x04 | GLOBE1_CFG | 32 | R/W | 0x00000000 | 全局配置寄存器1 |
0x08 | RX_CLK_CFG | 32 | R/W | 0x00000010 | 接收时钟配置寄存器 |
0x0C | ADDR_MASK_CFG | 32 | R/W | 0x00000FFF | 地址屏蔽配置寄存器 |
0x10 | GM_CFG | 32 | R/W | 0x00000000 | 通用模式配置寄存器 |
0x14 | GM1_CFG | 32 | R/W | 0x00000000 | 通用模式配置寄存器1 |
0x18 | GM_ADDR_CFG | 32 | R/W | 0x00000000 | 通用模式读写地址配置寄存器 |
0x1C | GM_DATA_SIZE_CFG | 32 | R/W | 0x00000000 | 通用模式数据大小配置寄存器 |
0x20 | RD_CFG | 32 | R/W | 0x00000000 | 预取读模式配置寄存器 |
0x24 | RD1_CFG | 32 | R/W | 0x00000000 | 预取读模式配置寄存器1 |
0x30 | FIFO_LEVEL_CFG | 32 | R/W | 0x00000000 | FIFO级别配置寄存器 |
0x34 | R/W_DATA0_CFG | 32 | R/W | 0x00000000 | 读写缓存寄存器0 |
0x38 | R/W_DATA1_CFG | 32 | R/W | 0x00000000 | 读写缓存寄存器1 |
0x3C | INT_CTRL_CFG | 32 | R/W | 0x00000000 | 中断控制配置寄存器 |
0x40 | STATE_REG | 32 | R/W | 0x00000040 | 状态寄存器 |
全局配置寄存器(GLOBE_CFG)¶
偏移量:0x000
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:14 | Reserved | 0 | R/W | Reserved |
13 | flash_clk_bypass | 0x0 | R/W | Flash器件时钟旁路,可以使控制器核Flash采用同一个外部时钟,配置为1有效。当使能此功能时,需要tx_data_shift发送数据相位配置为0、rx_nege_en和rx_nege_sample配置为1。 |
12 | dpm_en | 0x0 | R/W | 发送的dpm模式使能,配置为1有效 |
11 | dtr_tx_nege_en | 0x0 | R/W | DTR模式下发送数据时钟下降沿相位调整,配置为1有效 |
10:8 | dtr_tx_data_shift | 0x0 | R/W | DTR模式下发送数据时钟相位平移的周期数 |
7 | dtr_tx_nege_en | 0x0 | R/W | 正常模式下发送数据时钟下降沿相位调整,配置为1有效 |
6:4 | dtr_tx_data_shift | 0x0 | R/W | 正常模式下发送数据时钟相位平移的周期数 |
3:2 | ram_clk_md | 0x0 | R/W | fifo的flash侧时钟与内部sram时钟频率关系: 0:同频 1:2分频 2:4分频 |
1:0 | flash_clk_div | 0x0 | R/W | Flash器件时钟的频率: 0:内核时钟的2分频 1:内核时钟的4分频 2:内核时钟的6分频 3:内核时钟的8分频 |
全局配置寄存器1(GLOBE1_CFG)¶
偏移量:0x004
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:11 | Reserved | 0 | R/W | Reserved |
10 | flash_R/Wdata_maxnum_en | 0x0 | R/W | 单次传输限制使能,配置为1有效 |
9:2 | flash_R/Wdata_maxnum | 0x0 | R/W | 单次传输最大的读写数据个数,其值为该寄存器配置值再加1个Word |
1 | flash_hw_reset | 0x0 | R/W | flash硬件复位,配置为1有效 |
0 | ecc_dect_en | 0x0 | R/W | ECC信号检测使能,配置为1有效 |
接收时钟配置寄存器(RX_CLK_CFG)¶
偏移量:0x08
复位值:0x00000010
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:22 | Reserved | 0 | R/W | Reserved |
21 | rx_nege_sample | 0x0 | R/W | 非DTR模式下,接收时钟使用下降沿采样,配置为1有效 |
20 | rx_dqs_en | 0x0 | R/W | 接收时钟选择外部dps信号,配置为1有效 |
19:4 | rx_clk_delay_sel | 0x1 | R/W | delay_line选择: [19]RX_CLK时域,rx_wptr相位选择 0x0:下降沿采样 0x1:上升沿采样 [18]RX_CLK时域,rx_wptr输出选择 0x0:原始rx_wptr输出 0x1:相位调整rx_wptr输出 [17]core_clk时域,rx_wptr相位选择 0x0:下降沿采样 0x1:上升沿采样 [16]core_clk时域,rx_wptr输出选择 0x0:原始rx_wptr输出 0x1:相位调整rx_wptr输出 [15:12]保留 [11:4]delay_line的级数范围(1-32)级 |
3 | rx_nege_en | 0x0 | R/W | 接收时钟下降沿相位调整使能,配置为1有效 |
2:0 | rx_clk_shift | 0x0 | R/W | 接收时钟相位平移的周期数 |
地址屏蔽配置寄存器(ADDR_MASK_CFG)¶
偏移量:0x0C
复位值:0x00000FFF
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:12 | Reserved | 0 | R/W | Reserved |
11:0 | addr_mask | 0xFFF | R/W | 配置地址的屏蔽,系统默认Flash的低16bit地址位(15:0)为有效,该寄存器每一位顺序对应Flash从第16bit地址的对应位,如bit0对应的是Flash地址的第16bit位,对该位写1为屏蔽,0为不屏蔽 例: 器件大小2MB,器件有效地址共21位,addr_mask = 0xFE0; 器件大小4MB,器件有效地址共22位,addr_mask = 0xFC0; 器件大小16MB,器件有效地址共24位,ddr_mask = 0xF00; 器件大小32MB,器件有效地址共25位,addr_mask = 0xE00。 |
通用模式配置寄存器(GM_CFG)¶
偏移量:0x10
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:29 | Reserved | 0 | R/W | Reserved |
28:24 | gm_dummy_cycle | 0x0 | R/W | Dummy等待flash的周期数 |
23 | gm_data_store_md | 0x0 | R/W | 读写数据存放方式: 0:fifo 1:rw_data_reg(不支持dma模式) |
22 | gm_dma_wreq_md | 0x0 | R/W | DMA写请求发送方式: 0:写fifo amempty(快空状态)时发送写请求 1:写fifo empty(空状态)时发送写请求 |
21 | gm_dma_en | 0x0 | R/W | DMA模式使能,配置为1有效 |
20 | Reserved | 0x0 | R/W | Reserved |
19 | gm_crm_en | 0x0 | R/W | 连续读模式使能,配置为1有效 |
18:15 | gm_data_md_sel | 0x0 | R/W | 读写数据的模式选择: 4’b0000:单线模式 4’b0001:4线模式 4’b0100:单线merge模式 4’b0101:4线merge模式 4’b1000:DTR单线模式 4’b1001:DTR4线模式 4’b1100:DTR单线merge模式 4’b1101:DTR4线merge模式 其它:Reseverd |
14 | gm_write_en | 0x0 | R/W | 写数据使能,配置为1有效 |
13 | gm_read_en | 0x0 | R/W | 读数据使能,配置为1有效 |
12 | gm_dummy_en | 0x0 | R/W | Dummy等待使能,配置为1有效 |
11 | gm_crb_en | 0x0 | R/W | 连续读bit发送使能,配置为1有效 |
10:7 | gm_data_md_sel | 0x0 | R/W | 发送地址的模式选择: 4’b0000:单线模式 4’b0001:4线模式 4’b0100:单线merge模式 4’b0101:4线merge模式 4’b1000:DTR单线模式 4’b1001:DTR4线模式 4’b1100:DTR单线merge模式 4’b1101:DTR4线merge模式 其它:Reseverd |
6 | gm_addr_en | 0x0 | R/W | 发送地址使能,配置为1有效 |
5:2 | gm_cmd_md_sel | 0x0 | R/W | 发送命令的模式选择: 4’b0000:单线模式 4’b0001:4线模式 4’b0100:单线merge模式 4’b0101:4线merge模式 4’b1000:DTR单线模式 4’b1001:DTR4线模式 4’b1100:DTR单线merge模式 4’b1101:DTR4线merge模式 其它:Reseverd |
1 | gm_cmd_en | 0x0 | R/W | 发送命令使能,配置为1有效 |
0 | gm_en | 0x0 | R/W | 通用模式总使能,配置为1有效,写1后生效后该bit位自清除为0 |
通用模式配置寄存器1(GM1_CFG)¶
偏移量:0x14
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:27 | Reserved | 0 | R/W | Reserved |
26 | gm_cmd_size | 0x0 | R/W | 命令的数据长度,该长度为该位的值+1个Byte |
25:24 | gm_addr_size | 0x0 | R/W | 地址的数据长度,该长度为该位的值+1个Byte |
23:16 | gm_crb_code | 0x0 | R/W | 发送的连续读bit数据 |
15:8 | gm_cmd_code1 | 0x0 | R/W | 发送的命令编码数据1 |
7:0 | gm_cmd_code0 | 0x0 | R/W | 发送的命令编码数据0 |
通用模式读写地址配置寄存器(GM_ADDR_CFG)¶
偏移量:0x18
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:0 | gm_address | 0 | R/W | 通用模式读写地址 |
通用模式数据大小配置寄存器(GM_DATA_SIZE_CFG)¶
偏移量:0x1C
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:20 | Reserved | 0 | R/W | Reserved |
19:0 | rw_data_size | 0 | R/W | 读写的数据字节个数,单位为Byte |
预取读模式配置寄存器(RD_CFG)¶
偏移量:0x20
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:23 | Reserved | 0 | R/W | Reserved |
22 | prefetch_en | 0 | R/W | 预取读模式总使能,配置为1有效 |
21:17 | rd_dummy_cycle | 0 | R/W | Dummy等待flash的周期 |
16 | Reserved | 0 | R/W | Reserved |
15:12 | rd_data_md_sel | 0x0 | R/W | 读数据的模式选择: 4’b0000:单线模式 4’b0001:4线模式 4’b0100:单线merge模式 4’b0101:4线merge模式 4’b1000:DTR单线模式 4’b1001:DTR4线模式 4’b1100:DTR单线merge模式 4’b1101:DTR4线merge模式 其它:Reseverd |
11 | rd_dummy_en | 0 | R/W | Dummy等待使能,配置为1有效 |
10 | rd_crb_en | 0 | R/W | 连续读bit发送使能,配置为1有效 |
9:6 | rd_addr_md_sel | 0x0 | R/W | 发送地址的模式选择: 4’b0000:单线模式 4’b0001:4线模式 4’b0100:单线merge模式 4’b0101:4线merge模式 4’b1000:DTR单线模式 4’b1001:DTR4线模式 4’b1100:DTR单线merge模式 4’b1101:DTR4线merge模式 其它:Reseverd |
5:2 | rd_cmd_md_sel | 0x0 | R/W | 发送命令的模式选择: 4’b0000:单线模式 4’b0001:4线模式 4’b0100:单线merge模式 4’b0101:4线merge模式 4’b1000:DTR单线模式 4’b1001:DTR4线模式 4’b1100:DTR单线merge模式 4’b1101:DTR4线merge模式 其它:Reseverd |
1 | rd_cmd_en | 0 | R/W | 发送命令使能,配置为1有效 |
0 | rd_en | 0 | R/W | 预取读模式总使能,配置为1有效 |
预期读模式配置寄存器1(RD1_CFG)¶
偏移量:0x24
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:27 | Reserved | 0 | R/W | Reserved |
26 | rd_cmd_size | 0x0 | R/W | 命令的数据长度,该长度为该位的值+1个Byte |
25:24 | rd_addr_size | 0x0 | R/W | 地址的数据长度,该长度为该位的值+1个Byte |
23:16 | rd_crb_code | 0x0 | R/W | 发送的连续读bit数据 |
15:8 | rd_cmd_code1 | 0x0 | R/W | 发送的命令编码数据1 |
7:0 | rd_cmd_code0 | 0x0 | R/W | 发送的命令编码数据0 |
FIFO级别配置寄存器(FIFO_LEVEL_CFG)¶
偏移量:0x30
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:19 | Reserved | 0 | R/W | Reserved |
18:13 | rfifo_amfull_level | 0x0 | R/W | 配置读FIFO中,amfull(几乎满)的数据个数阈值标准,达到时即触发对应条件 |
12:7 | rd_arfifo_amempty_levelddr_size | 0x0 | R/W | 配置读FIFO中,amempty(几乎空)的数据个数阈值标准,达到时即触发对应条件 |
6:0 | wfifo_amfull_level | 0x0 | R/W | 配置写FIFO中,amfull(几乎满)的数据个数阈值标准,达到时即触发对应条件 |
读写缓存寄存器0(RW_DATA0_CFG)¶
偏移量:0x34
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:0 | rw_data_reg0 | 0 | R/W | 读写缓存,选择数据储存为寄存器时的第一个WORD数据 |
读写缓存寄存器1(RW_DATA1_CFG)¶
偏移量:0x38
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:0 | rw_data_reg1 | 0 | R/W | 读写缓存,选择数据储存为寄存器时的第二个WORD数据 |
中断控制配置寄存器(INT_CTRL_CFG)¶
偏移量:0x3C
复位值:0x00000000
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:6 | Reserved | 0 | R/W | Reserved |
5 | hready_error_int_en | 0 | R/W | hready错误中断使能,配置为1有效 |
4 | ecc_error_int_en | 0 | R/W | ECC错误中断使能,配置为1有效 |
3 | gm_done_int_en | 0 | R/W | 通用模式处理完成中断使能,配置为1有效 |
2 | prefetch_md_close_int_en | 0 | R/W | 预取模式命令完成中断使能,配置为1有效 |
1 | rfifo_under_flow_int_en | 0 | R/W | 读FIFO低于预设值中断使能,配置为1有效 |
0 | wfifo_overflow_int_en | 0 | R/W | 写FIFO高于预设值中断使能,配置为1有效 |
状态寄存器(STATE_REG)¶
偏移量:0x40
复位值:0x00000040
位域 | 名称 | 复位值 | 类型 | 描述 |
---|---|---|---|---|
31:9 | Reserved | 0 | R/W | Reserved |
8 | main_ctrl_busy | 0 | R | 主控制忙状态,只读,1为忙 |
7 | arbt_busy | 0 | R | arbt忙状态,只读,1为忙 |
6 | data_if_hready | 1 | R | 数据处于hready错状态,只读,1为该状态 |
5 | hready_error_int | 0 | R/W | hready错误中断状态,1为触发中断,该位写1清除 |
4 | ecc_error_int | 0 | R/W | ECC错误中断状态,1为触发中断,该位写1清除 |
3 | gm_done_int | 0 | R/W | 通用模式处理完成中断状态,1为触发中断,该位写1清除 |
2 | prefetch_md_close_int | 0 | R/W | 预取模式命令完成中断状态,1为触发中断,该位写1清除 |
1 | rfifo_under_flow_int | 0 | R/W | 读FIFO低于预设值中断状态,1为触发中断,该位写1清除 |
0 | wfifo_overflow_int | 0 | R/W | 写FIFO高于预设值中断状态,1为触发中断,该位写1清除 |