CN103942130B - 一种sd卡模型的时序控制方法 - Google Patents

一种sd卡模型的时序控制方法 Download PDF

Info

Publication number
CN103942130B
CN103942130B CN201410173001.6A CN201410173001A CN103942130B CN 103942130 B CN103942130 B CN 103942130B CN 201410173001 A CN201410173001 A CN 201410173001A CN 103942130 B CN103942130 B CN 103942130B
Authority
CN
China
Prior art keywords
snap gauge
gauge type
control method
sequential control
reading
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410173001.6A
Other languages
English (en)
Other versions
CN103942130A (zh
Inventor
李风志
杨萌
姚香君
戴绍新
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Sinochip Semiconductors Co Ltd
Original Assignee
Shandong Sinochip Semiconductors Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong Sinochip Semiconductors Co Ltd filed Critical Shandong Sinochip Semiconductors Co Ltd
Priority to CN201410173001.6A priority Critical patent/CN103942130B/zh
Publication of CN103942130A publication Critical patent/CN103942130A/zh
Application granted granted Critical
Publication of CN103942130B publication Critical patent/CN103942130B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种SD卡模型的时序控制方法,用于SD卡模型验证的验证平台的激励创建有用于随机SD卡标准时序值的类,并匹配该随机SD卡标准时序值的类,还创建有关联不同时序值用以产生相应时序参数的类;适配待测的SD卡模型,根据命令操作和数据读写生成激励时,对命令操作和数据读写的不同时段随机相应的时序值,并配置相应的时序参数。依据本发明可以更好的控制SD卡模型的时序。

Description

一种SD卡模型的时序控制方法
技术领域
本发明涉及一种SD卡(SecureDigitalMemoryCard,安全数码存储卡)模型的时序控制方法,属于片上系统(Systemonachip,SoC)芯片验证技术领域。
背景技术
对于一个SoC芯片,在一些应用中需要挂载外部设备,如SD卡,这就需要在SoC模块级中验证SD卡的控制器以及在顶层验证SoC系统能否对SD卡进行正确操作。模块级验证及顶层验证是在电脑上利用仿真软件进行验证,所以如果想在仿真时验证SoC芯片的SD功能的正确性就需要一个兼容性好的SD卡模型。
具体来说,SD卡是SD总线的外挂设备,通过SD控制器与片上总线AHB(AdvancedHighPerformanceBus,高级高性能总线)相连,控制器分别通过命令线、数据线向SD卡端发送命令,并从SD卡端接收响应。通信过程中卡是被动的,再接收到控制器相关命令后进行相应的反馈。
在现有的技术中,一般采用设计的思想利用verilog语言设计SD卡模型,这种方法虽然可以设计SD卡模型,但是由于该类设计是采用时钟跳变进行时序控制,各个控制逻辑并行进行。
该类设计方法灵活性不足,表现在一方面是不能对时序做到很好的控制,如对于SD标准的时序值Ncr,如果采用该类设计的思想,也就是在某个时钟触发后再延时Ncr个时钟周期,从而导致代码很难调试,而且很难使得其值在2到64之间随机。
另一方面是难以利用状态机控制SD卡状态转换,如卡识别模式是一个顺序过程,而数据传输模式中的SD卡状态相互跳转。
发明内容
因此,本发明的目的在于提供一种SD卡模型的时序控制方法,以更好的控制SD卡模型的时序。
本发明采用以下技术方案:
一种SD卡模型的时序控制方法,用于SD卡模型验证的验证平台的激励创建有用于随机SD卡标准时序值的类,并匹配该随机SD卡标准时序值的类,还创建有关联不同时序值用以产生相应时序参数的类;
适配待测的SD卡模型,根据命令操作和数据读写生成激励时,对命令操作和数据读写的不同时段随机相应的时序值,并配置相应的时序参数。
上述SD卡模型的时序控制方法,生成激励时,命令操作与数据读写分开,并通过标志位标识命令操作与数据读写的起始位置,从而,区分出不同的时段而相应随机时序值,并配置相应的时序参数。
上述SD卡模型的时序控制方法,随机值包括:
Ncr:除了命令CMD2和ACMD41外的命令结束位到回复起始位之间的时钟周期;
Nac:命令结束位到读数据起始位之间的时钟周期。
上述SD卡模型的时序控制方法,命令操作中根据命令类型确定延时时间,并在延时时间到达后进入回复命令过程。
上述SD卡模型的时序控制方法,命令类型若为CMD2或者ACMD41,则延时5个时钟周期,若为其他命令则从2~64个时钟周期中随机出延时时间。
上述SD卡模型的时序控制方法,在数据读写中接收完一组数据,则在等待两个时钟周期后,在数据线DAT0上回复CRC状态。
依据本发明,通过随机SD卡标准时序值,也就是采用随机时序模型,借以更好的控制SD卡模型的时序。
附图说明
图1为命令操作流程图。
图2为数据读写流程图。
具体实施方式
一种SD卡模型的时序控制方法,所对应的SD卡模型包含以下文件:
sd_dev.sv,这是模型的顶层文件,用于连接模型的各个文件,包含了SDdevice(SD设备)与外部连接的接口。部分内容如下所示:
modulesd_dev
(
inputsdclk,
wirecmd,
wire[3:0]dat
);
--------------------------------------
--------------------------------------
sd_dev_io
sd_dev_io(
.clk(sdclk)
);
sd_dev_test
sd_dev_test(
.io(sd_dev_io),
.mem_io(ahb_slv_mem_io)
);
assigncmd=sd_dev_io.cmd_oe?sd_dev_io.cmd_out:'z;
assignsd_dev_io.cmd_in=cmd;
assigndat=sd_dev_io.dat_oe?sd_dev_io.dat_out:'z;
assignsd_dev_io.dat_in=dat;
endmodule。
sd_dev.svh,这是SD卡模型的头文件,包含一些固定值,如CID(CardIdentification,卡标识),OCR(OperationConditionregister,操作条件寄存器)等。
sd_dev_io.sv,这是模型的接口文件,用于连接SD卡的接口与program文件。部分内容如下所示:
`include"sd_dev.svh"
interfacesd_dev_io
(
inputlogicclk
);
logiccmd_oe;
logiccmd_in;
logiccmd_out;
logicdat_oe;
logic[3:0]dat_in;
logic[3:0]dat_out;
--------------------------------------
--------------------------------------
endinterface。
sd_dev_test.sv,这是program文件(也就是验证平台中的激励)。部分代码如下所示:
`include"sd_dev.svh"
programautomaticsd_dev_test
(
interfaceio,
interfacemem_io
);
importsd_dev_pkg::*;
initial
begin
Env_sd_devenv;
env=new();
--------------------------------------
--------------------------------------
env.run_test();
end
endprogram:sd_dev_test。
sd_dev_pkg.sv,这是package文件,包含所有的类。
具体方案如下,
sd_dev_test.sv文件中将接口传给sd_dev_pkg.sv中的类,并启动模型。
sd_dev_pkg.sv包含下面的类:
Cfg_sd_dev,配置SD卡模型的参数,用于配置SD卡模型。
Pkt_sd_dev,采用systemveilog的语法随机SD标准时序值(参见SD规范第4.12.4节-TimeValues(Copyright2001-2009SDGroup(Panasonic,SanDisk,Toshiba)andSDCardAssociationPhysicalLayerSpecificationVersion3.00)。
对于不同的SD卡,其时序值是不同的,对于SD卡的时序值随机用来模拟不同的SD卡。如对下面值随机:
Ncr:命令结束位(除了CMD2和ACMD41)到回复起始位之间的时钟周期。
Nac:命令结束位到读数据起始位之间的时钟周期。
CMD2和ACMD41为规范的操作命令,本领域的技术人员应有清楚的理解,在此不再赘述。
对于不同时段进行时序的随机,能够更好地适配当前运行状态的时序,从而能够更好地控制时序。
对SD卡模型验证的过程中,通过如标志位的设定,可以知晓某一操作的当前状态,从而更好的控制时序。
鉴于某些操作退出机制不一定运行在理想状态,通过合理的时间延迟,借以控制整体的时序。
进一步的类还有Gen_sd_dev,用以产生不同的时序参数,以匹配随机的SD标准时序。
使用此类(Gen_sd_dev)构建Pkt_sd_dev类,这样SD卡时序值就确定了。
Env_sd_dev,用于封装package中的所有类,封装后产生的封装体用于在SD卡模型中的传递。
Bfm_sd_dev,SD卡模型的主体,用于命令回复和数据收发,主要采用下面方案:
1、命令操作和数据读写分开,两者往往采用不同的时序,采用两者分开的手段以利于时序控制。
2、对于命令操作来说分为以下步骤,参见说明书附图1:
(1)空过程。在此过程时等待命令起始位,如果等到则进入读取命令过程,否则停留在此过程。
(2)读取命令过程。在此过程接收命令线上的命令,并对命令进行CRC(CyclicRedundancyCheck,循环冗余校验码)校验,如果没有错误则进入分析命令过程,如果出错则停止运行,并跳转到空过程。
(3)分析命令过程。在此过程分析接收到的命令,判断命令类型,根据命令更新SD卡模型的卡状态,准备好回复的命令,根据命令类型进行延时,如果为CMD2或ACMD41,延时Nid(=5)个时钟周期,如果为其他命令延时Ncr(=[2:64])个时钟周期,进入回复命令过程。
SD卡在收到命令后进行回复命令或数据传输时要进行一定的延时。使用本方法设计的SD卡模型,不仅可以实现已有SD卡模型的功能,并且能够更好的控制SD卡的时序,同时对于验证工程师来说使用此方法可以更快地设计其他器件模型。
(4)回复命令过程。如果命令需要回复则在命令线上发送回复命令,如果命令不需要回复则什么也不做,进入空过程。
3、对于数据读写(读写是SD主机的读写)来说分为以下步骤:
(1)空过程。在此过程查看SD卡模型是否为接收数据状态(RCV)或发送数据状态(DATA),如果SD卡模型状态为RCV,程序进入接收数据过程,如果SD卡模型状态为DATA,程序进入发送数据过程。
(2)接收数据过程。在此过程等待数据线上的数据起始位,等到后接收数据,然后进行CRC校验。对于多写来说,如果在接收数据的过程中出现SD卡停止命令CMD12,则停止数据接收,进入空过程。如果接收完一组数据,则在等待两个时钟周期后,在数据线DAT0上回复CRC状态(包含1位起始位,1位结束位,3位状态位)。如果CRC出错,则CRC状态位为“101”,并丢弃此次数据,如果为多写,SD卡模型状态进入RCV,否则SD卡模型进入传输状态(TRAN),程序进入空过程。如果CRC出错,则CRC状态位为“010”,然后进入存储数据过程。
(3)存储数据过程。此过程是模拟SD卡进入编程状态(PRG)。存储完成后如果为多写,SD卡模型状态进入RCV,否则SD卡模型进入传输状态(TRAN)。程序进入空过程。
(4)发送数据过程。在此过程发送数据及其校验位。对于多读来说,如果在发送过程中出现SD卡停止命令CMD12,则停止数据发送,进入空过程。如果发送完一组数据,根据是否多读更改SD卡模型的卡状态,如果为多读,卡状态保存DATA不变,否则进入TRAN。程序进入空过程。

Claims (6)

1.一种SD卡模型的时序控制方法,其特征在于,用于SD卡模型验证的验证平台的激励创建有用于随机SD卡标准时序值的类,并匹配该随机SD卡标准时序值的类,还创建有关联不同时序值用以产生相应时序参数的类;
适配待测的SD卡模型,根据命令操作和数据读写生成激励时,对命令操作和数据读写的不同时段随机相应的时序值,并配置相应的时序参数。
2.根据权利要求1所述的SD卡模型的时序控制方法,其特征在于,生成激励时,命令操作与数据读写分开,并通过标志位标识命令操作与数据读写的起始位置,从而,区分出不同的时段而相应随机时序值,并配置相应的时序参数。
3.根据权利要求2所述的SD卡模型的时序控制方法,其特征在于,随机值包括:
Ncr:除了命令CMD2和ACMD41外的命令结束位到回复起始位之间的时钟周期;
Nac:命令结束位到读数据起始位之间的时钟周期。
4.根据权利要求1至3任一所述的SD卡模型的时序控制方法,其特征在于,命令操作中根据命令类型确定延时时间,并在延时时间到达后进入回复命令过程。
5.根据权利要求4所述的SD卡模型的时序控制方法,其特征在于,命令类型若为CMD2或者ACMD41,则延时5个时钟周期,若为其他命令则从2~64个时钟周期中随机出延时时间。
6.根据权利要求1至3任一所述的SD卡模型的时序控制方法,其特征在于,在数据读写中接收完一组数据,则在等待两个时钟周期后,在数据线DAT0上回复CRC状态。
CN201410173001.6A 2014-04-28 2014-04-28 一种sd卡模型的时序控制方法 Active CN103942130B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410173001.6A CN103942130B (zh) 2014-04-28 2014-04-28 一种sd卡模型的时序控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410173001.6A CN103942130B (zh) 2014-04-28 2014-04-28 一种sd卡模型的时序控制方法

Publications (2)

Publication Number Publication Date
CN103942130A CN103942130A (zh) 2014-07-23
CN103942130B true CN103942130B (zh) 2015-11-18

Family

ID=51189803

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410173001.6A Active CN103942130B (zh) 2014-04-28 2014-04-28 一种sd卡模型的时序控制方法

Country Status (1)

Country Link
CN (1) CN103942130B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102360329A (zh) * 2011-09-29 2012-02-22 西北工业大学 总线监控与调试控制装置及进行总线监控与总线调试的方法
CN102542110A (zh) * 2011-12-29 2012-07-04 北京时代民芯科技有限公司 一种应用于移动存储soc芯片的仿真验证方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5382084B2 (ja) * 2011-10-07 2014-01-08 株式会社デンソー 車両用装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102360329A (zh) * 2011-09-29 2012-02-22 西北工业大学 总线监控与调试控制装置及进行总线监控与总线调试的方法
CN102542110A (zh) * 2011-12-29 2012-07-04 北京时代民芯科技有限公司 一种应用于移动存储soc芯片的仿真验证方法

Also Published As

Publication number Publication date
CN103942130A (zh) 2014-07-23

Similar Documents

Publication Publication Date Title
US6769622B1 (en) System and method for simulating universal serial bus smart card device connected to USB host
US7225357B2 (en) SDIO card development system
CN105824573B (zh) Usb-c型线缆与读写其芯片的方法
CN105703883A (zh) 在统一协议通信中交换错误信息的装置、方法和系统
CN103530211B (zh) 一种基于uvm平台的pcie回环自检测的方法
US8161221B2 (en) Storage system provided with function for detecting write completion
CN103198341A (zh) Rfid标签芯片验证系统及验证方法
CN105808396A (zh) 一种芯片调试装置、调试方法及soc芯片系统
CN105185414A (zh) 一种测试方法和装置
CN107656882A (zh) 一种通用串行总线控制器验证方法、系统及设备
CN105159731A (zh) 一种fpga配置文件远程升级的装置
CN105653409B (zh) 一种基于数据类型转换的硬件仿真器验证数据提取系统
CN105786736A (zh) 一种多芯片级联的方法、芯片和装置
CN110501632A (zh) 芯片的可靠性测试系统
CN101763324B (zh) 设备模拟的实现方法和装置
CN105022869A (zh) 一种快速可重构的mcu仿真方法
CN105573881B (zh) 基于bfm快速验证大型互连芯片地址的方法及系统
CN105573947B (zh) 一种基于apb总线的sd/mmc卡控制方法
CN102117344A (zh) 实现sim卡芯片多接口系统验证环境的方法
CN103942130B (zh) 一种sd卡模型的时序控制方法
CN108920193A (zh) Fpga和cpu间sdio通信接口实现方法、及装置
CN108021413A (zh) 一种fpga在线升级方法及设备
CN105389282B (zh) 处理器和arinc429总线的通信方法
CN111371799B (zh) Mctp控制器收发数据的控制方法、装置及设备
CN107168720B (zh) 一种基于fpga的spi接口配置方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant