目前广泛使用的计算机内存芯片是DDR(双倍数据率同步动态随机存储器)[1]。它的最新品种DDR3单片容量已经可以达到2Gb以上,数据率可以达到1.6Gb/s以上[2],因此如何快速准确判定DDR芯片的好坏(功能测试)就很必要。
由于DDR这类芯片的设置和读写时序相当复杂,要在其性能所达到的高速条件下对其进行测试,许多人选用的技术方法是:直接把它们放到计算机的内存专用插座上,编一个相应的程序去进行测试。这不失为一种最简单的选择。但由于在测试过程中,计算机读取相应的指令还要花费不少时间,所以在芯片容量越来越大的情况下,这并不是一个好方法。
使用FPGA,将测试软件变成硬件,做成DDR专用测试工具,是提高测试效率的较好的选择。一开始设计的DDR专用测试工具是使用Xilinx公司的Spartan-3E来实现的,但是很快发现:无论如何进行设计约束,诸多的地址信号、控制信号和数据信号很难做到同步送出,信号时延的离散范围很难达到0.2ns以下。对于数据率在200Mb/s以下的早期DDR产品,这勉强可以接受。但目前DDR2的数据率已经可以高达800Mb/s,也就是说,按相位角算,离散范围已达60°。为了保证上述有关信号的同步,不得不在FPGA与DDR相连接的所有信号线之间,增加了用CPLD器件做成的同步接口,利用CPLD器件端口到端口具有一致的延时特性来保证所有信号时间上的一致性。
对于Xilinx公司的Spartan-6系列[3],由于它有专为各类DDR内存设计的存储器控制模块(MCB),用户可以利用提供的存储器控制模块,直接驱动DDR芯片,大大方便了与DDR的接口。
在我们新的DDR专用测试工具“DDR存储芯片测试仪”中,使用Spartan-6系列的XC6SLX16芯片,按照该公司的ug416.pdf文件[4]的指引,用CORE Generator软件中的MIG3.4分别产生了DDR2和DDR3两种类型的应用文件,包括DDR的基层MCB控制模块的应用文件,和它们的高层次使用举例文件example_top。后者本身就是一个DDR的测试程序,它向你显示如何实现与基层MCB控制模块接口。我们在它的基础上增加了一些测试模式,并增加了测试设置寄存器和测试结果状态寄存器,用一个宏晶公司的STC12C5408单片机作为整个DDR芯片测试设备的管理器,经串行口与主机通信,很顺利地实现了对DDR2、DDR3芯片的测试。