一种用于sd3.00主机控制器的动态时钟相位调整方法

文档序号:6621924阅读:525来源:国知局
一种用于sd3.00主机控制器的动态时钟相位调整方法
【专利摘要】本发明公开了一种用于SD3.00主机控制器的动态时钟相位调整方法,使用FPGA片内的可变相位PLL产生不同相位的采样时钟;使用不同相位的采样时钟采样SDXC卡的TUNING数据块,与规范定义的数据块进行匹配,并且记录每一次的匹配结果;使用最佳相位选择算法,选择一个最佳的采样时钟相位;整个过程由硬件自动实现,不需要软件的参与,速度快,相位准,最终使SD3.00主机控制器能够在UHS-I高速模式下正确地采样SD卡的数据。本发明提出的方法,全数字化实现,不仅适用于FPGA,也适用于其他包含可变相位PLL的芯片。
【专利说明】-种用于SD3. 00主机控制器的动态时钟相位调整方法

【技术领域】
[0001] 本发明涉及SD主机控制器的设计领域,具体涉及SD3. 00主机控制器的采样时钟 设计,用于为SD3. 00主机控制器提供最佳的采样时钟。

【背景技术】
[0002] 在2009年6月,SD3. 00规范发布了。基于SD3. 00技术的存储卡,一般叫做SDXC 卡,容量可达2TB,理论速度可达300MB/S,远远超出了大多数应用的需求。目前许多公司的 都有自己的SDXC卡产品。随着符合SD3. 00规范的SDXC卡的推出,进行SD3. 00主机控制 器的研究就有了深远的意义。
[0003] SD3. 00主机控制器和以往的SD主机控制器相比,主要区别在于物理接口的变化 和时钟频率的变化。在SD3. 00的UHS-I传输模式中,时钟频率高达208MHz,有效数据窗口 只有2. 88ns,加上电路延迟和时钟相位的温漂,采样时钟的相位必须进行动态调整,才能正 确地采样SD卡的数据。


【发明内容】

[0004] 技术问题:本发明针对SD3. 00主机控制器的UHS-I高速传输模式,提出了一种动 态时钟相位调整方法,使得主机控制器可以动态调整采样时钟的相位,从而在高速模式下 可以正确地采样SD卡的数据。
[0005] 技术方案:本发明提出的动态时钟相位调整方法,首先使用FPGA片内的可变相位 PLL产生不同相位的采样时钟;然后使用不同相位的采样时钟采样SDXC卡的TUNING数据 块,与规范定义的数据块进行匹配,并且记录每一次的匹配结果;最后使用最佳相位选择算 法,选择一个最佳的采样时钟相位。
[0006] 动态时钟相位调整方法具体包括如下步骤: 1) SD主机控制器依次发送CMDO、CMD8、ACMD41、CMD11、CMD2、CMD3命令,初始化SDXC 卡,然后发送CMD7切换SDXC卡的状态为数据传输状态,再然后发送ACMD6命令设置SDXC 卡的数据线宽度为4,最后发送CMD6开启SDXC卡的UHS-I高速模式;然后进入步骤2); 2) 配置SD主机控制器的寄存器,置位ΕΧΕ⑶TE_TUNING位,激活时钟控制模块的采样时 钟相位调整序列;然后进入步骤3); 3) SD主机控制器发送CMD19命令,让所述SD3. 00卡返回64字节的TUNING数据块;然 后进入步骤4); 4) SD主机控制器的时钟控制模块记录这个TUNING数据块,并且与规范定义的TUNING 数据块进行匹配。如果匹配,记为"1",说明采样时钟的相位满足时序要求;如果不匹配,记 为"0",说明不满足时序要求。并且将匹配结果存入32比特的循环移位寄存器result中; 然后进入步骤5); 5) 执行PLL的相位调整序列,将采样时钟的相位增加采样周期的1/32 ;然后进入步骤 6); 6) 重复步骤3到步骤5,直到32个采样时钟的相位全部验证完毕;然后进入步骤7); 7) 使用最佳相位选择算法,从循环移位寄存器result的32个比特中,找出最长的一串 " 1",那么中间的" 1"就代表了最佳的采样时钟相位。然后进入步骤8); 8) 根据最佳的采样时钟相位,再次执行PLL的相位调整序列,完成采样时钟相位调整; 有益效果:本发明全数字化实现,整个相位调整过程由硬件全自动完成,软件只需要做 少量的配置即可,既快速,又精确。硬件方面,只需要有可变相位PLL的支持即可,控制电路 全部由数字逻辑实现,可以在不改动原有电路结构的基础上应用本方法。采用本发明提出 的方法后,SD3. 00主机控制器可以方便快捷地校正采样时钟的相位,从而在UHS-I高速模 式下,在208MHz的SD总线时钟频率下,正确地采样来自SDXC卡的数据。

【专利附图】

【附图说明】
[0007] 图1为本发明采样时钟相位调整流程图; 图2为本发明最佳相位选择算法原理图; 图3为本发明FPGA片内的PLL相位调整时序; 图4为本发明最佳相位选择算法仿真图。

【具体实施方式】
[0008] 下面结合附图对发明的技术方案进行详细的说明。
[0009] 本发明提出的动态时钟相位调整方法,首先使用FPGA片内的可变相位PLL产生不 同相位的采样时钟;然后使用不同相位的采样时钟采样SDXC卡的TUNING数据块,与规范定 义的数据块进行匹配,并且记录每一次的匹配结果;最后使用最佳相位选择算法,选择一个 最佳的采样时钟相位。
[0010] 动态时钟相位调整方法具体包括如下步骤: 1) SD主机控制器依次发送CMDO、CMD8、ACMD41、CMD11、CMD2、CMD3命令,初始化SDXC 卡,然后发送CMD7切换SDXC卡的状态为数据传输状态,再然后发送ACMD6命令设置SDXC 卡的数据线宽度为4,最后发送CMD6开启SDXC卡的UHS-I高速模式;然后进入步骤2); 2) 配置SD主机控制器的寄存器,置位ΕΧΕ⑶TE_TUNING位,激活时钟控制模块的采样时 钟相位调整序列;然后进入步骤3); 3) SD主机控制器发送CMD19命令,该命令带有数据传输。SDXC卡收到该命令后,会返 回64字节的TUNING数据块,数据块的内容是固定不变的;然后进入步骤4); 4) 如图2所示,SD主机控制器的时钟控制模块记录这个TUNING数据块,并且与规范定 义的TUNING数据块进行匹配。如果匹配,记为"1",说明采样时钟的相位满足时序要求;如 果不匹配,记为"0",说明不满足时序要求。并且将匹配结果存入32比特的循环移位寄存器 result中;然后进入步骤5); 5) 本发明使用的FPGA是Altera公司Stratix III系列的EP3SL340H1152C3。其 PLL的相位调整序列如图3所示。其中,SCANCLK是用于重配置PLL的时钟。首先拉高 PLL模块的PHASESTEP,然后再设置PHASEUPD0WN(拉高为增加相位,拉低为减少相位)和 PHASECOUNTERSELECT (从4' h2到4' hb分别选择PLL的从C0到C9输出时钟),将采样时 钟的相位增加采样周期的1/32 ;然后进入步骤6); 6) 重复步骤3)到步骤5),直到32个采样时钟的相位全部验证完毕;然后进入步骤7); 7) 使用最佳相位选择算法,从循环移位寄存器result的32个比特中,找出最长的一串 " 1",那么中间的" 1"就代表了最佳的采样时钟相位。如图2所示,首先初始化tar_phaSe_ start和tar_phase_len为0,然后找到一串" 1 "的起始位,用cur_phase_start记录,再 找到这串"1"的结束位,计算这串"1"的长度,用cur_phase_len记录,如果cur_phase_ len>tar_phase_len,那么将 tar_phase_start 和 tar_phase_len 的值替换为 cur_phase_ start和cur_phase_len,然后继续寻找下一串"1",直到32个比特全部扫描完毕。最终, tar_phase_start+tar_phase_len/2指向的"1",就代表了最佳米样时钟的相位。然后进入 步骤8);算法的仿真结果如图4所示,输入测试数据为result=32' blOl 1_1100_0111_1111 _0110_1000_1111_1111,可以看出,最长的一串1从第24位开始(注意,最左边的比特位为 第〇位),长度为9 ; 8) 根据最佳的采样时钟相位,再次执行PLL的相位调整序列,完成采样时钟相位调整。
【权利要求】
1. 一种用于SD3. 00主机控制器的动态时钟相位调整方法,其特征在于: 使用FPGA片内的可变相位PLL产生不同相位的采样时钟; 使用不同相位的采样时钟采样SDXC卡的TUNING数据块,与规范定义的数据块进行匹 配,并且记录每一次的匹配结果; 使用最佳相位选择算法,选择一个最佳的采样时钟相位。
2. 如权利要求1所述用于SD3. 00主机控制器的动态时钟相位调整方法,其具体包括如 下步骤: 1) 初始化SD3. 00卡,然后发送CMD7使其进入数据传输状态,发送ACMD6命令设置数据 线宽度为4,再发送CMD6开启UHS-I高速模式;然后进入步骤2); 2) 配置寄存器,激活时钟控制器的采样时钟相位调整序列;然后进入步骤3); 3) 发送CMD19命令,让所述SD3. 00卡返回64字节的TUNING数据块;然后进入步骤 4); 4) 将卡返回的TUNING数据块与规范定义的TUNING数据块进行匹配,如果匹配,说明采 样时钟的相位满足时序要求;如果不匹配,说明不满足时序要求;并且记录匹配结果;然后 进入步骤5); 5) 配置PLL,将采样时钟的相位增加采样周期的1/32 ;然后进入步骤6); 6) 重复步骤3)到步骤5),直到32个采样时钟的相位全部测试完毕;然后进入步骤7); 7) 使用最佳相位选择算法,选择一个最佳的采样时钟相位;然后进入步骤8); 8) 根据最佳的采样时钟相位,再次配置PLL,完成采样时钟相位调整。
3. 权利要求1所述用于SD3. 00主机控制器的动态时钟相位调整方法,其中最佳相位选 择算法为从32个相位测试结果中选择一个最佳相位,即: 先用一个32比特的寄存器保存测试结果; 使用状态机从中查找出最长的有效区间; 最长有效区间的中间值就是最佳采样时钟相位。
【文档编号】G06F1/08GK104122935SQ201410369479
【公开日】2014年10月29日 申请日期:2014年7月30日 优先权日:2014年7月30日
【发明者】刘昊, 杨赋庚 申请人:东南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1