一种基于FPGA的SD卡测试系统及方法与流程

文档序号:12888624阅读:1009来源:国知局
一种基于FPGA的SD卡测试系统及方法与流程

本发明涉及测试技术领域,特别涉及一种基于fpga的sd卡测试系统,还涉及一种基于fpga的sd卡测试方法。



背景技术:

随着信息时代的到来,智能手机也成了人们办公、交流、娱乐的工具,伴随而来的就是大量手机软件的出现,这对各种移动设备的存储要求更高了,而sd(securedigitalmemorycard)卡作为大容量存储器得到了越来越广泛地应用。

sd卡的性能好坏直接关系到人们生产和生活中正在进行的工作的安全性和可靠性,一方面由于闪存卡和u盘的结构简单、技术门槛低,并且有大量的闪存颗粒残次品销往中国;另一方面正品厂家由于移动存储产品的利润单薄,减少打假投入,这些主观和客观因素都造成伪劣闪存卡和u盘的泛滥成灾。所以,sd卡的性能验证和测试就显得尤其重要。

目前,测试sd卡的方式主要有两种,一种是使用sd卡控制器的电路模块或相应芯片,比如sd卡读卡器;第二种是将i/o口直接与sd卡接口进行连接,从而用软件模拟sd卡的时序来控制其读写,比如一些单片机有专门的sd卡接口。

使用专用的sd卡控制芯片的方式增加了电路的复杂度,提高了设计成本。而直接用软件测试虽然降低了成本和复杂度,但是传输速率不高,无法满足高速率连续测试。



技术实现要素:

为解决上述现有技术的不足,本发明提出了一种基于fpga的sd卡测试系统及方法,不仅可以对sd卡读写测试,还可以对sd卡进行单条指令测试和误码测试。

本发明的技术方案是这样实现的:

一种基于fpga的sd卡测试系统,fpga内部控制电路包括时钟发生与管理模块、prbs图形发生模块、发送模块、接收模块、命令控制模块、数据处理模块、序列同步模块以及接口控制模块;

fpga通过接口控制模块接收上位机的命令,并将命令或者数据送至数据处理模块;

数据处理模块判断命令后进行下一步操作,当正常发送接收测试和命令测试时,prbs图形发生模块以及序列同步模块不使能,接收数据直接由接收模块发送至数据处理模块;当上位机选择误码测试时,prbs图形发生模块与序列同步模块启用。

可选地,对sd卡单条指令测试分为两个阶段:第一个阶段为初始化阶段,第二个阶段为数据传输阶段。

可选地,所述初始化阶段具体过程如下:

步骤1:fpga先发送cmd0命令;

步骤2:fpga发送cmd8命令,等待sd卡响应;若超时后无响应,fpga返回状态字0x01,并进行步骤3;若响应正确,则fpga进行步骤3;若响应错误,则fpga返回状态字0x02,停止测试;

步骤3:fpga发送cmd55+acmd41命令等待sd卡响应;如果无响应,则fpga返回状态字0x03,停止测试;如果响应为busy,则fpga重复步骤3;如果响应为ready,则进行步骤4,并根据状态存储器中状态字判断出sd卡的类型;

步骤4:fpga发送cmd2命令等待响应;无响应,则fpga返回状态字0x04,停止测试;有响应,则fpga存储响应值,该响应值为sd卡的cid信息,然后进入步骤5;

步骤5:fpga发送cmd3命令等待响应;无响应,则fpga返回状态字0x05,停止测试;有相应,则fpga存储响应值,该响应值为卡的相对地址,在传输阶段需要用到该值,然后进入步骤6;

步骤6:初始化阶段完成进入数据传输阶段,等待上位机指令。

可选地,所述数据传输阶段完全由上位机发送操作指令,fpga控制实现sd卡测试;

上位机操作包括传输速率选择、sd卡模式选择、误码测试以及prbs码型选择;

fpga中的数据处理模块进行数据的传输以及状态判断,上位机根据状态字显示状态。

可选地,所述时钟发生与管理模块测试sd卡在不同传输速率下的性能;

上位机设置好传输速率后将控制字发送至下位机,时钟发生与管理模块根据控制字产生所需要的时钟发送至sd卡的时钟引脚;在不同速率下选择相同的prbs序列,经过相同一段时间后根据误码率判断传输性能。

本发明还提出了一种基于fpga的sd卡测试方法,fpga内部控制电路包括时钟发生与管理模块、prbs图形发生模块、发送模块、接收模块、命令控制模块、数据处理模块、序列同步模块以及接口控制模块;

fpga通过接口控制模块接收上位机的命令,并将命令或者数据送至数据处理模块;

数据处理模块判断命令后进行下一步操作,当正常发送接收测试和命令测试时,prbs图形发生模块以及序列同步模块不使能,接收数据直接由接收模块发送至数据处理模块;当上位机选择误码测试时,prbs图形发生模块与序列同步模块启用。

可选地,对sd卡单条指令测试分为两个阶段:第一个阶段为初始化阶段,第二个阶段为数据传输阶段。

可选地,所述初始化阶段具体过程如下:

步骤1:fpga先发送cmd0命令;

步骤2:fpga发送cmd8命令,等待sd卡响应;若超时后无响应,fpga返回状态字0x01,并进行步骤3;若响应正确,则fpga进行步骤3;若响应错误,则fpga返回状态字0x02,停止测试;

步骤3:fpga发送cmd55+acmd41命令等待sd卡响应;如果无响应,则fpga返回状态字0x03,停止测试;如果响应为busy,则fpga重复步骤3;如果响应为ready,则进行步骤4,并根据状态存储器中状态字判断出sd卡的类型;

步骤4:fpga发送cmd2命令等待响应;无响应,则fpga返回状态字0x04,停止测试;有响应,则fpga存储响应值,该响应值为sd卡的cid信息,然后进入步骤5;

步骤5:fpga发送cmd3命令等待响应;无响应,则fpga返回状态字0x05,停止测试;有相应,则fpga存储响应值,该响应值为卡的相对地址,在传输阶段需要用到该值,然后进入步骤6;

步骤6:初始化阶段完成进入数据传输阶段,等待上位机指令。

可选地,所述数据传输阶段完全由上位机发送操作指令,fpga控制实现sd卡测试;

上位机操作包括传输速率选择、sd卡模式选择、误码测试以及prbs码型选择;

fpga中的数据处理模块进行数据的传输以及状态判断,上位机根据状态字显示状态。

可选地,通过时钟发生与管理模块测试sd卡在不同传输速率下的性能;上位机设置好传输速率后将控制字发送至下位机,时钟发生与管理模块根据控制字产生所需要的时钟发送至sd卡的时钟引脚;在不同速率下选择相同的prbs序列,经过相同一段时间后根据误码率判断传输性能。

本发明的有益效果是:

(1)可以对sd卡进行单条指令测试;

(2)灵活性高,可以逐条指令测试sd卡,而且满足长时间高速测试要求。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明的一种基于fpga的sd卡测试系统的原理框图;

图2为本发明的fpga内部控制电路结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明涉及sd卡的测试系统及测试方法,不仅可以对sd卡读写测试,还可以对sd卡进行单条指令测试和误码测试。本发明使用fpga代替专用芯片,灵活度高,满足高速率测试,而且可以对sd卡进行单条指令测试,读写测试时还可以插入伪随机序列,测试系统的误码率。

如图1所示,本发明的sd卡测试系统通过fpga发送控制命令至sd卡,将接收到的命令响应或者数据经过分析后上传至上位机显示。其中,硬件部分采用3u大小的pci板卡结构,上位机操作系统为win7。

如图2所示,本发明的fpga内部控制电路主要包括时钟发生与管理模块、prbs图形发生模块、发送模块、接收模块、命令控制模块、数据分析模块、序列同步模块以及pci9054接口控制模块。

fpga通过接口控制模块接收上位机的命令,并将命令或者数据送至数据处理模块。

数据处理模块判断命令后进行下一步操作,当正常发送接收测试和命令测试时,prbs模块以及序列同步模块不使能,接收数据直接由接收模块发送至数据处理模块;当上位机勾选误码测试功能时,prbs模块与序列同步模块启用。

对sd卡单条指令测试主要分为两个阶段:第一个阶段为初始化阶段,第二个阶段为数据传输阶段。

初始化阶段需要按照顺序操作,具体过程如下:

步骤1:fpga先发送cmd0命令。

步骤2:fpga发送cmd8命令,等待卡响应;若超时后无响应返回状态字0x01(若超时后无响应,fpga返回状态字0x01),并进行步骤3;若响应正确则进行步骤3;若响应错误则fpga返回状态字0x02,停止测试;

步骤3:fpga发送cmd55+acmd41命令等待卡响应;如果无响应则fpga返回状态字0x03,停止测试;如果响应为busy则重复步骤3;如果响应为ready,则进行步骤4,并根据状态存储器中状态字判断出卡的类型。

步骤4:fpga发送cmd2命令等待响应;无响应则fpga返回状态字0x04,停止测试;有响应则fpga存储响应值,该响应值为卡的cid信息,然后进入步骤5;

步骤5:fpga发送cmd3命令等待响应。无响应则fpga返回状态字0x05,停止测试;有相应则fpga存储响应值,该响应值为卡的相对地址,在传输阶段需要用到该值。然后进入步骤6。

步骤6:初始化阶段完成进入数据传输阶段,等待上位机指令。

数据传输阶段完全由上位机发送操作指令,fpga控制实现sd卡测试。上位机操作包括传输速率选择、sd卡模式选择、误码测试以及prbs码型选择等。fpga数据处理模块主要进行数据的传输以及状态判断,上位机根据状态字显示状态,状态字对应状态如表1所示。

表1

测试sd卡在不同传输速率下的性能主要通过时钟发生与管理模块。上位机设置好传输速率后将控制字发送至下位机,时钟发生与管理模块根据控制字产生所需要的时钟发送至sd卡的时钟引脚。在不同速率下选择相同的prbs序列经过相同一段时间后根据误码率判断传输性能。

本发明测试系统进行prbs误码测试的具体步骤如下:

步骤一:误码测试使能后,当fpga发送写sd卡指令时,prbs序列发生器使能,同时比特计数器和字节计数器工作,每计数一个字节将数据发送至fifo;

步骤二:根据所选sd卡模式(单线或者四线),确定发送数据方式,选择不同的并串转换。单线用8转1fifo实现,四线用8转4fifo实现。

步骤三:当字节计数计到512时(即sd卡一个block的字节数)停止prbs序列发生器。

步骤四:fpga发送读sd卡指令(要与写指令中地址相同),同时启动prbs接收。

步骤五:通过定时中断将prbs接收对比结果(比特数,误码数)发送至上位机,上位机计算结果显示。

说明:以上是sd卡单块读写误码测试,连续测试时fpga发送连续读写命令即可。

本发明还提出了一种基于fpga的sd卡测试方法,其工作原理与上述测试系统相同,这里不再赘述。

本发明可以对sd卡进行单条指令测试,在数据收发时可以插入伪随机序列进行误码测试;可以人工控制sd卡读写速率。

本发明灵活性高,可以逐条指令测试sd卡,而且满足长时间高速测试要求;数据传输过程可插入伪随机序列进行误码测试。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1