專利名稱:一種將異步時鐘域轉換成同步時鐘域的方法
技術領域:
本發明涉及時鐘域轉換技術領域,特別是指一種將異步時鐘域轉換成同步時鐘域的方法。
背景技術:
在接口芯片邏輯設計中,從接口進入芯片內部處理的信號均是以數據幀的形式傳送,且相對于芯片的主處理時鐘而言均為異步信號。由于不同的時鐘之間會存在一定的相差或短時頻率抖動,為了使芯片能夠穩定工作,需要將異步信號從異步時鐘域轉換到同步時鐘域中,以獲得穩定的同步信號,之后,再進行后續處理。
由于異步信號之間的幀頭通常是不對齊的,而接口芯片內部需要處理幀頭完全對齊的信號,因此,在該異步信號完成時鐘域的轉換后,還要再做幀頭對齊的處理。
下面以寬帶碼多分址(WCDMA)系統中的上行主、分集信號為例,具體說明將該異步信號從異步時鐘域轉換到同步時鐘域,并實現幀頭對齊的方法。
一般將異步時鐘域轉為同步時鐘域通常采用雙口RAM緩存數據的方法來實現。圖1所示為現有技術中異步信號時鐘域轉換的實現結構圖。用異步時鐘信號產生雙口RAM寫地址,用同步時鐘產生雙口RAM的讀地址,該雙口RAM深度是根據需要容忍的短時頻差范圍來確定。分別將讀寫地址轉換成對應的格雷碼,再用同步時鐘采樣并進行比較,以判斷讀寫地址之間的距離是否小于可能發生讀、寫沖突的最小距離,即“危險距離”,如果是,則將讀地址跳轉180度,即將讀地址跳轉到離當前位置最遠的地址后,再執行讀操作;否則不必調整讀地址,直接執行讀操作。這樣讀出來的數據是穩定且正確的,且屏蔽了異步時鐘與本地同步時鐘之間的相位差以及短暫的頻率抖動。
上述讀地址跳轉180度的方法為設讀地址為r_add,RAM深度為a,當r_add>=a/2,且讀寫地址之間小于危險距離時,讀地址跳轉到r_add-a/2處;當r_add<a/2,且讀寫地址之間小于危險距離時,讀地址跳轉到r_add+a/2處。例如,假設寫地址為13,讀地址為11,“危險距離”定為3,RAM深度為16,由于|13-11|<3,且11>16/2=8,因此讀地址需要調整到11-16/2=3。
一般實現兩路數據幀頭對齊處理是采用2級雙口RAM的方法。圖2所示為現有技術的以上行主、分集幀頭為例實現幀頭對齊的結構圖。為了說明方便,假定幀長為8,雙口RAM深度為16。由于要滿足幀頭對齊的要求,因此必須確知幀頭在雙口RAM中的具體位置,為方便幀頭對齊的處理,雙口RAM深度通常取幀長的整數倍。對于主、分集數據,此時已被轉換到同步時鐘域中,因此,對主、分集幀頭分別進行模2計數,根據幀頭計數結果對相應的地址發生計數器進行置位,其具體置位規則如下幀頭計數值為0且相應幀頭到來時,將相應地址發生計數器置為8;幀頭計數值為1且相應幀頭到來時,將相應地址發生計數器置為0,該經過置位的地址發生計數器的值作為對應雙口RAM的寫地址,這樣每一幀的第一個數據都是在地址0或者地址8上;雙口RAM的讀地址只用一個模16的計數器產生,同樣地,對本地同步幀頭信號進行模2計數,根據幀頭計數結果對讀地址計數器進行置位,其置位規則同上,這樣本地同步幀頭的第一個數據也總是從地址0或者地址8讀出;將寫地址計數器的初始值置為0,將讀地址計數器的初始狀態置為8,從而保證了讀寫地址距離在開始就相差最大,而且實現了幀頭對齊的處理。
上述方法的缺陷在于時鐘域轉換與幀頭對齊處理需要分兩個步驟完成,不能在完成時鐘域轉換的同時實現數據幀頭對齊處理。而且實現較為復雜,不易理解且造成資源浪費。
發明內容
有鑒于此,本發明的目的在于提供一種將異步時鐘域轉換成同步時鐘域的方法,在完成時鐘域轉換的同時,實現幀頭對齊的處理。
為達到上述目的本發明的技術方案是這樣實現的一種將異步時鐘域轉換成同步時鐘域的方法,該方法包括以下步驟a、設置異步時鐘域中的每個異步信號對應一個地址發生計數器,且每個異步信號的幀頭信號對其所對應的地址發生計數器進行周期置位,將該經過置位的地址發生計數器的值作為每個異步信號所對應雙口RAM的寫地址,并根據雙口RAM的寫地址設置該雙口RAM的寫地址狀態指示信號;b、用同步時鐘對異步寫地址狀態指示信號進行采樣,得到同步寫地址狀態指示信號;c、同步時鐘域中設置與異步時鐘域中相同數量的地址發生計數器,每個同步信號的幀頭信號對其所對應的地址發生計數器進行周期置位,且該地址發生計數器的值作為每個同步信號所對應雙口RAM的讀地址,根據同步寫地址狀態指示信號,按照預先設定的規則確定讀地址的判斷位置,并對讀地址做相應調整。
較佳地,所述周期置位進一步包括以下步驟設置雙口RAM深度為a為幀長為K的正整數倍t,對幀頭進行模t計數;當幀頭計數值小于t減1的值,且遇到幀頭時,將地址發生計數器的值置為幀頭計數值加1的值乘以幀長K;當幀頭計數值為t減1,且遇到幀頭時,將地址發生計數器的值置為0。
較佳地,所述根據雙口RAM的寫地址設置該雙口RAM的寫地址狀態指示信號為設置寫地址幀頭信號對應的寫地址狀態指示信號為高電平,且寫地址狀態指示信號的長度大于所對應的寫地址幀頭信號的長度。
較佳地,異步信號的幀長大于等于4時,步驟c所述按照預先設定的規則確定讀地址的判斷位置的方法為讀地址的判斷位置等于n乘以幀長K再減1,且n為小于等于雙口RAM深度a除以幀長K的自然數;步驟c所述對讀地址的相應調整方法為在讀地址的判斷位置上判斷讀地址r_add與寫地址w_add之間的距離是否小于等于預先設定的危險距離L,如果是,則令與該異步信號相對應的讀地址等于讀地址減去幀長K再加1,否則對讀地址不做調整。
較佳地,所述預先設定的危險距離L小于幀長的一半。
較佳地,異步信號的幀長小于4時,步驟c所述按照預先設定的規則確定讀地址的判斷位置的方法為讀地址的判斷位置在n乘以幀長K再減1中以等間隔cK抽取,且n為小于等于雙口RAM深度a除以幀長K的自然數;步驟c所述對讀地址的相應調整方法為在讀地址的判斷位置上判斷讀地址r_add與寫地址w_add之間的距離是否小于等于預先設定的危險距離L,如果是,則令與該異步信號相對應的讀地址等于讀地址減去抽取間隔cK再加1,否則對讀地址不做調整。
較佳地,所述預先設定的危險距離L小于抽取間隔值的一半。
較佳地,所述異步時鐘域中的異步信號為兩個或兩個以上。
應用本發明,直接使用同步時鐘采樣異步時鐘域中的異步寫地址狀態信號,并應用預先設定的規則,在特定的讀地址位置對同步時鐘域中的讀地址進行調整,使得在實現異步信號時鐘域轉換的同時,實現了不同異步數據幀之間的幀頭對齊的處理。應用本發明,實現結構簡單,容易理解,避免了格雷碼變換等復雜處理,使得設計流程大大簡化,節約了實現的邏輯資源。
圖1為現有技術中異步信號時鐘域轉換的實現結構圖;
圖2為現有技術的以WCDMA系統上行主、分集幀頭為例實現幀頭對齊的結構圖;圖3為應用本發明的以WCDMA系統上行主、分集幀頭為例同時實現時鐘域轉換及幀頭對齊的結構圖;圖4為應用本發明寫地址判斷時序關系圖;圖5為應用本發明的同步時鐘對異步寫地址狀態指示信號采樣的示意圖;圖6為應用本發明的讀地址調整后的時序圖;具體實施方式
下面結合附圖及具體實施例對本發明再作進一步詳細的說明。
本發明的思路是異步時鐘域中的每個異步時鐘信號對應一個地址發生計數器,且每個異步信號的幀頭信號對其所對應的地址發生計數器進行周期置位,將該經過置位的計數器的值作為每個異步信號所對應雙口RAM的寫地址,并根據雙口RAM的寫地址設置該雙口RAM的異步寫地址狀態指示信號;用同步時鐘對異步寫地址狀態指示信號進行采樣,得到同步寫地址狀態指示信號;同步時鐘域中設置與異步時鐘域中相同數量的地址發生計數器,每個同步信號的幀頭信號對其所對應的地址發生計數器進行周期置位,該計數器的值作為其所對應雙口RAM的讀地址,根據同步寫地址狀態指示信號,按照預先設定的規則確定讀地址的判斷位置,并對讀地址做相應調整。
根據幀頭信號對計數器進行周期置位的規則為設RAM深度為a,幀長為K,且a=tK,t為正整數,對幀頭進行模t的計數,當幀頭計數值為m,m<t-1且遇到幀頭時,將地址發生計數器的值置為(m+1)K;當幀頭計數值m為t-1,且遇到幀頭時,由于計數值循環計數,因此將地址發生計數器的值置為0。
下面以WCDMA系統中的上行主、分集信號為例,具體說明其實現方式。在本實施例中,還是設定幀長為8,雙口RAM的深度為16,可能發生讀寫沖突的最小“危險距離”為3,則t=16/8=2,由于每個RAM中只可能有兩幀,因此,幀頭計數值m只能為0和1。
圖3所示為本實施例的實現時鐘域轉換及幀頭對齊的結構圖。在異步時鐘域利用異步時鐘啟動兩個模16的地址發生計數器(cnt16 301和cnt16302),并對主、分集幀頭分別進行模2計數,根據幀頭計數結果對相應的地址發生計數器進行周期置位,該經過置位的計數器的值作為與之相連的雙口RAM的寫地址;同時對兩個雙口RAM的寫地址狀態分別進行狀態判斷,以分別獲取兩個雙口RAM的寫地址狀態指示信號;同步時鐘對異步寫地址狀態指示信號分別進行采樣,從而得到同步寫地址狀態指示信號;在同步時鐘域中同步時鐘驅動兩個模16的地址發生計數器(cnt16 303和cnt16 304),同時對本地同步幀頭進行模2計數,根據幀頭計數結果對相應的地址發生計數器進行置位,該經過置位的計數器的值作為與之相連的雙口RAM的讀地址,根據同步寫地址狀態指示信號,并按照預先設定的規則對與之相對應的雙口RAM讀地址進行調整。下面就每一步驟具體說明首先,異步時鐘域利用異步時鐘啟動兩個模16的地址發生計數器cnt16301和cnt16 302,同時對主、分集幀頭信號分別進行模2計數,根據幀頭計數結果分別對對應的模16的地址發生計數器進行周期置位,即當幀頭計數值m為0(m<t-1)且幀頭到來時,將對應的模16計數器置為(0+1)×8=8,當幀頭計數值m為1(m=n-1)且幀頭到來時,將對應的模16計數器置為0。該經過周期置位操作后計數器的值作為兩個雙口RAM的寫地址,同時對兩個RAM的寫地址狀態分別進行判斷,分別獲得兩個雙口RAM的寫地址狀態指示信號。如圖4所示,由于進來的兩路異步信號幀長為8,且地址發生計數器的模為16,因此,幀頭寫入的位置只能是在雙口RAM的地址0或者地址8上,由于每個異步信號寫入兩次,用兩個寫地址狀態指示信號即寫地址狀態指示信號1(state_ind1)和寫地址狀態指示信號2(state_ind2)來分別表示這兩個寫入的狀態,state_ind1表示寫地址在第二幀的異步數據幀頭附近的狀態,state_ind2表示寫地址在第一幀的異步數據幀頭附近的狀態,在本實施例中,寫地址為{6,7,8,9,10}時,state_ind1為高電平,寫地址為{14,15,0,1,2}時,state_ind2為高電平。
其次,用同步時鐘對異步寫地址狀態指示信號進行采樣,獲取同步寫地址狀態指示信號。圖5所示為應用本發明的同步時鐘對異步寫地址狀態指示信號采樣的示意圖。由于表示異步寫地址狀態的幀頭信號有1比特,且持續時間較長,所以可由同步時鐘對該異步寫地址狀態指示信號直接采樣,同時,由于是用同步時鐘對異步時鐘域中的信號采樣,因此在所采集信號的邊沿處會存在一定的模糊狀態,即圖5中的陰影部分,但由于該模糊部分只影響讀地址是在這一次還是在下一次進行調整而已,而讀地址一旦進行調整,則該模糊部分對于數據的正確轉換沒有任何影響。
最后,用同步時鐘驅動兩個模16的地址發生計數器cnt16 303和cnt16304,同時對本地同步幀頭信號進行模2計數,根據對本地同步幀頭的計數結果對其所對應的兩個模16的地址發生計數器進行周期置位處理,即當幀頭計數值m為0(m<n-1)且幀頭到來時,將對應的模16計數器置為8((m+1)×8),當幀頭計數值m為1(m=n-1)且幀頭到來時,將對應的模16計數器置為0。該經置位操作后的計數器的值作為雙口RAM的讀地址,根據同步寫地址狀態指示信號對雙口RAM的讀地址進行調整。圖6所示為應用本發明的讀地址調整后的時序圖。由于同步時鐘域中的每個地址發生計數器與異步時鐘域中的一個地址發生計數器相對應,也就是說,同步時鐘域的每個地址發生計數器對應一個異步信號,其具體調整方案為確定讀地址的判斷位置,具體的確定方法是設置n為小于等于RAM深度a除以幀長K的自然數,其中,RAM深度為幀長的整數倍;讀地址的判斷位置為n乘以幀長再減1,即讀地址的判斷位置為nK-1,且n<=a/K,n為自然數。
在讀地址的判斷位置上判斷讀地址r_add與寫地址w_add之間的距離是否小于等于預先設定的危險距離L,該預先設定的危險距離L需滿足2L<K,如果|r_add-w_add|<=L,則令讀地址等于讀地址減去幀長K再加1,即令r_add=r_add-K+1,否則對該讀地址不做調整。
在本實施例中,a=16,K=8,L=3,則n=2;讀地址的判斷位置為8-1=7,2×8-1=15;當讀地址為7,且|w_add-7|<=3時,判斷同步寫地址狀態指示信號1(sync_state_ind1)是否為高電平,如果是,則將與該異步信號相對應的讀地址調整為r_add=7-8+1=0,否則對該讀地址不做調整;當讀地址為15,且|w_add-15|<=3時,判斷同步寫地址狀態指示信號2(sync_state_ind2)是否為高電平,如果是,則將讀地址調整為r_add=15-8+1=8,否則對該讀地址不做調整。
經過這樣的調整后,使得從存儲主、分集數據的RAM中讀出的數據在完成時鐘域轉換的同時,實現了主、分集數據幀頭對齊的處理。
上述的調整方案中的公式只適用于幀長大于等于4的情況,如果幀長小于4,則應用下面的方法確定讀地址的判斷位置以及讀地址的調整位置。
確定讀地址的判斷位置時,設置n為小于等于RAM深度a除以幀長K的自然數,其中,RAM深度為幀長的整數倍,讀地址的判斷位置為n乘以幀長再減1,即讀地址的判斷位置為nK-1,且n<=a/K,n為自然數。由于幀長較短,因此,讀地址的判斷位置可以從K-1、2K-1、3K-1……nK-1中以等間隔cK抽取,則讀地址判斷的位置為cK-1、2cK-1……rcK-1,(r<n)。
在讀地址的判斷位置上判斷讀地址r_add與寫地址w_add之間的距離是否小于等于預先設定的危險距離L,該預先設定的危險距離L要滿足2L<ck,如果|w_add-r_add|<=L,則令與該異步信號相對應的讀地址等于讀地址減去抽取間隔cK的值再加1,即令r_add=r_add-cK+1,否則對讀地址不做調整。
例如,設置a=16,K=2,則n=2,并設L=1,ck=4,
讀地址的判斷位置可為3,7,11,15;讀地址可能調整的位置為當|w_add-3|<=1時,r_add=3-4+1=0;當|w_add-7|<=1時,r_add=7-4+1=4;當|w_add-11|<=1時,r_add=11-4+1=8;當|w_add-15|<=1時,r_add=15-4+1=12;本發明不僅適用于異步信號為兩個的情況,對于將兩個以上的異步信號轉換為同一時鐘域并使其幀頭對齊的情況同樣適用。
以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。
權利要求
1.一種將異步時鐘域轉換成同步時鐘域的方法,其特征在于,該方法包括以下步驟a、設置異步時鐘域中的每個異步信號對應一個地址發生計數器,且每個異步信號的幀頭信號對其所對應的地址發生計數器進行周期置位,將該經過置位的地址發生計數器的值作為每個異步信號所對應雙口RAM的寫地址,并根據雙口RAM的寫地址設置該雙口RAM的寫地址狀態指示信號;b、用同步時鐘對異步寫地址狀態指示信號進行采樣,得到同步寫地址狀態指示信號;c、同步時鐘域中設置與異步時鐘域中相同數量的地址發生計數器,每個同步信號的幀頭信號對其所對應的地址發生計數器進行周期置位,且該地址發生計數器的值作為每個同步信號所對應雙口RAM的讀地址,根據同步寫地址狀態指示信號,按照預先設定的規則確定讀地址的判斷位置,并對讀地址做相應調整。
2.根據權利要求1所述的方法,其特征在于,所述周期置位進一步包括以下步驟設置雙口RAM深度為a為幀長為K的正整數倍t,對幀頭進行模t計數;當幀頭計數值小于t減1的值,且遇到幀頭時,將地址發生計數器的值置為幀頭計數值加1的值乘以幀長K;當幀頭計數值為t減1,且遇到幀頭時,將地址發生計數器的值置為0。
3.根據權利要求1所述的方法,其特征在于,所述根據雙口RAM的寫地址設置該雙口RAM的寫地址狀態指示信號為設置寫地址幀頭信號對應的寫地址狀態指示信號為高電平,且寫地址狀態指示信號的長度大于所對應的寫地址幀頭信號的長度。
4.根據權利要求1所述的方法,其特征在于,異步信號的幀長大于等于4時,步驟c所述按照預先設定的規則確定讀地址的判斷位置的方法為讀地址的判斷位置等于n乘以幀長K再減1,且n為小于等于雙口RAM深度a除以幀長K的自然數;步驟c所述對讀地址的相應調整方法為在讀地址的判斷位置上判斷讀地址r_add與寫地址w_add之間的距離是否小于等于預先設定的危險距離L,如果是,則令與該異步信號相對應的讀地址等于讀地址減去幀長K再加1,否則對讀地址不做調整。
5.根據權利要求4所述的方法,其特征在于,所述預先設定的危險距離L小于幀長的一半。
6.根據權利要求1所述的方法,其特征在于,異步信號的幀長小于4時,步驟c所述按照預先設定的規則確定讀地址的判斷位置的方法為讀地址的判斷位置在n乘以幀長K再減1中以等間隔cK抽取,且n為小于等于雙口RAM深度a除以幀長K的自然數;步驟c所述對讀地址的相應調整方法為在讀地址的判斷位置上判斷讀地址r_add與寫地址w_add之間的距離是否小于等于預先設定的危險距離L,如果是,則令與該異步信號相對應的讀地址等于讀地址減去抽取間隔cK再加1,否則對讀地址不做調整。
7.根據權利要求6所述的方法,其特征在于,所述預先設定的危險距離L小于抽取間隔值的一半。
8.根據權利要求1所述的方法,其特征在于,所述異步時鐘域中的異步信號為兩個或兩個以上。
全文摘要
本發明提供了一種將異步時鐘域轉換成同步時鐘域的方法,直接使用同步時鐘對異步時鐘域中的異步寫地址狀態信號進行采樣,并應用預先設定的規則,在特定的讀地址位置對同步時鐘域中的讀地址進行調整,使得在實現異步信號時鐘域轉換的同時,實現了不同異步數據幀之間的幀頭對齊的處理。應用本發明,實現結構簡單,容易理解,避免了格雷碼變換等復雜處理,使得設計流程大大簡化,節約了實現的邏輯資源。
文檔編號H04J3/06GK1585312SQ03153668
公開日2005年2月23日 申請日期2003年8月19日 優先權日2003年8月19日
發明者孟慶鋒 申請人:華為技術有限公司