一種用于sd3.00主機(jī)控制器的動態(tài)時鐘相位調(diào)整方法
【專利摘要】本發(fā)明公開了一種用于SD3.00主機(jī)控制器的動態(tài)時鐘相位調(diào)整方法,使用FPGA片內(nèi)的可變相位PLL產(chǎn)生不同相位的采樣時鐘;使用不同相位的采樣時鐘采樣SDXC卡的TUNING數(shù)據(jù)塊,與規(guī)范定義的數(shù)據(jù)塊進(jìn)行匹配,并且記錄每一次的匹配結(jié)果;使用最佳相位選擇算法,選擇一個最佳的采樣時鐘相位;整個過程由硬件自動實現(xiàn),不需要軟件的參與,速度快,相位準(zhǔn),最終使SD3.00主機(jī)控制器能夠在UHS-I高速模式下正確地采樣SD卡的數(shù)據(jù)。本發(fā)明提出的方法,全數(shù)字化實現(xiàn),不僅適用于FPGA,也適用于其他包含可變相位PLL的芯片。
【專利說明】-種用于SD3. 00主機(jī)控制器的動態(tài)時鐘相位調(diào)整方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及SD主機(jī)控制器的設(shè)計領(lǐng)域,具體涉及SD3. 00主機(jī)控制器的采樣時鐘 設(shè)計,用于為SD3. 00主機(jī)控制器提供最佳的采樣時鐘。
【背景技術(shù)】
[0002] 在2009年6月,SD3. 00規(guī)范發(fā)布了?;赟D3. 00技術(shù)的存儲卡,一般叫做SDXC 卡,容量可達(dá)2TB,理論速度可達(dá)300MB/S,遠(yuǎn)遠(yuǎn)超出了大多數(shù)應(yīng)用的需求。目前許多公司的 都有自己的SDXC卡產(chǎn)品。隨著符合SD3. 00規(guī)范的SDXC卡的推出,進(jìn)行SD3. 00主機(jī)控制 器的研究就有了深遠(yuǎn)的意義。
[0003] SD3. 00主機(jī)控制器和以往的SD主機(jī)控制器相比,主要區(qū)別在于物理接口的變化 和時鐘頻率的變化。在SD3. 00的UHS-I傳輸模式中,時鐘頻率高達(dá)208MHz,有效數(shù)據(jù)窗口 只有2. 88ns,加上電路延遲和時鐘相位的溫漂,采樣時鐘的相位必須進(jìn)行動態(tài)調(diào)整,才能正 確地采樣SD卡的數(shù)據(jù)。
【發(fā)明內(nèi)容】
[0004] 技術(shù)問題:本發(fā)明針對SD3. 00主機(jī)控制器的UHS-I高速傳輸模式,提出了一種動 態(tài)時鐘相位調(diào)整方法,使得主機(jī)控制器可以動態(tài)調(diào)整采樣時鐘的相位,從而在高速模式下 可以正確地采樣SD卡的數(shù)據(jù)。
[0005] 技術(shù)方案:本發(fā)明提出的動態(tài)時鐘相位調(diào)整方法,首先使用FPGA片內(nèi)的可變相位 PLL產(chǎn)生不同相位的采樣時鐘;然后使用不同相位的采樣時鐘采樣SDXC卡的TUNING數(shù)據(jù) 塊,與規(guī)范定義的數(shù)據(jù)塊進(jìn)行匹配,并且記錄每一次的匹配結(jié)果;最后使用最佳相位選擇算 法,選擇一個最佳的采樣時鐘相位。
[0006] 動態(tài)時鐘相位調(diào)整方法具體包括如下步驟: 1) SD主機(jī)控制器依次發(fā)送CMDO、CMD8、ACMD41、CMD11、CMD2、CMD3命令,初始化SDXC 卡,然后發(fā)送CMD7切換SDXC卡的狀態(tài)為數(shù)據(jù)傳輸狀態(tài),再然后發(fā)送ACMD6命令設(shè)置SDXC 卡的數(shù)據(jù)線寬度為4,最后發(fā)送CMD6開啟SDXC卡的UHS-I高速模式;然后進(jìn)入步驟2); 2) 配置SD主機(jī)控制器的寄存器,置位ΕΧΕ⑶TE_TUNING位,激活時鐘控制模塊的采樣時 鐘相位調(diào)整序列;然后進(jìn)入步驟3); 3) SD主機(jī)控制器發(fā)送CMD19命令,讓所述SD3. 00卡返回64字節(jié)的TUNING數(shù)據(jù)塊;然 后進(jìn)入步驟4); 4) SD主機(jī)控制器的時鐘控制模塊記錄這個TUNING數(shù)據(jù)塊,并且與規(guī)范定義的TUNING 數(shù)據(jù)塊進(jìn)行匹配。如果匹配,記為"1",說明采樣時鐘的相位滿足時序要求;如果不匹配,記 為"0",說明不滿足時序要求。并且將匹配結(jié)果存入32比特的循環(huán)移位寄存器result中; 然后進(jìn)入步驟5); 5) 執(zhí)行PLL的相位調(diào)整序列,將采樣時鐘的相位增加采樣周期的1/32 ;然后進(jìn)入步驟 6); 6) 重復(fù)步驟3到步驟5,直到32個采樣時鐘的相位全部驗證完畢;然后進(jìn)入步驟7); 7) 使用最佳相位選擇算法,從循環(huán)移位寄存器result的32個比特中,找出最長的一串 " 1",那么中間的" 1"就代表了最佳的采樣時鐘相位。然后進(jìn)入步驟8); 8) 根據(jù)最佳的采樣時鐘相位,再次執(zhí)行PLL的相位調(diào)整序列,完成采樣時鐘相位調(diào)整; 有益效果:本發(fā)明全數(shù)字化實現(xiàn),整個相位調(diào)整過程由硬件全自動完成,軟件只需要做 少量的配置即可,既快速,又精確。硬件方面,只需要有可變相位PLL的支持即可,控制電路 全部由數(shù)字邏輯實現(xiàn),可以在不改動原有電路結(jié)構(gòu)的基礎(chǔ)上應(yīng)用本方法。采用本發(fā)明提出 的方法后,SD3. 00主機(jī)控制器可以方便快捷地校正采樣時鐘的相位,從而在UHS-I高速模 式下,在208MHz的SD總線時鐘頻率下,正確地采樣來自SDXC卡的數(shù)據(jù)。
【專利附圖】
【附圖說明】
[0007] 圖1為本發(fā)明采樣時鐘相位調(diào)整流程圖; 圖2為本發(fā)明最佳相位選擇算法原理圖; 圖3為本發(fā)明FPGA片內(nèi)的PLL相位調(diào)整時序; 圖4為本發(fā)明最佳相位選擇算法仿真圖。
【具體實施方式】
[0008] 下面結(jié)合附圖對發(fā)明的技術(shù)方案進(jìn)行詳細(xì)的說明。
[0009] 本發(fā)明提出的動態(tài)時鐘相位調(diào)整方法,首先使用FPGA片內(nèi)的可變相位PLL產(chǎn)生不 同相位的采樣時鐘;然后使用不同相位的采樣時鐘采樣SDXC卡的TUNING數(shù)據(jù)塊,與規(guī)范定 義的數(shù)據(jù)塊進(jìn)行匹配,并且記錄每一次的匹配結(jié)果;最后使用最佳相位選擇算法,選擇一個 最佳的采樣時鐘相位。
[0010] 動態(tài)時鐘相位調(diào)整方法具體包括如下步驟: 1) SD主機(jī)控制器依次發(fā)送CMDO、CMD8、ACMD41、CMD11、CMD2、CMD3命令,初始化SDXC 卡,然后發(fā)送CMD7切換SDXC卡的狀態(tài)為數(shù)據(jù)傳輸狀態(tài),再然后發(fā)送ACMD6命令設(shè)置SDXC 卡的數(shù)據(jù)線寬度為4,最后發(fā)送CMD6開啟SDXC卡的UHS-I高速模式;然后進(jìn)入步驟2); 2) 配置SD主機(jī)控制器的寄存器,置位ΕΧΕ⑶TE_TUNING位,激活時鐘控制模塊的采樣時 鐘相位調(diào)整序列;然后進(jìn)入步驟3); 3) SD主機(jī)控制器發(fā)送CMD19命令,該命令帶有數(shù)據(jù)傳輸。SDXC卡收到該命令后,會返 回64字節(jié)的TUNING數(shù)據(jù)塊,數(shù)據(jù)塊的內(nèi)容是固定不變的;然后進(jìn)入步驟4); 4) 如圖2所示,SD主機(jī)控制器的時鐘控制模塊記錄這個TUNING數(shù)據(jù)塊,并且與規(guī)范定 義的TUNING數(shù)據(jù)塊進(jìn)行匹配。如果匹配,記為"1",說明采樣時鐘的相位滿足時序要求;如 果不匹配,記為"0",說明不滿足時序要求。并且將匹配結(jié)果存入32比特的循環(huán)移位寄存器 result中;然后進(jìn)入步驟5); 5) 本發(fā)明使用的FPGA是Altera公司Stratix III系列的EP3SL340H1152C3。其 PLL的相位調(diào)整序列如圖3所示。其中,SCANCLK是用于重配置PLL的時鐘。首先拉高 PLL模塊的PHASESTEP,然后再設(shè)置PHASEUPD0WN(拉高為增加相位,拉低為減少相位)和 PHASECOUNTERSELECT (從4' h2到4' hb分別選擇PLL的從C0到C9輸出時鐘),將采樣時 鐘的相位增加采樣周期的1/32 ;然后進(jìn)入步驟6); 6) 重復(fù)步驟3)到步驟5),直到32個采樣時鐘的相位全部驗證完畢;然后進(jìn)入步驟7); 7) 使用最佳相位選擇算法,從循環(huán)移位寄存器result的32個比特中,找出最長的一串 " 1",那么中間的" 1"就代表了最佳的采樣時鐘相位。如圖2所示,首先初始化tar_phaSe_ start和tar_phase_len為0,然后找到一串" 1 "的起始位,用cur_phase_start記錄,再 找到這串"1"的結(jié)束位,計算這串"1"的長度,用cur_phase_len記錄,如果cur_phase_ len>tar_phase_len,那么將 tar_phase_start 和 tar_phase_len 的值替換為 cur_phase_ start和cur_phase_len,然后繼續(xù)尋找下一串"1",直到32個比特全部掃描完畢。最終, tar_phase_start+tar_phase_len/2指向的"1",就代表了最佳米樣時鐘的相位。然后進(jìn)入 步驟8);算法的仿真結(jié)果如圖4所示,輸入測試數(shù)據(jù)為result=32' blOl 1_1100_0111_1111 _0110_1000_1111_1111,可以看出,最長的一串1從第24位開始(注意,最左邊的比特位為 第〇位),長度為9 ; 8) 根據(jù)最佳的采樣時鐘相位,再次執(zhí)行PLL的相位調(diào)整序列,完成采樣時鐘相位調(diào)整。
【權(quán)利要求】
1. 一種用于SD3. 00主機(jī)控制器的動態(tài)時鐘相位調(diào)整方法,其特征在于: 使用FPGA片內(nèi)的可變相位PLL產(chǎn)生不同相位的采樣時鐘; 使用不同相位的采樣時鐘采樣SDXC卡的TUNING數(shù)據(jù)塊,與規(guī)范定義的數(shù)據(jù)塊進(jìn)行匹 配,并且記錄每一次的匹配結(jié)果; 使用最佳相位選擇算法,選擇一個最佳的采樣時鐘相位。
2. 如權(quán)利要求1所述用于SD3. 00主機(jī)控制器的動態(tài)時鐘相位調(diào)整方法,其具體包括如 下步驟: 1) 初始化SD3. 00卡,然后發(fā)送CMD7使其進(jìn)入數(shù)據(jù)傳輸狀態(tài),發(fā)送ACMD6命令設(shè)置數(shù)據(jù) 線寬度為4,再發(fā)送CMD6開啟UHS-I高速模式;然后進(jìn)入步驟2); 2) 配置寄存器,激活時鐘控制器的采樣時鐘相位調(diào)整序列;然后進(jìn)入步驟3); 3) 發(fā)送CMD19命令,讓所述SD3. 00卡返回64字節(jié)的TUNING數(shù)據(jù)塊;然后進(jìn)入步驟 4); 4) 將卡返回的TUNING數(shù)據(jù)塊與規(guī)范定義的TUNING數(shù)據(jù)塊進(jìn)行匹配,如果匹配,說明采 樣時鐘的相位滿足時序要求;如果不匹配,說明不滿足時序要求;并且記錄匹配結(jié)果;然后 進(jìn)入步驟5); 5) 配置PLL,將采樣時鐘的相位增加采樣周期的1/32 ;然后進(jìn)入步驟6); 6) 重復(fù)步驟3)到步驟5),直到32個采樣時鐘的相位全部測試完畢;然后進(jìn)入步驟7); 7) 使用最佳相位選擇算法,選擇一個最佳的采樣時鐘相位;然后進(jìn)入步驟8); 8) 根據(jù)最佳的采樣時鐘相位,再次配置PLL,完成采樣時鐘相位調(diào)整。
3. 權(quán)利要求1所述用于SD3. 00主機(jī)控制器的動態(tài)時鐘相位調(diào)整方法,其中最佳相位選 擇算法為從32個相位測試結(jié)果中選擇一個最佳相位,即: 先用一個32比特的寄存器保存測試結(jié)果; 使用狀態(tài)機(jī)從中查找出最長的有效區(qū)間; 最長有效區(qū)間的中間值就是最佳采樣時鐘相位。
【文檔編號】G06F1/08GK104122935SQ201410369479
【公開日】2014年10月29日 申請日期:2014年7月30日 優(yōu)先權(quán)日:2014年7月30日
【發(fā)明者】劉昊, 楊賦庚 申請人:東南大學(xué)