微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > S3C6410,Tiny6410,Mini6410,MoblieDDR内存驱动

S3C6410,Tiny6410,Mini6410,MoblieDDR内存驱动

时间:11-20 来源:互联网 点击:

用的DRAM的datasheet。

4) 内存配置寄存器(P1MEMCFG)

P1MEMCFG

描述

初始值

保留

[31:23]

未定义

启动芯片

[22]

使能下面数量的芯片开始执行刷新操作:

00 = 1芯片

01 = 2芯片

10/11 = 保留

00


QoS master位

[20:18]

设置QoS值:

000 = ARID[3:0]

001= ARID[4:1]

010 = ARID[5:2]

011 = ARID[6:3]

100 = ARID[7:4]

101~111 = 保留

000

内存突发访问

[17:15]

在内存读写时,设置突发访问数据的数量:

000 = 突发访问1个数据

001 = 突发访问2个数据

010 = 突发访问4个数据

011 = 突发访问8个数据

100 = 突发访问16个数据

101~111 = 保留

该值必须通过DIRECTORYCMD寄存器,写入到内存的模式寄存器中,并且数据必须匹配

010

Bank地址

[17:16]

当以MRS或EMRS命令访问时,映射到外部存储器的Bank地址位

Stop_mem_clock

[14]

当停止芯片时钟,不允许访问内存数据时,置位

0

自动节能

[13]

当该位置位时,芯片自动进入节能状态

0

关闭芯片延迟时间

[12:7]

当关闭内存芯片时,延迟的时钟个数

000000

自动预充电位

[6]

内存地址中自动预充电位的位置:

0 = ADDR[10]

1 = ADDR[8]

0

行地址位数

[5:3]

AXI地址线上的行地址位数:

000 = 11位

001 = 12位

010 = 13位

011 = 14位

100 = 15位

101= 16位

100

列地址位数

[2:0]

AXI地址线上的列地址位数:

000 = 8位

001 = 9位

010 = 10位

011 = 11位

100 = 12位

000

参考DRAM的datasheet。

5) 内存刷新时间寄存器(P1REFRESH)

P1REFRESH

描述

初始值

[31:15]

-

刷新时间

[14:0]

内存刷新时钟周期数

0xA60

6) CAS 延迟寄存器(P1CASLAT)

P1CASLAT

描述

初始值

[31:4]

-

-

CAS延迟

[3:1]

列地址选通延迟内存时钟周期数

0xA60

CAS HALF周期

[0]

设置CAS延迟数是否为半个内存时钟周期

0 = 以[3:1]设置数为CAS延迟时钟周期

1 = 以[3:1]设置数的一半为CAS延迟时钟周期

0

参考DRAM的datasheet。

下面13个寄存器用于DRAM操作中所需时间和延时寄存器,具体可以参考PL340文档。

7) T_DQSS寄存器(P1T_DQSS)

P1T_DQSS

描述

初始值

[31:2]

-

-

t_DQSS

[1:0]

写入DQS的时钟周期

1

8) T_MRD寄存器(P1T_MRD)

P1T_MRD

描述

初始值

[31:7]

-

-

t_ MRD

[6:0]

设置模式寄存器命令时间(内存时钟周期为单位)

0x02

9) T_RAS寄存器(P1T_RAS)

P1T_RAS

描述

初始值

[31:4]

-

-

t_RAS

[3:0]

设置行地址选通到预充电操作延迟时间(内存时钟周期为单位)

0x7

10) T_RC寄存器(P1T_RC)

P1T_RC

描述

初始值

[31:4]

-

-

t_RC

[3:0]

设置激活内存Bank x到激活另外一个Bank x操作的延迟时间(内存时钟周期为单位)

0xB

11) T_RCD寄存器(P1T_RCD)

P1T_RCD

描述

初始值

[31:6]

-

-

Scheduled_RCD

[5:3]

设置t_RCD-3

011

t_RCD

[2:0]

设置RAS到CAS操作的最小延迟时间(内存时钟周期为单位)

101

12) T_RFC寄存器(P1T_RFC)

P1T_RFC

描述

初始值

[31:10]

-

-

Scheduled_RFC

[9:5]

设置t_RFC-3

0x10

t_RFC

[4:0]

设置自动刷新命令操作延迟时间(内存时钟周期为单位)

0x12

13) T_RP寄存器(P1T_RP)

P1T_RP

描述

初始值

[31:6]

-

-

Scheduled_RP

[5:3]

设置t_RP-3

011

t_RFC

[2:0]

设置预充电到RAS操作的延迟时间(内存时钟周期为单位)

101

14) T_RRD寄存器(P1T_RRD)

P1T_ RRD

描述

初始值

[31:4]

-

-

t_RRD

[3:0]

设置激活内存Bank x到激活内存Bank y操作的延迟时间(内存时钟周期为单位)

0x2

15) T_WR寄存器(P1T_WR)

P1T_ WR

描述

初始值

[31:3]

-

-

t_WR

[2:0]

设置写入数据到预充电操作的延迟时间(内存时钟周期为单位)

011

16) T_WTR寄存器(P1T_WTR)

P1T_ WTR

描述

初始值

[31:3]

-

-

t_WTR

[2:0]

设置写入数据到读取数据操作的延迟时间(内存时钟周期为单位)

011

17) T_XP寄存器(P1T_XP)

P1T_ XP

描述

初始值

[31:8]

-

-

t_XP

[7:0]

设置退出关闭电源命令的延迟时间(内存时钟周期为单位)

0x1

18) T_XSR寄存器(P1T_XSR)

P1T_ XSR

描述

初始值

[31:8]

-

-

t_XSR

[7:0]

设置退出自刷新命令的延迟时间(内存时钟周期为单位)

0xA

19) T_ESR寄存器(P1T_ESR)

P1T_ ESR

描述

初始值

[31:8]

-

-

t_ESR

[7:0]

设置自刷新命令的延迟时间(内存时钟周期为单位)

0x14

内存初始化代码:

(开发环境为ADS1.2)

  1. MEM_SYS_CFGEQU0x7e00f120
  2. DMC1_BASEEQU0x7e001000
  3. INDEX_DMC_MEMC_STATUSEQU0x0
  4. INDEX_DMC_MEMC_CMDEQU0x4
  5. INDEX_DMC_DIRECT_CMDEQU0x08
  6. INDEX_DMC_MEMORY_CFGEQU0x0c
  7. INDEX_DMC_REFRESH_PRDEQU0x10
  8. INDEX_DMC_CAS_LATENCYEQU0x14
  9. INDEX_DMC_T_DQSSEQU0x18
  10. INDEX_DMC_T_MRDEQU0x1c
  11. INDEX_DMC_T_RASEQU0x20
  12. INDEX_DMC_T_RCEQU0x24
  13. INDEX_DMC_T_RCDEQU0x28
  14. INDEX_DMC_T_RFCEQU0x2c
  15. INDEX_DMC_T_RPEQU0x30
  16. INDEX_DMC_T_RRDEQU0x34
  17. INDEX_DMC_T_WREQU0x38
  18. INDEX_DMC_T_WTREQU0x3c
  19. INDEX_DMC_T_XPEQU0x40
  20. INDEX_DMC_T_X

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top