首页> 中国专利> 一种新型DDRIII内存识别和初始化方法

一种新型DDRIII内存识别和初始化方法

摘要

本发明涉及一种新型DDRIII内存识别和初始化方法,所述DDRIII内存为内存裸片,采用可编程逻辑器件CPLD存储内存芯片相关信息,且数据存储格式在串行配置检测SPD规范基础上有四点不同;处理器访问可编程逻辑器件CPLD的总线采用处理器通常都具备的本地并行总线,处理器的系统启动程序bootloader程序通过本地并行总线读取存储在CPLD里的内存相关信息,然后使用读取到的信息对内存控制器进行初始化,内存相关信息的存储及其总线访问逻辑接口,是通过在CPLD里做逻辑来实现的。本发明所述的新型DDRIII内存识别和初始化方法,降低开发难度,电路设计可扩展性更好,调试简单方便,生产物料选择范围更广。

著录项

  • 公开/公告号CN102306127A

    专利类型发明专利

  • 公开/公告日2012-01-04

    原文格式PDF

  • 申请/专利权人 烽火通信科技股份有限公司;

    申请/专利号CN201110223228.3

  • 发明设计人 李传宝;

    申请日2011-08-05

  • 分类号G06F12/06(20060101);

  • 代理机构北京捷诚信通专利事务所(普通合伙);

  • 代理人魏殿绅;庞炳良

  • 地址 430074 湖北省武汉市东湖开发区关东科技园东信路5号

  • 入库时间 2023-12-18 04:00:10

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-01-08

    授权

    授权

  • 2012-02-22

    实质审查的生效 IPC(主分类):G06F12/06 申请日:20110805

    实质审查的生效

  • 2012-01-04

    公开

    公开

说明书

技术领域

本发明涉及嵌入式系统设计中DDRIII内存识别和初始化技术领域,具体说是一种新型DDRIII内存识别和初始化方法。

背景技术

嵌入式系统设计中,已经越来越多的使用DDRIII(双倍速率同步动态随机存储器第三代)内存,且由于空间和可靠性原因,一般都是将DDRIII内存芯片贴于电路板之上。众所周知,不同于其他芯片,DDRIII内存芯片本身是不提供接口访问和内部也不会设置内存芯片的识别号码的,所以,如果系统单板设计时需要使用并识别不同型号和容量大小的内存时,就面临一个内存识别以及读取和配置内存控制器相关时序参数的问题,不能正确的识别出内存,就不能正确的初始化内存。

传统的嵌入式系统设计中,解决正确识别DDRIII内存问题的方法之一是使用固定一种型号的DDRIII内存芯片,将初始化数据固化在启动代码里,这种方法的缺点是开发难度大,调试周期长,生产物料采购范围小,且易受供货厂家产能影响。

另一种常用的方法,比如内存条,是使用一片电子可擦写式只读存储器EEPROM,依照一定的数据格式(电子元件工业联合会JEDEC制定的SPD(串行配置检测)规范)将内存相关的存储容量大小、内存类型、时序、物理尺寸等参数存储起来,处理器通过I2C(内部整合电路)接口读取该信息,BootLoader(系统启动程序)使用这些信息初始化DDRIII控制器和内存芯片。相对于嵌入式系统设计,这种方法的缺点是不灵活,EEPROM是要焊接在电路板上的,产品定型后,换一种型号内存芯片,其内容也要相应更新,烧写更新EEPROM不方便,调试时需要反复更新时序参数的配置,那就更不便了。

发明内容

针对现有技术中存在的缺陷,本发明的目的在于提供一种新型DDRIII内存识别和初始化方法,降低开发难度,电路设计可扩展性更好,调试简单方便,生产物料选择范围更广。

为达到以上目的,本发明采取的技术方案是:

一种新型DDRIII内存识别和初始化方法,所述DDRIII内存为内存裸片,其特征在于:采用可编程逻辑器件CPLD存储内存芯片相关信息,且数据存储格式在串行配置检测SPD规范基础上有四点不同:

e、地址1处,是PPD的版本号;

f、地址3处,定义的是内存芯片组访问的模式,非缓冲型还是寄存器型;

g、地址32处,定义的是内存芯片生产厂家对应编码;

h、地址33到125和地址128到255都是定义的备用;

此种新的数据存储格式称为并行配置探测PPD规范,

处理器访问可编程逻辑器件CPLD的总线采用处理器通常都具备的本地并行总线,

处理器的系统启动程序bootloader程序通过本地并行总线读取存储在CPLD里的内存相关信息,然后使用读取到的信息对内存控制器进行初始化,

内存相关信息的存储及其总线访问逻辑接口,是通过在CPLD里做逻辑来实现的。

在上述技术方案的基础上,所述存储在CPLD里的内存相关信息至少包括:内存芯片的密度和物理片选数、芯片地址的行数和列数、时序参数、内存芯片组访问的模式、内存芯片生产厂家对应编码。

在上述技术方案的基础上,CPLD逻辑设定bootloader要访问的地址和数据宽度,按照设定的地址排列顺序将存储在CPLD里的内存相关信息读出来。

在上述技术方案的基础上,CPLD逻辑设定bootloader要访问的地址和数据宽度取8位数据宽度和8位地址宽度。

在上述技术方案的基础上,利用CPLD的目标文件能通过其联合测试行为组织JTAG接口通过PC机专用线缆实时在线下载功能,来改变存储在CPLD里的内存相关信息中的需要调整的内存参数的配置。

在上述技术方案的基础上,具体步骤为:

步骤1,配置完PPD,将逻辑编译成目标文件,编译的目标文件通过JTAG下载线缆下载到CPLD中,

步骤2,将处理器和CPLD所在电路复位或重新上电,开始测试过程,

步骤3,BootLoader程序通过本地并行总线读取内存参数,其内部程序根据读到的信息,自动计算出处理器需要的寄存器值,将数量众多的控制器的寄存器自动的初始化并启动,

步骤4,用户通过调试端口对内存读写进行测试,如测试不成功,返回,检查修改PPD配置参数,再重复步骤1到步骤4,直至测试成功。

本发明所述的新型DDRIII内存识别和初始化方法,采用新的存储方式和总线访问方式,降低开发难度,电路设计可扩展性更好,调试简单方便,生产物料选择范围更广。

附图说明

本发明有如下附图:

图1本地并行总线接口原理示意图,

图2DDRIII初始化调试流程图。

具体实施方式

以下结合附图对本发明作进一步详细说明。

本发明所述的新型DDRIII内存识别和初始化方法,存储内存芯片相关信息的存储介质采用CPLD(可编程逻辑器件),数据存储格式与DDR3SPD规范只有四点不同,我们称这种新定义的数据存储格式为PPD(并行配置探测)规范,这四点不同具体是:地址1处,SPD规范是SPD版本号,PPD规范是PPD的版本号;地址3处,SPD规范定义的是内存模块的类型,PPD规范定义的是内存芯片组访问的模式,非缓冲型还是寄存器型;地址32处,SPD规范定义的是备用,PPD规范定义的是内存芯片生产厂家对应编码;最后一点不同是PPD规范里地址33到125和地址128到255都是定义的备用,而SPD规范里有些有定义具体内容,有的是定义的备用。处理器访问存储介质(即CPLD)的总线采用处理器通常都具备的本地并行总线(本发明只适用于有本地并行总线的处理器)。

处理器的bootloader程序(系统启动程序)可以通过本地并行总线读取存储在CPLD里的内存相关信息,比如内存芯片的密度和物理片选数、芯片地址的行数和列数、时序参数等等,然后使用读取到的信息对内存控制器进行初始化。而内存相关信息的存储及其总线访问逻辑接口,是通过在CPLD里做逻辑来实现的。

这里以飞思卡尔的双核处理器P2020为例,DDRIII数据传输速率667MT/s,使用2个物理片选,DDR3内存芯片使用8片美光公司的MT41J128M16HA-15E(内存芯片型号,单颗粒容量2G bit)。给出CPLD的可编程逻辑描述语言的实例如下:

上面的CPLD逻辑设定bootloader要访问的地址和数据宽度,建议取8位数据宽度和8位地址宽度,按照设定的地址排列顺序将存储在CPLD里的内存相关信息(内存相关时序等参数)读出来。

我们知道,CPLD的目标文件是可以通过其JTAG(联合测试行为组织)接口通过PC机专用线缆下载的,而且支持实时在线下载,这样,我们无论在调试还是生产时,就可以比较容易改变内存参数的配置。而BootLoader仍然可以使用SPD的相关函数自动计算出DDR3控制器的寄存器值,而省略了进行较繁琐的人工配置寄存器过程,只需要将原先的I2C接口的驱动用本地并行总线的驱动取代就可以了。

嵌入式系统设计中采用此方法进行内存识别和初始化,最大的优点是方便和灵活,节省开发时间,降低开发难度。只要所用的处理器支持,可以方便的改变你的系统的内存型号和容量以及数量,做到单板的兼容性和扩展性更好,也有利于生产物料的采购。调试时就更能体现这种灵活和方便,BootLoader程序无需做任何变动,也可以进行内存时序调试,避免了使用编程器反复烧写BootLoader程序。之所以采用本地并行总线,是因为其在CPLD的接口逻辑占用很少资源就可使用,且访问速率较高,也方便CPLD实现其他功能。嵌入式单板上往往是需要CPLD芯片的,所以也不会增加成本,事实上现在1美金以下的CPLD也已经很多。

图1是处理器通过本地并行总线访问CPLD(可编程逻辑器件)的原理示意图,数据线可以设定为8位宽,地址线也设定为8位宽,控制线一般包含片选、读使能和写使能线。CPLD因生产厂家不同,连接PC机和CPLD的线缆略有不同,开发软件也有所不同,但最终实现结果是一样的,通过在CPLD进行逻辑设计,实现读写时序的控制,不同的处理器逻辑设计的实现有所不同,但都比较简单。

图2描述了DDRIII初始化及开发调试的流程,开发调试最重要的一步就是修改内存的配置参数,即前面所述的PPD规范里的各地址存储内容的配置,这个步骤与DDR3内存条的SPD规范的内容的配置是很相似的,不同的是,SPD规范定义了很多内存条模块相关的数据,而我们使用的是内存裸片,所以如前所述,很多相关的字节在PPD规范里都可以定义为备用。后128~256字节存储的信息都是与内存芯片无关的数据,可以定义为备用,0~127字节除了字节3和字节32以外是完全与SPD兼容,可以按照SPD规范参考字节的电路设计和内存芯片的数据手册设计相关的参数。字节3在SPD规范里面是内存模块的类型,在PPD规范里该字节内容改为表示是非缓冲型还是寄存器型内存电路;字节32修改为表示内存芯片的生产厂家,这里以PowerPC架构的处理器和采用8片美光的DDR3内存芯片MT41J128M16HA-15E共2G字节容量为例,总线数据传输速率667MT/s,总线宽度64位,处理器控制器启用2个物理片选,非缓冲型模式,MT41J128M16HA-15E是8个Banks,单片容量2Gbit。行地址和列地址分别为14X10。具体的字节信息参考下面的PPD规范数据存储格式定义及上述实例取值列表。

配置完PPD,就可以将逻辑编译成目标文件,比如使用Altera公司的MAX II系列CPLD的EPM240T100C5(器件型号),编译的目标文件可以通过该公司提供的专用JTAG下载线缆下载到EPM240T100C5中。就可以将处理器和CPLD所在电路复位或重新上电,开始测试过程。BootLoader程序通过本地并行总线读取内存参数,其内部程序会根据读到的信息,比如总线数据传输速率、所用片选的数量、时序参数等等,自动计算出处理器需要的寄存器值,将数量众多的控制器的寄存器自动的初始化并启动,用户可以通过串口等调试端口对内存读写进行测试,如测试不成功,返回,检查修改PPD配置参数,再重复此过程。整个过程的重点就是保证本地并行总线逻辑设计和配置PPD参数的正确,其他部分都是已经验证的成熟的东西,所以,大大简化了开发过程,方便生产。

PPD规范数据存储格式定义及上述实例取值列表如下:

本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号