一种多功能存储器芯片的测试系统硬件设计与实现
Hardwaredesignandimplementationofatestsystemformemorychips
n王烈洋 黄小虎 占连样 珠海欧比特控制工程股份有限公司
摘要:随着电子技术的飞速发展,存储器的种类日益繁多,每一种存储器都有其独有的操作时序,为了提高存储器芯片的测试效率,一种多功能存储器芯片的测试系统应运而生。本文提出了一种多功能存储器芯片的测试系统硬件设计与实现,对各种数据位宽的多种存储器芯片(SRAM、MRAM、NORFALSH、NANDFLASH、EEPROM等)进行了详细的结口电路设计(如何挂载到NIOSII的总线上),最终解决了不同数据位宽的多种存储器的同平台测试解决方案,并详细地设计了各结口的硬件实现方法。
关键词:ABUS;CLAS;NIOSII;
引言
随着电子技术的飞速发展,存储器类芯片的品种越来越多,其操作方式完全不一样,因此要测试其中一类存储器类芯片就会有一种专用的存储器芯片测试仪。本文设计的多种存储器芯片测试系统是能够对SRAM、NandFLASH、NorFLASH、MRAM、EEPROM等多种存储器芯片进行功能测试,而且每一类又可兼容8位、16位、32位、40位等不同宽度的数据总线,如果针对每一种产品都单独设计一个测试平台,其测试操作的复杂程度是可想而知的。为达到简化测试步骤、减小测试的复杂度、提高测试效率、降低测试成本,特设计一种多功能的存储器类芯片测试系统,实现在同一平台下完成所有上述存储器芯片的方便快捷地测试。
设计原理
此设计方案根据上述各种存储器独自的读写时序访问特性,通过FPGA的灵活编程特性,适当地调整NIOSII的外部总线时序,最终实现基于NIOSII的外部总线访问各种存储器读写时序的精确操作。如图2-1。通过FPGA自定义一个可以挂载所有存储器芯片的总线接口-ABUS,如表1。而且在同一个接口上能够自动识别各种接入的被测试存储器芯片,它们通过类别输入信号(CLAS)来区分,每一种存储器芯片对应一种独特的操作时序。下面是几种存储器芯片的接口连接方式及信号描述。其它的存储器芯片都可以用类似的接法挂载到ABUS总线上,最终完成测试。
图2-1NIOSII的总线挂载各类存储器芯片连接示意图
表1:ABUS接口信号说明表
序号
FPGA接口信号
功能
位宽
方向
备注
1
I/O[39:0]
实现双向数据交换
40
双向
I/O线
2
OUT[7:0]
控制信号输出
8
输出
控制信号
3
BCS[15:0]
片选信号输出
16
输出
片选
9
CLAS[5:0]
类别输入信号
6
输入
板卡选择
5
BUSY[15:0]
状态输入信号
16
输入
忙信号输入
6
ADD[26:0]
地址信号
27
输出
地址输出
序号FPGA接口信号功能位宽方向备注
1I/O[39:0]实现双向数据交换40双向I/O线
2OUT[7:0]控制信号输出8输出控制信号
3BCS[15:0]片选信号输出16输出片选
9CLAS[5:0]类别输入信号6输入板卡选择
5BUSY[15:0]状态输入信号16输入忙信号输入
6ADD[26:0]地址信号27输出地址输出
40位NANDFLASH连接设计
如图2-2所示,40位NANDFLASH与NIOSII通过ABUS(FPGA)桥接,把外部总线的时序完全转换成NANDFLASH的操作时序。40位NANDFLASH芯片品由五个独立的8位NANDFLASH芯片拼接构成。5个8位器件的外部IO口拼接成40位的外部IO口,而各自的控制线(NCLE,NALE,NRE,NWE)连接在一起构成一组控制线(NCLE,NALE,NRE,NWE),片选相互独立引出成NCS0-NCS9,忙信号独立引出为R/B0-R/B9。
如表2,详述了40位NANDFLASH与ABUS的连接关系。
图2-2ABUS与40位NANDFLASH接口图
表2,40位NANDFLASH接口连接表
序号
FPGA接口信号
NAND FLASH信号
位宽
方向
备注
1
I/O[39:0]
NIO[39:0]
40
双向
I/O线
2
OUT0
NCLE
1
F->N
控制锁存
3
OUT1
NALE
1
F->N
命令锁存
4
OUT2
NWE
1
F->N
写信号
5
OUT3
NRE
1
F->N
读信号
6
BCS[9:0]
NCS[9:0]
10
F->N
片选
7
BUSY[9:0]
NRB[9:0]
10
N->F
忙信号
8
CLAS[5:0]
NSEL[5:0]
6
N->F
板号00000
序号FPGA接口信号NANDFLASH信号位宽方向备注
1I/O[39:0]NIO[39:0]40双向I/O线
2OUT0NCLE1F->N控制锁存
3OUT1NALE1F->N命令锁存
4OUT2NWE1F->N写信号
5OUT3NRE1F->N读信号
6BCS[9:0]NCS[9:0]10F->N片选
7BUSY[9:0]NRB[9:0]10N->F忙信号
8CLAS[5:0]NSEL[5:0]6N->F板号00000
8位NANDFLASH与NIOSII连接
8位NANDFLASH是通过多片8位NANDFLSAH芯片叠加而成,每一个芯片的外部总线和控制线(NALE,CLE,NEW,NRE)进行复连。分别引出每一个芯片的片选和忙信号NCS0-NCS9、NRB0-NRB9。可以利用FPGA的逻辑来修改NIOSII的总线读写时序,来准确的操作大容量8位NANDFLASH存储器模块。实现NIOSII到ABUS,ABUS到8位NANDFLASH的连接。如图2-3所示。
表3,详述了8位NANDFLASH与ABUS的连接关系。
图2-3ABUS与8位大容量NANDFALSH连接
表3,8位NANDFLASH接口连接表
序号
FPGA接口信号
NAND FLASH信号
位宽
方向
备注
1
I/O[7:0]
NIO[7:0]
8
双向
I/O线
2
OUT0
NCLE
1
F->N
控制锁存
3
OUT1
NALE
1
F->N
命令锁存
4
OUT2
NWE
1
F->N
写信号
5
OUT3
NRE
1
F->N
读信号
6
BCS[9:0]
NCS[9:0]
10
F->N
片选
7
BUSY[9:0]
NRB[9:0]
10
N->F
忙信号
8
CLAS[5:0]
NSEL[5:0]
6
N->F
板号00001
序号FPGA接口信号NANDFLASH信号位宽方向备注
1I/O[7:0]NIO[7:0]8双向I/O线
2OUT0NCLE1F->N控制锁存
3OUT1NALE1F->N命令锁存
4OUT2NWE1F->N写信号
5OUT3NRE1F->N读信号
6BCS[9:0]NCS[9:0]10F->N片选
7BUSY[9:0]NRB[9:0]10N->F忙信号
8CLAS[5:0]NSEL[5:0]6N->F板号00001
40位SRAM与NIOSII连接
40位SRM模块与NIOSII通过ABUS连接,实现正确的时序读写操作。测试时,一次只测试8位,分5次完成所有空间的测试。如图2-4。表4是详细的信号连接说明。
图2-4ABUS与40位SRAM连接
表4,40位SRAM接口连接表
序号
FPGA接口信号
NAND FLASH信号
位宽
方向
备注
1
I/O[39:0]
SDAT[39:0]
40
双向
数据总线
2
OUT0
SWR
1
F->S
写控制
3
OUT1
SRD
1
F->S
读控制
4
OUT[6:2]
SB[4:0]
5
F->S
字节使能
5
ADD[27:0]
SADD[27:0]
28
F->S
地址总线
6
BCS[9:0]
SCS[9:0]
10
F->S
片选
7
CLAS[5:0]
NSEL[5:0]
6
S->F
板号见后面章节
序号FPGA接口信号NANDFLASH信号位宽方向备注
1I/O[39:0]SDAT[39:0]40双向数据总线
2OUT0SWR1F->S写控制
3OUT1SRD1F->S读控制
4OUT[6:2]SB[4:0]5F->S字节使能
5ADD[27:0]SADD[27:0]28F->S地址总线
6BCS[9:0]SCS[9:0]10F->S片选
7CLAS[5:0]NSEL[5:0]6S->F板号见后面章节
8位SRAM与NIOSII连接
8位SRM模块与NIOSII通过ABUS(FPGA)连接,实现正确的时序读写操作。如图2-5。表5是信号连接说明。
图2-5ABUS与8位SRAM连接
表5,8位SRAM接口连接表
序号
FPGA接口信号
NAND FLASH信号
位宽
方向
备注
1
I/O[7:0]
SDAT[7:0]
8
双向
数据总线
2
OUT0
SWR
1
F->S
写控制
3
OUT1
SRD
1
F->S
读控制
4
ADD[27:0]
SADD[27:0]
28
F->S
地址总线
5
BCS[9:0]
SCS[9:0]
10
F->S
片选
6
CLAS[5:0]
NSEL[5:0]
6
S->F
板号见后面章节
序号FPGA接口信号NANDFLASH信号位宽方向备注
1I/O[7:0]SDAT[7:0]8双向数据总线
2OUT0SWR1F->S写控制
3OUT1SRD1F->S读控制
4ADD[27:0]SADD[27:0]28F->S地址总线
5BCS[9:0]SCS[9:0]10F->S片选
6CLAS[5:0]NSEL[5:0]6S->F板号见后面章节
硬件电路设计
在测试NANDFLASH时,测试时间长达十个小时不等。在此为提高测试效率,增加测试速度,本设计采用两套完全一样且独立的硬件系统构成。可同时最多测试2片NANDFLASH器件。每一个硬件系统由一个微处理器(NIOSII)加一个大容量FPGA及一个存储器测试扩展接口(即ABUS接口)三大模块构成。如图3-1。RS232通信接口实现测试系统与上位机的数据交换,完成人机交互操作。电源系统产生各种合适的电压,满足各芯片的电源供给。
图3-1硬件方块图
处理器模块电路
处理器模块电路由FPGA内嵌的NIOSII软核(CPU)、两路RS232通信、一个FLASH芯和一个SRAM芯片组成。CPU是整个系统的核心管理者,向下负责各种存储器芯片的读写测试,向上负责与上位机通信,实现人机交互。通信由其中一个RS232电路完成,另一个RS232电路用来实现系统调试和软件固化。FLASH芯片用来存储程序代码及重要的数据。而SRAM芯片在CPU上电工作以后,通过CPU加载FLASH的程序,最终给CPU的程序代码提供快速的运行环境。
基于FPGA的ABUS接口模块
ABUS接口模块由FPGA芯片、配置FLASH及数据存储EEPROM芯片构成。ABUS要实现NIOSII的外部总线与多种存储器模块的接口对接,每一种特定的存储器有一个特定的时序逻辑,而每一种时序逻辑可以通过FPGA的硬件代码(IP核)来实现,具体的每一个存储器模块在测试时会给ABUS接口一个固定的类别信号CLAS,ABUS接口根据这个类别信号识别出各种SIP存储器模块,最终切换出正确的对应特定产品的时序逻辑,来完成NIOSII通过外部总线来对存储器芯片的读写测试。而配置FLASH实现FPGA在上电时硬件程序的加载工作及掉电数据保护。EEPROM用来存储一些重要的系统参数。
SIP存储器测试扩展接口
存储器测试扩展接口在硬件上由两排双排座构成。一共是120个管脚。ABUS接口与测试扩展接口相连接:40个管脚与双向的数据或I/O线相连、8个管脚与8根信号输入控制线相连、16个管脚与16根片选信号输出线相连、5个管脚与5根类别输入信号相连、16个管脚与16根状态输入信号线相连、27个管脚与27根地址线相连。其它的管脚可分配成电源和地线,以及信号指示等。
ABUS接口IP核的设计
每一种SIP存储器对应于一个特定的ABUS接口IP核,以实现正确的时序读写操作。这个IP核有一个统一的接口约定,都是由两个固定的接口构成,其中与NIOSII连接的是外部总线接口,其操作按照NIOSII的外部总线时序规范来实现,另一个接口就是上文提及的ABUS接口,在相应的CLAS信号有效的情况下,它负责把NIOSII的外部总线读写时序转换成对应存储器芯片的时序。IP核的工作就是完成这些读写操作的转换。表5是各种SIP存储器对应的类别信(CLAS)号输入值,在设计接口转接板时要按这个值设定,ABUS才会切换出正确的读写时序。
七位类别示别信号含义:T_XX_WW_CC,T为1表示高低测试测试,为0表示常温下的功能测试。XX表示存储器种类,WW表示总线宽度,CC表示容量种类。
表5各种SIP存储器对应的CLAS信号值
XX信号说明
序号
SIP存储器种类
CLAS信号[5:4]
备注
1
SRAM
2
MRAM
1
3
NOR FLASH
2
4
NAND FLASH
3
WW信号说明
序号
SIP存储器位宽
CLAS信号[3:2]
备注
1
8位
2
16位
1
3
32位
2
4
40位
3
CC信号说明
序号
SIP存储器容量种类
CLAS信号[1:0]
备注
1
容量一
2
容量二
1
3
容量三
2
4
容量四
3
XX信号说明
序号SIP存储器种类CLAS信号[5:4]备注
1SRAM0
2MRAM1
3NORFLASH2
4NANDFLASH3
WW信号说明
序号SIP存储器位宽CLAS信号[3:2]备注
18位0
216位1
332位2
440位3
CC信号说明
序号SIP存储器容量种类CLAS信号[1:0]备注
1容量一0
2容量二1
3容量三2
4容量四3
8位SRAM/MRAM/NORFLASH接口IP核设计
如图4-1,SRAM、MRAM和NORFLASH的接口操作基本一致,NIOSII的总线时序完全满足。故在FPGA内部只要简单地把相应的控制线和数据线相连就可以了,唯独只要设计一个片选寄存器,用来区分存储器芯片的16个片选。每一个片选可以访问的空间为128MByte。片选寄存器的地址为(基址+0x0FFFFFFC),基地址设在NIOSII外部总线的最高地址位。
图4-18位SRAM/MRAM/NORFLASH接口IP
16位SRAM/MRAM/NORFLASH接口IP核设计
如图4-2,SRAM、MRAM和NORFLASH的接口操作基本一致,NIOSII的总线时序完全满足。故在FPGA内部只要简单的把相应的控制线和数据线相连就可以了,唯独只要设计一个片选寄存器,用来区分SIP的16个片选。每一个片选可以访问的空间为128MByte。片选寄存器的地址为(基址+0x0FFFFFFC),基地址设在NIOSII外部总线的最高地址位。
图4-216位SRAM/MRAM/NORFLASH接口IP
32位SRAM/MRAM/NORFLASH接口IP核设计
如图4-3,SRAM、MRAM和NORFLASH的接口操作基本一致,NIOSII的总线时序完全满足。故在FPGA内部只要简单的把相应的控制线和数据线相连就可以了,唯独只要设计一个片选寄存器,用来区分SIP的16个片选。每一个片选可以访问的空间为128MByte。片选寄存器的地址为(基址+0x0FFFFFFC),基地睛设在NIOSII外部总线的最高地址位。
图4-332位SRAM/MRAM/NORFLASH接口IP
40位SRAM/MRAM/NORFLASH接口IP核设计
如图4-4,40位的数据宽度有点特殊。在此我们把40位的数据分成5个8位的区域,用8位宽度的总线去分别访问每一个区域。IP核中的位选寄存器就是用来完成切换8位数据总线到40位总线的5个区域的其中一个。片选寄存器的地址为(基址+0x0FFFFFFC),位选寄存器的地址为(基址+0x0FFFFFF8)。最大可以测试128M×40位×16片的存储器SRAM/MRAM/NORFLASH模块。
图4-440位SRAM/MRAM/NORFLASH接口IP
8位NANDFLASH的ABUS接口IP设计
如图4-5,通过写片选寄存器来选中模块的16个片选的其中一个。我们约定其地址为(基址+0x0FFFFFFC)。读状态寄存器返回的是16个NANDFLASH芯片的忙信号,其地址为(基址+0x0FFFFFF8)。向地址(基址+0x00)写入数据就是对NANDFLASH数据寄存器的写操作。向地址(基址+0x00)单元读数据就是对NANDFLASH数据寄存器的读操作。向地址(基址+0x01)写入数据就是对NANDFLASH命令寄存器的写操作。向地址(基址+0x02)写入数据就是对NANDFLASH地址寄存器的写操作。
图4-58位NANDFLASH的ABUS接口IP核设计图
16位NANDFLASH的ABUS接口IP设计
16位的NANDFLASH存储器芯片可以有多种组合方式,可以用多个16位的NANDFLASH组合,也可以用多个8位的NANDFLASH组合。这里我们假设16位的SIPNANDFLASH产品是由多个16位的NANDFLASH组合而成,下面的IP核是根据它的结构来设计的。
如图4-6,通过写片选寄存器来选中模块的16个片选的其中一个。我们约定其地址为(基址+0x0FFFFFFC)。读状态寄存器返回的是16个NANDFLASH芯片的忙信号,其地址为(基址+0x0FFFFFF8)。向地址(基址+0x00)写入数据就是对NANDFLASH数据寄存器的写操作。向地址(基址+0x00)单元读数据就是对NANDFLASH数据寄存器的读操作。向地址(基址+0x01)写入数据就是对NANDFLASH命令寄存器的写操作。向地址(基址+0x02)写入数据就是对NANDFLASH地址寄存器的写操作。
图4-616位NANDFLASH的ABUS接口IP核设计图
验证与总结
将写好的FPGA程序和调试的C代码写入FLASH后,掉电重配置FPGA,串口的输出能正常识别所有设置好的存储器芯片,并能够进行准确地读写功能测试。达到了设计目的。
本文介绍了一种低成本、简单、灵活的多种存储器芯片测试系统的硬件设计,并采用FPGA、FLASH、SDRAM、RS232电路等实现。采用这种方案,用户可根据市场需求,灵活的增加测试系统功能,实现更多的存储器芯片测试。
参考文献:
【1】K9F4G08U0B512Mx8Bit/1Gx8BitNANDFlashMemorydatasheet,May30,2008
【2】AvalonInterfaceSpecifications,Version1.3,August2010
【3】R1RP0416DSeries4MHighSpeedSRAMdatasheet,Rev.1.00,Mar.12.2004
【4】HN58V1001Series1MEEPROMdatasheet,Rev.7.0,Oct.31.1997
【5】MR0A08B128Kx8MRAMMemorydatasheet,Rev.2,6/2009
【6】S29JL064H64Megabit(8Mx8-Bit/4Mx16-Bit)datasheet,RevisionA,March26,2004
精彩评论