本發(fā)明涉及時(shí)鐘管理技術(shù)領(lǐng)域,尤其是一種高分辨率時(shí)鐘相移架構(gòu)與算法的實(shí)現(xiàn)方法,用于對(duì)時(shí)鐘進(jìn)行任意度數(shù)相位移動(dòng)。
背景技術(shù):
現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA,F(xiàn)ield Programmable Gate Array)中的數(shù)字時(shí)鐘管理(DCM)主要提供四種功能:時(shí)鐘去歪斜、頻率合成、相移和動(dòng)態(tài)重配置。
相移是按系統(tǒng)的設(shè)定或用戶(hù)的要求對(duì)時(shí)鐘的相位進(jìn)行移動(dòng),由于輸入時(shí)鐘的頻率不一樣,即輸入時(shí)鐘的周期不一樣,相移的單位一般是度。在許多情況下,各時(shí)鐘之間需要相移。在FPGA中,DCM能提供180°和90°的相移,如:CLK2X180、CLKFX180分別是CLK2X和CLKFX的180°相移版本,CLK90、CLK180、CLK270是以90°為分辨率對(duì)CLK0進(jìn)行相移。在鎖相環(huán)(PLL)中,VCO能夠以45°的間隔提供八個(gè)移相的時(shí)鐘。
雖然DCM和PLL提供了一些時(shí)鐘的相移版本,但是都為固定度數(shù)且相移分辨率較低,用戶(hù)在使用時(shí)不能直觀地以度為單位,對(duì)相位進(jìn)行任意度數(shù)移動(dòng)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問(wèn)題是克服現(xiàn)有的缺陷,提供一種高分辨率時(shí)鐘相移架構(gòu)與算法的實(shí)現(xiàn)方法,使用戶(hù)可以對(duì)時(shí)鐘進(jìn)行任意度數(shù)相位移動(dòng)。
為了解決上述技術(shù)問(wèn)題,本發(fā)明提供了如下的技術(shù)方案:
本發(fā)明一種高分辨率時(shí)鐘相移架構(gòu),包括:
粗粒度時(shí)鐘相位延遲鏈DELAY_LINE1,用于以低分辨率對(duì)時(shí)鐘相位進(jìn)行快速的移動(dòng);
時(shí)鐘相位選擇器CLK_PS_MUX1,用于粗粒度時(shí)鐘相位延遲鏈DELAY_LINE1上時(shí)鐘相位的選擇;
細(xì)粒度時(shí)鐘相位延遲鏈FINE_DELAY1,用于以高分辨率對(duì)時(shí)鐘相位選擇器CLK_PS_MUX1輸出時(shí)鐘相位進(jìn)行精確的移動(dòng);
粗粒度時(shí)鐘相位鑒相器GENERAL_PD,用于檢測(cè)粗粒度時(shí)鐘相移時(shí),目標(biāo)相移時(shí)鐘CLKOUT1的相位是否超過(guò)基準(zhǔn)相移時(shí)鐘CLKOUT0的相位;
細(xì)粒度時(shí)鐘相位鑒相器FINE_PD,用于檢測(cè)細(xì)粒度時(shí)鐘相移時(shí),目標(biāo)相移時(shí)鐘CLKOUT1的相位是否超過(guò)基準(zhǔn)相移時(shí)鐘CLKOUT0的相位;
粗粒度時(shí)鐘相位延遲鏈控制器GENERAL_CTRL,用于接收粗粒度時(shí)鐘相位鑒相器GENERAL_PD的輸出信號(hào)或用戶(hù)配置的數(shù)據(jù)DATA1,并控制時(shí)鐘相位選擇器CLK_PS_MUX1;
細(xì)粒度時(shí)鐘相位延遲鏈控制器FINE_CTRL,用于接收細(xì)粒度時(shí)鐘相位鑒相器FINE_PD的輸出信號(hào)或用戶(hù)配置的數(shù)據(jù)DATA2,并控制細(xì)粒度時(shí)鐘相位延遲鏈FINE_DELAY1。
進(jìn)一步地,粗粒度時(shí)鐘相位延遲鏈DELAY_LINE1包括128個(gè)由差分延時(shí)緩沖器構(gòu)成的延時(shí)單元tap1。
進(jìn)一步地,細(xì)粒度時(shí)鐘相位延遲鏈FINE_DELAY1包括1個(gè)時(shí)鐘相位輸入端口、3bits選擇信號(hào)和1個(gè)時(shí)鐘相位輸出端口。
進(jìn)一步地,細(xì)粒度時(shí)鐘相位延遲鏈FINE_DELAY1還包括7個(gè)由NMOS管的MOS電容構(gòu)成的延時(shí)單元tap2,每個(gè)tap2的延時(shí)T_tap2=1/8*T_tap1。
進(jìn)一步地,時(shí)鐘相位選擇器CLK_PS_MUX1包括128個(gè)時(shí)鐘相位輸入端口、7bits選擇信號(hào)和1個(gè)相位輸出端口。
進(jìn)一步地,粗粒度時(shí)鐘相位鑒相器GENERAL_PD對(duì)CLKOUT1與CLKOUT0的時(shí)鐘相位進(jìn)行粗鑒;所述細(xì)粒度時(shí)鐘相位鑒相器FINE_PD對(duì)CLKOUT1與CLKOUT0的時(shí)鐘相位進(jìn)行細(xì)鑒。
進(jìn)一步地,粗粒度時(shí)鐘相位延遲鏈控制器GENERAL_CTRL是根據(jù)粗粒度時(shí)鐘相位鑒相器GENERAL_PD的結(jié)果或用戶(hù)配置的數(shù)據(jù)DATA1,控制時(shí)鐘經(jīng)過(guò)粗粒度時(shí)鐘相位延遲鏈DELAY_LINE1的tap1的個(gè)數(shù);所述細(xì)粒度時(shí)鐘相位延遲鏈控制器FINE_CTRL是根據(jù)細(xì)粒度時(shí)鐘相位鑒相器FINE_PD的結(jié)果或用戶(hù)配置的數(shù)據(jù)DATA2,控制時(shí)鐘經(jīng)過(guò)細(xì)粒度時(shí)鐘相位延遲鏈FINE_DELAY1的tap2的個(gè)數(shù)。
進(jìn)一步地,粗粒度時(shí)鐘相位延遲鏈控制器GENERAL_CTRL包括1個(gè)信號(hào)輸入端口,用來(lái)接收GENERAL_PD的輸出;1個(gè)數(shù)據(jù)輸入端口,用來(lái)提供用戶(hù)自定義tap1的個(gè)數(shù);1個(gè)數(shù)據(jù)輸出端口,提供給時(shí)鐘相位選擇器CLK_PS_MUX1選擇信號(hào);所述細(xì)粒度時(shí)鐘相位延遲鏈控制器FINE_CTRL包括1個(gè)信號(hào)輸入端口,用來(lái)接收FINE_PD的輸出;1個(gè)數(shù)據(jù)輸入端口,用來(lái)提供用戶(hù)自定義tap2的個(gè)數(shù);1個(gè)數(shù)據(jù)輸出端口,提供給細(xì)粒度時(shí)鐘相位延遲鏈FINE_DELAY1選擇信號(hào)。
一種高分辨率時(shí)鐘相移算法的實(shí)現(xiàn)方法,包括以下步驟:
(1)粗粒度時(shí)鐘相位延遲鏈控制器GENERAL_CTRL中計(jì)數(shù)器的初始值為0,細(xì)粒度時(shí)鐘相位延遲鏈控制器FINE_CTRL中計(jì)數(shù)器的初始值為0;
(2)粗粒度時(shí)鐘相位延遲鏈控制器GENERAL_CTRL中計(jì)數(shù)器先逐次加一,當(dāng)粗粒度時(shí)鐘相位鑒相器GENERAL_PD檢測(cè)到CLKOUT1的相位超過(guò)CLKOUT0的相位時(shí),粗粒度時(shí)鐘相位延遲鏈控制器GENERAL_CTRL中計(jì)數(shù)器減一后保持,此時(shí)粗粒度時(shí)鐘相位延遲鏈控制器GENERAL_CTRL中計(jì)數(shù)器的值為G1;
(3)細(xì)粒度時(shí)鐘相位延遲鏈控制器FINE_CTRL中計(jì)數(shù)器先逐次加一,當(dāng)細(xì)粒度時(shí)鐘相位鑒相器FINE_PD檢測(cè)到CLKOUT1的相位超過(guò)CLKOUT0的相位時(shí),細(xì)粒度時(shí)鐘相位延遲鏈控制器FINE_CTRL中計(jì)數(shù)器減一后保持,此時(shí)細(xì)粒度時(shí)鐘相位延遲鏈控制器FINE_CTRL中計(jì)數(shù)器的值為F1;
(4)粗粒度時(shí)鐘相位延遲鏈控制器GENERAL_CTRL中計(jì)數(shù)器繼續(xù)逐次加一,當(dāng)粗粒度時(shí)鐘相位鑒相器GENERAL_PD檢測(cè)到CLKOUT1的相位超過(guò)CLKOUT1的相位時(shí),粗粒度時(shí)鐘相位延遲鏈控制器GENERAL_CTRL中計(jì)數(shù)器減一后保持,此時(shí)粗粒度時(shí)鐘相位延遲鏈控制器GENERAL_CTRL中計(jì)數(shù)器的值為G2;
(5)細(xì)粒度時(shí)鐘相位延遲鏈控制器FINE_CTRL中計(jì)數(shù)器復(fù)位后逐次加一,當(dāng)細(xì)粒度時(shí)鐘相位鑒相器FINE_PD檢測(cè)到CLKOUT1的相位超過(guò)CLKOUT0的相位時(shí),細(xì)粒度時(shí)鐘相位延遲鏈控制器FINE_CTRL中計(jì)數(shù)器減一后保持,此時(shí)細(xì)粒度時(shí)鐘相位延遲鏈控制器FINE_CTRL中計(jì)數(shù)器的值為F2。
(6)兩次鑒相、計(jì)數(shù)器作差,得到G=G2-G1、F=F2-F1分別對(duì)應(yīng)輸入時(shí)鐘周期的tap1與tap2的個(gè)數(shù)。
本發(fā)明的有益效果:該時(shí)鐘相移架構(gòu)增加了細(xì)粒度時(shí)鐘相位延遲鏈FINE_DELAY1,細(xì)粒度時(shí)鐘相位延遲鏈FINE_DELAY1包含7個(gè)細(xì)粒度延時(shí)單元tap2,每個(gè)細(xì)粒度延時(shí)單元是由NMOS的MOS電容實(shí)現(xiàn);同時(shí),該算法通過(guò)兩次鑒相、計(jì)數(shù)器作差,求得輸入時(shí)鐘周期,再對(duì)輸入時(shí)鐘周期360等分,即可求得每1度對(duì)應(yīng)的計(jì)數(shù)器的值,用戶(hù)通過(guò)配置相應(yīng)度數(shù)的數(shù)據(jù)DATA1和DATA2給GENERAL_CTRL和FINE_CTRL就可以實(shí)現(xiàn)對(duì)時(shí)鐘進(jìn)行任意度數(shù)相位移動(dòng)。
附圖說(shuō)明
圖1為本發(fā)明的一種高分辨率時(shí)鐘相移架構(gòu)圖;
圖2為本發(fā)明的tap1結(jié)構(gòu)圖;
圖3為本發(fā)明的tap2結(jié)構(gòu)圖;
圖4為本發(fā)明的GENERAL_PD結(jié)構(gòu)圖;
圖5為本發(fā)明的FINE_PD結(jié)構(gòu)圖;
圖6為本發(fā)明的鑒相流程圖。
具體實(shí)施方式
本發(fā)明所列舉的實(shí)施例,只是用于幫助理解本發(fā)明,不應(yīng)理解為對(duì)本發(fā)明保護(hù)范圍的限定,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明思想的前提下,還可以對(duì)本發(fā)明進(jìn)行改進(jìn)和修飾,這些改進(jìn)和修飾也落入本發(fā)明權(quán)利要求保護(hù)的范圍內(nèi)。
如圖1所示,CLKIN是輸入時(shí)鐘,為了使基準(zhǔn)相移時(shí)鐘與目標(biāo)相移時(shí)鐘高度匹配、抵消固有的相位延時(shí),CLKIN同時(shí)進(jìn)入DELAY_LINE0和DELAY_LINE1。CLKIN經(jīng)過(guò)DELAY_LINE0、CLK_PS_MUX0和FINE_DELAY0產(chǎn)生CLKOUT0,其中CLK_PS_MUX0被配置為固定的0,F(xiàn)INE_DELAY0也被配置成0,即CLKOUT0為基準(zhǔn)相移時(shí)鐘。CLKIN經(jīng)過(guò)DELAY_LINE1、CLK_PS_MUX1和FINE_DELAY1產(chǎn)生CLKOUT1,CLKOUT1是目標(biāo)相移時(shí)鐘。CLK_PS_MUX1的配置信號(hào)由GENERAL_CTRL根據(jù)GENERAL_PD提供,F(xiàn)INE_DELAY1的配置信號(hào)由FINE_CTRL根據(jù)FINE_PD提供。DELAY_LINE1,包括128個(gè)延時(shí)單元tap1,用于以低分辨率對(duì)時(shí)鐘相位進(jìn)行快速的移動(dòng)。CLK_PS_MUX1,包括128個(gè)時(shí)鐘相位輸入端口、7bits選擇信號(hào)和1個(gè)相位輸出端口,用于DELAY_LINE1上時(shí)鐘相位的選擇。FINE_DELAY1,包括1個(gè)時(shí)鐘相位輸入端口、3bits選擇信號(hào)、1個(gè)時(shí)鐘相位輸出端口和7個(gè)延時(shí)單元tap2,每個(gè)tap2的延時(shí)T_tap2=1/8*T_tap1,用于以高分辨率對(duì)CLK_PS_MUX1輸出時(shí)鐘相位進(jìn)行精確的移動(dòng)。GENERAL_PD,用于檢測(cè)粗粒度時(shí)鐘相移時(shí),CLKOUT1的相位是否超過(guò)CLKOUT0的相位。FINE_PD,用于檢測(cè)細(xì)粒度時(shí)鐘相移時(shí),CLKOUT1的相位是否超過(guò)CLKOUT0的相位。GENERAL_CTRL,包括1個(gè)信號(hào)輸入端口,用來(lái)接收GENERAL_PD的輸出;1個(gè)數(shù)據(jù)輸入端口,用來(lái)提供用戶(hù)自定義tap1的個(gè)數(shù);1個(gè)數(shù)據(jù)輸出端口,提供給CLK_PS_MUX1選擇信號(hào),用于接收GENERAL_PD的輸出信號(hào),并控制CLK_PS_MUX1選擇時(shí)鐘經(jīng)過(guò)DELAY_LINE1的tap1的個(gè)數(shù)。FINE_CTRL,包括1個(gè)信號(hào)輸入端口,用來(lái)接收FINE_PD的輸出;1個(gè)數(shù)據(jù)輸入端口,用來(lái)提供用戶(hù)自定義tap2的個(gè)數(shù);1個(gè)數(shù)據(jù)輸出端口,提供給FINE_DELAY1選擇信號(hào),用于接收FINE_PD的輸出信號(hào),并控制時(shí)鐘FINE_DELAY1的tap2的個(gè)數(shù)。
如圖2所示,延時(shí)單元tap1由差分延時(shí)緩沖器構(gòu)成,tap1的輸入時(shí)鐘為差分時(shí)鐘(A、AN),輸出也為差分時(shí)鐘(Z、ZN)。EN為時(shí)鐘復(fù)位端,當(dāng)EN=0時(shí),輸出時(shí)鐘(Z、ZN)全為1;當(dāng)EN=1時(shí),輸出時(shí)鐘Z、ZN分別為輸入時(shí)鐘A、AN延時(shí)T_tap1后的時(shí)鐘。
如圖3所示,延時(shí)單元tap2由NMOS管的MOS電容構(gòu)成,A端與時(shí)鐘相連接,S和SN為反相的控制信號(hào),當(dāng)S和SN分別為1和0時(shí),MOS電容被接入時(shí)鐘網(wǎng)絡(luò),產(chǎn)生延遲;當(dāng)S和SN分別為0和1時(shí),MOS電容被斷開(kāi),不產(chǎn)生延遲。
如圖4所示,GENERAL_PD對(duì)CLKOUT1與CLKOUT0的時(shí)鐘相位進(jìn)行粗鑒,CLKIN為輸入時(shí)鐘,CLKOUT0_DV2為CLKOUT0的二分頻時(shí)鐘,CLKOUT1_DV2為CLKOUT1的二分頻時(shí)鐘。
如圖5所示,F(xiàn)INE_PD對(duì)CLKOUT1與CLKOUT0的時(shí)鐘相位進(jìn)行細(xì)鑒,CLEAN_PLUSE為輸入脈沖。
如圖6所示,具體工作原理如下:首先,GENERAL_CTRL和FINE_CTRL的狀態(tài)機(jī)全部清零,當(dāng)相移開(kāi)始后,第一個(gè)時(shí)鐘周期結(jié)束,GENERAL_CTRL的計(jì)數(shù)器加1,CLK_PS_MUX1就會(huì)選擇第一個(gè)tap1的輸出時(shí)鐘到CLKOUT1,此時(shí)CLKOUT1的相位滯后CLKOUT0相位一個(gè)tap1的延時(shí)(T_tap1)。粗粒度時(shí)鐘相位鑒相器GENERAL_PD鑒別CLKOUT1的相位是否超過(guò)CLKOUT0,如果有超過(guò),則GENERAL_CTRL中計(jì)數(shù)器減1,同時(shí)啟動(dòng)細(xì)粒度時(shí)鐘相位鑒相器FINE_PD,否則GENERAL_CTRL中計(jì)數(shù)器繼續(xù)加1。
當(dāng)啟動(dòng)細(xì)粒度時(shí)鐘相位鑒相器FINE_PD后,F(xiàn)INE_CTRL中計(jì)數(shù)器加1,F(xiàn)INE_DELAY1中選擇的tap2增加1個(gè)。細(xì)粒度時(shí)鐘相位鑒相器FINE_PD鑒別CLKOUT1的相位是否超過(guò)CLKOUT0,如果有超過(guò),則FINE_CTRL中計(jì)數(shù)器減1,此時(shí)GENERAL_CTRL和FINE_CTRL中計(jì)數(shù)器的值分別為G1和F1,否則FINE_CTRL的計(jì)數(shù)器繼續(xù)加1,直到CLKOUT1的相位超過(guò)CLKOUT0。
GENERAL_CTRL中計(jì)數(shù)器的值繼續(xù)逐次加1,直到CLKOUT1的相位再次超過(guò)CLKOUT0,此時(shí)GENERAL_CTRL和FINE_CTRL中計(jì)數(shù)器的值分別為G2和F2。
兩次鑒相、計(jì)數(shù)器作差,得到G=G2-G1、F=F2-F1分別為輸入時(shí)鐘周期對(duì)應(yīng)的tap1與tap2的個(gè)數(shù)。
因?yàn)門(mén)_tap2=1/8*T_tap1,所以輸入時(shí)鐘周期對(duì)應(yīng)tap2的個(gè)數(shù)為:(8*G+F)。所以輸入時(shí)鐘的1度相移對(duì)應(yīng)的tap2的個(gè)數(shù)為(8*G+F)/360。
當(dāng)用戶(hù)想執(zhí)行X度相移時(shí),即需要移動(dòng)tap2的個(gè)數(shù)為:X*(8*G+F)/360。相移值通過(guò)DATA1(tap1的個(gè)數(shù))與DATA2(tap2的個(gè)數(shù))分別配置GENERAL_CTRL和FINE_CTRL中計(jì)數(shù)器的值就實(shí)現(xiàn)了該發(fā)明。