專利名稱:訪問(wèn)緩存的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及緩存,尤其涉及一種訪問(wèn)緩存的方法。
背景技術(shù):
在3G移動(dòng)通信基站等很多領(lǐng)域里,信號(hào)在硬件中的延遲精確度要求往往非常嚴(yán)格。例如在WCDMA(Wide-band Code Division Multiple Access,寬帶碼分多址)系統(tǒng)的3GPP協(xié)議規(guī)范中,要求發(fā)射分集兩個(gè)天線上的信號(hào)之間相對(duì)延遲誤差不超過(guò)1/4chip(約合65ns),又如在CPRI(Common Public RadioInterface,通用公共無(wú)線接口)協(xié)議中,要求REC(Radio Equipment Control,射頻設(shè)備控制器)設(shè)備到RE(Radio Equipment,射頻設(shè)備)設(shè)備的硬件接口延遲精確度優(yōu)于1/32chip(約合8ns)。這不僅對(duì)模擬器件的延遲一致性有較高要求,而且對(duì)數(shù)字邏輯電路的設(shè)計(jì)方法提出了挑戰(zhàn)。
當(dāng)高速數(shù)字信號(hào)在兩個(gè)單板之間傳輸時(shí),由于不同單板使用不同的時(shí)鐘,兩時(shí)鐘之間的相位關(guān)系不確定,接收數(shù)據(jù)的單板不能直接使用本地時(shí)鐘采樣接收到的數(shù)據(jù),通常的做法是先利用FIFO(First Input First Output,先進(jìn)先出)緩存器對(duì)接收到的數(shù)據(jù)進(jìn)行緩存,然后再由接收數(shù)據(jù)的單板對(duì)緩存器內(nèi)的數(shù)據(jù)進(jìn)行采樣讀取。
圖1所示為利用FIFO緩存器實(shí)現(xiàn)單板間數(shù)據(jù)接收緩存的原理圖,用發(fā)送方的時(shí)鐘(以下簡(jiǎn)稱寫時(shí)鐘或Clk_wr)將數(shù)據(jù)依次寫入到一個(gè)緩存區(qū),每次寫地址(Addr_wr)加1,用接收方的時(shí)鐘(以下簡(jiǎn)稱讀時(shí)鐘或Clk_rd)依次讀取數(shù)據(jù),每次讀地址(Addr_rd)加1。為保證不產(chǎn)生誤碼,讀地址應(yīng)跟在寫地址后面并保持適當(dāng)距離。圖2所示為FIFO緩存器的緩存空間原理圖,F(xiàn)IFO緩存器的緩存空間可看作一個(gè)圓周,寫和讀都在該圓周上循環(huán)進(jìn)行,因此讀地址超過(guò)寫地址(稱為“讀空”)或?qū)懙刂烦^(guò)讀地址多于一周的情況(稱為“寫滿”)都是不允許的,而除此之外的其他情況都是合法的。也就是說(shuō),一般的FIFO緩存器的設(shè)計(jì)只保證避免“讀空”和“寫滿”兩種情況。如果讀和寫的時(shí)鐘頻率不同,則讀和寫的速率也不同,讀地址與寫地址之間的距離必然不斷變化,需要采用適當(dāng)?shù)臋z測(cè)方法對(duì)“讀空”和“寫滿”進(jìn)行預(yù)警,并控制讀地址或?qū)懙刂纷鲞m當(dāng)停頓以避免誤碼,這時(shí)延遲必然不斷變化,延遲的最大值等于緩存器的緩存區(qū)大小,因此普通的FIFO緩存器有較大的延遲不確定性,這種普通的FIFO緩存器不適用于對(duì)信號(hào)在硬件中的延遲精確度要求非常嚴(yán)格的情況。
當(dāng)讀時(shí)鐘和寫時(shí)鐘都鎖定在同一個(gè)時(shí)鐘源上的情況下,其時(shí)鐘頻率相同,不存在相對(duì)頻差的問(wèn)題,但讀寫時(shí)鐘之間存在小范圍的相對(duì)抖動(dòng)(jitter),以下對(duì)現(xiàn)有技術(shù)的描述及對(duì)本發(fā)明的分析都基于上述條件。
在現(xiàn)有技術(shù)中,一種常見的減少單板間數(shù)據(jù)傳輸延遲不確定性的方法是收發(fā)單板采用統(tǒng)一的定時(shí)脈沖信號(hào)(Sync)做同步處理,圖3所示為其原理圖。將一個(gè)定時(shí)脈沖信號(hào)(Sync)分別輸入發(fā)送單板和接收單板,發(fā)送單板所發(fā)送的數(shù)據(jù)流具有周期性的幀結(jié)構(gòu),定時(shí)脈沖信號(hào)(Sync)是以發(fā)送的數(shù)據(jù)幀的幀長(zhǎng)為周期的脈沖信號(hào),每當(dāng)Sync脈沖到來(lái)時(shí),就固定發(fā)送幀頭第一個(gè)數(shù)據(jù);在接收單板端,在FIFO緩存器后面增加了一個(gè)同步電路,這個(gè)同步電路相當(dāng)于一個(gè)同步緩存器,先將FIFO緩存器輸出的延遲不確定數(shù)據(jù)緩存下來(lái),每當(dāng)Sync脈沖到來(lái)時(shí)再?gòu)拿繋械墓潭ㄎ恢?假設(shè)該位置離幀頭距離為n)讀取,這樣理想情況下整個(gè)電路的延遲為n。由于定時(shí)脈沖信號(hào)(Sync)也需要分別被兩個(gè)單板的時(shí)鐘采樣,采樣后的定時(shí)信號(hào)本身也有一定的時(shí)間誤差,極端情況下當(dāng)時(shí)鐘沿正好在定時(shí)脈沖信號(hào)(Sync)的翻轉(zhuǎn)時(shí)刻附近時(shí),極小的抖動(dòng)也會(huì)導(dǎo)致定時(shí)脈沖信號(hào)采樣結(jié)果有1個(gè)時(shí)鐘周期的變化,因此這種方法的最大可能延遲誤差為1個(gè)時(shí)鐘周期;另外本方法要求發(fā)送的數(shù)據(jù)流具有周期性的幀結(jié)構(gòu),并且硬件要提供一個(gè)發(fā)送、接收雙方共用的定時(shí)信號(hào),這兩個(gè)條件有時(shí)難以同時(shí)滿足。
現(xiàn)有技術(shù)中的另一種減少單板間數(shù)據(jù)傳輸延遲不確定性的方法是通過(guò)精確計(jì)算和控制硬件各環(huán)節(jié)的延遲與相位來(lái)達(dá)到延遲恒定的目的。基于收發(fā)時(shí)鐘沒有頻差并且相對(duì)抖動(dòng)很小的前提,在接收端不使用FIFO緩存,而直接用接收方的時(shí)鐘采樣數(shù)據(jù)。硬件通道上的每個(gè)環(huán)節(jié)都必須精確計(jì)算延遲和建立時(shí)間、保持時(shí)間,保證接收時(shí)鐘采樣點(diǎn)沿避開數(shù)據(jù)翻轉(zhuǎn)時(shí)刻,總是在數(shù)據(jù)的穩(wěn)定區(qū)間內(nèi)采樣,這樣就可以保證數(shù)據(jù)無(wú)誤碼并且延遲誤差較小,其延遲變化等于兩時(shí)鐘之間的抖動(dòng)范圍。這種方法主要具有以下缺點(diǎn)a、設(shè)計(jì)難度高在設(shè)計(jì)過(guò)程中,必須精確計(jì)算整個(gè)信號(hào)通道和時(shí)鐘通道所有環(huán)節(jié)的延遲量和建立時(shí)間、保持時(shí)間,從而得到能正確接收數(shù)據(jù)的時(shí)間窗,還需要通過(guò)調(diào)相器或鎖相環(huán)將時(shí)鐘相位調(diào)整到該時(shí)間窗內(nèi);b、設(shè)計(jì)的相互依賴性強(qiáng),邏輯版本適應(yīng)性差整個(gè)信號(hào)通道和時(shí)鐘通道各環(huán)節(jié)延遲都必須通盤考慮,不同模塊之間的設(shè)計(jì)依賴性太強(qiáng),尤其在復(fù)雜電子產(chǎn)品的開發(fā)中,單板硬件電路和包含F(xiàn)IFO的可編程邏輯電路通常由不同團(tuán)隊(duì)開發(fā)和維護(hù),當(dāng)硬件器件有個(gè)別變更時(shí),很可能需要可編程邏輯電路重新調(diào)整建立時(shí)間和保持時(shí)間,不利于版本的穩(wěn)定,當(dāng)FIFO采用ASIC(ApplicationSpecific Integrated Circuit,特定用途集成電路)實(shí)現(xiàn)時(shí),更難以靈活調(diào)整時(shí)序;c、對(duì)時(shí)鐘抖動(dòng)的容忍能力差理想情況下,將時(shí)鐘相位調(diào)整在數(shù)據(jù)的前后兩次翻轉(zhuǎn)時(shí)刻之間,最大安全距離前后各有0.5個(gè)時(shí)鐘周期,當(dāng)讀寫時(shí)鐘抖動(dòng)超過(guò)±0.5時(shí)鐘周期范圍時(shí),將不可避免地發(fā)生誤碼。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種訪問(wèn)緩存的方法,以解決在收發(fā)時(shí)鐘沒有相對(duì)頻差的兩個(gè)單板之間進(jìn)行數(shù)據(jù)傳輸時(shí),因時(shí)鐘抖動(dòng)導(dǎo)致先進(jìn)先出緩存器延遲誤差不確定的問(wèn)題,使用該方法可保證先進(jìn)先出緩存器的延遲誤差不超過(guò)時(shí)鐘的抖動(dòng)范圍,同時(shí)降低了先進(jìn)先出緩存器邏輯電路的設(shè)計(jì)復(fù)雜度。
為解決上述問(wèn)題,本發(fā)明提供以下技術(shù)方案一種訪問(wèn)緩存的方法,包括步驟A、在先進(jìn)先出緩存器上設(shè)置n個(gè)緩存單元;B、設(shè)置周期為n倍寫時(shí)鐘周期的寫時(shí)鐘標(biāo)志信號(hào)和周期為n倍讀時(shí)鐘周期的讀時(shí)鐘標(biāo)志信號(hào);C、在寫時(shí)鐘標(biāo)志信號(hào)周期內(nèi)依次對(duì)所有緩存單元進(jìn)行寫操作,當(dāng)寫第一個(gè)緩存單元時(shí),寫時(shí)鐘標(biāo)志信號(hào)為高電平,其余為低電平;D、讀時(shí)鐘標(biāo)志信號(hào)周期內(nèi)的每個(gè)讀時(shí)鐘周期的上升沿對(duì)寫時(shí)鐘標(biāo)志信號(hào)進(jìn)行采樣,根據(jù)采樣結(jié)果判斷出寫時(shí)鐘標(biāo)志信號(hào)上升沿的位置;E、在寫時(shí)鐘標(biāo)志信號(hào)上升沿所對(duì)應(yīng)的讀時(shí)鐘周期后的至少第2個(gè)讀時(shí)鐘周期開始對(duì)緩存單元進(jìn)行讀操作。
所述緩存單元數(shù)n=[x]+2,其中[x]表示對(duì)讀寫時(shí)鐘的相對(duì)抖動(dòng)范圍向上取整,讀寫時(shí)鐘的相對(duì)抖動(dòng)范圍以時(shí)鐘周期倍數(shù)為單位,當(dāng)讀寫時(shí)鐘的相對(duì)抖動(dòng)范圍小于一個(gè)時(shí)鐘周期時(shí),n的取值為3;當(dāng)讀寫時(shí)鐘的相對(duì)抖動(dòng)范圍大于一個(gè)時(shí)鐘周期時(shí),n的取值大于3。
在所述步驟E中對(duì)緩存單元進(jìn)行讀操作時(shí),首先讀取的是步驟C中所述的第一個(gè)緩存單元。
在所述步驟D中若連續(xù)n-1個(gè)讀時(shí)鐘標(biāo)志信號(hào)周期的采樣結(jié)果不同,則在步驟E中開始對(duì)緩存單元進(jìn)行讀操作的讀時(shí)鐘周期固定在n-1個(gè)采樣結(jié)果中的第一個(gè)采樣結(jié)果所對(duì)應(yīng)的開始讀取時(shí)鐘周期上。
由于本發(fā)明采用了以上技術(shù)方案,故具有以下有益效果理論上先進(jìn)先出緩存器所能達(dá)到的最優(yōu)延遲恒定性的極限是外部硬件提供的讀寫時(shí)鐘的相對(duì)抖動(dòng)范圍。但一般常用的先進(jìn)先出緩存器邏輯電路由于時(shí)鐘采樣的離散性,極小的時(shí)鐘抖動(dòng)都可能引起讀寫地址距離增減一個(gè)時(shí)鐘周期,即延遲誤差遠(yuǎn)大于時(shí)鐘抖動(dòng)。而本發(fā)明通過(guò)對(duì)讀時(shí)鐘信號(hào)和寫時(shí)鐘信號(hào)相對(duì)相位關(guān)系的判斷確定出一個(gè)最佳讀取位置,從而最大限度縮小了先進(jìn)先出緩存器的延遲變化范圍,保證了先進(jìn)先出緩存器的延遲誤差完全等于時(shí)鐘抖動(dòng)范圍,最大程度保證了先進(jìn)先出緩存器的延遲的恒定性。
圖1為利用FIFO緩存器實(shí)現(xiàn)單板間數(shù)據(jù)接收緩存的原理圖;圖2為FIFO緩存器的緩存空間原理圖;圖3為采用統(tǒng)一的定時(shí)信號(hào)做同步減少單板間延遲不確定性的原理示意圖;圖4為本發(fā)明的流程圖;圖5為本發(fā)明實(shí)施例一的緩存單元設(shè)置示意圖;圖6為本發(fā)明實(shí)施例一的FIFO緩存器邏輯電路工作時(shí)序圖;圖7為本發(fā)明實(shí)施例二的緩存單元設(shè)置示意圖;圖8為本發(fā)明實(shí)施例二的FIFO緩存器邏輯電路工作時(shí)序圖。
具體實(shí)施例方式
下面結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步詳細(xì)的描述。
本發(fā)明的技術(shù)方案所基于的前提是讀時(shí)鐘和寫時(shí)鐘都鎖定在同一個(gè)時(shí)鐘源上,收發(fā)時(shí)鐘的頻率相同,但存在一定范圍的相位抖動(dòng)。
如圖4所示,本發(fā)明首先在FIFO緩存器上設(shè)置n個(gè)緩存單元,n=[x]+2,其中[x]表示對(duì)讀寫時(shí)鐘的相對(duì)抖動(dòng)范圍向上取整,讀寫時(shí)鐘的相對(duì)抖動(dòng)范圍以時(shí)鐘周期倍數(shù)為單位;分別設(shè)置寫時(shí)鐘標(biāo)志信號(hào)和讀時(shí)鐘標(biāo)志信號(hào),寫時(shí)鐘標(biāo)志信號(hào)的周期為n倍的寫時(shí)鐘周期,讀時(shí)鐘標(biāo)志信號(hào)的周期為n倍的讀時(shí)鐘周期;在寫時(shí)鐘標(biāo)志信號(hào)周期內(nèi)依次對(duì)所有緩存單元進(jìn)行寫操作,當(dāng)對(duì)第一個(gè)緩存單元進(jìn)行寫操作時(shí),寫時(shí)鐘標(biāo)志信號(hào)為高電平,當(dāng)對(duì)除第一個(gè)緩存單元外的其他緩存單元進(jìn)行寫操作時(shí),寫時(shí)鐘標(biāo)志信號(hào)為低電平;在讀時(shí)鐘標(biāo)志信號(hào)周期內(nèi)的每個(gè)讀時(shí)鐘周期的上升沿對(duì)寫時(shí)鐘標(biāo)志信號(hào)進(jìn)行采樣,根據(jù)采樣結(jié)果判斷出寫時(shí)鐘標(biāo)志信號(hào)上升沿的位置,在寫時(shí)鐘標(biāo)志信號(hào)上升沿所對(duì)應(yīng)的讀時(shí)鐘周期后的至少第二個(gè)讀時(shí)鐘周期開始對(duì)上述第一個(gè)緩存單元進(jìn)行讀操作。
如圖5所示,在FIFO緩存器設(shè)立3個(gè)緩存單元,3個(gè)緩存單元分別用unit0、unit1和unit2表示。
如圖6所示,定義一個(gè)寫時(shí)鐘標(biāo)志信號(hào)Flag_wr,寫時(shí)鐘Clk_wr的上升沿依次循環(huán)寫3個(gè)緩存單元,寫時(shí)鐘Clk_wr每次寫unit0時(shí),F(xiàn)lag_wr置“1”,寫unit1時(shí),F(xiàn)lag_wr清“0”,寫unit2時(shí),F(xiàn)lag_wr保持為“0”,這樣寫時(shí)鐘標(biāo)志信號(hào)Flag_wr為一個(gè)以3倍時(shí)鐘周期為周期的脈沖信號(hào)。
定義一個(gè)讀時(shí)鐘標(biāo)志信號(hào)Flag_rd,讀時(shí)鐘標(biāo)志信號(hào)Flag_rd同樣是一個(gè)以3倍時(shí)鐘周期為周期的脈沖信號(hào)。定義Flag_rd高電平對(duì)應(yīng)的讀時(shí)鐘上升沿為edge0,相鄰更早的上升沿為edge1,再早的上升沿為edge2。
在edge2、edge1、edge0時(shí)刻分別對(duì)寫時(shí)鐘標(biāo)志信號(hào)Flag_wr進(jìn)行采樣,根據(jù)edge2、edge1、edge0三次采樣到的Flag_wr信號(hào)電平,判斷Flag_wr上升沿的位置,從而決定在edge0讀取哪個(gè)unit。一旦確定了edge0讀取的unit,則隨后的兩個(gè)edge依次讀取后面的unit,直到下一個(gè)edge0再重新判斷。讀寫時(shí)鐘相位關(guān)系的不同,會(huì)導(dǎo)致Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系不同,共有如下3種情況Case1在edge2到edge1之間Flag_wr有一個(gè)上升沿;Case2在edge0到edge2之間Flag_wr有一個(gè)上升沿;Case3在edge1與edge0之間Flag_wr有一個(gè)上升沿。
在圖6中對(duì)每種Case又畫出了兩種邊界情況(指與相鄰的Case非常接近的情況),分別用后綴(1)、(2)表示,例如Case1(2)與Case2(1)非常接近,而Case1(1)與Case3(2)非常接近等等,時(shí)鐘稍有抖動(dòng)就有可能變?yōu)榱硪环NCase。
設(shè)置一個(gè)持續(xù)時(shí)間參量T,F(xiàn)IFO緩存器在每個(gè)讀時(shí)鐘上升沿按如下規(guī)則決定讀取哪個(gè)unit(緩存單元)
當(dāng)Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系為Case1且Case1的持續(xù)時(shí)間不小于T或者Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系在Case1與Case2之間頻繁跳變且Case1與Case2的持續(xù)時(shí)間均小于T時(shí),則在edge0讀取緩存單元unit0;當(dāng)Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系為Case2且Case2的持續(xù)時(shí)間不小于T或者Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系在Case2與Case3之間頻繁跳變且Case2與Case3的持續(xù)時(shí)間均小于T時(shí),則在edge0讀取緩存單元unit1;當(dāng)Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系為Case3且Case3的持續(xù)時(shí)間不小于T或者Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系在Case3與Case1之間頻繁跳變且Case3與Case1的持續(xù)時(shí)間均小于T時(shí),則在edge0讀取緩存單元unit2;當(dāng)不滿足以上情況時(shí),保持現(xiàn)有狀態(tài)。
通常情況下讀寫時(shí)鐘之間相位關(guān)系判斷結(jié)果是確定不變的,可以穩(wěn)定選擇一個(gè)最安全的unit進(jìn)行讀取。但由于當(dāng)時(shí)鐘相位在邊界位置時(shí)(如圖6中的Case1(1)、Case1(2)......等),極小的抖動(dòng)也會(huì)導(dǎo)致時(shí)鐘采樣結(jié)果在兩個(gè)相鄰Case之間頻繁切換,這種情況下讀取相鄰的兩個(gè)unit中任意一個(gè)都是安全的,但應(yīng)該穩(wěn)定的讀取一個(gè)unit而不能頻繁切換,否則會(huì)產(chǎn)生誤碼。因此判斷條件中增加了“Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系在......與......之間頻繁跳變”的限制,就是為了避免這種情況下讀取位置在3個(gè)unit之間頻繁切換。
圖6中陰影部分表示該unit(緩存單元)可能被讀取的時(shí)刻的分布范圍,可見每個(gè)unit被讀取時(shí)總是離前后兩個(gè)翻轉(zhuǎn)時(shí)刻都很遠(yuǎn),從而避免了建立、保持時(shí)間不夠而產(chǎn)生誤碼的情況。
在上述實(shí)施例中FIFO緩存器設(shè)立了3個(gè)緩存單元,適用于時(shí)鐘抖動(dòng)范圍小于一個(gè)時(shí)鐘周期的情況。根據(jù)對(duì)時(shí)鐘抖動(dòng)容忍能力的要求,若時(shí)鐘抖動(dòng)范圍大于一個(gè)時(shí)鐘周期,則可以將FIFO緩存器的緩存單元數(shù)目設(shè)置為3以上,所設(shè)置的緩存單元的數(shù)目越大,對(duì)時(shí)鐘抖動(dòng)的容忍能力越好,但是延遲誤差也越大。下面以在FIFO緩存器設(shè)立4個(gè)緩存單元為例進(jìn)行說(shuō)明。
如圖7所示,在FIFO緩存器中設(shè)立了4個(gè)緩存單元,4個(gè)緩存單元分別用unit0、unit1、unit2和unit3表示。
如圖8所示,定義一個(gè)寫時(shí)鐘標(biāo)志信號(hào)Flag_wr,寫時(shí)鐘Clk_wr的上升沿依次循環(huán)寫4個(gè)緩存單元,寫時(shí)鐘Clk_wr每次寫unit0時(shí),F(xiàn)lag_wr置“1”,寫unit1時(shí),F(xiàn)lag_wr清“0”,寫unit2時(shí),F(xiàn)lag_wr保持為“0”,寫unit3時(shí),F(xiàn)lag_wr保持為“0”,這樣寫時(shí)鐘標(biāo)志信號(hào)Flag_wr為一個(gè)以4倍時(shí)鐘周期為周期的脈沖信號(hào)。
定義一個(gè)讀時(shí)鐘標(biāo)志信號(hào)Flag_rd,讀時(shí)鐘標(biāo)志信號(hào)Flag_rd同樣是一個(gè)以4倍時(shí)鐘周期為周期的脈沖信號(hào)。定義Flag_rd高電平對(duì)應(yīng)的讀時(shí)鐘上升沿為edge0,相鄰更早的上升沿為edge1,再早的上升沿為edge2,更早的上升沿為edge3。
在edge3、edge2、edge1、edge0時(shí)刻分別對(duì)寫時(shí)鐘標(biāo)志信號(hào)Flag_wr進(jìn)行采樣,根據(jù)四次采樣到的Flag_wr信號(hào)電平,判斷Flag_wr上升沿的位置,從而決定在edge0讀取哪個(gè)unit。一旦確定了edge0讀取的unit,則隨后的三個(gè)edge依次讀取后面的unit,直到下一個(gè)edge0再重新判斷。讀寫時(shí)鐘相位關(guān)系的不同,會(huì)導(dǎo)致Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系不同,共有如下4種情況Case1在edge2到edge1之間Flag_wr有一個(gè)上升沿;Case2在edge3與edge2之間Flag_wr有一個(gè)上升沿;Case3在edge0與edge3之間Flag_wr有一個(gè)上升沿;Case4在edge1到edge0之間Flag_wr有一個(gè)上升沿;與實(shí)施例一中相同,每種Case又有兩種邊界情況(指與相鄰的Case非常接近的情況),時(shí)鐘稍有抖動(dòng)就有可能變?yōu)榱硪环NCase。
設(shè)置一個(gè)持續(xù)時(shí)間參量T,F(xiàn)IFO緩存器在每個(gè)讀時(shí)鐘上升沿按如下規(guī)則決定讀取哪個(gè)unit(緩存單元)當(dāng)Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系為Case1且Case1的持續(xù)時(shí)間不小于T,或者Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系在Case1、Case2、Case3之間頻繁跳變且Case1、Case2、Case3的持續(xù)時(shí)間均小于T,則在edge0讀取緩存單元unit0;當(dāng)Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系為Case2且Case2的持續(xù)時(shí)間不小于T,或者Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系在Case2、Case3、Case4之間頻繁跳變且Case2、Case3、Case4的持續(xù)時(shí)間均小于T,則在edge0讀取緩存單元unit1;當(dāng)Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系為Case3且Case3的持續(xù)時(shí)間不小于T,或者Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系在Case3、Case4、Case1之間頻繁跳變且Case3、Case4、Case1的持續(xù)時(shí)間均小于T,則在edge0讀取緩存單元unit2;當(dāng)Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系為Case4且Case4的持續(xù)時(shí)間不小于T,或者Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系在Case4、Case1、Case2之間頻繁跳變且Case4、Case1、Case2,的持續(xù)時(shí)間均小于T,則在edge0讀取緩存單元unit3;當(dāng)不滿足以上四種情況時(shí),保持現(xiàn)有狀態(tài),圖8中的斜線陰影部分表示了在上述規(guī)則下每個(gè)緩存單元可能被讀取的時(shí)刻的分布范圍,可見每個(gè)unit被讀取時(shí)總是離前后兩個(gè)翻轉(zhuǎn)時(shí)刻都很遠(yuǎn),從而避免了建立、保持時(shí)間不夠而產(chǎn)生誤碼的情況。
上述規(guī)則也可以如下當(dāng)Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系為Case2且Case2的持續(xù)時(shí)間不小于T,或者Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系在Case1、Case2、Case3之間頻繁跳變且Case1、Case2、Case3的持續(xù)時(shí)間均小于T,則在edge0讀取緩存單元unit0;
當(dāng)Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系為Case3且Case3的持續(xù)時(shí)間不小于T,或者Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系在Case2、Case3、Case4之間頻繁跳變且Case2、Case3、Case4的持續(xù)時(shí)間均小于T,則在edge0讀取緩存單元unit1;當(dāng)Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系為Case4且Case4的持續(xù)時(shí)間不小于T,或者Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系在Case3、Case4、Case1之間頻繁跳變且Case3、Case4、Case1的持續(xù)時(shí)間均小于T,則在edge0讀取緩存單元unit2;當(dāng)Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系為Case1且Case1的持續(xù)時(shí)間不小于T,或者Clk_rd上升沿與Flag_wr信號(hào)上升沿的位置關(guān)系在Case4、Case1、Case2之間頻繁跳變且Case4、Case1、Case2,的持續(xù)時(shí)間均小于T,則在edge0讀取緩存單元unit3;當(dāng)不滿足以上四種情況時(shí),保持現(xiàn)有狀態(tài),圖8中的點(diǎn)狀陰影部分表示了在這種規(guī)則下每個(gè)緩存單元可能被讀取的時(shí)刻的分布范圍,可見每個(gè)unit被讀取時(shí)總是離前后兩個(gè)翻轉(zhuǎn)時(shí)刻都很遠(yuǎn),從而避免了建立、保持時(shí)間不夠而產(chǎn)生誤碼的情況。
以上僅以較佳實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種訪問(wèn)緩存的方法,其特征在于包括步驟A、在先進(jìn)先出緩存器上設(shè)置n個(gè)緩存單元;B、分別設(shè)置周期為n倍時(shí)鐘周期的寫時(shí)鐘標(biāo)志信號(hào)和周期為n倍讀時(shí)鐘周期的讀時(shí)鐘標(biāo)志信號(hào);C、在寫時(shí)鐘標(biāo)志信號(hào)周期內(nèi)依次對(duì)緩存單元寫操作,當(dāng)寫第一個(gè)緩存單元時(shí),寫時(shí)鐘標(biāo)志信號(hào)為高電平,其余為低電平;D、在讀時(shí)鐘標(biāo)志信號(hào)周期內(nèi)的每個(gè)讀時(shí)鐘周期的上升沿對(duì)寫時(shí)鐘標(biāo)志信號(hào)進(jìn)行采樣,根據(jù)采樣結(jié)果判斷出寫時(shí)鐘標(biāo)志信號(hào)上升沿的位置;E、在寫時(shí)鐘標(biāo)志信號(hào)上升沿所對(duì)應(yīng)的讀時(shí)鐘周期后的至少第2個(gè)讀時(shí)鐘周期開始對(duì)緩存單元進(jìn)行讀操作。
2.根據(jù)權(quán)利要求1所述的訪問(wèn)緩存的方法,其特征在于所述緩存單元數(shù)n=[x]+2,其中[x]表示對(duì)讀寫時(shí)鐘的相對(duì)抖動(dòng)范圍向上取整。
3.根據(jù)權(quán)利要求2所述的訪問(wèn)緩存的方法,其特征在于所述讀寫時(shí)鐘的相對(duì)抖動(dòng)范圍以時(shí)鐘周期倍數(shù)為單位。
4.根據(jù)權(quán)利要求3所述的訪問(wèn)緩存的方法,其特征在于當(dāng)讀寫時(shí)鐘的相對(duì)抖動(dòng)范圍小于一個(gè)時(shí)鐘周期時(shí),n的取值為3。
5.根據(jù)權(quán)利要求3所述的訪問(wèn)緩存的方法,其特征在于當(dāng)讀寫時(shí)鐘的相對(duì)抖動(dòng)范圍大于一個(gè)時(shí)鐘周期時(shí),n的取值大于3。
6.根據(jù)權(quán)利要求1所述的訪問(wèn)緩存的方法,其特征在于在所述步驟E中對(duì)緩存單元進(jìn)行讀操作時(shí),首先讀取的是步驟C中的第一個(gè)緩存單元。
7.根據(jù)權(quán)利要求1所述的訪問(wèn)緩存的方法,其特征在于在所述步驟D中若連續(xù)n-1個(gè)讀時(shí)鐘標(biāo)志信號(hào)周期的采樣結(jié)果不同,則在步驟E中開始對(duì)緩存單元進(jìn)行讀操作的讀時(shí)鐘周期固定在n-1個(gè)采樣結(jié)果中的第一個(gè)采樣結(jié)果所對(duì)應(yīng)的開始讀取時(shí)鐘周期上。
全文摘要
本發(fā)明公開了一種訪問(wèn)緩存的方法,通過(guò)在先進(jìn)先出緩存器上設(shè)置n個(gè)緩存單元,設(shè)置周期為n倍寫時(shí)鐘周期的寫時(shí)鐘標(biāo)志信號(hào)和周期為n倍讀時(shí)鐘周期的讀時(shí)鐘標(biāo)志信號(hào),在寫時(shí)鐘標(biāo)志信號(hào)周期內(nèi)依次對(duì)所有緩存單元進(jìn)行寫操作,當(dāng)寫第一個(gè)緩存單元時(shí),寫時(shí)鐘標(biāo)志信號(hào)為高電平,其余為低電平;讀時(shí)鐘標(biāo)志信號(hào)周期內(nèi)的每個(gè)讀時(shí)鐘周期的上升沿對(duì)寫時(shí)鐘標(biāo)志信號(hào)進(jìn)行采樣,根據(jù)采樣結(jié)果判斷出寫時(shí)鐘標(biāo)志信號(hào)上升沿的位置;在寫時(shí)鐘標(biāo)志信號(hào)上升沿所對(duì)應(yīng)的讀時(shí)鐘周期后的至少第二個(gè)讀時(shí)鐘周期開始對(duì)緩存單元進(jìn)行讀操作。使用該方法可保證延遲誤差不超過(guò)時(shí)鐘的抖動(dòng)范圍,同時(shí)降低了邏輯電路的設(shè)計(jì)復(fù)雜度。
文檔編號(hào)H04L7/08GK1812318SQ20051000261
公開日2006年8月2日 申請(qǐng)日期2005年1月24日 優(yōu)先權(quán)日2005年1月24日
發(fā)明者李剛 申請(qǐng)人:華為技術(shù)有限公司