CN103942130B - 一种sd卡模型的时序控制方法 - Google Patents
一种sd卡模型的时序控制方法 Download PDFInfo
- 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
Links
Abstract
本发明公开了一种SD卡模型的时序控制方法,用于SD卡模型验证的验证平台的激励创建有用于随机SD卡标准时序值的类,并匹配该随机SD卡标准时序值的类,还创建有关联不同时序值用以产生相应时序参数的类;适配待测的SD卡模型,根据命令操作和数据读写生成激励时,对命令操作和数据读写的不同时段随机相应的时序值,并配置相应的时序参数。依据本发明可以更好的控制SD卡模型的时序。
Description
技术领域
本发明涉及一种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状态。
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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5382084B2 (ja) * | 2011-10-07 | 2014-01-08 | 株式会社デンソー | 車両用装置 |
-
2014
- 2014-04-28 CN CN201410173001.6A patent/CN103942130B/zh active Active
Patent Citations (2)
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 |