專利名稱:高可靠性的先入先出存儲(chǔ)器及其實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及先入先出存儲(chǔ)器(FIFO),特別是指一種具有自動(dòng)糾正功能的高可靠性先入先出存儲(chǔ)器及其實(shí)現(xiàn)方法。
背景技術(shù):
先入先出存儲(chǔ)器的基本結(jié)構(gòu)參見圖1所示,包括存儲(chǔ)器101、讀地址計(jì)數(shù)器102、寫地址計(jì)數(shù)器103、數(shù)據(jù)單元計(jì)數(shù)器104和空滿標(biāo)志產(chǎn)生邏輯105。FIFO中存儲(chǔ)器101一般采用隨機(jī)存儲(chǔ)器(RAM),如雙端口存儲(chǔ)器(DPRAM)、單端口存儲(chǔ)器(SPRAM)等。讀地址計(jì)數(shù)器102、寫地址計(jì)數(shù)器103和數(shù)據(jù)單元計(jì)數(shù)器104分別通過(guò)接收從一組控制信號(hào)總線106發(fā)來(lái)的控制信號(hào)獨(dú)立進(jìn)行計(jì)數(shù),各計(jì)數(shù)器所接收的控制信號(hào)可以由信元級(jí)FIFO自身提供,也可以來(lái)自外部的控制裝置。寫地址計(jì)數(shù)器103和讀地址計(jì)數(shù)器102將更新后的計(jì)數(shù)值發(fā)送至存儲(chǔ)器101,存儲(chǔ)器101根據(jù)收到的計(jì)數(shù)值,調(diào)整自身中的讀地址和寫地址指針。另外,數(shù)據(jù)單元計(jì)數(shù)器104將其計(jì)數(shù)值發(fā)送至空滿標(biāo)志產(chǎn)生邏輯105,空滿標(biāo)志產(chǎn)生邏輯105通過(guò)判斷接收到的數(shù)據(jù)單元計(jì)數(shù)值,產(chǎn)生相應(yīng)的空標(biāo)志或滿標(biāo)志,來(lái)限制對(duì)存儲(chǔ)器101的讀寫操作。其中,這里所述的數(shù)據(jù)單元是指FIFO讀寫數(shù)據(jù)過(guò)程中的基本單位。
目前比較常用的FIFO有信元級(jí)FIFO和數(shù)據(jù)幀級(jí)FIFO等。信元級(jí)FIFO一般以異步傳輸模式(ATM)信元作為基本單位進(jìn)行數(shù)據(jù)讀寫,也即信元級(jí)FIFO中的數(shù)據(jù)單元是ATM信元。其中,ATM信元是一種固定長(zhǎng)度的數(shù)據(jù)幀,是ATM網(wǎng)絡(luò)中傳輸數(shù)據(jù)的基本單位,在ATM設(shè)備中,一般都是采用信元級(jí)FIFO存儲(chǔ)ATM信元。信元級(jí)FIFO的存儲(chǔ)器通常在邏輯上被劃分為若干個(gè)相同大小的存儲(chǔ)塊,每個(gè)存儲(chǔ)塊用于存放一個(gè)ATM信元。
信元級(jí)FIFO的讀地址和寫地址在邏輯上分別分成兩部分高位地址和低位地址。高位地址指向存儲(chǔ)器內(nèi)部的某個(gè)存儲(chǔ)塊,即高位地址的一個(gè)地址值對(duì)應(yīng)一個(gè)ATM信元,低位地址指向存儲(chǔ)塊中的一個(gè)具體存儲(chǔ)單元。在接收一個(gè)ATM信元過(guò)程中,高位寫地址保持不變,只有低位寫地址變化;在完成接收一個(gè)ATM信元后,高位寫地址改變,低位寫地址被置為一個(gè)固定的初值,以保證寫下個(gè)信元的起始地址相同;同樣,在發(fā)送一個(gè)ATM信元過(guò)程中,高位讀地址保持不變,只有低位讀地址變化;在完成發(fā)送一個(gè)ATM信元后,高位讀地址改變,低位讀地址被置為一個(gè)固定的初值,以保證讀下個(gè)信元的起始地址相同。因而,信元級(jí)FIFO的讀地址計(jì)數(shù)器通常包含有高位讀地址計(jì)數(shù)器和低位讀地址計(jì)數(shù)器兩部分,信元級(jí)FIFO的寫地址計(jì)數(shù)器也同樣包括有高位寫地址計(jì)數(shù)器和低位寫地址計(jì)數(shù)器兩部分。
在信元級(jí)FIFO中數(shù)據(jù)單元計(jì)數(shù)器的計(jì)數(shù)值是信元級(jí)的,因此又稱為信元計(jì)數(shù)器。每當(dāng)接收或發(fā)送一個(gè)信元時(shí),信元級(jí)FIFO中的信元計(jì)數(shù)器根據(jù)接收到的控制信號(hào)更新計(jì)數(shù)值,信元計(jì)數(shù)器的最大計(jì)數(shù)值對(duì)應(yīng)于該FIFO中存儲(chǔ)器能夠存儲(chǔ)的信元個(gè)數(shù)。
從信元級(jí)FIFO的控制總線發(fā)送來(lái)的控制信號(hào)一般包括讀開始信號(hào)、寫開始信號(hào)和用于控制低位地址計(jì)數(shù)器計(jì)數(shù)的讀寫使能信號(hào),或讀結(jié)束信號(hào)、寫結(jié)束信號(hào)和用于控制低位地址計(jì)數(shù)器計(jì)數(shù)的讀寫使能信號(hào)。這里的兩組控制信號(hào)可由FIFO設(shè)計(jì)人員任意進(jìn)行選擇,取決于設(shè)計(jì)時(shí)打算以讀寫操作的開始時(shí)刻作為計(jì)數(shù)起點(diǎn),還是以結(jié)束時(shí)刻作為計(jì)數(shù)起點(diǎn)。以讀寫操作的開始時(shí)刻作為計(jì)數(shù)起點(diǎn)為例信元級(jí)FIFO中的讀地址計(jì)數(shù)器只接收讀開始信號(hào)和讀使能信號(hào),根據(jù)讀開始信號(hào)更新高位讀地址計(jì)數(shù)器的計(jì)數(shù)值,根據(jù)讀使能信號(hào)更新低位讀地址計(jì)數(shù)器的計(jì)數(shù)值;寫地址計(jì)數(shù)器只接收寫開始信號(hào)和寫使能信號(hào),根據(jù)寫開始信號(hào)更新高位寫地址計(jì)數(shù)器的計(jì)數(shù)值,根據(jù)寫使能信號(hào)更新低位寫地址計(jì)數(shù)器的計(jì)數(shù)值;信元計(jì)數(shù)器受讀開始信號(hào)和寫開始信號(hào)控制,如果接收到一個(gè)讀開始信號(hào)則將信元計(jì)數(shù)值減1,如果接收到一個(gè)寫開始或?qū)懡Y(jié)束信號(hào)則將信元計(jì)數(shù)值加1。
信元級(jí)FIFO的空滿標(biāo)志產(chǎn)生邏輯通過(guò)信元計(jì)數(shù)器輸出的當(dāng)前信元計(jì)數(shù)值,判斷存儲(chǔ)器當(dāng)前的空滿狀態(tài),并生成相應(yīng)的空標(biāo)志或滿標(biāo)志,空或滿標(biāo)志可以對(duì)FIFO的讀或?qū)懡涌诋a(chǎn)生反壓,阻止外部向FIFO的存儲(chǔ)器讀取或?qū)懭霐?shù)據(jù)。一般信元級(jí)FIFO輸出的空標(biāo)志和滿標(biāo)志是信元級(jí)的。
與信元級(jí)FIFO類似的還有數(shù)據(jù)幀級(jí)FIFO,它們的共同特點(diǎn)都是存儲(chǔ)器劃分為若干個(gè)存儲(chǔ)塊,每個(gè)存儲(chǔ)塊只能存放一個(gè)數(shù)據(jù)單元,計(jì)數(shù)器的高位地址指向存儲(chǔ)器內(nèi)部的存儲(chǔ)塊,低位地址指向存儲(chǔ)塊中的一個(gè)具體存儲(chǔ)單元。不同點(diǎn)是數(shù)據(jù)幀級(jí)FIFO讀寫操作的基本單位為數(shù)據(jù)幀,其內(nèi)部存儲(chǔ)器的每個(gè)存儲(chǔ)塊中可存放一個(gè)數(shù)據(jù)幀,高位讀或?qū)懙刂返囊粋€(gè)地址值對(duì)應(yīng)一個(gè)數(shù)據(jù)幀,并采用數(shù)據(jù)幀計(jì)數(shù)器記錄數(shù)據(jù)幀級(jí)FIFO中存儲(chǔ)數(shù)據(jù)幀的個(gè)數(shù)。
由于現(xiàn)有技術(shù)FIFO中的讀地址計(jì)數(shù)器、寫地址計(jì)數(shù)器和數(shù)據(jù)單元計(jì)數(shù)器都是通過(guò)控制信號(hào)總線接收不同的控制信號(hào),獨(dú)立進(jìn)行計(jì)數(shù),各自的控制信號(hào)之間并沒有關(guān)聯(lián)。因此FIFO在實(shí)際使用過(guò)程會(huì)在可靠性上存在缺陷,即當(dāng)出現(xiàn)異常情況導(dǎo)致FIFO內(nèi)部的讀地址、寫地址或數(shù)據(jù)單元計(jì)數(shù)器的計(jì)數(shù)值出錯(cuò)時(shí),F(xiàn)IFO無(wú)法做到自動(dòng)糾錯(cuò),并恢復(fù)正常。
舉個(gè)例子來(lái)說(shuō)假設(shè)某個(gè)信元級(jí)FIFO最大可以存儲(chǔ)的信元數(shù)為4個(gè),在受到異常干擾前高位寫地址、高位讀地址和信元計(jì)數(shù)值都為0,在受到異常干擾后高位讀地址發(fā)生跳變?yōu)?,高位寫地址和信元計(jì)數(shù)值保持不變,假設(shè)干擾消失以后,按照先寫入2個(gè)信元后再讀出2個(gè)信元作為一次訪問(wèn)周期,對(duì)該信元級(jí)FIFO進(jìn)行5次這樣的讀寫訪問(wèn),信元在存儲(chǔ)器中的讀寫情況,參見表1所示
表 1從表1中可以看出,在讀寫訪問(wèn)過(guò)程中,寫入信元的順序?yàn)镃0、C1、C2、C3、C4、C5、C6、C7、C8、C9;而讀出信元的順序則成為C1、X、C3、C0、C5、C2、C7、C4、C9、C6,其中,Cn表示信元n的值,X表示存儲(chǔ)器中未初始化的信元??梢钥闯觯捎谝淮螖_動(dòng)引起的高位讀地址變化,導(dǎo)致輸出信元的順序發(fā)生了錯(cuò)誤。雖然干擾很快消失,且該信元級(jí)FIFO以后的工作都處于正常狀態(tài),但是,其自身的讀寫錯(cuò)誤卻得不到糾正,并且如果讀寫訪問(wèn)繼續(xù)進(jìn)行下去的話,從該信元級(jí)FIFO中讀出信元的順序?qū)⑷匀皇清e(cuò)的。同樣,如果發(fā)生異常跳變的是高位寫地址值或信元計(jì)數(shù)值,信元級(jí)FIFO也不能自動(dòng)對(duì)其進(jìn)行糾正,并且也會(huì)導(dǎo)致對(duì)該信元級(jí)FIFO的讀寫錯(cuò)誤,對(duì)于信元計(jì)數(shù)器計(jì)數(shù)值的錯(cuò)誤還可能會(huì)引起空滿標(biāo)志產(chǎn)生邏輯產(chǎn)生空滿標(biāo)志時(shí)發(fā)生錯(cuò)誤。
從上面的例子可以看出,現(xiàn)有技術(shù)FIFO中的計(jì)數(shù)器一旦出錯(cuò)則無(wú)法自動(dòng)進(jìn)行糾正或恢復(fù),導(dǎo)致FIFO的數(shù)據(jù)輸入輸出順序發(fā)生錯(cuò)誤,如果要想恢復(fù)則必須對(duì)FIFO中所有的計(jì)數(shù)器進(jìn)行復(fù)位,使所有計(jì)數(shù)器計(jì)數(shù)值復(fù)位成初始狀態(tài),這將給使用帶來(lái)了很大麻煩。特別是由于在FIFO的各計(jì)數(shù)器發(fā)生出錯(cuò)情況時(shí),很難被及時(shí)發(fā)現(xiàn),從而造成長(zhǎng)時(shí)間數(shù)據(jù)讀寫錯(cuò)誤的嚴(yán)重后果,使FIFO的可靠性難以得到保證。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種高可靠性的先入先出存儲(chǔ)器,能夠在工作中不需要重新復(fù)位,就可以使計(jì)數(shù)器的計(jì)數(shù)值錯(cuò)誤得到自動(dòng)糾正,保證FIFO的正常讀寫順序,提高FIFO的可靠性。
本發(fā)明的另一主要目的在于提供一種高可靠性的先入先出存儲(chǔ)器實(shí)現(xiàn)方法,使FIFO具有自動(dòng)糾錯(cuò)功能,即使在計(jì)數(shù)器計(jì)數(shù)值出現(xiàn)異常錯(cuò)誤后,也能夠在工作中自動(dòng)恢復(fù)正常,保證對(duì)FIFO的讀寫順序正確,繼續(xù)可靠的工作,從而提高FIFO的可靠性。
基于第一個(gè)目的本發(fā)明提供的一種高可靠性的先入先出存儲(chǔ)器,包括有存儲(chǔ)器、讀地址計(jì)數(shù)器、寫地址計(jì)數(shù)器、數(shù)據(jù)單元計(jì)數(shù)器和空滿標(biāo)志產(chǎn)生邏輯;并進(jìn)一步包括用于進(jìn)行算法邏輯計(jì)算的邏輯模塊;所述讀地址計(jì)數(shù)器、寫地址計(jì)數(shù)器和數(shù)據(jù)單元計(jì)數(shù)器中有兩個(gè)計(jì)數(shù)器為根據(jù)屬于自身的控制信號(hào)獨(dú)立計(jì)數(shù)的獨(dú)立計(jì)數(shù)器,剩余的一個(gè)計(jì)數(shù)器為受所述邏輯模塊控制進(jìn)行計(jì)數(shù)的受控計(jì)數(shù)器;所述兩個(gè)獨(dú)立計(jì)數(shù)器分別接收屬于自身的控制信號(hào),該兩個(gè)獨(dú)立計(jì)數(shù)器將輸出信號(hào)發(fā)送至邏輯模塊,所述邏輯模塊進(jìn)行計(jì)算后將輸出信號(hào)發(fā)送至所述受控計(jì)數(shù)器。
該先入先出存儲(chǔ)器所述邏輯模塊進(jìn)一步接收屬于讀地址計(jì)數(shù)器、寫地址計(jì)數(shù)器和數(shù)據(jù)單元計(jì)數(shù)器的控制信號(hào),將屬于兩個(gè)獨(dú)立計(jì)數(shù)器的控制信號(hào)直接分別透?jìng)髦羶蓚€(gè)獨(dú)立計(jì)數(shù)器,并阻止屬于第三個(gè)計(jì)數(shù)器獨(dú)立計(jì)數(shù)的控制信號(hào)進(jìn)入第三個(gè)計(jì)數(shù)器。
該先入先出存儲(chǔ)器所述獨(dú)立計(jì)數(shù)器為讀地址計(jì)數(shù)器和寫地址計(jì)數(shù)器,所述受控計(jì)數(shù)器為數(shù)據(jù)單元計(jì)數(shù)器;或所述獨(dú)立計(jì)數(shù)器為寫地址計(jì)數(shù)器和數(shù)據(jù)單元計(jì)數(shù)器,所述受控計(jì)數(shù)器為讀地址計(jì)數(shù)器;或獨(dú)立計(jì)數(shù)器為讀地址計(jì)數(shù)器和數(shù)據(jù)單元計(jì)數(shù)器,所述受控計(jì)數(shù)器為寫地址計(jì)數(shù)器。
該先入先出存儲(chǔ)器所述讀地址計(jì)數(shù)器包括高位讀地址計(jì)數(shù)器和低位讀地址計(jì)數(shù)器,所述寫地址計(jì)數(shù)器包括高位寫地址計(jì)數(shù)器和低位寫地址計(jì)數(shù)器;則所述獨(dú)立計(jì)數(shù)器為高位讀地址計(jì)數(shù)器和高位寫地址計(jì)數(shù)器,所述受控計(jì)數(shù)器為數(shù)據(jù)單元計(jì)數(shù)器;或所述獨(dú)立計(jì)數(shù)器為高位寫地址計(jì)數(shù)器和數(shù)據(jù)單元計(jì)數(shù)器,所述受控計(jì)數(shù)器為高位讀地址計(jì)數(shù)器;或所述獨(dú)立計(jì)數(shù)器為高位讀地址計(jì)數(shù)器和數(shù)據(jù)單元計(jì)數(shù)器,所述受控計(jì)數(shù)器為高位寫地址計(jì)數(shù)器。
該先入先出存儲(chǔ)器所述屬于高位讀地址計(jì)數(shù)器的控制信號(hào)為讀開始信號(hào)或讀結(jié)束信號(hào);所述屬于高位寫地址計(jì)數(shù)器的控制信號(hào)為寫開始信號(hào)或?qū)懡Y(jié)束信號(hào);所述屬于數(shù)據(jù)單元計(jì)數(shù)器的控制信號(hào)為讀開始信號(hào)和寫開始信號(hào),或者為讀結(jié)束信號(hào)和寫結(jié)束信號(hào)。
該先入先出存儲(chǔ)器所述先入先出存儲(chǔ)器為信元級(jí)先入先出存儲(chǔ)器,所述數(shù)據(jù)單元計(jì)數(shù)器為信元計(jì)數(shù)器;或者所述先入先出存儲(chǔ)器為數(shù)據(jù)幀級(jí)先入先出存儲(chǔ)器,所述數(shù)據(jù)單元計(jì)數(shù)器為數(shù)據(jù)幀計(jì)數(shù)器。
該先入先出存儲(chǔ)器,所述存儲(chǔ)器可存儲(chǔ)的數(shù)據(jù)單元數(shù)目比存儲(chǔ)器實(shí)際容量少至少一個(gè)。
該先入先出存儲(chǔ)器所述邏輯模塊為特定用途集成電路。
基于另一目的本發(fā)明提供了一種高可靠性的先入先出存儲(chǔ)器實(shí)現(xiàn)方法,將所述先入先出存儲(chǔ)器的讀地址計(jì)數(shù)器、寫地址計(jì)數(shù)器和數(shù)據(jù)單元計(jì)數(shù)器中的兩個(gè)設(shè)置為獨(dú)立計(jì)數(shù)的獨(dú)立計(jì)數(shù)器,剩余的一個(gè)計(jì)數(shù)器設(shè)置為受控計(jì)數(shù)器,并進(jìn)一步包括以下步驟a)所述兩個(gè)獨(dú)立計(jì)數(shù)器分別接收屬于自身的控制信號(hào),該兩個(gè)獨(dú)立計(jì)數(shù)器根據(jù)收到的控制信號(hào)更新自身的計(jì)數(shù)值;b)獲取該兩個(gè)獨(dú)立計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值,并通過(guò)所述受控計(jì)數(shù)器的計(jì)數(shù)值與該兩個(gè)獨(dú)立計(jì)數(shù)器計(jì)數(shù)值之間的邏輯關(guān)系,計(jì)算得到受控計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值,發(fā)送至受控計(jì)數(shù)器;c)所述受控計(jì)數(shù)器根據(jù)發(fā)送來(lái)的當(dāng)前計(jì)數(shù)值更新自身的計(jì)數(shù)值。
該方法所述兩個(gè)獨(dú)立計(jì)數(shù)器分別是寫地址計(jì)數(shù)器和讀地址計(jì)數(shù)器,所述受控計(jì)數(shù)器是數(shù)據(jù)單元計(jì)數(shù)器,所述受控計(jì)數(shù)器計(jì)數(shù)值與兩個(gè)獨(dú)立計(jì)數(shù)器計(jì)數(shù)值之間的邏輯關(guān)系為數(shù)據(jù)單元計(jì)數(shù)器計(jì)數(shù)值為寫地址計(jì)數(shù)器計(jì)數(shù)值與讀地址計(jì)數(shù)器計(jì)數(shù)值的差。
該方法步驟b)中所述計(jì)算得到受控計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值后,進(jìn)一步包括判斷當(dāng)前計(jì)算得到的作為受控計(jì)數(shù)器的數(shù)據(jù)單元計(jì)數(shù)器計(jì)數(shù)值是否為0,如果不是0,則繼續(xù)后面流程;如果是0,則進(jìn)一步判斷本次對(duì)所述先入先出存儲(chǔ)器進(jìn)行的是讀操作還是寫操作,如果是寫操作,則判定數(shù)據(jù)單元計(jì)數(shù)器當(dāng)前計(jì)數(shù)值為數(shù)據(jù)單元計(jì)數(shù)器的最大計(jì)數(shù)值,如果是讀操作,則判定數(shù)據(jù)單元當(dāng)前計(jì)數(shù)值為0。
該方法進(jìn)一步包括預(yù)先設(shè)置所述先入先出存儲(chǔ)器可存儲(chǔ)的數(shù)據(jù)單元數(shù)目比存儲(chǔ)器實(shí)際容量少至少一個(gè)。
該方法所述兩個(gè)獨(dú)立計(jì)數(shù)器分別是寫地址計(jì)數(shù)器和數(shù)據(jù)單元計(jì)數(shù)器,所述受控計(jì)數(shù)器是讀地址計(jì)數(shù)器,所述受控計(jì)數(shù)器計(jì)數(shù)值與兩個(gè)獨(dú)立計(jì)數(shù)器計(jì)數(shù)值之間的邏輯關(guān)系為讀地址計(jì)數(shù)器計(jì)數(shù)值為寫地址計(jì)數(shù)器計(jì)數(shù)值與數(shù)據(jù)單元計(jì)數(shù)器計(jì)數(shù)值的差。
該方法所述兩個(gè)獨(dú)立計(jì)數(shù)器分別是讀地址計(jì)數(shù)器和數(shù)據(jù)單元計(jì)數(shù)器,所述受控計(jì)數(shù)器是寫地址計(jì)數(shù)器,所述受控計(jì)數(shù)器計(jì)數(shù)值與兩個(gè)獨(dú)立計(jì)數(shù)器計(jì)數(shù)值之間的邏輯關(guān)系為寫地址計(jì)數(shù)器計(jì)數(shù)值為讀地址計(jì)數(shù)器計(jì)數(shù)值與數(shù)據(jù)單元計(jì)數(shù)器計(jì)數(shù)值的和。
該方法所述讀地址計(jì)數(shù)器包括高位讀地址計(jì)數(shù)器和低位讀地址計(jì)數(shù)器,所述寫地址計(jì)數(shù)器包括高位寫地址計(jì)數(shù)器和低位寫地址計(jì)數(shù)器;所述邏輯關(guān)系中的寫地址計(jì)數(shù)器計(jì)數(shù)值為高位寫地址值,所述讀地址計(jì)數(shù)器計(jì)數(shù)值為高位讀地址值。
該方法所述屬于高位讀地址計(jì)數(shù)器的控制信號(hào)為讀開始信號(hào)或讀結(jié)束信號(hào);所述屬于高位寫地址計(jì)數(shù)器的控制信號(hào)為寫開始信號(hào)或?qū)懡Y(jié)束信號(hào);所述屬于數(shù)據(jù)單元計(jì)數(shù)器的控制信號(hào)為讀開始信號(hào)和寫開始信號(hào),或者為讀結(jié)束信號(hào)和寫結(jié)束信號(hào)。
該方法所述先入先出存儲(chǔ)器為信元級(jí)先入先出存儲(chǔ)器,所述數(shù)據(jù)單元計(jì)數(shù)器為信元計(jì)數(shù)器;或者所述先入先出存儲(chǔ)器為數(shù)據(jù)幀級(jí)先入先出存儲(chǔ)器,所述數(shù)據(jù)單元計(jì)數(shù)器為數(shù)據(jù)幀計(jì)數(shù)器。
從上述方案可以看出,本發(fā)明公開的高可靠性的先入先出存儲(chǔ)器及其實(shí)現(xiàn)方法,在寫地址計(jì)數(shù)器、讀地址計(jì)數(shù)器和數(shù)據(jù)單元計(jì)數(shù)器之間建立聯(lián)系,利用三個(gè)計(jì)數(shù)器計(jì)數(shù)值之間的內(nèi)在邏輯關(guān)系,使FIFO的計(jì)數(shù)器計(jì)數(shù)值即使出錯(cuò),也能夠迅速自動(dòng)恢復(fù)正常,避免數(shù)據(jù)的寫入和讀出順序發(fā)生錯(cuò)誤,從而有效解決了現(xiàn)有技術(shù)FIFO的計(jì)數(shù)器計(jì)數(shù)值和讀寫順序發(fā)生錯(cuò)誤的情況下無(wú)法自動(dòng)恢復(fù)的問(wèn)題,大大提高了FIFO的可靠性和容錯(cuò)能力,并且本發(fā)明方案具有技術(shù)靈活、實(shí)現(xiàn)簡(jiǎn)單、應(yīng)用廣泛等特點(diǎn)和優(yōu)點(diǎn)。
圖1為現(xiàn)有技術(shù)FIFO的結(jié)構(gòu)示意圖;圖2為本發(fā)明第一個(gè)較佳實(shí)施例中FIFO的結(jié)構(gòu)示意圖;圖3為本發(fā)明第一個(gè)較佳實(shí)施例FIFO的工作流程示意圖;圖4為本發(fā)明第二個(gè)較佳實(shí)施例中FIFO的結(jié)構(gòu)示意圖;圖5為本發(fā)明第二個(gè)較佳實(shí)施例FIFO的工作流程示意圖;圖6為本發(fā)明第三個(gè)較佳實(shí)施例中FIFO的結(jié)構(gòu)示意圖;圖7為本發(fā)明第三個(gè)較佳實(shí)施例FIFO的工作流程示意圖。
具體實(shí)施例方式
下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明再作進(jìn)一步詳細(xì)的說(shuō)明。
現(xiàn)有技術(shù)方案中導(dǎo)致信元級(jí)或數(shù)據(jù)幀級(jí)FIFO的計(jì)數(shù)器無(wú)法進(jìn)行自動(dòng)糾錯(cuò)和自動(dòng)恢復(fù)的根本原因,在于FIFO的高位讀地址、高位寫地址和數(shù)據(jù)單元計(jì)數(shù)值都是根據(jù)FIFO的控制信號(hào)獨(dú)立進(jìn)行計(jì)數(shù)的,而沒有考慮到它們的計(jì)數(shù)值之間存在的邏輯關(guān)系,這樣一旦由于異常情況導(dǎo)致某個(gè)計(jì)數(shù)器的計(jì)數(shù)值出錯(cuò),則無(wú)法自動(dòng)恢復(fù)正常。實(shí)際上這三個(gè)計(jì)數(shù)器的計(jì)數(shù)值之間是密切相關(guān)的,知道其中任何兩個(gè)計(jì)數(shù)器的計(jì)數(shù)值,通過(guò)邏輯計(jì)算就可以得到第三個(gè)計(jì)數(shù)器的值。
通常在正常情況下,信元級(jí)或數(shù)據(jù)幀級(jí)FIFO的三個(gè)計(jì)數(shù)器之間應(yīng)該符合以下公式(1)、公式(2)和公式(3)的關(guān)系公式(1)數(shù)據(jù)單元計(jì)數(shù)值=高位寫地址值-高位讀地址值;公式(2)高位讀地址值=高位寫地址值-數(shù)據(jù)單元計(jì)數(shù)值;公式(3)高位寫地址值=高位讀地址值+數(shù)據(jù)單元計(jì)數(shù)值。
因此,本發(fā)明的技術(shù)方案是在FIFO的數(shù)據(jù)單元計(jì)數(shù)器、寫地址計(jì)數(shù)器和讀地址計(jì)數(shù)器之間建立聯(lián)系,使高位讀地址計(jì)數(shù)器、高位寫地址計(jì)數(shù)器和數(shù)據(jù)單元計(jì)數(shù)器之中只有兩個(gè)計(jì)數(shù)器是根據(jù)FIFO控制信號(hào)總線發(fā)送來(lái)的控制信號(hào)獨(dú)立計(jì)數(shù),而剩下的一個(gè)計(jì)數(shù)器的計(jì)數(shù)值則按照上面公式(1)、公式(2)或公式(3),通過(guò)算法邏輯計(jì)算得到。這樣在FIFO中計(jì)數(shù)器計(jì)數(shù)值出錯(cuò)的情況下,由于FIFO中各計(jì)數(shù)器之間的邏輯聯(lián)系,將使FIFO輸出信元順序和輸入信元順序可以很快自動(dòng)恢復(fù)正常,從而避免現(xiàn)有技術(shù)中輸出和輸入信元順序出錯(cuò)后,仍會(huì)長(zhǎng)時(shí)間保持錯(cuò)誤狀態(tài)而無(wú)法自動(dòng)恢復(fù)的問(wèn)題。
下面以信元級(jí)FIFO為例,對(duì)本發(fā)明高可靠性的先入先出存儲(chǔ)器的結(jié)構(gòu)和實(shí)現(xiàn)方法進(jìn)行詳細(xì)說(shuō)明。
根據(jù)公式(1)的邏輯關(guān)系設(shè)計(jì)的信元級(jí)FIFO的結(jié)構(gòu),參見圖2所示,包括存儲(chǔ)器101、讀地址計(jì)數(shù)器102、寫地址計(jì)數(shù)器103、信元計(jì)數(shù)器104和空滿標(biāo)志產(chǎn)生邏輯105,其中,讀地址計(jì)數(shù)器102和寫地址計(jì)數(shù)器103中包含有高位讀地址計(jì)數(shù)器102a、低位讀地址計(jì)數(shù)器102b兩部分,以及高位寫地址計(jì)數(shù)器103a和低位寫地址計(jì)數(shù)器103b兩部分,低位的讀和寫計(jì)數(shù)器分別根據(jù)讀寫使能信號(hào)獨(dú)立計(jì)數(shù)。與現(xiàn)有技術(shù)不同的是該FIFO進(jìn)一步包含一個(gè)具有數(shù)據(jù)處理功能的邏輯模塊201,該邏輯模塊201主要用于根據(jù)上述三個(gè)計(jì)數(shù)器計(jì)數(shù)值之間的邏輯關(guān)系進(jìn)行算法邏輯計(jì)算,所述邏輯模塊201可以是特定用途集成電路(Asic)。該信元級(jí)FIFO中的讀地址計(jì)數(shù)器102、寫地址計(jì)數(shù)器103和信元計(jì)數(shù)器104都與邏輯模塊201連接,并通過(guò)邏輯模塊201與控制信號(hào)總線106連接。
該FIFO的高位寫地址計(jì)數(shù)器103a和高位讀地址計(jì)數(shù)器102a為根據(jù)屬于自身的控制信號(hào)獨(dú)立進(jìn)行計(jì)數(shù)的獨(dú)立計(jì)數(shù)器,信元計(jì)數(shù)器104則作為受控計(jì)數(shù)器。讀開始或讀結(jié)束信號(hào)、寫開始或?qū)懡Y(jié)束信號(hào)、以及用于控制低位地址計(jì)數(shù)器計(jì)數(shù)的讀寫使能信號(hào),通過(guò)控制信號(hào)總線106進(jìn)入邏輯模塊201。邏輯模塊201將讀寫使能信號(hào)分別直接透?jìng)髦恋臀蛔x地址計(jì)數(shù)器102b和低位寫地址計(jì)數(shù)器103b;將用于高位寫地址計(jì)數(shù)器103a計(jì)數(shù)的寫開始或?qū)懡Y(jié)束信號(hào)透?jìng)髦粮呶粚懙刂酚?jì)數(shù)器103a;將用于高位讀地址計(jì)數(shù)器102a計(jì)數(shù)的讀開始或讀結(jié)束信號(hào)透?jìng)髦粮呶蛔x地址計(jì)數(shù)器102a;而阻止用于信元控制器104計(jì)數(shù)的寫開始或?qū)懡Y(jié)束、讀開始或讀結(jié)束信號(hào)傳輸至信元計(jì)數(shù)器104。高位寫地址計(jì)數(shù)器103a和高位讀地址計(jì)數(shù)器102a分別將輸出信號(hào)發(fā)送至邏輯模塊201,邏輯模塊201通過(guò)公式(1)計(jì)算得到信元計(jì)數(shù)值,發(fā)送至信元計(jì)數(shù)器104。
由于信元計(jì)數(shù)器的計(jì)數(shù)值完全受到邏輯模塊的控制,因此,本實(shí)施例FIFO中信元計(jì)數(shù)器的功能可以簡(jiǎn)化,只需具有暫時(shí)的數(shù)據(jù)記錄功能即可,所以信元計(jì)數(shù)器可以采用其它具有簡(jiǎn)單數(shù)據(jù)記錄功能的器件代替,甚至這一部分信元計(jì)數(shù)器的功能可以完全放在邏輯模塊中完成,這樣相當(dāng)于將信元計(jì)數(shù)器內(nèi)嵌在邏輯模塊中。
該信元級(jí)FIFO的工作過(guò)程參見圖3所示步驟301,邏輯模塊將從控制信號(hào)總線接收到的讀地址計(jì)數(shù)器和寫地址計(jì)數(shù)器的控制信號(hào)不作處理直接透?jìng)髦料鄳?yīng)的計(jì)數(shù)器,而阻斷向信元計(jì)數(shù)器發(fā)送的控制信號(hào)。
步驟302,讀地址計(jì)數(shù)器和寫地址計(jì)數(shù)器根據(jù)各自接收的控制信號(hào)更新自己的計(jì)數(shù)值,并分別將更新后的高位讀地址值和高位寫地址值發(fā)送至邏輯模塊。
步驟303,邏輯模塊根據(jù)接收到的高位寫地址值和高位讀地址值,通過(guò)公式(1)的邏輯關(guān)系計(jì)算信元計(jì)數(shù)值。
步驟304,判斷步驟303計(jì)算得到的信元計(jì)數(shù)值是否為0,如果是,則進(jìn)入步驟305,否則,進(jìn)入步驟306。
步驟305,判斷本次對(duì)該信元級(jí)FIFO所進(jìn)行的操作是讀操作還是寫操作,如果是讀操作,則判定信元計(jì)數(shù)值是0,進(jìn)入步驟306;如果是寫操作,則判定信元計(jì)數(shù)值是信元計(jì)數(shù)器的最大計(jì)數(shù)值,進(jìn)入步驟306。
步驟306,將得到的信元計(jì)數(shù)值發(fā)送至信元計(jì)數(shù)器。
步驟307,信元計(jì)數(shù)器根據(jù)邏輯模塊發(fā)來(lái)的信元計(jì)數(shù)值更新自身的計(jì)數(shù)值。
然后,該信元級(jí)FIFO的空滿標(biāo)志產(chǎn)生邏輯可以根據(jù)對(duì)信元計(jì)數(shù)器的計(jì)數(shù)值判斷產(chǎn)生空滿標(biāo)志。
通過(guò)上述方案可以實(shí)現(xiàn)信元級(jí)FIFO的自動(dòng)糾錯(cuò)和自動(dòng)恢復(fù)。舉個(gè)例子說(shuō)明,假設(shè)一個(gè)信元級(jí)FIFO的存儲(chǔ)器最大可存儲(chǔ)4個(gè)信元。
在該信元級(jí)FIFO工作時(shí),假設(shè)受到干擾前高位寫地址和高位讀地址都為0,在受到干擾后高位讀地址跳變?yōu)?,則信元級(jí)FIFO的信元計(jì)數(shù)器的計(jì)數(shù)值按照公式(1)信元計(jì)數(shù)值=高位寫地址-高位讀地址=00-01=11,得到信元計(jì)數(shù)值為3。
這樣,如果異常跳變發(fā)生后接下來(lái)執(zhí)行由外部向信元級(jí)FIFO寫入信元的寫入操作,則當(dāng)寫入一個(gè)信元后,按照公式(1)信元計(jì)數(shù)值=高位寫地址-高位讀地址=00-00=00。由于這時(shí)高位寫地址與高位讀地址相同,存儲(chǔ)器有可能是讀空也可能是寫滿,因此這種情況下根據(jù)步驟301-307的流程,應(yīng)進(jìn)一步判斷本次對(duì)信元級(jí)FIFO進(jìn)行的操作是讀操作還是寫操作,如果判斷結(jié)果是寫操作,則應(yīng)是信元計(jì)數(shù)器的最大計(jì)數(shù)值,即信元計(jì)數(shù)器的計(jì)數(shù)進(jìn)一位成為100,即計(jì)數(shù)值為4。之后,空滿標(biāo)志產(chǎn)生邏輯通過(guò)判斷信元計(jì)數(shù)值為4與存儲(chǔ)器的最大存儲(chǔ)量相等,認(rèn)為該存儲(chǔ)器已滿,產(chǎn)生滿標(biāo)志,對(duì)寫入接口產(chǎn)生反壓,阻止外部數(shù)據(jù)繼續(xù)寫入FIFO。這樣在下一次只能對(duì)該信元級(jí)FIFO執(zhí)行讀操作。
以發(fā)生異常跳變后,按照先寫入2個(gè)信元后再讀出2個(gè)信元作為一次訪問(wèn)周期為例,對(duì)該FIFO進(jìn)行5次這樣的讀寫訪問(wèn)后的結(jié)果參見表2所示
表 2表2中,Cn表示信元n的值,X表示存儲(chǔ)器中未初始化的信元。從中可以看出,寫入信元的順序?yàn)镃0、C1、C2、C3、C4、C5、C6、C7、C8……;讀出信元的順序?yàn)镃0、C1、C2、C3、C4、C5、C6……。可見,讀出信元的順序和寫入信元的順序相比沒有發(fā)生改變,F(xiàn)IFO各計(jì)數(shù)器的計(jì)數(shù)值和FIFO的輸入輸出信元順序均恢復(fù)正常。
如果發(fā)生跳變后對(duì)該信元級(jí)FIFO執(zhí)行信元的讀取操作,則由于信元計(jì)數(shù)值為3,因此最多會(huì)讀出三個(gè)存儲(chǔ)塊的信元,如果讀取三個(gè)信元1、2、3,這樣高位讀地址會(huì)指到0,恢復(fù)到與高位寫地址相同,很容易可以看出接下來(lái)對(duì)該FIFO的讀寫順序也將恢復(fù)正常。
如果仍然按照讀出2個(gè)信元后再寫入2個(gè)信元的周期順序,則此時(shí)對(duì)該FIFO進(jìn)行5次這樣的讀寫訪問(wèn)后的結(jié)果參見表3所示
表 3表3中,Cn表示信元n的值,X表示存儲(chǔ)器中未初始化的信元。從中可以看出,寫入信元的順序?yàn)镃0、C1、C2、C3、C4、C5、C6、C7……;讀出信元的順序?yàn)镃0、C1、C2、C3、C4、C5、C6……??梢?,讀出信元的順序和寫入信元的順序相比也沒有發(fā)生改變。
另外,對(duì)于采用公式(1)設(shè)計(jì)的FIFO,為了省去步驟304和305對(duì)信元計(jì)數(shù)器的計(jì)數(shù)值為0時(shí)的處理過(guò)程,也可預(yù)先設(shè)定FIFO中存儲(chǔ)器的最大可用信元數(shù)比存儲(chǔ)器的實(shí)際容量少一個(gè)或多個(gè),對(duì)于信元級(jí)FIFO來(lái)說(shuō)即是使存儲(chǔ)塊的可用數(shù)目比實(shí)際存儲(chǔ)塊數(shù)目少一塊或多塊,比如假設(shè)所少的塊數(shù)為n,信元級(jí)FIFO中實(shí)際存儲(chǔ)塊個(gè)數(shù)為m,則1≤n<m,其中n和m都為整數(shù)。這樣,當(dāng)信元計(jì)數(shù)值大于等于m-n時(shí),即認(rèn)為存儲(chǔ)器已滿,空滿標(biāo)志產(chǎn)生邏輯產(chǎn)生滿標(biāo)志,禁止外部數(shù)據(jù)寫入。例如m=4,n=1,這樣當(dāng)信元級(jí)FIFO的信元計(jì)數(shù)器計(jì)數(shù)值根據(jù)公式(1)計(jì)算為3時(shí),空滿標(biāo)志產(chǎn)生邏輯認(rèn)為存儲(chǔ)器已滿,產(chǎn)生滿標(biāo)志;當(dāng)信元計(jì)數(shù)器計(jì)數(shù)值為0時(shí),空滿標(biāo)志產(chǎn)生邏輯產(chǎn)生空標(biāo)志,因此避免了信元計(jì)數(shù)值為0時(shí),產(chǎn)生的歧義,無(wú)需進(jìn)行步驟304和305所述的對(duì)信元計(jì)數(shù)器實(shí)際信元計(jì)數(shù)值的判定過(guò)程。本發(fā)明較佳的實(shí)施方案通常是取n=1。
對(duì)于采用公式(2)的邏輯關(guān)系設(shè)計(jì)的信元級(jí)FIFO,其結(jié)構(gòu)參見圖4所示,與采用公式(1)的信元級(jí)FIFO相同的是包括存儲(chǔ)器101、讀地址計(jì)數(shù)器102、寫地址計(jì)數(shù)器103、信元計(jì)數(shù)器104、空滿標(biāo)志產(chǎn)生邏輯105,以及一個(gè)具有數(shù)據(jù)處理功能的邏輯模塊201;該信元級(jí)FIFO中的讀地址計(jì)數(shù)器102、寫地址計(jì)數(shù)器103和信元計(jì)數(shù)器104都與邏輯模塊201連接,并通過(guò)邏輯模塊201與控制信號(hào)總線106連接。
不同的只是該信元級(jí)FIFO的高位寫地址計(jì)數(shù)器103a和信元計(jì)數(shù)器104作為獨(dú)立計(jì)數(shù)器獨(dú)立進(jìn)行計(jì)數(shù),而其讀地址計(jì)數(shù)器102中的高位讀地址計(jì)數(shù)器102a則作為受控計(jì)數(shù)器,其產(chǎn)生的高位讀地址計(jì)數(shù)值受邏輯模塊201控制。
邏輯模塊201將讀寫使能信號(hào)分別直接透?jìng)髦恋臀蛔x地址計(jì)數(shù)器102b和低位寫地址計(jì)數(shù)器103b;將用于高位寫地址計(jì)數(shù)器103a計(jì)數(shù)的寫開始或?qū)懡Y(jié)束信號(hào)透?jìng)髦粮呶粚懙刂酚?jì)數(shù)器103a;將用于信元控制器104計(jì)數(shù)的寫開始或?qū)懡Y(jié)束、讀開始或讀結(jié)束信號(hào)透?jìng)髦列旁?jì)數(shù)器104;而阻止用于高位讀地址計(jì)數(shù)器102a計(jì)數(shù)的讀開始或讀結(jié)束信號(hào)傳輸至高位讀地址計(jì)數(shù)器102a。高位寫地址計(jì)數(shù)器103a和信元計(jì)數(shù)器104分別將輸出信號(hào)發(fā)送至邏輯模塊201,邏輯模塊201通過(guò)公式(2)計(jì)算得到高位讀地址值,發(fā)送至高位讀地址計(jì)數(shù)器102a。
該信元級(jí)FIFO的工作過(guò)程參見圖5所示步驟501,邏輯模塊將從控制信號(hào)總線接收到的寫地址計(jì)數(shù)器和信元計(jì)數(shù)器的控制信號(hào)不作處理直接透?jìng)髦料鄳?yīng)的計(jì)數(shù)器,而阻斷高位讀地址計(jì)數(shù)器的控制信號(hào)。
步驟502,寫地址計(jì)數(shù)器和信元計(jì)數(shù)器根據(jù)各自接收的控制信號(hào)更新自己的計(jì)數(shù)值,并分別將更新后的高位寫地址值和信元計(jì)數(shù)值發(fā)送至邏輯模塊。
步驟503,邏輯模塊根據(jù)接收到的高位寫地址值和信元計(jì)數(shù)值,通過(guò)公式(2)的邏輯關(guān)系計(jì)算得到高位讀地址計(jì)數(shù)值。
步驟504,邏輯模塊將得到的高位讀地址計(jì)數(shù)值發(fā)送至讀地址計(jì)數(shù)器;步驟505,讀地址計(jì)數(shù)器根據(jù)邏輯模塊發(fā)來(lái)的高位寫地址計(jì)數(shù)值更新自身的高位讀地址計(jì)數(shù)器計(jì)數(shù)值。
然后,該信元級(jí)FIFO的空滿標(biāo)志產(chǎn)生邏輯同樣根據(jù)對(duì)信元計(jì)數(shù)器的計(jì)數(shù)值判斷產(chǎn)生空滿標(biāo)志。
從上述可以看出本實(shí)施例信元級(jí)FIFO讀地址計(jì)數(shù)器的高位讀地址計(jì)數(shù)值受邏輯模塊控制,因此也可以對(duì)讀地址計(jì)數(shù)器的功能進(jìn)行簡(jiǎn)化,使高位讀地址計(jì)數(shù)器部分只需具有數(shù)據(jù)記錄功能即可。
舉個(gè)例子說(shuō)明,假設(shè)一個(gè)信元級(jí)FIFO的存儲(chǔ)器最大可存儲(chǔ)4個(gè)信元。
在該FIFO工作時(shí),假設(shè)干擾前高位寫地址為0,信元計(jì)數(shù)值為3,則根據(jù)公式(2)高位讀地址=高位寫地址-信元計(jì)數(shù)值=00-11=01,即高位讀地址為1。假設(shè)此時(shí)信元計(jì)數(shù)值異常跳變?yōu)?,則按照公式(2)高位讀地址=高位寫地址-信元計(jì)數(shù)值=00-01=11,即高位讀地址也隨之改變?yōu)?。
如果下一步是讀操作,則根據(jù)信元計(jì)數(shù)值1,最多只能從存儲(chǔ)器中讀取一個(gè)存儲(chǔ)塊的信元,即讀存儲(chǔ)塊3中的信元,此時(shí)信元計(jì)數(shù)值為0,空滿標(biāo)志產(chǎn)生邏輯產(chǎn)生空標(biāo)志,這樣高位讀地址指向0,高位讀地址與高位寫地址相同。
以按照先讀出2個(gè)信元后再寫入2個(gè)信元的周期順序,則對(duì)該FIFO進(jìn)行5次這樣的讀寫訪問(wèn)后的結(jié)果參見表4所示
表 4
如果下一步是寫操作,按照寫入2個(gè)信元后再讀出2個(gè)信元的周期順序,則對(duì)該FIFO進(jìn)行5次這樣的讀寫訪問(wèn)后的結(jié)果參見表5所示
表 5表4和表5中,Cn表示信元n的值,X表示存儲(chǔ)器中未初始化的信元。從表4和表5中可以看出,不論下一步是讀操作還是寫操作,讀出信元的順序和寫入信元的順序都將很快恢復(fù)正常。
對(duì)于采用公式(3)的邏輯關(guān)系設(shè)計(jì)的信元級(jí)FIFO,其結(jié)構(gòu)參見圖4所示,與采用公式(1)和公式(2)的信元級(jí)FIFO相同的是包括存儲(chǔ)器101、讀地址計(jì)數(shù)器102、寫地址計(jì)數(shù)器103、信元計(jì)數(shù)器104、空滿標(biāo)志產(chǎn)生邏輯105,以及一個(gè)具有數(shù)據(jù)處理功能的邏輯模塊201;該信元級(jí)FIFO中的讀地址計(jì)數(shù)器102、寫地址計(jì)數(shù)器103和信元計(jì)數(shù)器104都與邏輯模塊201連接,并通過(guò)邏輯模塊201與控制信號(hào)總線106連接。
所不同的只是該信元級(jí)FIFO的高位讀地址計(jì)數(shù)器102a和信元計(jì)數(shù)器104作為獨(dú)立計(jì)數(shù)器獨(dú)立進(jìn)行計(jì)數(shù),其寫地址計(jì)數(shù)器103中的高位寫地址計(jì)數(shù)器103a則作為受控計(jì)數(shù)器,其產(chǎn)生的高位寫地址值受邏輯模塊201控制。
邏輯模塊201將讀寫使能信號(hào)分別直接透?jìng)髦恋臀蛔x地址計(jì)數(shù)器102b和低位寫地址計(jì)數(shù)器103b;將用于高位讀地址計(jì)數(shù)器102a計(jì)數(shù)的讀開始或讀結(jié)束信號(hào)透?jìng)髦粮呶蛔x地址計(jì)數(shù)器102a;將用于信元控制器104計(jì)數(shù)的寫開始或?qū)懡Y(jié)束、讀開始或讀結(jié)束信號(hào)透?jìng)髦列旁?jì)數(shù)器104;而阻止用于高位寫地址計(jì)數(shù)器103a計(jì)數(shù)的寫開始或?qū)懡Y(jié)束信號(hào)傳輸至高位寫地址計(jì)數(shù)器103a。高位讀地址計(jì)數(shù)器102a和信元計(jì)數(shù)器104分別將輸出信號(hào)發(fā)送至邏輯模塊201,邏輯模塊201通過(guò)公式(3)計(jì)算得到高位寫地址值,發(fā)送至高位寫地址計(jì)數(shù)器103a。
該信元級(jí)FIFO的工作過(guò)程參見圖7所示步驟701,邏輯模塊將從控制信號(hào)總線接收到的讀地址計(jì)數(shù)器和信元計(jì)數(shù)器的控制信號(hào)不作處理直接透?jìng)髦料鄳?yīng)的計(jì)數(shù)器,而阻斷高位寫地址計(jì)數(shù)器的控制信號(hào)。
步驟702,讀地址計(jì)數(shù)器和信元計(jì)數(shù)器根據(jù)各自接收的控制信號(hào)更新自己的計(jì)數(shù)值,并分別將更新后的高位讀地址值和信元計(jì)數(shù)值發(fā)送至邏輯模塊。
步驟703,邏輯模塊根據(jù)接收到的高位讀地址值和信元計(jì)數(shù)值,通過(guò)公式(3)的邏輯關(guān)系計(jì)算得到高位寫地址計(jì)數(shù)值。
步驟704,邏輯模塊將得到的高位寫地址計(jì)數(shù)值發(fā)送至寫地址計(jì)數(shù)器。
步驟705,寫地址計(jì)數(shù)器根據(jù)邏輯模塊發(fā)來(lái)的高位寫地址計(jì)數(shù)值更新自身的高位寫地址計(jì)數(shù)器的計(jì)數(shù)值。
然后,該信元級(jí)FIFO的空滿標(biāo)志產(chǎn)生邏輯同樣根據(jù)對(duì)信元計(jì)數(shù)器的計(jì)數(shù)值判斷產(chǎn)生空滿標(biāo)志。
從上述可以看出本實(shí)施例信元級(jí)FIFO寫地址計(jì)數(shù)器的高位寫地址計(jì)數(shù)值受邏輯模塊控制,因此也可以對(duì)寫地址計(jì)數(shù)器的功能進(jìn)行簡(jiǎn)化,使高位寫地址計(jì)數(shù)器部分只需具有數(shù)據(jù)記錄功能即可。
該信元級(jí)FIFO的空滿標(biāo)志產(chǎn)生邏輯根據(jù)對(duì)信元計(jì)數(shù)器的計(jì)數(shù)值判斷產(chǎn)生空滿標(biāo)志。采用公式(3)設(shè)計(jì)的信元級(jí)FIFO的工作過(guò)程與采用公式(1)、(2)類似,在由于異常導(dǎo)致FIFO中計(jì)數(shù)值出錯(cuò)的情況下,采用公式(3)設(shè)計(jì)的信元級(jí)FIFO也能夠自動(dòng)恢復(fù)正常。
并且從上面可以看出,對(duì)于采用公式(2)和公式(3)設(shè)計(jì)的FIFO,由于其中的信元計(jì)數(shù)器獨(dú)立計(jì)數(shù),因此,不會(huì)涉及到當(dāng)信元計(jì)數(shù)器為0時(shí),判斷前一操作是讀還是寫操作的問(wèn)題,從而可以使設(shè)計(jì)更為容易。另外,如果需要也可以設(shè)置采用公式(2)和公式(3)設(shè)計(jì)的信元級(jí)FIFO中存儲(chǔ)塊的可用數(shù)目比實(shí)際少一塊或多塊,不會(huì)影響本發(fā)明效果。
如果信元級(jí)FIFO的存儲(chǔ)器最大可存儲(chǔ)8個(gè)信元。則寫地址和讀地址計(jì)數(shù)器的高位寫或讀地址可采用三位2進(jìn)制進(jìn)行計(jì)數(shù)。以采用公式(3)的情況為例假設(shè)高位讀地址為3,信元計(jì)數(shù)值為5,則根據(jù)公式(3)高位寫地址=高位讀地址+信元計(jì)數(shù)值=011+101=000,即此時(shí)寫地址計(jì)數(shù)器的高位寫地址計(jì)數(shù)為0。
當(dāng)FIFO存儲(chǔ)器中存儲(chǔ)塊個(gè)數(shù)不是2n個(gè)時(shí),也可以對(duì)計(jì)數(shù)器的計(jì)數(shù)值進(jìn)行換算,以使其滿足公式(1)、(2)或(3)的形式,然后再根據(jù)其中的任一個(gè)公式設(shè)計(jì)得到高可靠性FIFO。
本發(fā)明方案提供的FIFO設(shè)計(jì)方案改變了現(xiàn)有信元級(jí)FIFO設(shè)計(jì)中的高位讀地址、高位寫地址和信元計(jì)數(shù)值都是獨(dú)立計(jì)數(shù)的固有形式,使在FIFO中只有兩個(gè)計(jì)數(shù)器是根據(jù)FIFO的控制信號(hào)獨(dú)立計(jì)數(shù)的,而另一個(gè)計(jì)數(shù)值則按照上面公式(1)、公式(2)或公式(3),通過(guò)算法邏輯計(jì)算得到,這樣,在由于異常導(dǎo)致FIFO中計(jì)數(shù)值出錯(cuò)的情況下,F(xiàn)IFO很快就能自動(dòng)恢復(fù)正常,不會(huì)像現(xiàn)有的FIFO那樣出現(xiàn)輸出信元順序和輸入信元順序不同而無(wú)法恢復(fù)的問(wèn)題。
本發(fā)明上面所述所有方案也可以同樣適用于數(shù)據(jù)幀級(jí)FIFO等在讀地址計(jì)數(shù)器、寫地址計(jì)數(shù)器和信元計(jì)數(shù)器的計(jì)數(shù)值之間有邏輯關(guān)系的先入先出存儲(chǔ)器。另外,對(duì)于以字節(jié)為基本單位進(jìn)行讀寫操作的FIFO,其數(shù)據(jù)單元計(jì)數(shù)器的每個(gè)計(jì)數(shù)值代表一個(gè)字節(jié),在該類FIFO的讀地址計(jì)數(shù)器和寫地址計(jì)數(shù)器不作高位地址和低位地址的區(qū)分,每個(gè)地址位只代表一個(gè)字節(jié),讀地址計(jì)數(shù)器和寫地址計(jì)數(shù)器的輸出也只有讀地址值和寫地址值兩種。本發(fā)明方案可同樣適用于這類FIFO,只是相應(yīng)的上述公式(1)、(2)和(3)應(yīng)修改為公式(1’)數(shù)據(jù)單元計(jì)數(shù)器計(jì)數(shù)值=寫地址計(jì)數(shù)器計(jì)數(shù)值-讀地址計(jì)數(shù)器計(jì)數(shù)值;公式(2’)讀地址計(jì)數(shù)器計(jì)數(shù)值=寫地址計(jì)數(shù)器計(jì)數(shù)值-數(shù)據(jù)單元計(jì)數(shù)器計(jì)數(shù)值;公式(3’)寫地址計(jì)數(shù)器計(jì)數(shù)值=讀地址計(jì)數(shù)器計(jì)數(shù)值+數(shù)據(jù)單元計(jì)數(shù)器計(jì)數(shù)值。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種高可靠性的先入先出存儲(chǔ)器,包括有存儲(chǔ)器、讀地址計(jì)數(shù)器、寫地址計(jì)數(shù)器、數(shù)據(jù)單元計(jì)數(shù)器和空滿標(biāo)志產(chǎn)生邏輯;其特征在于,進(jìn)一步包括用于進(jìn)行算法邏輯計(jì)算的邏輯模塊;所述讀地址計(jì)數(shù)器、寫地址計(jì)數(shù)器和數(shù)據(jù)單元計(jì)數(shù)器中有兩個(gè)計(jì)數(shù)器為根據(jù)屬于自身的控制信號(hào)獨(dú)立計(jì)數(shù)的獨(dú)立計(jì)數(shù)器,剩余的一個(gè)計(jì)數(shù)器為受所述邏輯模塊控制進(jìn)行計(jì)數(shù)的受控計(jì)數(shù)器;所述兩個(gè)獨(dú)立計(jì)數(shù)器分別接收屬于自身的控制信號(hào),該兩個(gè)獨(dú)立計(jì)數(shù)器將輸出信號(hào)發(fā)送至邏輯模塊,所述邏輯模塊進(jìn)行計(jì)算后將輸出信號(hào)發(fā)送至所述受控計(jì)數(shù)器。
2.根據(jù)權(quán)利要求1所述先入先出存儲(chǔ)器,其特征在于,所述邏輯模塊進(jìn)一步接收屬于讀地址計(jì)數(shù)器、寫地址計(jì)數(shù)器和數(shù)據(jù)單元計(jì)數(shù)器的控制信號(hào),將屬于兩個(gè)獨(dú)立計(jì)數(shù)器的控制信號(hào)直接分別透?jìng)髦羶蓚€(gè)獨(dú)立計(jì)數(shù)器,并阻止屬于第三個(gè)計(jì)數(shù)器獨(dú)立計(jì)數(shù)的控制信號(hào)進(jìn)入第三個(gè)計(jì)數(shù)器。
3.根據(jù)權(quán)利要求1或2所述先入先出存儲(chǔ)器,其特征在于,所述獨(dú)立計(jì)數(shù)器為讀地址計(jì)數(shù)器和寫地址計(jì)數(shù)器,所述受控計(jì)數(shù)器為數(shù)據(jù)單元計(jì)數(shù)器;或所述獨(dú)立計(jì)數(shù)器為寫地址計(jì)數(shù)器和數(shù)據(jù)單元計(jì)數(shù)器,所述受控計(jì)數(shù)器為讀地址計(jì)數(shù)器;或獨(dú)立計(jì)數(shù)器為讀地址計(jì)數(shù)器和數(shù)據(jù)單元計(jì)數(shù)器,所述受控計(jì)數(shù)器為寫地址計(jì)數(shù)器。
4.根據(jù)權(quán)利要求1或2所述先入先出存儲(chǔ)器,其特征在于,所述讀地址計(jì)數(shù)器包括高位讀地址計(jì)數(shù)器和低位讀地址計(jì)數(shù)器,所述寫地址計(jì)數(shù)器包括高位寫地址計(jì)數(shù)器和低位寫地址計(jì)數(shù)器;則所述獨(dú)立計(jì)數(shù)器為高位讀地址計(jì)數(shù)器和高位寫地址計(jì)數(shù)器,所述受控計(jì)數(shù)器為數(shù)據(jù)單元計(jì)數(shù)器;或所述獨(dú)立計(jì)數(shù)器為高位寫地址計(jì)數(shù)器和數(shù)據(jù)單元計(jì)數(shù)器,所述受控計(jì)數(shù)器為高位讀地址計(jì)數(shù)器;或所述獨(dú)立計(jì)數(shù)器為高位讀地址計(jì)數(shù)器和數(shù)據(jù)單元計(jì)數(shù)器,所述受控計(jì)數(shù)器為高位寫地址計(jì)數(shù)器。
5.根據(jù)權(quán)利要求4所述先入先出存儲(chǔ)器,其特征在于,所述屬于高位讀地址計(jì)數(shù)器的控制信號(hào)為讀開始信號(hào)或讀結(jié)束信號(hào);所述屬于高位寫地址計(jì)數(shù)器的控制信號(hào)為寫開始信號(hào)或?qū)懡Y(jié)束信號(hào);所述屬于數(shù)據(jù)單元計(jì)數(shù)器的控制信號(hào)為讀開始信號(hào)和寫開始信號(hào),或者為讀結(jié)束信號(hào)和寫結(jié)束信號(hào)。
6.根據(jù)權(quán)利要求4所述先入先出存儲(chǔ)器,其特征在于,所述先入先出存儲(chǔ)器為信元級(jí)先入先出存儲(chǔ)器,所述數(shù)據(jù)單元計(jì)數(shù)器為信元計(jì)數(shù)器;或者所述先入先出存儲(chǔ)器為數(shù)據(jù)幀級(jí)先入先出存儲(chǔ)器,所述數(shù)據(jù)單元計(jì)數(shù)器為數(shù)據(jù)幀計(jì)數(shù)器。
7.根據(jù)權(quán)利要求1所述先入先出存儲(chǔ)器,其特征在于,所述存儲(chǔ)器可存儲(chǔ)的數(shù)據(jù)單元數(shù)目比存儲(chǔ)器實(shí)際容量少至少一個(gè)。
8.根據(jù)權(quán)利要求1所述先入先出存儲(chǔ)器,其特征在于,所述邏輯模塊為特定用途集成電路。
9.一種高可靠性的先入先出存儲(chǔ)器實(shí)現(xiàn)方法,其特征在于,將所述先入先出存儲(chǔ)器的讀地址計(jì)數(shù)器、寫地址計(jì)數(shù)器和數(shù)據(jù)單元計(jì)數(shù)器中的兩個(gè)設(shè)置為獨(dú)立計(jì)數(shù)的獨(dú)立計(jì)數(shù)器,剩余的一個(gè)計(jì)數(shù)器設(shè)置為受控計(jì)數(shù)器,并進(jìn)一步包括以下步驟a)所述兩個(gè)獨(dú)立計(jì)數(shù)器分別接收屬于自身的控制信號(hào),該兩個(gè)獨(dú)立計(jì)數(shù)器根據(jù)收到的控制信號(hào)更新自身的計(jì)數(shù)值;b)獲取該兩個(gè)獨(dú)立計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值,并通過(guò)所述受控計(jì)數(shù)器的計(jì)數(shù)值與該兩個(gè)獨(dú)立計(jì)數(shù)器計(jì)數(shù)值之間的邏輯關(guān)系,計(jì)算得到受控計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值,發(fā)送至受控計(jì)數(shù)器;c)所述受控計(jì)數(shù)器根據(jù)發(fā)送來(lái)的當(dāng)前計(jì)數(shù)值更新自身的計(jì)數(shù)值。
10.根據(jù)權(quán)利要求9所述方法,其特征在于,所述兩個(gè)獨(dú)立計(jì)數(shù)器分別是寫地址計(jì)數(shù)器和讀地址計(jì)數(shù)器,所述受控計(jì)數(shù)器是數(shù)據(jù)單元計(jì)數(shù)器,所述受控計(jì)數(shù)器計(jì)數(shù)值與兩個(gè)獨(dú)立計(jì)數(shù)器計(jì)數(shù)值之間的邏輯關(guān)系為數(shù)據(jù)單元計(jì)數(shù)器計(jì)數(shù)值為寫地址計(jì)數(shù)器計(jì)數(shù)值與讀地址計(jì)數(shù)器計(jì)數(shù)值的差。
11.根據(jù)權(quán)利要求10所述方法,其特征在于,步驟b)中所述計(jì)算得到受控計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值后,進(jìn)一步包括判斷當(dāng)前計(jì)算得到的作為受控計(jì)數(shù)器的數(shù)據(jù)單元計(jì)數(shù)器計(jì)數(shù)值是否為0,如果不是0,則繼續(xù)后面流程;如果是0,則進(jìn)一步判斷本次對(duì)所述先入先出存儲(chǔ)器進(jìn)行的是讀操作還是寫操作,如果是寫操作,則判定數(shù)據(jù)單元計(jì)數(shù)器當(dāng)前計(jì)數(shù)值為數(shù)據(jù)單元計(jì)數(shù)器的最大計(jì)數(shù)值,如果是讀操作,則判定數(shù)據(jù)單元當(dāng)前計(jì)數(shù)值為0。
12.根據(jù)權(quán)利要求10所述方法,其特征在于,進(jìn)一步包括預(yù)先設(shè)置所述先入先出存儲(chǔ)器可存儲(chǔ)的數(shù)據(jù)單元數(shù)目比存儲(chǔ)器實(shí)際容量少至少一個(gè)。
13.根據(jù)權(quán)利要求9所述方法,其特征在于,所述兩個(gè)獨(dú)立計(jì)數(shù)器分別是寫地址計(jì)數(shù)器和數(shù)據(jù)單元計(jì)數(shù)器,所述受控計(jì)數(shù)器是讀地址計(jì)數(shù)器,所述受控計(jì)數(shù)器計(jì)數(shù)值與兩個(gè)獨(dú)立計(jì)數(shù)器計(jì)數(shù)值之間的邏輯關(guān)系為讀地址計(jì)數(shù)器計(jì)數(shù)值為寫地址計(jì)數(shù)器計(jì)數(shù)值與數(shù)據(jù)單元計(jì)數(shù)器計(jì)數(shù)值的差。
14.根據(jù)權(quán)利要求9所述方法,其特征在于,所述兩個(gè)獨(dú)立計(jì)數(shù)器分別是讀地址計(jì)數(shù)器和數(shù)據(jù)單元計(jì)數(shù)器,所述受控計(jì)數(shù)器是寫地址計(jì)數(shù)器,所述受控計(jì)數(shù)器計(jì)數(shù)值與兩個(gè)獨(dú)立計(jì)數(shù)器計(jì)數(shù)值之間的邏輯關(guān)系為寫地址計(jì)數(shù)器計(jì)數(shù)值為讀地址計(jì)數(shù)器計(jì)數(shù)值與數(shù)據(jù)單元計(jì)數(shù)器計(jì)數(shù)值的和。
15.根據(jù)權(quán)利要求10、11、12、13或14所述方法,其特征在于,所述讀地址計(jì)數(shù)器包括高位讀地址計(jì)數(shù)器和低位讀地址計(jì)數(shù)器,所述寫地址計(jì)數(shù)器包括高位寫地址計(jì)數(shù)器和低位寫地址計(jì)數(shù)器;所述邏輯關(guān)系中的寫地址計(jì)數(shù)器計(jì)數(shù)值為高位寫地址值,所述讀地址計(jì)數(shù)器計(jì)數(shù)值為高位讀地址值。
16.根據(jù)權(quán)利要求15所述先入先出存儲(chǔ)器,其特征在于,所述屬于高位讀地址計(jì)數(shù)器的控制信號(hào)為讀開始信號(hào)或讀結(jié)束信號(hào);所述屬于高位寫地址計(jì)數(shù)器的控制信號(hào)為寫開始信號(hào)或?qū)懡Y(jié)束信號(hào);所述屬于數(shù)據(jù)單元計(jì)數(shù)器的控制信號(hào)為讀開始信號(hào)和寫開始信號(hào),或者為讀結(jié)束信號(hào)和寫結(jié)束信號(hào)。
17.根據(jù)權(quán)利要求15所述方法,其特征在于,所述先入先出存儲(chǔ)器為信元級(jí)先入先出存儲(chǔ)器,所述數(shù)據(jù)單元計(jì)數(shù)器為信元計(jì)數(shù)器;或者所述先入先出存儲(chǔ)器為數(shù)據(jù)幀級(jí)先入先出存儲(chǔ)器,所述數(shù)據(jù)單元計(jì)數(shù)器為數(shù)據(jù)幀計(jì)數(shù)器。
全文摘要
本發(fā)明公開了一種高可靠性的先入先出存儲(chǔ)器,包括有存儲(chǔ)器、讀地址計(jì)數(shù)器、寫地址計(jì)數(shù)器、數(shù)據(jù)單元計(jì)數(shù)器、空滿標(biāo)志產(chǎn)生邏輯和用于進(jìn)行算法邏輯計(jì)算的邏輯模塊。同時(shí)公開了一種高可靠性的先入先出存儲(chǔ)器的實(shí)現(xiàn)方法,設(shè)置讀地址計(jì)數(shù)器、寫地址計(jì)數(shù)器和數(shù)據(jù)單元計(jì)數(shù)器中的兩個(gè)計(jì)數(shù)器為獨(dú)立計(jì)數(shù)器,邏輯模塊獲取兩個(gè)獨(dú)立計(jì)數(shù)器的計(jì)數(shù)值,并根據(jù)三個(gè)計(jì)數(shù)器計(jì)數(shù)值之間的關(guān)系,計(jì)算出第三個(gè)計(jì)數(shù)器的計(jì)數(shù)值,發(fā)送至第三個(gè)計(jì)數(shù)器。本發(fā)明方案使先入先出存儲(chǔ)器在出現(xiàn)異常錯(cuò)誤后,不需要重新復(fù)位就能夠使FIFO在工作中自動(dòng)恢復(fù)正常,保證對(duì)FIFO讀寫順序的正確性,使其繼續(xù)可靠的工作,從而提高FIFO的容錯(cuò)性和可靠性。
文檔編號(hào)H04L12/54GK1668022SQ200410008820
公開日2005年9月14日 申請(qǐng)日期2004年3月12日 優(yōu)先權(quán)日2004年3月12日
發(fā)明者涂君, 柳精偉, 潘劍鋒, 雷春 申請(qǐng)人:華為技術(shù)有限公司