專利名稱:一種先入先出存儲(chǔ)器及其輸出空滿標(biāo)志的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及先入先出存儲(chǔ)器(FIFO),特別是涉及一種高可靠性字節(jié)級(jí)寫(xiě)入包級(jí)讀出先入先出存儲(chǔ)器及其輸出空滿標(biāo)志的方法。
背景技術(shù):
在IP網(wǎng)絡(luò)中傳輸數(shù)據(jù)的基本單位是包,包是一種非固定長(zhǎng)度的數(shù)據(jù)幀。在IP設(shè)備中,存儲(chǔ)包的FIFO一般采用字節(jié)級(jí)FIFO或塊狀FIFO。字節(jié)級(jí)FIFO讀寫(xiě)端都是按照字節(jié)進(jìn)行訪問(wèn),輸出的空標(biāo)志和滿標(biāo)志也是字節(jié)級(jí)的;塊狀FIFO讀寫(xiě)端都是按照塊進(jìn)行訪問(wèn),輸出的空標(biāo)志和滿標(biāo)志也是塊級(jí)的。
字節(jié)級(jí)FIFO包括存儲(chǔ)器、讀地址計(jì)數(shù)器、寫(xiě)地址計(jì)數(shù)器、字節(jié)計(jì)數(shù)器和空滿標(biāo)志產(chǎn)生邏輯。對(duì)讀出端每讀出一個(gè)數(shù)據(jù),讀地址計(jì)數(shù)器的計(jì)數(shù)值加1,加到最大值變?yōu)?后,如果有數(shù)據(jù)讀出繼續(xù)加1;對(duì)寫(xiě)入端每寫(xiě)入1個(gè)數(shù)據(jù),寫(xiě)地址計(jì)數(shù)器的計(jì)數(shù)值加1,加到最大值變?yōu)?后,如果有數(shù)據(jù)寫(xiě)入繼續(xù)加1。字節(jié)計(jì)數(shù)器的計(jì)數(shù)值等于寫(xiě)地址計(jì)數(shù)器的計(jì)數(shù)值減讀地址計(jì)數(shù)器的計(jì)數(shù)值,如果字節(jié)計(jì)數(shù)器的計(jì)數(shù)值為0,空滿標(biāo)志產(chǎn)生邏輯輸出空標(biāo)志;如果字節(jié)計(jì)數(shù)器的計(jì)數(shù)值達(dá)到設(shè)定的閾值,空滿標(biāo)志產(chǎn)生邏輯輸出滿標(biāo)志。
假如字節(jié)級(jí)FIFO開(kāi)始為空,寫(xiě)入數(shù)據(jù)后FIFO非空,讀出端開(kāi)始讀出數(shù)據(jù)。在FIFO尚未寫(xiě)入一個(gè)完整的包時(shí)寫(xiě)入端由于某種原因中斷寫(xiě)入,但對(duì)讀出端而言,如果內(nèi)部調(diào)度是基于包的,讀出端由于不能讀出一個(gè)完整的包必須等待,這使得字節(jié)級(jí)寫(xiě)入字節(jié)級(jí)讀出FIFO在基于包級(jí)調(diào)度時(shí)效率不高。
塊狀FIFO包括存儲(chǔ)器、讀地址計(jì)數(shù)器、寫(xiě)地址計(jì)數(shù)器、塊計(jì)數(shù)器和空滿標(biāo)志產(chǎn)生邏輯。存儲(chǔ)器在邏輯上劃分為多個(gè)相同大小的存儲(chǔ)塊,例如一個(gè)存儲(chǔ)塊可以存放128或256個(gè)字節(jié)。讀地址和寫(xiě)地址在邏輯上分別分成兩部分高位地址和低位地址,高位地址指向存儲(chǔ)器內(nèi)部的某個(gè)存儲(chǔ)塊,低位地址指向存儲(chǔ)塊中的一個(gè)具體存儲(chǔ)單元。在接收一個(gè)塊的過(guò)程中,高位寫(xiě)地址保持不變,只有低位寫(xiě)地址變化;在完成接收一個(gè)塊后,高位寫(xiě)地址改變,低位寫(xiě)地址被置為一個(gè)固定的初值,以保證每個(gè)包在存儲(chǔ)塊中存儲(chǔ)的起始地址相同。同樣,在發(fā)送一個(gè)塊的過(guò)程中,高位讀地址保持不變,只有低位讀地址變化;在完成發(fā)送一個(gè)塊后,高位讀地址改變,低位讀地址被置為一個(gè)固定的初值,以保證讀下個(gè)包的起始地址相同。每當(dāng)接收一個(gè)塊時(shí),塊計(jì)數(shù)器的計(jì)數(shù)值加1,每當(dāng)發(fā)送一個(gè)塊時(shí),塊計(jì)數(shù)器的計(jì)數(shù)值減1,塊計(jì)數(shù)器的最大值等于該FIFO中存儲(chǔ)塊的總個(gè)數(shù)。塊計(jì)數(shù)的計(jì)數(shù)值為0時(shí),空滿標(biāo)志產(chǎn)生邏輯輸出空標(biāo)志,塊計(jì)數(shù)的計(jì)數(shù)值達(dá)到設(shè)定的閾值時(shí),空滿標(biāo)志產(chǎn)生邏輯輸出滿標(biāo)志。
在基于內(nèi)部塊調(diào)度的前提下,塊狀FIFO不需要等待,實(shí)現(xiàn)了比字節(jié)級(jí)FIFO更高的調(diào)度效率。但是塊狀FIFO對(duì)存儲(chǔ)器的使用效率低,例如,設(shè)定塊的大小為128字節(jié),如果輸入的包是129字節(jié),那么第二個(gè)塊只有1個(gè)存儲(chǔ)單元被使用,浪費(fèi)了大量存儲(chǔ)器資源。
發(fā)明內(nèi)容
本發(fā)明的目的是針對(duì)上述問(wèn)題提供一種高可靠性字節(jié)級(jí)寫(xiě)入包級(jí)讀出先入先出存儲(chǔ)器。
本發(fā)明的另一目的是提供一種先入先出存儲(chǔ)器輸出空滿標(biāo)志的方法。
本發(fā)明的先入先出存儲(chǔ)器,包括存儲(chǔ)器、寫(xiě)地址計(jì)數(shù)器、讀地址計(jì)數(shù)器、字節(jié)計(jì)數(shù)器和空滿標(biāo)志產(chǎn)生邏輯,其中寫(xiě)地址計(jì)數(shù)器用于根據(jù)來(lái)自外部電路的寫(xiě)信號(hào)進(jìn)行計(jì)數(shù),并將得到的寫(xiě)地址計(jì)數(shù)值發(fā)送到存儲(chǔ)器和字節(jié)計(jì)數(shù)器;讀地址計(jì)數(shù)器用于根據(jù)來(lái)自外部電路的讀信號(hào)進(jìn)行計(jì)數(shù),并將得到的讀地址計(jì)數(shù)值發(fā)送到存儲(chǔ)器和字節(jié)計(jì)數(shù)器;存儲(chǔ)器用于數(shù)據(jù)的存儲(chǔ),并根據(jù)接收到的寫(xiě)地址計(jì)數(shù)值和讀地址計(jì)數(shù)值,調(diào)整寫(xiě)地址指針和讀地址指針;字節(jié)計(jì)數(shù)器用于根據(jù)接收到的寫(xiě)地址計(jì)數(shù)值和讀地址計(jì)數(shù)值對(duì)存儲(chǔ)器中存儲(chǔ)的字節(jié)進(jìn)行計(jì)數(shù),并將得到的字節(jié)計(jì)數(shù)值發(fā)送到空滿標(biāo)志產(chǎn)生邏輯;包計(jì)數(shù)器用于對(duì)存儲(chǔ)器中存儲(chǔ)的包進(jìn)行計(jì)數(shù),并將得到的包計(jì)數(shù)值發(fā)送到空滿標(biāo)志產(chǎn)生邏輯;空滿標(biāo)志產(chǎn)生邏輯用于根據(jù)接收到的字節(jié)計(jì)數(shù)值和/或包計(jì)數(shù)值判斷存儲(chǔ)器是否為空或滿,并輸出相應(yīng)的空標(biāo)志或滿標(biāo)志。
所述包計(jì)數(shù)器根據(jù)來(lái)自外部電路的寫(xiě)包尾信號(hào)和讀包尾信號(hào)進(jìn)行計(jì)數(shù),接收到寫(xiě)包尾信號(hào)時(shí),計(jì)數(shù)值加1,接收到讀包尾信號(hào)時(shí),計(jì)數(shù)值減1。
所述空滿標(biāo)志產(chǎn)生邏輯在接收到的包計(jì)數(shù)值等于0時(shí),確定存儲(chǔ)器為空,并輸出空標(biāo)志;在接收到的字節(jié)計(jì)數(shù)值達(dá)到設(shè)定的閾值時(shí),確定存儲(chǔ)器為滿,并輸出滿標(biāo)志。
進(jìn)一步,所述空滿標(biāo)志產(chǎn)生邏輯在接收到的字節(jié)計(jì)數(shù)值達(dá)到閾值,并且接收到的包計(jì)數(shù)值大于0時(shí),確定存儲(chǔ)器為滿,并輸出滿標(biāo)志。
進(jìn)一步,本發(fā)明的先入先出存儲(chǔ)器還包括包長(zhǎng)計(jì)數(shù)器,其根據(jù)來(lái)自外部電路的讀信號(hào)進(jìn)行計(jì)數(shù),當(dāng)其計(jì)數(shù)值達(dá)到設(shè)定的包長(zhǎng)時(shí),輸出偽包尾信號(hào)到包計(jì)數(shù)器,以及接收外部電路的讀包尾信號(hào),接收到讀包尾信號(hào)時(shí)其計(jì)數(shù)值清0;所述包計(jì)數(shù)器還根據(jù)偽包尾信號(hào)進(jìn)行計(jì)數(shù),接收到偽包尾信號(hào)時(shí),包計(jì)數(shù)值減1。
本發(fā)明先入先出存儲(chǔ)器輸出空滿標(biāo)志的方法,包括以下步驟步驟A,根據(jù)來(lái)自外部電路的寫(xiě)信號(hào)和讀信號(hào)對(duì)存儲(chǔ)器中存儲(chǔ)的字節(jié)進(jìn)行計(jì)數(shù),得到字節(jié)計(jì)數(shù)值,根據(jù)來(lái)自外部電路的寫(xiě)包尾信號(hào)和讀包尾信號(hào)對(duì)存儲(chǔ)器中存儲(chǔ)的包進(jìn)行計(jì)數(shù),得到包計(jì)數(shù)值;步驟B,根據(jù)所述字節(jié)計(jì)數(shù)值和/或所述包計(jì)數(shù)值,判斷存儲(chǔ)器是否為空或滿,并輸出相應(yīng)的空標(biāo)志或滿標(biāo)志。
在步驟B中,若所述包計(jì)數(shù)值為0,確定存儲(chǔ)器為空,并輸出空標(biāo)志;若所述字節(jié)計(jì)數(shù)值達(dá)到設(shè)定的閾值,確定存儲(chǔ)器為滿,并輸出滿標(biāo)志。
進(jìn)一步,在步驟B中,若所述字節(jié)計(jì)數(shù)值達(dá)到設(shè)定的閾值,并且所述包計(jì)數(shù)值大于0,確定存儲(chǔ)器為滿,并輸出滿標(biāo)志。
進(jìn)一步,在步驟A中,還對(duì)讀出的數(shù)據(jù)長(zhǎng)度進(jìn)行計(jì)數(shù),如果數(shù)據(jù)長(zhǎng)度計(jì)數(shù)值達(dá)到設(shè)定的包長(zhǎng),則包計(jì)數(shù)值減1,并且當(dāng)外部電路輸入讀包尾信號(hào)時(shí),數(shù)據(jù)長(zhǎng)度計(jì)數(shù)值清0。
本發(fā)明的有益效果是實(shí)現(xiàn)了字節(jié)級(jí)寫(xiě)入和包級(jí)讀出,字節(jié)級(jí)寫(xiě)入可以最大效率地利用FIFO中的存儲(chǔ)器資源,包級(jí)讀出可以最大效率地實(shí)現(xiàn)調(diào)度效率;同時(shí)提出了字節(jié)級(jí)寫(xiě)入包級(jí)讀出FIFO缺陷的自恢復(fù)方法,提高了設(shè)計(jì)的可靠性和容錯(cuò)性。
圖1為本發(fā)明FIFO的結(jié)構(gòu)示意圖;圖2為在圖1基礎(chǔ)上增加了一個(gè)包長(zhǎng)計(jì)數(shù)器的FIFO的結(jié)構(gòu)示意圖。
具體實(shí)施例方式
以下結(jié)合附圖對(duì)本發(fā)明進(jìn)行詳細(xì)描述。
本發(fā)明的關(guān)鍵是在現(xiàn)有的FIFO上,增加了一個(gè)包計(jì)數(shù)器,該包計(jì)數(shù)器用于對(duì)存儲(chǔ)器中存儲(chǔ)的包進(jìn)行計(jì)數(shù),并將得到的包計(jì)數(shù)值發(fā)送到空滿標(biāo)志產(chǎn)生邏輯,空滿標(biāo)志產(chǎn)生邏輯根據(jù)接收到的字節(jié)計(jì)數(shù)值和/或包計(jì)數(shù)計(jì)數(shù)值判斷存儲(chǔ)器是否為空或滿,并輸出相應(yīng)的空標(biāo)志或滿標(biāo)志。
如圖1所示,本發(fā)明的FIFO包括存儲(chǔ)器、寫(xiě)地址計(jì)數(shù)器、讀地址計(jì)數(shù)器、字節(jié)計(jì)數(shù)器、包計(jì)數(shù)器和空滿標(biāo)志產(chǎn)生邏輯,其中寫(xiě)地址計(jì)數(shù)器用于根據(jù)來(lái)自外部電路的寫(xiě)信號(hào)進(jìn)行計(jì)數(shù),并將得到的寫(xiě)地址計(jì)數(shù)值發(fā)送到存儲(chǔ)器和字節(jié)計(jì)數(shù)器;讀地址計(jì)數(shù)器用于根據(jù)來(lái)自外部電路的讀信號(hào)進(jìn)行計(jì)數(shù),并將得到的讀地址計(jì)數(shù)值發(fā)送到存儲(chǔ)器和字節(jié)計(jì)數(shù)器;存儲(chǔ)器用于數(shù)據(jù)的存儲(chǔ),并根據(jù)接收到的寫(xiě)地址計(jì)數(shù)值和讀地址計(jì)數(shù)值,調(diào)整寫(xiě)地址指針和讀地址指針;字節(jié)計(jì)數(shù)器用于根據(jù)接收到的寫(xiě)地址計(jì)數(shù)值和讀地址計(jì)數(shù)值對(duì)存儲(chǔ)器中存儲(chǔ)的字節(jié)進(jìn)行計(jì)數(shù),并將得到的字節(jié)計(jì)數(shù)值發(fā)送到空滿標(biāo)志產(chǎn)生邏輯;包計(jì)數(shù)器用于對(duì)存儲(chǔ)器中存儲(chǔ)的包進(jìn)行計(jì)數(shù),并將得到的包計(jì)數(shù)值發(fā)送到空滿標(biāo)志產(chǎn)生邏輯;空滿標(biāo)志產(chǎn)生邏輯用于根據(jù)接收到的字節(jié)計(jì)數(shù)值和/或包計(jì)數(shù)值判斷存儲(chǔ)器是否為空或滿,并輸出相應(yīng)的空標(biāo)志或滿標(biāo)志。
所述存儲(chǔ)器為隨機(jī)存儲(chǔ)器(RAM),如雙端口存儲(chǔ)器(DPRAM)、單端口存儲(chǔ)器(SPRAM)等,本發(fā)明的優(yōu)選方式為雙端口存儲(chǔ)器。
所述讀地址計(jì)數(shù)器以讀信號(hào)為觸發(fā)信號(hào),每讀出一個(gè)數(shù)據(jù),讀地址計(jì)數(shù)值加1,加到最大值變?yōu)?后,如果有數(shù)據(jù)讀出繼續(xù)加1。所述寫(xiě)地址計(jì)數(shù)器以寫(xiě)信號(hào)為觸發(fā)信號(hào),每寫(xiě)入1個(gè)數(shù)據(jù),寫(xiě)地址計(jì)數(shù)值加1,加到最大值變?yōu)?后,如果有數(shù)據(jù)寫(xiě)入繼續(xù)加1。本發(fā)明中的包計(jì)數(shù)器的計(jì)數(shù)值是包級(jí)的,因此稱為包計(jì)數(shù)器。每當(dāng)接收或發(fā)送一個(gè)包時(shí),包計(jì)數(shù)器根據(jù)接收的控制信號(hào)更新計(jì)數(shù)值。包計(jì)數(shù)器根據(jù)來(lái)自外部電路的寫(xiě)包尾信號(hào)和讀包尾信號(hào)進(jìn)行計(jì)數(shù),接收到寫(xiě)包尾信號(hào)時(shí),計(jì)數(shù)值加1,接收到讀包尾信號(hào)時(shí),計(jì)數(shù)值減1。
空滿標(biāo)志產(chǎn)生邏輯包括兩個(gè)輸出端空標(biāo)志輸出端和滿標(biāo)志輸出端。空標(biāo)志輸出端將空標(biāo)志信號(hào)發(fā)送到外部對(duì)FIFO進(jìn)行讀操作的讀模塊;滿標(biāo)志輸出端將滿標(biāo)志信號(hào)發(fā)送到外部對(duì)FIFO進(jìn)行寫(xiě)操作的寫(xiě)模塊??諠M標(biāo)志的輸出端可以通過(guò)輸出高電平或低電平代表空滿標(biāo)志的有效或無(wú)效。比如當(dāng)輸出為高電平表示有效,低電平表示無(wú)效時(shí),如果FIFO為滿,則滿標(biāo)志輸出端置為高電平,否則置為低電平;如果FIFO為空,則空標(biāo)志輸出端置為高電平,否則置為低電平。空滿標(biāo)志產(chǎn)生邏輯輸出端置于高電平有效還是置于低電平有效,可以由設(shè)計(jì)者自己決定。空或滿標(biāo)志有效后可以對(duì)FIFO的讀或?qū)懡涌诋a(chǎn)生反壓,阻止外部向FIFO的存儲(chǔ)器讀出或?qū)懭霐?shù)據(jù)。
具體來(lái)說(shuō),空滿標(biāo)志產(chǎn)生邏輯在接收到的包計(jì)數(shù)值等于0時(shí),確定存儲(chǔ)器為空,并輸出空標(biāo)志;空滿標(biāo)志產(chǎn)生邏輯在接收到的字節(jié)計(jì)數(shù)值達(dá)到設(shè)定的閾值時(shí),確定存儲(chǔ)器為滿,并輸出滿標(biāo)志。
在正常情況下,上述方式不會(huì)有問(wèn)題。但FIFO在使用時(shí)受到干擾(例如時(shí)鐘干擾),會(huì)出現(xiàn)一些異常情況,下面舉例說(shuō)明兩種異常情況及解決方法。
1)字節(jié)計(jì)數(shù)值已經(jīng)達(dá)到閾值,此時(shí),空滿標(biāo)志產(chǎn)生邏輯輸出滿標(biāo)志,F(xiàn)IFO處于滿的狀態(tài)。在受到干擾時(shí),包計(jì)數(shù)值有可能變?yōu)?,包計(jì)數(shù)值變?yōu)?時(shí),空滿標(biāo)志產(chǎn)生邏輯輸出空標(biāo)志,F(xiàn)IFO處于空的狀態(tài)。這樣FIFO同時(shí)輸出了空標(biāo)志和滿標(biāo)志,外部既不能讀也不能寫(xiě)FIFO。
在這種情況下,空滿標(biāo)志產(chǎn)生邏輯輸出滿標(biāo)志的條件是接收到的字節(jié)計(jì)數(shù)值達(dá)到閾值,并且接收到的包計(jì)數(shù)值大于0。這樣,外部就可以讀FIFO了。
2)FIFO初始化為空,此時(shí)包計(jì)數(shù)值和字節(jié)計(jì)數(shù)值都為0,由于受到干擾,包計(jì)數(shù)值變?yōu)榉?,F(xiàn)IFO的狀態(tài)為非空。此時(shí)外部可以讀FIFO,但讀出的是無(wú)效數(shù)據(jù),由于FIFO中沒(méi)有包尾標(biāo)志符號(hào),包計(jì)數(shù)值一直不變,不能輸出空標(biāo)志,導(dǎo)致讀出端無(wú)法停下。
在這種情況下,如圖2所示,可以增加一包長(zhǎng)計(jì)數(shù)器,其根據(jù)來(lái)自外部電路的讀信號(hào)進(jìn)行計(jì)數(shù),當(dāng)其計(jì)數(shù)值達(dá)到設(shè)定的包長(zhǎng)時(shí),輸出偽包尾信號(hào)到包計(jì)數(shù)器,所述包長(zhǎng)計(jì)數(shù)器還接收外部電路的讀包尾信號(hào),接收到讀包尾信號(hào)時(shí)其計(jì)數(shù)值清0。包長(zhǎng)可以根據(jù)需要設(shè)定,只要比傳輸中的最長(zhǎng)包長(zhǎng)大即可。所述包計(jì)數(shù)器還根據(jù)偽包尾信號(hào)進(jìn)行計(jì)數(shù),接收到偽包尾信號(hào)時(shí),包計(jì)數(shù)值減1。這樣,如果一直沒(méi)有數(shù)據(jù)寫(xiě)入存儲(chǔ)器,包計(jì)數(shù)值就會(huì)逐漸減小到0,空滿標(biāo)志產(chǎn)生邏輯輸出空標(biāo)志,讀出端停止讀數(shù)據(jù)。
本發(fā)明先入先出存儲(chǔ)器輸出空滿標(biāo)志的方法包括以下步驟步驟A,根據(jù)來(lái)自外部電路的寫(xiě)信號(hào)和讀信號(hào)對(duì)存儲(chǔ)器中存儲(chǔ)的字節(jié)進(jìn)行計(jì)數(shù),得到字節(jié)計(jì)數(shù)值;根據(jù)來(lái)自外部電路的寫(xiě)包尾信號(hào)和讀包尾信號(hào)對(duì)存儲(chǔ)器中存儲(chǔ)的包進(jìn)行計(jì)數(shù),得到包計(jì)數(shù)值。
當(dāng)寫(xiě)入一個(gè)字節(jié)時(shí),字節(jié)計(jì)數(shù)值加1,當(dāng)讀出一個(gè)字節(jié)時(shí),字節(jié)計(jì)數(shù)值減1;當(dāng)外部電路輸入一個(gè)寫(xiě)包尾信號(hào)時(shí),包計(jì)數(shù)值加1,當(dāng)外部電路輸入一個(gè)讀包尾信號(hào)時(shí),包計(jì)數(shù)值減1。
步驟B,根據(jù)所述字節(jié)計(jì)數(shù)值和/或所述包計(jì)數(shù)值,判斷存儲(chǔ)器是否為空或滿,并輸出相應(yīng)的空標(biāo)志或滿標(biāo)志。
在步驟B中,若所述包計(jì)數(shù)值為0,確定存儲(chǔ)器為空,并輸出空標(biāo)志;若所述字節(jié)計(jì)數(shù)值達(dá)到設(shè)定的閾值,確定存儲(chǔ)器為滿,并輸出滿標(biāo)志。
進(jìn)一步,在步驟B中,若所述字節(jié)計(jì)數(shù)值達(dá)到設(shè)定的閾值,并且所述包計(jì)數(shù)值大于0,確定存儲(chǔ)器為滿,并輸出滿標(biāo)志。
進(jìn)一步,在步驟A中,還對(duì)讀出的數(shù)據(jù)長(zhǎng)度進(jìn)行計(jì)數(shù),如果數(shù)據(jù)長(zhǎng)度計(jì)數(shù)值達(dá)到設(shè)定的包長(zhǎng),則包計(jì)數(shù)值減1,并且當(dāng)外部電路輸入讀包尾信號(hào)時(shí),數(shù)據(jù)長(zhǎng)度計(jì)數(shù)值清0。
本發(fā)明的FIFO實(shí)現(xiàn)了字節(jié)級(jí)寫(xiě)入和包級(jí)讀出,字節(jié)級(jí)寫(xiě)入可以最大效率地利用FIFO中的存儲(chǔ)器資源,包級(jí)讀出可以最大效率地實(shí)現(xiàn)調(diào)度效率。因而,本發(fā)明的FIFO在有效利用存儲(chǔ)器存儲(chǔ)空間的同時(shí)提高了調(diào)度效率。本發(fā)明同時(shí)提出了字節(jié)級(jí)寫(xiě)入包級(jí)讀出FIFO缺陷的自恢復(fù)方法,提高了設(shè)計(jì)的可靠性和容錯(cuò)性。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的包含范圍之內(nèi)。
權(quán)利要求
1.一種先入先出存儲(chǔ)器,包括存儲(chǔ)器、寫(xiě)地址計(jì)數(shù)器、讀地址計(jì)數(shù)器、字節(jié)計(jì)數(shù)器和空滿標(biāo)志產(chǎn)生邏輯,其中,所述寫(xiě)地址計(jì)數(shù)器用于根據(jù)來(lái)自外部電路的寫(xiě)信號(hào)進(jìn)行計(jì)數(shù),并將得到的寫(xiě)地址計(jì)數(shù)值發(fā)送到存儲(chǔ)器和字節(jié)計(jì)數(shù)器;所述讀地址計(jì)數(shù)器用于根據(jù)來(lái)自外部電路的讀信號(hào)進(jìn)行計(jì)數(shù),并將得到的讀地址計(jì)數(shù)值發(fā)送到存儲(chǔ)器和字節(jié)計(jì)數(shù)器;所述存儲(chǔ)器用于數(shù)據(jù)的存儲(chǔ),并根據(jù)接收到的寫(xiě)地址計(jì)數(shù)值和讀地址計(jì)數(shù)值,調(diào)整寫(xiě)地址指針和讀地址指針;所述字節(jié)計(jì)數(shù)器用于根據(jù)接收到的寫(xiě)地址計(jì)數(shù)值和讀地址計(jì)數(shù)值對(duì)存儲(chǔ)器中存儲(chǔ)的字節(jié)進(jìn)行計(jì)數(shù),并將得到的字節(jié)計(jì)數(shù)值發(fā)送到空滿標(biāo)志產(chǎn)生邏輯;其特征在于還包括包計(jì)數(shù)器,所述包計(jì)數(shù)器用于對(duì)存儲(chǔ)器中存儲(chǔ)的包進(jìn)行計(jì)數(shù),并將得到的包計(jì)數(shù)值發(fā)送到空滿標(biāo)志產(chǎn)生邏輯;所述空滿標(biāo)志產(chǎn)生邏輯用于根據(jù)接收到的字節(jié)計(jì)數(shù)值和/或包計(jì)數(shù)值判斷存儲(chǔ)器是否為空或滿,并輸出相應(yīng)的空標(biāo)志或滿標(biāo)志。
2.如權(quán)利要求1所述的先入先出存儲(chǔ)器,其特征在于所述包計(jì)數(shù)器根據(jù)來(lái)自外部電路的寫(xiě)包尾信號(hào)和讀包尾信號(hào)進(jìn)行計(jì)數(shù),接收到寫(xiě)包尾信號(hào)時(shí),計(jì)數(shù)值加1,接收到讀包尾信號(hào)時(shí),計(jì)數(shù)值減1。
3.如權(quán)利要求1或2所述的先入先出存儲(chǔ)器,其特征在于所述空滿標(biāo)志產(chǎn)生邏輯在接收到的包計(jì)數(shù)值等于0時(shí),確定存儲(chǔ)器為空,并輸出空標(biāo)志。
4.如權(quán)利要求1或2所述的先入先出存儲(chǔ)器,其特征在于所述空滿標(biāo)志產(chǎn)生邏輯在接收到的字節(jié)計(jì)數(shù)值達(dá)到設(shè)定的閾值時(shí),確定存儲(chǔ)器為滿,并輸出滿標(biāo)志。
5.如權(quán)利要求1或2所述的先入先出存儲(chǔ)器,其特征在于所述空滿標(biāo)志產(chǎn)生邏輯在接收到的字節(jié)計(jì)數(shù)值達(dá)到閾值,并且接收到的包計(jì)數(shù)值大于0時(shí),確定存儲(chǔ)器為滿,并輸出滿標(biāo)志。
6.如權(quán)利要求1或2所述的先入先出存儲(chǔ)器,其特征在于還包括包長(zhǎng)計(jì)數(shù)器,其根據(jù)來(lái)自外部電路的讀信號(hào)進(jìn)行計(jì)數(shù),當(dāng)其計(jì)數(shù)值達(dá)到設(shè)定的包長(zhǎng)時(shí),輸出偽包尾信號(hào)到包計(jì)數(shù)器,以及接收外部電路的讀包尾信號(hào),接收到讀包尾信號(hào)時(shí)其計(jì)數(shù)值清0;所述包計(jì)數(shù)器還根據(jù)偽包尾信號(hào)進(jìn)行計(jì)數(shù),接收到偽包尾信號(hào)時(shí),包計(jì)數(shù)值減1。
7.一種先入先出存儲(chǔ)器輸出空滿標(biāo)志的方法,其特征在于,包括以下步驟步驟A,根據(jù)來(lái)自外部電路的寫(xiě)信號(hào)和讀信號(hào)對(duì)存儲(chǔ)器中存儲(chǔ)的字節(jié)進(jìn)行計(jì)數(shù),得到字節(jié)計(jì)數(shù)值,根據(jù)來(lái)自外部電路的寫(xiě)包尾信號(hào)和讀包尾信號(hào)對(duì)存儲(chǔ)器中存儲(chǔ)的包進(jìn)行計(jì)數(shù),得到包計(jì)數(shù)值;步驟B,根據(jù)所述字節(jié)計(jì)數(shù)值和/或所述包計(jì)數(shù)值,判斷存儲(chǔ)器是否為空或滿,并輸出相應(yīng)的空標(biāo)志或滿標(biāo)志。
8.如權(quán)利要求7所述的方法,其特征在于在步驟B中,若所述包計(jì)數(shù)值為0,確定存儲(chǔ)器為空,并輸出空標(biāo)志。
9.如權(quán)利要求7所述的方法,其特征在于在步驟B中,若所述字節(jié)計(jì)數(shù)值達(dá)到設(shè)定的閾值,確定存儲(chǔ)器為滿,并輸出滿標(biāo)志。
10.如權(quán)利要求7所述的方法,其特征在于在步驟B中,若所述字節(jié)計(jì)數(shù)值達(dá)到設(shè)定的閾值,并且所述包計(jì)數(shù)值大于0,確定存儲(chǔ)器為滿,并輸出滿標(biāo)志。
11.如權(quán)利要求7所述的方法,其特征在于在步驟A中,還對(duì)讀出的數(shù)據(jù)長(zhǎng)度進(jìn)行計(jì)數(shù),如果數(shù)據(jù)長(zhǎng)度計(jì)數(shù)值達(dá)到設(shè)定的包長(zhǎng),則包計(jì)數(shù)值減1,并且當(dāng)外部電路輸入讀包尾信號(hào)時(shí),數(shù)據(jù)長(zhǎng)度計(jì)數(shù)值清0。
全文摘要
本發(fā)明公開(kāi)了一種先入先出存儲(chǔ)器及其輸出空滿標(biāo)志的方法。該先入先出存儲(chǔ)器包括存儲(chǔ)器、寫(xiě)地址計(jì)數(shù)器、讀地址計(jì)數(shù)器、字節(jié)計(jì)數(shù)器和空滿標(biāo)志產(chǎn)生邏輯,其中,所述包計(jì)數(shù)器用于對(duì)存儲(chǔ)器中存儲(chǔ)的包進(jìn)行計(jì)數(shù),并將得到的包計(jì)數(shù)值發(fā)送到空滿標(biāo)志產(chǎn)生邏輯,所述空滿標(biāo)志產(chǎn)生邏輯用于根據(jù)接收到的字節(jié)計(jì)數(shù)值和/或包計(jì)數(shù)值判斷存儲(chǔ)器是否為空或滿,并輸出相應(yīng)的空標(biāo)志或滿標(biāo)志,所述空滿標(biāo)志產(chǎn)生邏輯在接收到的包計(jì)數(shù)值等于0時(shí),確定存儲(chǔ)器為空,并輸出空標(biāo)志,所述空滿標(biāo)志產(chǎn)生邏輯在接收到的字節(jié)計(jì)數(shù)值達(dá)到設(shè)定的閾值時(shí),確定存儲(chǔ)器為滿,并輸出滿標(biāo)志。本發(fā)明的先入先出存儲(chǔ)器在最大效率地利用存儲(chǔ)器資源的同時(shí),最大效率地實(shí)現(xiàn)了調(diào)度效率。
文檔編號(hào)H04L29/06GK1862482SQ20061007319
公開(kāi)日2006年11月15日 申請(qǐng)日期2006年4月12日 優(yōu)先權(quán)日2006年4月12日
發(fā)明者雷春 申請(qǐng)人:華為技術(shù)有限公司