DDR撰写心得

来源:互联网 发布:手机上可以编程的软件 编辑:程序博客网 时间:2024/05/23 01:18

根据synopsys ddr控制器的运行log文件编写ddr驱动,下面有几点心得:


  1. 首先了解ddr是数据线地址线复用的,和nandflash一样, DDR3  64ms刷新8192次,即7.8us(trefi)需要做一下gap,时间trfc,这个时间非常重要,温度上升了,这个值应该提高一倍,改为3.9um
  2. 名词解释: PUBL PHY Utility Block Lite
    DWC:Designware Core (Synopsys(新思科技) 一种设计方法公司的缩写)

    在RTL(RTL在电子科学中指的是电阻晶体管逻辑电路)设计中,经常要用到一些标准的cell(单元),有一些很简单,如普通的加法器,寄存器,常用的组合逻辑等等。这些一般的我们都直接用语言直接描述出来。但是对于一些复杂的逻辑功能,往往设计起来比较麻烦,或者自己设计出来的综合后时序比较差。比如,超前进位加法器,全加器,乘法器(各种结构的乘法器),优先级编码器等等。虽然书本上有很多的关于这些逻辑功能的电路结构或者门组成结构。但是事实上,即使按照课本来做,综合之后的电路,无论怎么样优化,都不容易达到时序要求(比较高的时钟情况下)。所以,synopsys将这些标准的功能模块,比较复杂,时序又不好解决的问题。帮我们设计人员解决了。synopsys公司技术人员,针对这些复杂的功能模块,直接设计/优化最底层的版图,将其中的延迟优化到最小,逻辑功能可以支持到速度更高的芯片。此举可以免除很多设计人员的烦恼,当然人家也不是白做的,designware是要花钱购买的。

    CL(一般指read latency): CAS Latency 列地址脉冲选通潜伏期 CAS = Column Address Strobe,或Column Address Strobe latency、Column Address Select latency,列地址选通脉冲。意思是从收到命令到执行命令的时间间隔(单位是始终周期)因为CAS主要控制十六进制的地址,或者说是内存矩阵中的列地址,所以它是最为重要的参数,在稳定的前提下应该尽可能设低参考网址:http://baike.baidu.com/link?url=qdBbeNKhZDNFOvtdjyAPHPmPyWXoZYQc8cDXkxt88DSfKbN2yRgP7lvJIyCCv6yT

    HIF: host interface

    uMCTL:DesignWare Cores Enhanced Universal DDR Memory Controller

    DDr DQS信号:数据选取(DQS:data strobe)脉冲。DQS是DDR SDRAM中的重要信号,其功能主要用来在一个时钟周期内准确地区分出每个传输周期,并使数据得以准确接收。每一块DDR SDRAM芯片都有一个双向的DQS信号线。在写入时,它用来传送由北桥发来的DQS信号;在读取时,则由芯片生成DQS向北桥发送。可以说,DQS就是数据的同步信号

    DFI:DDR PHY Interfice

    ASR:  Array refresh ,局部自刷新:PASR: partial array self-refresh

    SRT: self refresh Temperature 根据温度自动刷新。

    AXI port: Advanced eXtensiable Interface 是一种总线协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。它的地址/控制和数据相位是分离的,支持不对齐的数据传输,同时在突发传输中,只需要首地址,同时分离的读写数据通道、并支持Outstanding传输访问和乱序访问,并更加容易就行时序收敛。AXI 是AMBA 中一个新的高性能协议。AXI 技术丰富了现有的AMBA 标准内容,满足超高性能和复杂的片上系统(SoC)设计的需求。

    DDR 时序描述:http://blog.csdn.net/ghostyu/article/details/7728106

    或者百度百科内存描述

    内存交错:http://baike.baidu.com/view/1914241.htm?fr=aladdin, 这个一般是多多个control来说的,此处指数据乱序。还有就是Burst Type里面的地址乱序,这个对于performance的用处不大,因为一个bl的page都要传完。

    DDR3L DDR3U: 在DDR3内存的正式规范中,提出了两个低电压技术标准,分别是工作电压1.35V的「DDR3L」,以及1.25V电压的「DDR3U


  3. DDR bank row column的各个参数意义:http://hard.zol.com.cn/2004/0330/90618.shtml

  4. 裸写pagesize右移位数:
    for(;;) (if(pagesize >> ++fls) == 1) break;


  5. ddr手册dwc_ddr_upctl_umctl_databook.pdf中描述Address Mapping时有Density、Bank Width、Row Width和Col Width,其中Density指的是总容量,如对于128M*16bit的ddr来说,这个就是256MB,即2Gb,I/O Width就是16,bw 3,rw 14, cw 10


  6.  x9 1G和2G ddr容量的需要将0x21e08438寄存器的值修改为1,让其容量减4G,因为芯片内部地30位alin定义有个取反,这个减4G可以使得容量支持2G


  7. 与ddr cl相关的ddr属性

    timing->trc timing->twcl timing->trcd;

    control:    ADDR_UMCTL2_INIT3的bit[20],ADDR_UMCTL2_DRAMTMG2的bit[16],bit[8],ADDR_UMCTL2_DRAMTMG4 bit[24],ADDR_UMCTL2_DFITMG0 bit[16], ADDR_UMCTL2_ODTCFG bit[2]

    phy: ADDR_PHY_DTPR0 bit[8] bit[12], ADDR_PHY_MR0 bit[4]


    8.    ZQ Calibration: ZQ校准

        ZQ 是一个新增的终端电阻校准功能,新增这个线路脚位提供了ODCE(On Die Calibration Engine)用来校准ODT(On Die Termination)内部中断电阻,DDR3相对DDR2另外新增了更为精进的CWD、Reset、ZQ、SRT、RASR功能。http://baike.baidu.com/view/529890.htm?fr=aladdin


    9.  DDR芯片标识为DDR533,其实内部频率就是266MHz,因为频率是双向的,分上行跟下行,所以X2
        DDR的标称和SDRAM一样采用频率。现在DDR运行频率主要有100MHz、133MHz、166MHz和200MHz四种,由于DDR内存具有双倍速率传输数据的特性,因此在DDR内存的标识上采用了工作频率×2的方法,也就是DDR200、DDR266、DDR333和DDR400
算速率的方法(对于32bit位宽的计算机来说):32bit×133MHz×2÷8=1064MBytes/s


    10. 编址方式:统一编址和独立编址

    x86是冯诺依曼体系结构的,用的是独立编址,arm用的是harvard结构(冯诺依曼结构数据空间和地址空间不分开哈佛结构数据空间和地址空间是分开的

),是统一编址的

    几点注意:

    (1)这些地址都是mmu之上的物理地址,针对内存和外设而言

    (2)独立编址:内存和外设分开独立编址(它们的地址原则上可以有重合区域);因为独立,所以内存编址可以从0~N,外设编址也可以从0~N;


统一编址:就是内存和外设的编址放到一起来规划,被外设用了的地址就不能给内存了,反之亦然!  比如:给外设分配地址0~N,那么内存就不能使用0~N了,只能使用N~M!

     (3)独立编址采用不同的I/O指令区分,统一编址采用不用的地址代码区分

存储器统一编址的优点是:
I/O端口的数目几乎不受限制;
访问内存指令均适用于I/O端口,对I/O端口的数据处理能力强;
cpu无需产生区别访问内存操作和I/O操作的控制信号,从而可减少引脚。

I/O独立编址的优点是:
不占用内存空间;
使用I/O指令,程序清晰,很容易看出是I/O操作还是存储器操作;
译码电路比较简单(因为I/0端口的地址空间一般较小,所用地址线也就较少)。
I/O独立编址缺点是:只能用专门的I/O指令,访问端口的方法不如访问存储器的方法多。


    11 LPDDR1就是mddr,mddr想对于LPDDR2 LPDDR3 DDR2 DDR3频率一般是200M,CL为3

参考阅读:
http://wiki.dzsc.com/info/4851.html
0 0
原创粉丝点击