您的位置 首页 国产IC

S3C6410的DRAM控制器

我们在项目中更换了DRAM,所以需要重新配置S3C6410的DRAM控制器,结果发现S3C6410中的DRAM控制器还是挺复杂的。S3C6410支持两个DRAM片选,…

咱们在项目中更换了DRAM,所以需求重新装备S3C6410DRAM控制器,成果发现S3C6410中的DRAM控制器仍是挺杂乱的。

S3C6410支撑两个DRAM片选,能够别离接最大256MB的内存,该处理器用的DRAM控制器是来自ARM的PrimeCell Dynamic Memory Controller(PL340)。只看S3C6410的Datasheet中的DRAM部分介绍是不行的,你还需求看PL340的技能参阅文档,这个文档网上查找一下就有了。想彻底了解6410的DRAM控制器,有必要两篇文档都看。我都看了,尽管没彻底了解,可是比看6410的datasheet要强多了。

我用的是mobile DDR-SDRAM,所以在这儿大约介绍一下寄存器及装备流程。先介绍一下寄存器:

1. DRAM Controller Status Register (Address: 0x7E001000)
DRAM状况寄存器,这是一个RO寄存器,用于读取DRAM的状况。

Name Bit Description
Memory chips [8:7] 01=2 chips
Memory type [6:4] 100=MSDR, SDR, MDDR and DDR
Memory width [3:2] 00=16-bit01=32-bit
Controller Status [1:0] 00=config01=ready10=paused11=low-power

实际上,读到的有用信息便是Controller Status和Memory width。

2. DRAM Controller Command Register (Address: 0x7E001004)
DRAM指令寄存器,设置DRAM的作业状况。

Name Bit Description
Memc_cmd [2:0] 000=Go001=Sleep010=Wakeup011=Pause
100=Configure

最开端应该装备为0x4,是处于Configure状况。在装备完一切的DRAM之后,将该寄存器设置为0x0,处于运转状况。

3. Direct Command Register (Address: 0x7E001008)
DRAM指令寄存器,用于发送指令到DRAM和拜访DRAM中的MRS和EMRS寄存器。

Name Bit Description
Extended memory command [22] 扩展指令,该bit用于衔接下面的Memory command[19:18],然后组成DRAM指令
Chip number [21:20] 00=chip_001=chip_110=chip_211=chip_3
Memory command [19:18] 和Extended Memory command组成DRAM指令字
000=PrechargeAll001=Autorefresh
010=MRS/EMRS拜访011=NOP
100=Deep Power Down
Bank address [17:16] 拜访MRS和EMRS的时分,映射为Bank地址位
Address_13_to_0 [13:0] 拜访MRS和EMRS的时分,映射为memory address[13:0]

经过该寄存器初始化DRAM,先设置为NOP形式,然后设置为PrechargeAll进行充电,然后设置EMRS和MRS寄存器,一般是这么一个流程。详细的要拜见你所运用的DRAM的datasheet。

4. Memory Configuration Register (Address: 0x7E00100C)
DRAM的装备寄存器,这个与需求参照你所运用的DRAM的datasheet。

Name Bit Description
Memory burst [17:15] 设置Burst巨细
000=Burst 1001=Burst 2010=Burst4
011=Burst 8100=Burst 16
Stop_mem_clock 没有拜访时,Memory Clock主动中止
Power_down_prd [21:20] 主动掉电所需的时钟周期
AP bit [19:18] 0=Address bit 101=Address bit 8
Row bits [17:16] 行地址
000=11 bits001=12 bits010=13bits
011=14 bits100=15bits101=16bits
Column bits [13:0] 列地址
000=8 bits001=9 bits010=10 bits
011=11 bits100=12 bits

该寄存器肯定是要配的,看看DRAM的datasheet就知道了。

5. Refresh Period Register (Address: 0x7E001010)
DRAM的改写频率寄存器,用于装备改写频率的。

Name Bit Description
Refresh period [14:0] 多少个Memory的时钟周期

6. CAS Latency Register (Address: 0x7E001014)
DRAM的CAS延时寄存器,一定要配,参阅DRAM的datasheet。

Name Bit Description
CAS Latency [3:1] CAS延时多少个时钟周期
CAS half cycle [0] 0=0周期偏移1=半周期偏移
关于MDDR和SDR只能设置为0

7. t_dqss/t_mrd/t-ras/t_rc/t_rcd/t_rfc/t_rp/t_rrd/t_wr/t_wtr/t_xp/t_xsr/t_esr Registers (Address: 0x7E001018—0x7E001048)
DRAM操作中所需时刻和延时寄存器,这儿不作过多介绍,详细能够参阅PL340文档。

8. Memory Configuration 2 Register (Address: 0x7E00104C)
DRAM的装备寄存器2。

Name Bit Description
Read delay [12:11] 读延时
00=0 cycle01=1 cycle10,11=2 cycle
Memory type [10:8] DRAM类型
000=SDR001=DDR011=Mobile DDR
Memory width [7:6] 00=16 bits01=32 bits
cke_init [3] 复位后,设置CKE输出的值
dqm_init [2] 复位后,设置DQM输出的值
a_gt_m_sync [1] ACLK频率高于MCLK时,设置为1
Sync [0] ACLK和MCLK同步时,设置为1

9. CHIP_N_CFG Register (Address: 0x7E001200/0x7E001204)
DRAM的Chip装备寄存器,用于片选decoding设置

Name Bit Description
BRC_RBC [16] DRAM结构
0=Row-Bank-Column
1=Bank-Row-Column
Address match [15:8] 片选地址比较值
Address mask [7:0] 片选地址掩码

上面介绍了一些寄存器,还有一些寄存器我们没有用到,所以没有去了解。下面给一个DRAM初始化的比如:

WriteReg: 0x7e0010040x4//设置DRAM控制器状况为Configure
WriteReg: 0x7e0010100x40d//设置DRAM的改写周期
WriteReg: 0x7e0010140x6//设置CAS延时
WriteReg: 0x7e0010180x3//设置t_DQSS
WriteReg: 0x7e00101c0xf//设置t_MRD
WriteReg: 0x7e0010200xf//设置t_RAS
WriteReg: 0x7e0010240xf//设置t_RC
WriteReg: 0x7e0010280x1f//设置t_RCD
WriteReg: 0x7e00102c0x21f//设置t_RFC
WriteReg: 0x7e0010300xf//设置t_RP
WriteReg: 0x7e0010340xf//设置t_RRD
WriteReg: 0x7e0010380x7//设置t_WR
WriteReg: 0x7e00103c0x7//设置t_WTR
WriteReg: 0x7e0010400xf//设置t_XP
WriteReg: 0x7e0010440x1f//设置t_XSR
WriteReg: 0x7e0010480x1f//设置t_ESR
WriteReg: 0x7e00100c0x10012//设置DRAM的Column, Row等特点
WriteReg: 0x7e00104c0x0b45//设置DRAM的buswidth,type等特点
WriteReg: 0x7e0012000x150f8//设置RBC以及片选特点
WriteReg: 0x7e0013040x0//设置DQS延时
WriteReg: 0x7e0010080xc0000//发送NOP指令到DRAM
WriteReg: 0x7e0010080x0//发送Precharge指令到DRAM
WriteReg: 0x7e0010080x40000//发送Autorefresh指令到DRAM
WriteReg: 0x7e0010080x40000//发送Autorefresh指令到DRAM
WriteReg: 0x7e0010080xa0000//设置DRAM的EMRS寄存器
WriteReg: 0x7e0010080x80032 //设置DRAM的MRS寄存器
WriteReg: 0x7e0010040x0//设置DRAM控制器开端运转

关于DRAM控制器的装备要拜见所运用的DRAM的Datasheet,了解DRAM的结构和初始化进程,才干正确装备。S3C6410的DRAM控制器比较杂乱,有些寄存器也不是很了解,在ARM的PL340的文档中也没做太多解说。
我的主张便是能不换DRAM最好,换了也要尽量和S3C6410板上的DRAM附近。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/ic/264763.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部