專利名稱:數(shù)據(jù)緩存器溢出的自動(dòng)解除方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及緩存器技術(shù),具體涉及數(shù)據(jù)緩存器溢出的自動(dòng)解除方法和自 動(dòng)解除裝置。
背景技術(shù):
FIFO的含義是先進(jìn)先出(First In First Out),在緩存器的技術(shù)領(lǐng)域中, 通常將先進(jìn)先出的數(shù)據(jù)緩存器稱為FIFO。FIFO的讀寫數(shù)據(jù)是同時(shí)進(jìn)行的,即寫數(shù)據(jù)一端一直往FIFO寫,讀數(shù)據(jù) 一端一直從FIFO讀取數(shù)據(jù)。FIFO的讀寫操作分別由兩個(gè)時(shí)鐘控制,分別為 FIFO讀時(shí)鐘和FIFO寫時(shí)鐘。對(duì)于讀4喿作來說,在FIFO讀時(shí)鐘的有效沿到 來時(shí),判斷FIFO中的數(shù)據(jù)位是否大于或等于設(shè)定的FIFO讀寬度,如果是, 則執(zhí)行讀操作,否則等待FIFO讀時(shí)鐘下一個(gè)有效沿的到來,再次執(zhí)行上述 判斷操作。其中,F(xiàn)IFO讀寬度(WIDTH)是FIFO的一個(gè)重要參數(shù),它是 指執(zhí)行讀操作時(shí)一次讀取數(shù)據(jù)位的大小,而且只有FIFO中的數(shù)據(jù)量大于 FIFO讀寬度,才能將FIFO中的數(shù)據(jù)讀走。而寫操作與讀操作不同,寫操作 執(zhí)行頻率是根據(jù)所寫數(shù)據(jù)的大小而定的。通常,在FIFO寫時(shí)鐘有效沿到來 時(shí),只要有待寫數(shù)據(jù)就會(huì)執(zhí)行寫操作。而對(duì)于應(yīng)用于圖像處理的FIFO來說, 對(duì)每?jī)蓚€(gè)像素(Pix)進(jìn)行寫操作時(shí),都會(huì)停頓一個(gè)間隔時(shí)間。同樣,當(dāng)圖 像換行,圖像換幀時(shí),不會(huì)連續(xù)執(zhí)行寫操作,也會(huì)停頓一個(gè)間隔時(shí)間。通常,在設(shè)計(jì)時(shí)會(huì)計(jì)算好FIFO所要處理的數(shù)據(jù)量,使其不會(huì)發(fā)生溢出。 但是當(dāng)某個(gè)瞬間輸入的數(shù)據(jù)量增大時(shí),F(xiàn)IFO就可能^C填滿,vMv而發(fā)生溢出。 例如,在某個(gè)時(shí)刻執(zhí)行了將待處理圖像放大操作,在這個(gè)瞬間輸入的數(shù)據(jù)量 突增。由于寫FIFO沒變時(shí)鐘,為了盡量減少輸入時(shí)間,則FIFO所在芯片會(huì)控制減小像素與像素之間、行與行之間以及幀與幀之間的間隔時(shí)間,間隔 時(shí)間的減小導(dǎo)致實(shí)際執(zhí)行寫操作的頻率加快,在這種情況下,就會(huì)發(fā)生溢出。FIFO的溢出將導(dǎo)致其所在芯片的執(zhí)行程序發(fā)生錯(cuò)誤,芯片不能正常工作。 為了保證FIFO不溢出,芯片開發(fā)人員在開發(fā)調(diào)試過程中,通過實(shí)-瞼確定FIFO 寬度、FIFO讀時(shí)鐘和FIFO寫時(shí)鐘這些FIFO參數(shù)值,使其盡量能夠保證FIFO 在使用過程中不發(fā)生溢出。但是,當(dāng)芯片做成產(chǎn)品后其FIFO參數(shù)值就固化 在芯片中,不能再進(jìn)行調(diào)整。開發(fā)調(diào)制時(shí)確定的FIFO參ll并不能保i正FIFO 在任何情況下都不溢出, 一旦溢出將無法自動(dòng)解除??梢?,目前還沒有一種自動(dòng)解除FIFO溢出的方案能夠應(yīng)用于使用FIFO 的芯片中。發(fā)明內(nèi)容有鑒于此,本發(fā)明提供了 一種FIFO數(shù)據(jù)緩存器溢出的自動(dòng)解除方法, 能夠自動(dòng)解除FIFO溢出。該方法包括在檢測(cè)到作為數(shù)據(jù)存儲(chǔ)器的先進(jìn)先出存儲(chǔ)器FIFO溢出時(shí), 通過調(diào)整FIFO參數(shù),增加對(duì)所述FIFO執(zhí)4于讀〗喿作的頻率。所述FIFO為同步FIFO,所述通過調(diào)整FIFO參數(shù),增加對(duì)FIFO 4丸行 讀操作的頻率為減小所述FIFO的FIFO讀寬度。所述FIFO為異步FIFO,所述通過調(diào)整FIFO參H增加對(duì)FIFO執(zhí)行 讀操作的頻率為根據(jù)設(shè)定的調(diào)整方式,對(duì)所述FIFO執(zhí)行減小FIFO讀寬 度操作、提高FIFO讀時(shí)鐘操作和降低FIFO寫時(shí)鐘操作中的一種或任意組 合。較佳地,所述增加對(duì)FIFO執(zhí)行讀操作的頻率之后,進(jìn)一步包括等待 設(shè)定的溢出判斷間隔,再次判斷是否仍然溢出,如果是,則繼續(xù)執(zhí)行所述增 加對(duì)FIFO執(zhí)行讀操作的頻率的操作,否則判定FIFO溢出解除,退出本流程。本發(fā)明還提供了 一種FIFO數(shù)據(jù)存儲(chǔ)器溢出的自動(dòng)解除裝置,能夠自動(dòng)解除FIFO溢出。 該裝置包括溢出4全測(cè)單元,用于在4企測(cè)到FIFO溢出時(shí),通知溢出解除單元;溢出解除單元,用于在所述溢出才企測(cè)單元的通知下,通過調(diào)整FIFO參 數(shù),增加對(duì)所述FIFO執(zhí)行讀操作的頻率。其中,所述溢出解除單元包括存儲(chǔ)模塊,用于接收來自外部的調(diào)整操作參數(shù)并存儲(chǔ);執(zhí)行模塊,用于在接收到來自所述溢出檢測(cè)單元的通知時(shí),對(duì)于同步FIFO, 減小所述FIFO的FIFO讀寬度;對(duì)于異步FIFO,根據(jù)從存儲(chǔ)模塊獲取的所述 調(diào)整操作參數(shù)中的調(diào)整方式參數(shù),對(duì)所述FIFO執(zhí)行減小FIFO讀寬度操作、提 高FIFO讀時(shí)鐘操作和降低FIFO寫時(shí)鐘操作中的一種或任意組合。才艮據(jù)以上技術(shù)方案可見,本發(fā)明4企測(cè)FIFO是否發(fā)生溢出,并在檢測(cè)到 溢出的情況下,自動(dòng)提高FIFO讀數(shù)據(jù)操作的執(zhí)行頻率,使得FIFO中的數(shù) 據(jù)盡快被讀出去,從而留下一定的空閑數(shù)據(jù)位,以解除FIFO溢出。由于調(diào) 整過程是自動(dòng)的,無需人工參與,因此不僅可以在開發(fā)調(diào)試過程中使用,以 降低開發(fā)調(diào)試人員的工作量,還可以在產(chǎn)品中使用。而且,對(duì)于異步FIFO,提高FIFO讀數(shù)據(jù)執(zhí)行頻率的方式不只一種,多 種方式的單獨(dú)使用,和混合使用都可以實(shí)現(xiàn)FIFO讀數(shù)據(jù)頻率的提高,從而 提高了解決方式的靈活性,而且多種調(diào)整方式混合使用進(jìn) 一 步保證了溢出問 題的有效解決。
圖1為本發(fā)明實(shí)施例中FIFO溢出的自動(dòng)解除方法的流程圖。圖2為本發(fā)明實(shí)施例中FIFO溢出的自動(dòng)解除裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了解決FIFO溢出的問題,本發(fā)明實(shí)施例對(duì)溢出事件進(jìn)行檢測(cè),當(dāng)檢測(cè)到溢出時(shí),通過調(diào)整FIFO參數(shù),增加對(duì)FIFO執(zhí)行的讀操作頻率,使得 FIFO中的數(shù)據(jù)盡快被讀出去,從而留下一部分空閑數(shù)據(jù)位,以解除FIFO溢 出的情況。需要說明的是,本發(fā)明實(shí)施例中對(duì)FIFO執(zhí)行讀操作的頻率,并非FIFO 讀時(shí)鐘上升沿到來的頻率,而是實(shí)際從FIFO中讀取出數(shù)據(jù)這一動(dòng)作的執(zhí)行頻率。對(duì)FIFO執(zhí)行讀操作的頻率與FIFO讀時(shí)鐘這一 FIFO參數(shù)直接相關(guān)在 F1F0寫時(shí)鐘不變的情況下,通過提高FIFO讀時(shí)鐘,可以直接增加讀操作的 執(zhí)行頻率。對(duì)FIFO執(zhí)行讀操作的頻率與FIFO寫時(shí)鐘這一 FIFO參數(shù)間接相關(guān)在 FIFO讀時(shí)鐘不變的情況下,通過降低FIFO寫時(shí)鐘,使FIFO寫速度變慢, 相當(dāng)于間接增加了讀操作的執(zhí)行頻率。但是,以上調(diào)整FIFO讀寫時(shí)鐘的方式只適用于讀寫時(shí)鐘互相獨(dú)立的異 步FIFO。而同步FIFO的讀寫操作共享同一個(gè)時(shí)鐘,因此無法采用時(shí)鐘調(diào)整 方式來解除溢出。另外一個(gè)重要的FIFO參數(shù)是FIFO寬度。FIFO讀操作的執(zhí)行頻率與 FIFO讀寬度也有關(guān)系。FIFO讀寬度較小時(shí),只要FIFO中的數(shù)據(jù)量滿足較 小的FIFO讀寬度,就可以進(jìn)行實(shí)際的讀操作,兩次讀取FIFO之間的等待 時(shí)間較少,那么讀取FIFO的執(zhí)行頻率加快。在讀寬度減小且讀頻率加快的 情況下,可以將FIFO盡可能的讀空,那么,當(dāng)有數(shù)據(jù)寫入時(shí),不會(huì)因?yàn)榭?閑數(shù)據(jù)位較小,而再次發(fā)生溢出問題。反之,如果FIFO讀寬度較大,那么 在FIFO里的數(shù)據(jù)量不足FIFO讀寬度的情況下,該FIFO中的數(shù)據(jù)不能被讀 取,如果此時(shí)繼續(xù)往FIFO里寫較多數(shù)據(jù),就又造成了 FIFO的溢出。而且, 這種方式適用于同步FIFO和異步FIFO。為了便于理解減小FIFO讀寬度與提高讀操作執(zhí)行頻率之間的關(guān)系,下 面舉一個(gè)實(shí)例。假設(shè)FIFO能夠容納80字節(jié)的數(shù)據(jù),通常FIFO的讀寬度為略大于總長(zhǎng)度的50 %或25 % ,這里,以讀寬度略大于FIFO總長(zhǎng)度的25 %為例,假設(shè) FIFO讀寬度分別為30字節(jié)那么,當(dāng)FIFO溢出時(shí)且讀時(shí)鐘有效沿到來時(shí), 執(zhí)行讀操作,會(huì)連續(xù)執(zhí)行兩次讀操作,讀取出60字節(jié)的數(shù)據(jù),剩余20字節(jié), 由于不夠讀寬度,因此讀操作停止。讀操作停止后,如果一下子寫入60字 節(jié)的數(shù)據(jù),那么又會(huì)造成突然的溢出??梢姡绯霾⑽凑嬲顺?。而如果采用本發(fā)明實(shí)施例中的處理方案,會(huì)在;f全測(cè)到溢出后,自動(dòng)減少 讀寬度,此時(shí),假設(shè)將讀寬度減小到20字節(jié),則FIFO溢出后,讀操作會(huì)連 續(xù)執(zhí)行4次,讀取80字節(jié)的數(shù)據(jù),由于FIFO空,才停止讀取操作。如果此 時(shí)一下子寫入60字節(jié)的數(shù)據(jù),則不會(huì)造成溢出。退出了溢出。以上實(shí)例只 是為例說明本發(fā)明實(shí)施例效果而例舉的一種情況。實(shí)驗(yàn)發(fā)現(xiàn),采用改變讀寬 度來解除溢出的方案,有時(shí)需要讀寫搡作執(zhí)行幾個(gè)循環(huán),然后才能退出溢出 狀態(tài)。如果讀寬度減小幅度不夠大,則可以經(jīng)過幾輪調(diào)整,達(dá)到最佳的狀態(tài), /人而達(dá)到退出溢出的效果。通常,由于溢出后FIFO中的數(shù)據(jù)也不能在后續(xù)操作中被使用,為了盡 快的退出溢出,可以在調(diào)整讀寬度之前或同時(shí),將FIFO清空。然后,再應(yīng) 用調(diào)整后的讀寬度。鑒于以上分析,本發(fā)明實(shí)施例在^r測(cè)到溢出時(shí),可以采用如下3種方式 增加對(duì)FIFO執(zhí)行讀操作的頻率,從而解決溢出問題方式1 )、通過提高FIFO讀時(shí)鐘,使得FIFO讀操作執(zhí)行頻率直接加快;方式2 )、通過降低FIFO寫時(shí)鐘,使得FIFO寫速度變慢,令FIFO讀 操作執(zhí)行頻率相對(duì)加快;方式3 )、通過減小FIFO讀寬度使得FIFO的讀操作執(zhí)行頻率間接加快。對(duì)于同步FIFO,可以使用方式3)來解決溢出問題。對(duì)于異步FIFO, 可以使用以上3種方式中的一種或任意組合來解決溢出問題。在實(shí)際中,可 以預(yù)先配置解決溢出的方式。在實(shí)際應(yīng)用中,為了提高解決溢出問題的有效性,在調(diào)整時(shí),可以采用 多次少量的調(diào)整策略,分多次完成FIFO參數(shù)的調(diào)整。由于FIFO讀寬度和讀寫時(shí)鐘的缺省值都是在開發(fā)過程中經(jīng)過多次實(shí)驗(yàn)確定下來的較為合理的 數(shù)值,因此,在調(diào)整時(shí),可以每次進(jìn)行小幅度調(diào)整,調(diào)整后判斷是否仍溢出, 如果仍溢出,再進(jìn)行一次小幅度調(diào)整,直到解除溢出。從以上所述可見,本發(fā)明實(shí)施例的FIFO溢出自動(dòng)解除方法,能夠在檢 測(cè)到FIFO溢出時(shí),自動(dòng)增加對(duì)FIFO執(zhí)行讀操作的頻率,使得FIFO中的數(shù) 據(jù)盡快被讀出去,從而留下一部分空閑數(shù)據(jù)位,以解決FIFO溢出的情況。 由于調(diào)整過程是自動(dòng)的,無需人工參與,因此不僅可以在開發(fā)調(diào)試過程中使 用,以降低調(diào)試人員的工作量,還可以在產(chǎn)品中使用。而且,對(duì)于異步FIFO,提高FIFO讀數(shù)據(jù)執(zhí)行頻率的方式不只一種,多 種方式的單獨(dú)使用,和混合使用都可以實(shí)現(xiàn)FIFO讀數(shù)據(jù)速度的提高,提高 了解除溢出方式的靈活性,而且多種調(diào)整方式混合使用進(jìn) 一 步保證了溢出問 題的有效解決。下面結(jié)合附圖并舉實(shí)施例,對(duì)本發(fā)明進(jìn)行詳細(xì)描述??紤]到在實(shí)際設(shè)計(jì) 芯片時(shí),通常將FIFO寫寬度固定,因此本發(fā)明實(shí)施例只將FIFO讀寬度、 FIFO讀時(shí)鐘和FIFO寫時(shí)鐘作為調(diào)整對(duì)象。圖1為本發(fā)明實(shí)施例中FIFO溢出的自動(dòng)解除方法的流程圖。如圖l所 示,該方法包括以下步驟步驟101:預(yù)先設(shè)置調(diào)整操作參數(shù)。本步驟中,調(diào)整操作參數(shù)包括FIFO類型、調(diào)整方式、FIFO寬度調(diào)整 步長(zhǎng)、FIFO寬度區(qū)間;如果是異步FIFO還可設(shè)置時(shí)鐘調(diào)整步長(zhǎng)、時(shí)鐘區(qū)間、 調(diào)整優(yōu)先級(jí)等。其中,F(xiàn)IFO類型參數(shù),指示待調(diào)整FIFO是同步FIFO還是異步FIFO;調(diào)整方式參數(shù),指示通過減小FIFO讀寬度、提高讀時(shí)鐘和降低寫時(shí)鐘 中的哪一種或任哪幾種方式,增加FIFO讀操作執(zhí)行頻率。對(duì)于同步FIFO 只能選擇一種,即減小FIFO讀寬度;對(duì)于異步FIFO,可以選擇任意一種或 任意兩種,或三種同時(shí)^f吏用。調(diào)整優(yōu)先級(jí)參數(shù),用于指示FIFO讀寬度、讀時(shí)鐘和寫時(shí)鐘的優(yōu)先級(jí)。當(dāng)對(duì)溢出FIFO執(zhí)行減小FIFO讀寬度操作、提高FIFO讀時(shí)鐘操作和降低 FIFO寫時(shí)鐘操作中的2種或3種時(shí),根據(jù)設(shè)定的調(diào)整優(yōu)先級(jí),順序執(zhí)行對(duì) 各FIFO參數(shù)的調(diào)整操作。具體來說,當(dāng)判定溢出時(shí),根據(jù)調(diào)整方式,按調(diào) 整優(yōu)先級(jí),執(zhí)行對(duì)各FIFO參數(shù)的調(diào)整操作,然后判定是否仍溢出,如杲溢 出,則再次執(zhí)行同樣的調(diào)整操作。或者,當(dāng)判定溢出時(shí),先調(diào)整優(yōu)先級(jí)高的 參數(shù)(寬度、讀時(shí)鐘和寫時(shí)鐘的一種),然后判斷是否溢出,如果溢出,再 調(diào)整優(yōu)先級(jí)中的參數(shù),判斷是否溢出,如果仍溢出,繼續(xù)調(diào)整優(yōu)先級(jí)低的參 數(shù),如此按照高中低的優(yōu)先等級(jí)循環(huán),直到不再溢出,確定本次調(diào)整成功。FIFO寬度調(diào)整步長(zhǎng),是指對(duì)FIFO寬度進(jìn)行調(diào)整時(shí)的粒度,可以用數(shù)值 表示,也可以用步長(zhǎng)占FIFO總長(zhǎng)度的百分比表示。為了實(shí)現(xiàn)多次少量的調(diào) 整,可以將FIFO寬度調(diào)整步長(zhǎng)設(shè)置的比較小。但是,由于太多次的調(diào)整可 能導(dǎo)致調(diào)整時(shí)間過長(zhǎng),因此FIFO寬度調(diào)整步長(zhǎng)可以通過實(shí)驗(yàn)確定。FIFO寬度區(qū)間,是指所允許的FIFO寬度最大值和最小值,設(shè)置調(diào)整區(qū) 間保證FIFO在硬件要求的范圍內(nèi)進(jìn)行調(diào)整。時(shí)鐘調(diào)整步長(zhǎng),是指對(duì)FIFO讀時(shí)鐘和寫時(shí)鐘進(jìn)行調(diào)整時(shí)的粒度,可以 用數(shù)值表示,也可以用步長(zhǎng)占允許的最大時(shí)鐘數(shù)值的百分比表示。時(shí)鐘區(qū)間,是指所允許的FIFO讀時(shí)鐘和寫時(shí)鐘的最大值和最小值,設(shè) 置調(diào)整區(qū)間保證FIFO在硬件要求的范圍內(nèi)進(jìn)行調(diào)整。其中,讀寫時(shí)鐘可以 共享相同的調(diào)整步長(zhǎng)和調(diào)整區(qū)間,也可以為讀、寫時(shí)鐘設(shè)置不同的時(shí)鐘調(diào)整 步長(zhǎng)和時(shí)鐘區(qū)間。以上調(diào)整操作參數(shù)可以是在調(diào)試之前,或投產(chǎn)之前設(shè)置好的。這些調(diào)整 操作參數(shù)均可以設(shè)置在可擦寫存儲(chǔ)器中,并通過人機(jī)接口對(duì)這些參數(shù)進(jìn)行修 改。所述的可擦寫存儲(chǔ)器是位于FIFO所在芯片中的存儲(chǔ)器,或者說是FIFO 所在環(huán)境中的存儲(chǔ)器。步驟102:數(shù)據(jù)流按照FIFO寫時(shí)鐘寫入FIFO。步驟103:檢測(cè)到FIFO溢出。本步驟中,F(xiàn)IFO所在芯片會(huì)實(shí)時(shí)監(jiān)測(cè)FIFO的狀態(tài),例如監(jiān)測(cè)FIFO數(shù)據(jù)指針,通過指針位置判斷FIFO是否溢出;或者,在檢測(cè)到FIFO給出滿 信號(hào)后,判定FIFO溢出。在檢測(cè)到FIFO溢出后,F(xiàn)IFO所在芯片發(fā)出中斷 信號(hào)。步驟104:依據(jù)溢出FIFO的類型,判斷FIFO是同步FIFO還是異步FIFO; 如果是同步FIFO則執(zhí)行步驟105;否則執(zhí)行步驟106。這里,溢出FIFO的 類型可以從預(yù)設(shè)調(diào)整操作參數(shù)中獲取。步驟105:根據(jù)FIFO寬度調(diào)整步長(zhǎng)參數(shù)和FIFO寬度區(qū)間參數(shù),將當(dāng)前 FIFO讀寬度減少一個(gè)FIFO寬度調(diào)整步長(zhǎng),構(gòu)成新FIFO讀寬度,同時(shí)保證 新FIFO讀寬度在FIFO寬度區(qū)間內(nèi)。繼續(xù)執(zhí)行步驟107。其中,F(xiàn)IFO讀寬度通常是保存在寄存器中,在調(diào)整前從寄存器中讀取 寬度值,構(gòu)成新FIFO讀寬度后,寫入寄存器。步驟106:根據(jù)設(shè)定的調(diào)整方式參數(shù)選擇減小FIFO讀寬度、提高讀時(shí) 鐘和降低寫時(shí)鐘中的一種方式或至少兩種方式的組合,從而增加對(duì)FIFO抽" 行讀操作的頻率。繼續(xù)執(zhí)行步驟107。本步驟中,調(diào)整方式可以有多種組合,包括只減小FIFO讀寬度;或, 只提高FIFO讀時(shí)鐘;或,只降低FIFO寫時(shí)鐘;或,提高FIFO讀時(shí)鐘的同 時(shí)降低FIFO寫時(shí)鐘;或,減小FIFO讀寬度的同時(shí),提高FIFO讀時(shí)鐘;或, 減小FIFO讀寬度的同時(shí),降低FIFO寫時(shí)鐘;或,減小FIFO讀寬度的同時(shí), 提高FIFO讀時(shí)鐘和降j氐FIFO寫時(shí)鐘。其中,減小FIFO讀寬度的具體方式已經(jīng)在前述步驟105中詳細(xì)描述;提高讀時(shí)鐘的具體方式為根據(jù)設(shè)定的時(shí)鐘調(diào)整步長(zhǎng)參數(shù)和時(shí)鐘區(qū)間參 數(shù),將當(dāng)前讀時(shí)鐘值增加一個(gè)時(shí)鐘調(diào)整步長(zhǎng),構(gòu)成新的讀時(shí)鐘值,同時(shí)保證 新的讀時(shí)鐘值在設(shè)定的時(shí)鐘區(qū)間內(nèi)。降低寫時(shí)鐘的具體方式為根據(jù)設(shè)定的時(shí)鐘調(diào)整步長(zhǎng)參數(shù)和時(shí)鐘區(qū)間參 數(shù),將當(dāng)前寫時(shí)鐘值減少一個(gè)時(shí)鐘調(diào)整步長(zhǎng),構(gòu)成新的寫時(shí)鐘值,同時(shí)保證 新的寫時(shí)鐘值在i殳定的時(shí)鐘區(qū)間內(nèi)。步驟107:繼續(xù)檢測(cè)FIFO是否溢出,如果是,則執(zhí)行步驟104;否則判定FIFO溢出解除,結(jié)束本流程。以上流程可以適用于同步FIFO和異步FIFO。當(dāng)然,由于FIFO類型可 以預(yù)先知道,因此,在實(shí)際應(yīng)用時(shí),可以省略步驟104的判斷操作,對(duì)于同 步FIFO直接采用步驟105進(jìn)4亍溢出處理,對(duì)于異步FIFO采用步驟106進(jìn) 行溢出處理。經(jīng)調(diào)整,對(duì)FIFO數(shù)據(jù)的讀操作頻率加快。較佳地,在溢出解除后的一 段設(shè)定時(shí)間內(nèi),不再出現(xiàn)溢出,則可以將被調(diào)整的參數(shù)恢復(fù)為缺省值。缺省 值是預(yù)先設(shè)置的。還可以在FIFO上電時(shí)將FIFO讀寫寬度和FIFO讀寫時(shí)鐘 設(shè)置為缺省值。為了實(shí)現(xiàn)本發(fā)明實(shí)施例中的FIFO溢出的自動(dòng)解除方法,本發(fā)明實(shí)施例 還提供了一種FIFO溢出的自動(dòng)解除裝置。圖2為本發(fā)明實(shí)施例中FIFO溢出的自動(dòng)解除裝置的結(jié)構(gòu)示意圖。如圖 2所示,該裝置包括溢出檢測(cè)單元210和溢出解除單元220。其中,溢出4全測(cè)單元210,用于實(shí)時(shí)監(jiān)測(cè)FIFO的狀態(tài),在4全測(cè)到FIFO 溢出時(shí),通知溢出解除單元220。溢出解除單元220,用于在所述溢出檢測(cè)單元210的通知下,通過調(diào)整 FIFO參數(shù),增加對(duì)FIFO執(zhí)行讀4喿作的頻率。進(jìn)一步地,該溢出解除單元 220在調(diào)整完成后,向所述溢出沖全測(cè)單元查詢所述溢出FIFO的狀態(tài),在查 詢結(jié)果顯示所述溢出FIFO仍溢出時(shí),繼續(xù)調(diào)整所述FIFO參數(shù);在查詢結(jié) 果顯示所述溢出FIFO不溢出時(shí),判定溢出解除。溢出解除單元220具體包括存儲(chǔ)模塊221和執(zhí)行模塊222;其中,存儲(chǔ)模塊221,用于接收來自外部的用于調(diào)整FIFO的調(diào)整操作參數(shù)并 存儲(chǔ)。調(diào)整搡作參數(shù)包括FIFO類型、調(diào)整方式、FIFO寬度調(diào)整步長(zhǎng)、FIFO 寬度區(qū)間;如果是異步FIFO還可設(shè)置時(shí)鐘調(diào)整步長(zhǎng)、時(shí)鐘區(qū)間、調(diào)整優(yōu)先 級(jí)等。執(zhí)行模塊222,用于在接收到來自溢出檢測(cè)單元210的溢出通知時(shí),根 據(jù)溢出FIFO類型,調(diào)整與FIFO類型對(duì)應(yīng)的FIFO參數(shù)調(diào)整操作,從而增加對(duì)FIFO執(zhí)行讀操作的頻率;調(diào)整完畢后,向溢出檢測(cè)單元210發(fā)送查詢請(qǐng) 求,查詢FIFO當(dāng)前狀態(tài)是否仍為溢出,如果溢出檢測(cè)單元210返回的查詢 結(jié)果顯示溢出,則繼續(xù)執(zhí)行FIFO參數(shù)調(diào)整操作;否則,確定溢出成功解除。具體來說,對(duì)于同步FIFO,執(zhí)行模塊222通過減小FIFO讀寬度實(shí)現(xiàn)讀 操作執(zhí)行頻率的增加。具體實(shí)現(xiàn)為執(zhí)行模塊222根據(jù)從存儲(chǔ)模塊221獲取 的FIFO寬度調(diào)整步長(zhǎng)參數(shù)和FIFO寬度區(qū)間參數(shù),將當(dāng)前FIFO讀寬度減少 一個(gè)FIFO寬度調(diào)整步長(zhǎng),構(gòu)成新的FIFO讀寬度,同時(shí)保證新的FIFO讀寬 度在設(shè)定的FIFO寬度區(qū)間內(nèi)。對(duì)于異步FIFO,執(zhí)行模塊222根據(jù)設(shè)定的調(diào)整方式選擇減小FIFO讀寬 度、提高FIFO讀時(shí)鐘和降低FIFO寫時(shí)鐘中的一種或多種方式,實(shí)現(xiàn)讀操 作執(zhí)行頻率的增加,具體實(shí)現(xiàn)為減小FIFO讀寬度的具體方式已經(jīng)在對(duì)同步FIFO的說明中描述;提高讀時(shí)鐘的具體方式為根據(jù)從參數(shù)設(shè)備模塊221獲取的時(shí)鐘調(diào)整步 長(zhǎng)參數(shù)和時(shí)鐘區(qū)間參數(shù),將當(dāng)前讀時(shí)鐘值增加一個(gè)時(shí)鐘調(diào)整步長(zhǎng),構(gòu)成新的 讀時(shí)鐘值,同時(shí)保證新的讀時(shí)鐘值在設(shè)定的時(shí)鐘區(qū)間內(nèi)。降低寫時(shí)鐘的具體方式為根據(jù)從參數(shù)設(shè)備模塊221獲取的時(shí)鐘調(diào)整步 長(zhǎng)參數(shù)和時(shí)鐘區(qū)間參數(shù),將當(dāng)前寫時(shí)鐘值減少一個(gè)時(shí)鐘調(diào)整步長(zhǎng),構(gòu)成新的 寫時(shí)鐘值,同時(shí)保證新的寫讀時(shí)鐘值在設(shè)定的時(shí)鐘區(qū)間內(nèi)。較佳地,該溢出自動(dòng)解除裝置進(jìn)一步包括恢復(fù)單元230,用于在溢出解 除單元220中的執(zhí)行單元222判定溢出解除后,計(jì)算當(dāng)前時(shí)刻到溢出解除時(shí) 刻之間的時(shí)間段長(zhǎng)度,并在該時(shí)間段長(zhǎng)度達(dá)到預(yù)設(shè)長(zhǎng)度后,將被調(diào)整的FIFO 參數(shù)恢復(fù)為缺省值。由以上所述可以看出,本發(fā)明所提供的FIFO溢出的自動(dòng)解除方案,能 夠通過調(diào)整FIFO參數(shù)自動(dòng)解除溢出。由于調(diào)整過程是自動(dòng)的,無需人工參 與,因此不僅可以在開發(fā)調(diào)試過程中使用,以降低調(diào)試人員的工作量,還可 以在產(chǎn)品中使用,在產(chǎn)品使用過程中根據(jù)實(shí)際情況自動(dòng)調(diào)整,保證使用FIFO 的芯片在使用過程中發(fā)生的溢出情況能夠得到有效的解決。而且,可以用多種方式解決溢出問題,解決方式靈活。綜上所述,以上僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的 保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改 進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1. 一種數(shù)據(jù)緩存器溢出的自動(dòng)解除方法,其特征在于,該方法包括在檢測(cè)到作為數(shù)據(jù)存儲(chǔ)器的先進(jìn)先出存儲(chǔ)器FIFO溢出時(shí),通過調(diào)整FIFO參數(shù),增加對(duì)所述FIFO執(zhí)行讀操作的頻率。
2、 如權(quán)利要求l所述的方法,其特征在于,所述FIFO為同步FIFO,所述 通過調(diào)整FIFO參數(shù),增加對(duì)FIFO執(zhí)行讀操作的頻率為減小所述FIFO的FIFO 讀寬度。
3、 如權(quán)利要求l所述的方法,其特征在于,所述FIFO為異步FIFO,所述 通過調(diào)整FIFO參數(shù),增加對(duì)FIFO執(zhí)行讀操作的頻率為根據(jù)設(shè)定的調(diào)整方式, 對(duì)所述FIFO執(zhí)行減小FIFO讀寬度操作、提高FIFO讀時(shí)鐘操作和降低FIFO 寫時(shí)鐘才乘作中的一種或任意組合。
4、 如權(quán)利要求2或3所述的方法,其特征在于,所述減小FIFO讀寬度之 前或同時(shí),進(jìn)一步包括將所述FIFO清空。
5、 如權(quán)利要求2或3所述的方法,其特征在于,所述減小FIFO讀寬度為 根據(jù)設(shè)定的FIFO寬度調(diào)整步長(zhǎng)和FIFO寬度區(qū)間,將當(dāng)前FIFO讀寬度減少一 個(gè)FIFO寬度調(diào)整步長(zhǎng),構(gòu)成新的FIFO讀寬度,且所述新的FIFO讀寬度在所 述FIFO寬度區(qū)間內(nèi)。
6、 如權(quán)利要求3所述的方法,其特征在于,所述提高FIFO讀時(shí)鐘為根 據(jù)設(shè)定的時(shí)鐘調(diào)整步長(zhǎng)和時(shí)鐘區(qū)間,將當(dāng)前FIFO讀時(shí)鐘值增加一個(gè)時(shí)鐘調(diào)整 步長(zhǎng),構(gòu)成新的讀時(shí)鐘值,且所述新的讀時(shí)鐘值在所述時(shí)鐘區(qū)間內(nèi)。
7、 如權(quán)利要求3所述的方法,其特征在于,所述降低FIFO寫時(shí)鐘為根 據(jù)設(shè)定的時(shí)鐘調(diào)整步長(zhǎng)和時(shí)鐘區(qū)間,將當(dāng)前寫時(shí)鐘值減少一個(gè)時(shí)鐘調(diào)整步長(zhǎng), 構(gòu)成新的寫時(shí)鐘值,同時(shí)保證所述新的寫讀時(shí)鐘值在所述時(shí)鐘區(qū)間內(nèi)。
8、 如權(quán)利要求5所述的方法,其特征在于,當(dāng)對(duì)所述FIFO執(zhí)行減小FIFO 讀寬度操作、提高FIFO讀時(shí)鐘操作和降低FIFO寫時(shí)鐘操作中的兩種或兩種以 上的操作時(shí),根據(jù)設(shè)定的優(yōu)先級(jí)順序執(zhí)行所需操作。
9、 如權(quán)利要求l、 2或3所述的方法,其特征在于,所述增加對(duì)FIFO執(zhí)行 讀操作的頻率之后,進(jìn)一步包括等待設(shè)定的溢出判斷間隔,再次判斷是否仍 然溢出,如果是,則繼續(xù)執(zhí)行所述增加對(duì)FIFO執(zhí)行讀操作的頻率的操作,否 則判定FIFO溢出解除,退出本流程。
10、 如權(quán)利要求9所述的方法,其特征在于,所述判定FIFO溢出解除之后, 進(jìn)一步包括當(dāng)判定當(dāng)前時(shí)刻到判定溢出解除時(shí)刻之間的時(shí)間段達(dá)到預(yù)設(shè)長(zhǎng)度 時(shí),將被調(diào)整的FIFO參數(shù)恢復(fù)為缺省值。
11、 一種數(shù)據(jù)緩存器溢出的自動(dòng)解除裝置,用于解除FIFO的數(shù)據(jù)溢出,其 特征在于,該裝置包括溢出才企測(cè)單元,用于在4企測(cè)到FIFO溢出時(shí),通知溢出解除單元; 溢出解除單元,用于在所述溢出檢測(cè)單元的通知下,通過調(diào)整FIFO參數(shù), 增加對(duì)FIFO執(zhí)行讀操:作的頻率。 -
12、 如權(quán)利要求11所述的裝置,其特征在于,所述溢出解除單元包括 存儲(chǔ)模塊,用于接收來自外部的調(diào)整操作參數(shù)并存儲(chǔ);執(zhí)行模塊,用于在接收到來自所述溢出檢測(cè)單元的通知時(shí),對(duì)于同步FIFO, 減小所述FIFO的FIFO讀寬度;對(duì)于異步FIFO,根據(jù)從存儲(chǔ)模塊獲取的所迷 調(diào)整操作參數(shù)中的調(diào)整方式參數(shù),對(duì)所述FIFO執(zhí)行減小FIFO讀寬度操作、提 高FIFO讀時(shí)鐘操作和降低FIFO寫時(shí)鐘操作中的一種或任意組合。
13、 如權(quán)利要求12所述的裝置,其特征在于,所述溢出解除單元進(jìn)一步用 于,在FIFO參數(shù)調(diào)整完成后,等待設(shè)定的溢出判斷間隔,然后向所述溢出檢 測(cè)單元查詢所述FIFO的當(dāng)前狀態(tài),在查詢結(jié)果顯示溢出時(shí),繼續(xù)調(diào)整所述FIFO 參數(shù);在查詢結(jié)果顯示不溢出時(shí),判定溢出解除。
14、 如權(quán)利要求13所述的裝置,其特征在于,該裝置進(jìn)一步包括恢復(fù)單元, 用于在溢出解除單元判定溢出解除后,計(jì)算當(dāng)前時(shí)刻到溢出解除時(shí)刻之間的時(shí) 間段長(zhǎng)度,并在該時(shí)間段長(zhǎng)度達(dá)到預(yù)設(shè)長(zhǎng)度后,將被調(diào)整的FIFO參數(shù)恢復(fù)為 缺省值。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)緩存器溢出的自動(dòng)解除方法,該方法在檢測(cè)到作為數(shù)據(jù)存儲(chǔ)器的先進(jìn)先出存儲(chǔ)器(FIFO)溢出時(shí),通過調(diào)整FIFO參數(shù),增加對(duì)該FIFO執(zhí)行讀操作的頻率。其中,對(duì)同步FIFO,調(diào)整FIFO參數(shù)為減小FIFO讀寬度;對(duì)異步FIFO,調(diào)整FIFO參數(shù)為減小FIFO讀寬度、提高FIFO讀時(shí)鐘和降低FIFO寫時(shí)鐘這三種方式中的一種或任意組合。本發(fā)明還公開了一種數(shù)據(jù)緩沖器溢出的自動(dòng)解除裝置。使用本發(fā)明能夠自動(dòng)解除FIFO溢出,而且方式靈活。
文檔編號(hào)G06F5/06GK101271387SQ20081010531
公開日2008年9月24日 申請(qǐng)日期2008年4月28日 優(yōu)先權(quán)日2008年4月28日
發(fā)明者馮備戰(zhàn) 申請(qǐng)人:北京中星微電子有限公司