專利名稱:一種先進(jìn)先出存儲(chǔ)器實(shí)現(xiàn)方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通信領(lǐng)域,尤其涉及一種集成電路的數(shù)據(jù)傳輸先進(jìn)先 出存儲(chǔ)器實(shí)現(xiàn)方法及裝置。
背景技術(shù):
數(shù)據(jù)緩沖單元在實(shí)現(xiàn)通信系統(tǒng)時(shí),是一個(gè)不可或缺的硬件單元。在FPGA (Field Programmable Gate Array,現(xiàn)場可編程門陣列)和ASIC (專 用集成電路)中,各大廠家都已經(jīng)開發(fā)出了自己的FIFO ( First In First Out, 先進(jìn)先出存儲(chǔ)器)單元供用戶使用,包括同步FIFO和異步FIFO模塊。為 了保證數(shù)據(jù)正確的寫入或讀出,而不發(fā)生溢出或讀空的狀態(tài)出現(xiàn),必須保證 FIFO在滿的情況下,不能進(jìn)行寫操作;并且在空的狀態(tài)下不能進(jìn)行讀操作。 因此,F(xiàn)IFO設(shè)計(jì)的難點(diǎn)在于怎樣判斷FIFO的空/滿狀態(tài)。傳統(tǒng)的FIFO單元的接口結(jié)構(gòu)如圖1所示。其中,F(xiàn)IFO101:傳統(tǒng)實(shí)現(xiàn)方式下的FIFO單元,其使用寄存器組實(shí)現(xiàn),沒有 地址總線,僅能提供"空"和"滿"信號(hào),部分FIFO可以提供"將空,,和"將滿" 信號(hào);滿信號(hào)102:此FIFO的數(shù)據(jù)空間是否已經(jīng)滿,即全都寫滿數(shù)據(jù),如果 是,則此信號(hào)拉高;將滿信號(hào)103:此FIFO的數(shù)據(jù)空間是否即將滿,即僅剩余一個(gè)數(shù)據(jù)深 度可以寫入,如果是,則此信號(hào)拉高;數(shù)據(jù)和控制信號(hào)104:包括寫信號(hào)、寫數(shù)據(jù)總線等的其它控制信號(hào);空信號(hào)105:此FIFO的數(shù)據(jù)空間是否已經(jīng)空,即數(shù)據(jù)全部讀出,如果是,則此信號(hào)拉高;將空信號(hào)106:此FIFO的數(shù)據(jù)空間是否即將空,即僅剩余一個(gè)數(shù)據(jù)深 度可以讀出,如果是,則此信號(hào)拉高;數(shù)據(jù)和控制信號(hào)107:包括讀信號(hào)、讀數(shù)據(jù)總線等的其它控制信號(hào)。在這種傳統(tǒng)的FIFO接口結(jié)構(gòu)中,有一個(gè)最大的缺陷控制信號(hào)過于簡 單。由于FIFO單元的彩:據(jù)寫入和讀出位置對(duì)于用戶來說是不可見的,也就 是說,用戶在寫入或者讀出數(shù)據(jù)的過程中,除非已經(jīng)到達(dá)寫滿或者將要寫 滿、讀空或者將要讀空的情況,否則是不知道FIFO還有多少數(shù)據(jù)深度剩余 和被使用了的。但是在某些數(shù)據(jù)傳輸情況下,比如,數(shù)據(jù)需要成塊寫入或 者讀出的情況下,F(xiàn)IFO僅僅提供上述幾個(gè)信號(hào)是不夠的,用戶可能需要知 道此FIFO的剩余數(shù)據(jù)空間,或者試圖指定一個(gè)滿信號(hào)或空信號(hào)的預(yù)定值, 在傳輸塊數(shù)據(jù)或者組數(shù)據(jù)時(shí),希望提前對(duì)FIFO的空滿狀態(tài)進(jìn)行判斷。'綜上 所述,由于FIFO單元在可控制功能上的缺陷,導(dǎo)致用戶的操作受到了限制。因此,現(xiàn)有技術(shù)存在缺陷,需要改進(jìn)。發(fā)明內(nèi)容本發(fā)明的目的在于提供一種先進(jìn)先出存儲(chǔ)器實(shí)現(xiàn)方法及裝置,通過對(duì) 讀地址和寫地址的判斷,生成預(yù)定義滿狀態(tài)的信號(hào)和預(yù)定義空狀態(tài)的信號(hào), 使得用戶可以提前對(duì)FIFO的空滿狀態(tài)進(jìn)行判斷。本發(fā)明的技術(shù)方案如下一種先進(jìn)先出存儲(chǔ)器裝置,其包括存儲(chǔ)器、寫地址控制器、讀地址控 制器,所述存儲(chǔ)器分別與所述寫地址控制器和所述讀地址控制器連接;其 中,還包括比較器和減法器;其中,所述比較器分別與所述寫地址控制器 和所述讀地址控制器連接,并且通過所述減法器連接所述存儲(chǔ)器;所述存 儲(chǔ)器是至少雙端口存儲(chǔ)器;所述減法器用于將所述存儲(chǔ)器的指針差值減去 零,得到已使用深度;所述比較器用于將所述已使用深度分別與存儲(chǔ)器深度、預(yù)定義滿數(shù)值進(jìn)行比較,得到滿、將滿、預(yù)定義滿狀態(tài)信號(hào),并反饋到所述寫地址控制器;還用于將所述已使用深度與0進(jìn)行比較,得到空、 將空狀態(tài)信號(hào),并反饋到所述讀地址控制器;所述寫地址控制器還用于把 滿、將滿、預(yù)定義滿信號(hào)反饋到外部;所述讀地址控制器還用于把空、將 空信號(hào)反饋到外部。所述的先進(jìn)先出存儲(chǔ)器裝置,其中,所述減法器還用于將存儲(chǔ)器深度 減去所述指針差值,得到剩余深度;并且,所述比較器還用于將所述剩余 深度與預(yù)定義空數(shù)值進(jìn)行比較,得到預(yù)定義空狀態(tài)信號(hào),并反饋到所述讀 地址控制器;所述讀地址控制器還用于把預(yù)定義空狀態(tài)信號(hào)反饋到外部。所述的先進(jìn)先出存儲(chǔ)器裝置,其中,所述比較器還用于將所述剩余深 度與0進(jìn)行比較,得到滿、將滿狀態(tài)信號(hào),并反饋到所述寫地址控制器; 還用于將所述剩余深度與存儲(chǔ)器深度進(jìn)行比較,得到空、將空狀態(tài)信號(hào), 并反饋到所述讀地址控制器。所述的先進(jìn)先出存儲(chǔ)器裝置,其中,所述預(yù)定義滿數(shù)值和所述預(yù)定義 空數(shù)值為用戶設(shè)置。所述的先進(jìn)先出存儲(chǔ)器裝置,其中,所述比較器通過數(shù)據(jù)總線分別與 所述寫地址控制器和所述讀地址控制器連接,由數(shù)據(jù)總線定義所述預(yù)定義 滿數(shù)值和所述預(yù)定義空數(shù)值。所述的先進(jìn)先出存儲(chǔ)器裝置,其中,其還包括與所述比較器相連接的 寄存器,用于存儲(chǔ)所述預(yù)定義滿數(shù)值和所述預(yù)定義空數(shù)值。一種先進(jìn)先出存儲(chǔ)器實(shí)現(xiàn)方法,應(yīng)用在包括比較器和減法器的先進(jìn)先 出存儲(chǔ)器裝置中,其包括步驟,Al、讀地址控制單元和寫地址控制單元分 別將讀指針地址和寫指針地址送到所述減法器,進(jìn)行減法操作,得到指針 差值;A2、所述減法器將所述指針差值減零,得到已使用深度,并送到所 述比較器;A3、所述比較器將所述已使用深度分別與存儲(chǔ)器深度、預(yù)定義 滿數(shù)值進(jìn)行比較,得到滿、將滿、預(yù)定義滿狀態(tài)信號(hào),并反饋到所述寫地址控制器;A4、所述比較器將所述已使用深度與0進(jìn)行比較,得到空、將 空狀態(tài)信號(hào),并反饋到所述讀地址控制器;A5、讀地址控制單元或?qū)懙刂?控制單元將各狀態(tài)信號(hào)反饋到外部。所述的先進(jìn)先出存儲(chǔ)器實(shí)現(xiàn)方法,其中,在步驟A2還包括步驟所述 減法器將存儲(chǔ)器深度減去所述指針差值,得到剩余深度,并送到所述比較 器;并且,步驟A4還包括步驟所述比較器將所述剩余深度與預(yù)定義空數(shù) 值進(jìn)行比較,得到預(yù)定義空狀態(tài)信號(hào),并反饋到所述讀地址控制器。所述的先進(jìn)先出存儲(chǔ)器實(shí)現(xiàn)方法,其中,在步驟A3中,所述比較器將 所述剩余深度與0進(jìn)行比較,得到滿、將滿狀態(tài)信號(hào),并反饋到所述寫地 址控制器。所述的先進(jìn)先出存儲(chǔ)器實(shí)現(xiàn)方法,其中,在步驟A4中,所迷比較器將 所述剩余深度與存儲(chǔ)器深度進(jìn)行比較,得到空、將空狀態(tài)信號(hào),并反饋到 所述讀地址控制器。所述的先進(jìn)先出存儲(chǔ)器實(shí)現(xiàn)方法,其中,在步驟A1之前,還包括步驟 用戶設(shè)置所述預(yù)定義滿數(shù)值。所述的先進(jìn)先出存儲(chǔ)器實(shí)現(xiàn)方法,其中,在步驟A1之前,還包括步驟 用戶設(shè)置所述預(yù)定義空數(shù)值。所述的先進(jìn)先出存儲(chǔ)器實(shí)現(xiàn)方法,其中,步驟A6中,所述讀地址控制 單元或?qū)懙刂房刂茊卧獙⒏鳡顟B(tài)信號(hào)反饋到用戶。所述的先進(jìn)先出存儲(chǔ)器實(shí)現(xiàn)方法,其中,所述方法還包括步驟A7、 用戶根據(jù)各狀態(tài)信號(hào),將寫信號(hào)和讀信號(hào)分別發(fā)送到寫地址控制單元和讀 地址控制單元;A8、寫地址控制單元得到寫信號(hào),向存儲(chǔ)器寫入數(shù)據(jù);A9、 讀地址控制單元得到讀信號(hào),從存儲(chǔ)器讀出數(shù)據(jù)。采用上述方案,本發(fā)明通過對(duì)讀地址和寫地址的判斷,生成預(yù)定義滿 狀態(tài)的信號(hào)和預(yù)定義空狀態(tài)的信號(hào),使得用戶可以提前對(duì)FIFO的空滿狀態(tài) 進(jìn)行判斷,提高了系統(tǒng)的預(yù)處理能力;由于在FIFO中加入了更多的狀態(tài),使得對(duì)于數(shù)據(jù)緩存FIFO的控制更加完善和方便。在進(jìn)行FPGA或者ASIC 進(jìn)行設(shè)計(jì)時(shí),對(duì)于需要使用FIFO進(jìn)行數(shù)據(jù)緩存的情況,設(shè)計(jì)人員可以根據(jù) 自己的需要選擇當(dāng)剩余空間不足一定數(shù)量時(shí),例如一個(gè)報(bào)文的長度或者一 組有效數(shù)據(jù)的長度,選擇停止寫入數(shù)據(jù),這樣可以保證每次寫入的數(shù)據(jù)都 是完整的報(bào)文;同樣,在讀出數(shù)據(jù)的時(shí)候亦如此,可以保證每次讀出的都 是完整的報(bào)文。本發(fā)明的裝置可以構(gòu)成同步FIFO或異步FIFO,應(yīng)用在基 于ASIC、 FPGA等技術(shù)領(lǐng)域的設(shè)備中,尤其適用于通信和網(wǎng)絡(luò)設(shè)備。
圖l為現(xiàn)有技術(shù)的FIFO接口結(jié)構(gòu)示意圖;圖2是本發(fā)明裝置的 一種FIFO接口結(jié)構(gòu)示意圖;圖3是本發(fā)明裝置的 一種FIFO內(nèi)部結(jié)構(gòu)示意圖;圖4是本發(fā)明方法的FIFO返回信號(hào)的一種實(shí)現(xiàn)方法示意圖;圖5是本發(fā)明方法的一種預(yù)定義滿狀態(tài)實(shí)現(xiàn)方式示意圖;圖6是本發(fā)明方法的一種預(yù)定義空狀態(tài)實(shí)現(xiàn)方式示意圖;圖7是本發(fā)明方法的流程圖。
具體實(shí)施方式
以下對(duì)本發(fā)明的較佳實(shí)施例加以詳細(xì)說明。如圖2所示,本發(fā)明提供了一種先進(jìn)先出存儲(chǔ)器裝置,增強(qiáng)了對(duì)FIFO 的控制功能,其包括存儲(chǔ)器(RAM)、寫地址控制器、讀地址控制器,所述 存儲(chǔ)器分別與所述寫地址控制器和所述讀地址控制器連接;其還包括比較 器和減法器。其中,所述比較器分別與所述寫地址控制器和所述讀地址控制器連接, 并且通過所述減法器連接所述存儲(chǔ)器。采用雙口 RAM作為數(shù)據(jù)的存儲(chǔ)單 元,與雙口 RAM的寫地址控制單元、雙口 RAM的讀地址控制單元和減法器單元有接口;雙口 RAM寫地址控制單元與雙口 RAM和比較器單元有接 口,將狀態(tài)輸出到比較器;雙口 RAM讀地址控制單元與雙口 RAM和比較 器單元有接口,將狀態(tài)輸出到比較器;減法器單元只與雙口 RAM和比較器 單元有接口;比較器單元產(chǎn)生空滿等狀態(tài),它與減法器單元、雙口RAM寫 地址控制單元、雙口 RAM讀地址控制單元都有接口 ,并將狀態(tài)送到雙口 RAM讀/寫地址控制單元。其中,所述存儲(chǔ)器是至少雙端口存儲(chǔ)器;在FIFO中,雙端口存儲(chǔ)器較 為常用,其中一個(gè)端口用于寫入數(shù)據(jù),而另一個(gè)端口用于讀出數(shù)據(jù)??梢?同時(shí)對(duì)存儲(chǔ)器字存儲(chǔ)單元進(jìn)行寫入和讀出操作。由于本發(fā)明必須分別通過 對(duì)讀地址和寫地址的判斷,生成預(yù)定義滿和預(yù)定義空的信號(hào);因此,使用 具備至少兩個(gè)端口的存儲(chǔ)器是必須的。為了使系統(tǒng)實(shí)現(xiàn)起來簡單,本發(fā)明 所述裝置可以使用一個(gè)雙口 RAM作為數(shù)據(jù)存儲(chǔ)的核心,該雙口 RAM的存 儲(chǔ)容量(深度)視情況而定,并在此基礎(chǔ)上實(shí)現(xiàn)改進(jìn)的FIFO單元。該雙口 RAM的時(shí)鐘分別由雙口 RAM寫地址控制單元和雙口 RAM讀地址控制單 元提供,由讀、寫單元進(jìn)行控制。實(shí)際上,本發(fā)明的裝置和方法也可以用 于三端口存儲(chǔ)器或多端口存儲(chǔ)器中,本發(fā)明對(duì)此并無任何限制。所述比較器用于比較所述存儲(chǔ)器的讀指針和寫指針,得到指針差值。所述減法器用于將所述存儲(chǔ)器的指針差值減去零,得到已使用深度; 所述減法器還可以用于將存儲(chǔ)器深度減去所述指針差值,得到剩余深度。并且,所述比較器還用于將所述已使用深度分別與存儲(chǔ)器深度、預(yù)定 義滿數(shù)值進(jìn)行比較,得到滿、將滿、預(yù)定義滿狀態(tài)信號(hào),并反饋到所述寫 地址控制器。當(dāng)所述已使用深度等于存儲(chǔ)器深度時(shí),得到滿狀態(tài)信號(hào);當(dāng) 所述已使用深度僅比存儲(chǔ)器深度少1時(shí),即僅剩余一個(gè)數(shù)據(jù)深度可以寫入 時(shí),得到將滿狀態(tài)信號(hào);當(dāng)所述已使用深度等于預(yù)定義滿數(shù)值時(shí),得到預(yù) 定義滿狀態(tài)信號(hào)。并且,所述比較器還用于將所述已使用深度與0進(jìn)行比較,得到空、將空狀態(tài)信號(hào),并反饋到所述讀地址控制器。當(dāng)所述已使用深度等于o時(shí), 得到空狀態(tài)信號(hào);當(dāng)所述已使用深度僅比o多l(xiāng)時(shí),即僅剩余一個(gè)數(shù)據(jù)深 度可以讀出時(shí),得到將空狀態(tài)信號(hào)。并且,當(dāng)所述比較器得到減法器傳來的剩余深度時(shí),所述比較器還可 以用于將所述剩余深度與預(yù)定義空數(shù)值進(jìn)行比較,得到預(yù)定義空狀態(tài)信號(hào), 并反饋到所述讀地址控制器。此時(shí),所述比較器還可以用于將所述剩余深度與o進(jìn)行比較,得到滿、 將滿狀態(tài)信號(hào),并反饋到所述寫地址控制器;還用于將所述剩余深度與存 儲(chǔ)器深度進(jìn)行比較,得到空、將空狀態(tài)信號(hào),并反饋到所述讀地址控制器。所述寫地址控制器用于完成雙口 RAM的寫操作,并把滿、將滿、預(yù)定 義滿信號(hào)反饋到外部,這樣,對(duì)于外部使用的用戶來說,看到的是滿信號(hào), 而不是地址總線,操作的就是FIFO,而不是RAM。所述讀地址控制器用于完成雙口 RAM的讀操作,并把空、將空、.預(yù)定 義空信號(hào)反饋到外部。具體的反饋方式,本發(fā)明對(duì)此并無限制。其中,所述預(yù)定義滿數(shù)值和所述預(yù)定義空數(shù)值由用戶設(shè)置,這樣,可 以為FIFO結(jié)構(gòu)添加了更多的信息,能夠反饋給用戶更多的可控制信號(hào)。所述的先進(jìn)先出存儲(chǔ)器裝置,對(duì)于所述預(yù)定義滿數(shù)值和所迷預(yù)定義空 數(shù)值,可以由所述比較器通過數(shù)據(jù)總線分別與所述寫地址控制器和所述讀 地址控制器連接,由數(shù)據(jù)總線定義所述預(yù)定義滿數(shù)值和所述預(yù)定義空數(shù)值; 也可以設(shè)置與所述比較器相連接的寄存器,用于存儲(chǔ)所述預(yù)定義滿數(shù)值和 所述預(yù)定義空數(shù)值。所述的先進(jìn)先出存儲(chǔ)器裝置,其中,所述寫地址控制器的時(shí)鐘和所述 讀地址控制器的時(shí)鐘是不同源的時(shí)鐘。雙口 RAM寫地址控制單元和雙口 RAM讀地址控制單元提供的時(shí)鐘可以是同源的,也可以是不同源的,對(duì)于 同源的情況,將構(gòu)成同步FIFO,對(duì)于不同源的情況,則構(gòu)成異步FIFO,本 發(fā)明對(duì)此并無任何限制。如圖7所示,本發(fā)明還提供了一種先進(jìn)先出存儲(chǔ)器實(shí)現(xiàn)方法,應(yīng)用在包括比較器和減法器的先進(jìn)先出存儲(chǔ)器裝置中,其包括步驟,Al、讀地址控制單元和寫地址控制單元分別將讀指針地址和寫指針地 址送到所述減法器,進(jìn)行減法操作,得到指針差值;其中,所述寫地址控 制器的時(shí)鐘和所述讀地址控制器的時(shí)鐘可以是同源的時(shí)鐘或者是不同源的 時(shí)鐘。當(dāng)讀指針和寫指針相等也就是指向同一個(gè)內(nèi)存位置時(shí),F(xiàn)IFO可能處 于滿或空兩種狀態(tài)??梢酝ㄟ^不同的方法判斷或區(qū)分FIFO究竟是處于滿狀 態(tài)還是空狀態(tài),也就是說究竟是寫指針從后趕上了讀指針,還是讀指針從后 趕上了寫指針。具體的實(shí)現(xiàn)方法屬于現(xiàn)有技術(shù),在此不作贅述。其中,在步驟A1之前,還可以包括步驟用戶設(shè)置所述預(yù)定義滿數(shù)值 和/或設(shè)置所述預(yù)定義空數(shù)值。所述設(shè)置,可以通過設(shè)置數(shù)據(jù)總線來實(shí)現(xiàn), 包括設(shè)置預(yù)定義滿數(shù)值總線和預(yù)定義空數(shù)值總線;也可以通過將所述預(yù)定 義滿數(shù)值和/或所述預(yù)定義空數(shù)值存儲(chǔ)在寄存器上來實(shí)現(xiàn),本發(fā)明對(duì)此并無 額外限制。A2、所述減法器將所述指針差值減零,得到已使用深度,并送到所述 比較器。此時(shí),在A2步驟中,所述減法器還可以將RAM深度減去所述指 針差值,得到剩余深度,并送到所述比較器。A3、所述比較器將所述已使用深度分別與存儲(chǔ)器深度、預(yù)定義滿數(shù)值 進(jìn)行比較,得到滿、將滿、預(yù)定義滿狀態(tài)信號(hào),并反饋到所述寫地址控制 器;還可以包括得到未滿狀態(tài)信號(hào),并且反饋到所述寫地址控制器,本發(fā) 明對(duì)此并無額外限制。當(dāng)所述比較器得到剩余深度時(shí),步驟A3還可以包括 步驟所述比較器將所述剩余深度與0進(jìn)行比較,得到滿、將滿狀態(tài)信號(hào), 并反饋到所述寫地址控制器。A4、所述比較器將所述已使用深度與0進(jìn)行比較,得到空、將空狀態(tài) 信號(hào),并反饋到所述讀地址控制器;還可以包括得到非空狀態(tài)信號(hào),并且 反饋到所述讀地址控制器,本發(fā)明對(duì)此并無額外限制。當(dāng)所述比較器得到剩余深度時(shí),步驟A4還可以包括步驟所述比較器將所述剩余深度與預(yù)定 義空數(shù)值進(jìn)行比較,得到預(yù)定義空狀態(tài)信號(hào),并反^Jt到所述讀地址控制器。 并且,所述比較器還可以將所述剩余深度與存儲(chǔ)器深度進(jìn)行比較,得到空、 將空狀態(tài)信號(hào),并反饋到所述讀地址控制器。A5、讀地址控制單元或?qū)懙刂房刂茊卧獙⒏鳡顟B(tài)信號(hào)反饋到外部,其 中,所述讀地址控制單元或?qū)懙刂房刂茊卧梢詫⒏鳡顟B(tài)信號(hào)直接或間接 地反饋到用戶。此時(shí),所述的先進(jìn)先出存儲(chǔ)器實(shí)現(xiàn)方法,還包括步驟A7、用戶根據(jù)各狀態(tài)信號(hào),將寫信號(hào)和讀信號(hào)分別發(fā)送到寫地址控制 單元和讀地址控制單元;A8、寫地址控制單元得到寫信號(hào),向存儲(chǔ)器寫入數(shù)據(jù); -A9、讀地址控制單元得到讀信號(hào),從存儲(chǔ)器讀出數(shù)據(jù)。本發(fā)明改進(jìn)的一種FIFO接口結(jié)構(gòu)如圖2所示,具體說明如下滿信號(hào)102:此FIFO的數(shù)據(jù)空間是否已經(jīng)滿(全都寫入數(shù)據(jù)),如果 是,則此信號(hào)拉高,與傳統(tǒng)FIFO的相同;將滿信號(hào)103:此FIFO的數(shù)據(jù)空間是否即將滿(只剩余一個(gè)數(shù)據(jù)深度 可以寫入),如果是,則此信號(hào)拉高,與傳統(tǒng)FIFO的相同;數(shù)據(jù)和控制信號(hào)104:包括寫信號(hào)、寫數(shù)據(jù)總線等的其它控制信號(hào),與 傳統(tǒng)FIFO的相同;空信號(hào)105:此FIFO的數(shù)據(jù)空間是否已經(jīng)空(凄t據(jù)全部讀出),如果 是,則此信號(hào)l立高,與傳統(tǒng)FIFO的相同;將空信號(hào)106:此FIFO的數(shù)據(jù)空間是否即將空(只剩余一個(gè)數(shù)據(jù)深度 可以讀出),如果是,則此信號(hào)拉高,與傳統(tǒng)FIFO的相同;數(shù)據(jù)和控制信號(hào)107:包括讀信號(hào)、讀數(shù)據(jù)總線等的其它控制信號(hào),與 傳統(tǒng)FIFO的相同;FIFO201:即本發(fā)明實(shí)現(xiàn)的FIFO單元;預(yù)定義滿信號(hào)202:此FIFO的數(shù)據(jù)空間是否預(yù)定義滿(剩余數(shù)據(jù)深度小于等于預(yù)定義數(shù)值),如果是,則此信號(hào)拉高;預(yù)定義空信號(hào)203:此FIFO的數(shù)據(jù)空間是否預(yù)定義空(可讀出數(shù)據(jù)深 度小于等于預(yù)定義數(shù)值),如果是,則此信號(hào)拉高;預(yù)定義滿數(shù)值總線204 (即數(shù)據(jù)總線)預(yù)定義滿狀態(tài)的參考值,F(xiàn)IFO 剩余深度小于等于此值的時(shí)候?yàn)轭A(yù)定義滿狀態(tài);預(yù)定義空數(shù)值總線205:預(yù)定義空狀態(tài)的參考值,F(xiàn)IFO可讀深度小于 等于此值的時(shí)候?yàn)轭A(yù)定義空狀態(tài)。本發(fā)明中實(shí)現(xiàn)的一種FIFO內(nèi)部結(jié)構(gòu)如圖3所示,具體說明如下FIFO201:即圖2所示的本發(fā)明實(shí)現(xiàn)的FIFO單元;雙口 RAM301:用于存儲(chǔ)數(shù)據(jù)的載體,可以只是普通的雙口 RAM,用 于構(gòu)成同步或者異步FIFO,該雙口 RAM301的時(shí)鐘分別由雙口 RAM寫地 址控制單元304和雙口 RAM讀地址控制單元305提供,由二者進(jìn)行控制;減法器單元302:進(jìn)行減法操作,將當(dāng)前的雙口 RAM指針差值減去零 或者與RAM深度相減,得到已使用的和剩余的地址空間大小,并將數(shù)值送 到比較器單元303;比較器單元303:比較得到當(dāng)前的雙口 RAM指針差值;并將雙口 RAM 的已使用深度與RAM深度和預(yù)定義滿數(shù)值進(jìn)行比較,得到滿、將滿、預(yù)定 義滿狀態(tài),并返回結(jié)果309到雙口 RAM寫地址控制單元304;將RAM的 剩余深度與O和和預(yù)定義空數(shù)值進(jìn)行比較,得到空、將空、預(yù)定義空狀態(tài), 并返回結(jié)果308到雙口 RAM讀地址控制單元305;雙口 RAM寫地址控制單元304:完成雙口RAM的寫操作,每次一個(gè) 寫時(shí)鐘到來,就向雙口 RAM中寫入一個(gè)數(shù)據(jù),并把滿信號(hào)102、將滿信號(hào) 103、預(yù)定義滿信號(hào)202反饋到外部,這樣,對(duì)于外部使用的用戶來說,看 到的是滿信號(hào),而不是地址總線,操作的就是FIFO,而不是RAM;雙口 RAM讀地址控制單元305:完成雙口RAM的讀操作,每次一個(gè) 讀時(shí)鐘到來,就從雙口 RAM中讀出一個(gè)數(shù)據(jù),并把空信號(hào)105、將空信號(hào)106、預(yù)定義空信號(hào)203反饋到外部;預(yù)定義空數(shù)值306:雙口 RAM讀地址控制單元305將預(yù)定義空數(shù)值306送給比較器單元303,當(dāng)雙口 RAM301的數(shù)據(jù)內(nèi)容少于或等于預(yù)定義空數(shù)值306時(shí),F(xiàn)IFO201進(jìn)入預(yù)定義空狀態(tài);預(yù)定義滿數(shù)值307:雙口 RAM寫地址控制單元304將預(yù)定義滿數(shù)值307送給比較器單元303,當(dāng)雙口 RAM301的空閑深度少于或等于預(yù)定義滿數(shù)值307時(shí),F(xiàn)IFO201進(jìn)入預(yù)定義滿狀態(tài);返回結(jié)果308:當(dāng)前是否為空、將空、預(yù)定義空狀態(tài); 返回結(jié)果309:當(dāng)前是否為滿、將滿、預(yù)定義滿狀態(tài)。 本發(fā)明中FIFO的返回信號(hào)實(shí)現(xiàn)方法如圖4所示,具體說明如下 FIFO深度401:這個(gè)數(shù)值是FIFO總的深度,也就是雙口 RAM的總的深度;FIFO剩余深度和已使用深度402:這個(gè)返回值是FIFO的剩余的深度也 就是雙口 RAM剩余的存儲(chǔ)空間,和FIFO已經(jīng)使用的深度也就是雙口 RAM 已用的存儲(chǔ)空間;FIFO預(yù)定義滿和預(yù)定義空狀態(tài)403:這個(gè)返回值表示的是FIFO預(yù)定 義滿和預(yù)定義空的狀態(tài),這個(gè)狀態(tài)會(huì)被傳遞給雙口 RAM寫地址控制單元 304和雙口 RAM讀地址控制單元305,并送到FIFO外部。本發(fā)明方法的一種預(yù)定義滿狀態(tài)實(shí)現(xiàn)方式示意圖如圖5所示,具體說 明如下Ai=FIFO已使用深度501:這個(gè)深度表示的是FIFO中已經(jīng)被寫入數(shù)據(jù) 的深度值;Ai-Bi狀態(tài)502: FIFO已使用深度501與預(yù)定義滿數(shù)值307相等的狀 態(tài),此時(shí)已經(jīng)達(dá)到預(yù)定義滿的門限;Ai>Bi狀態(tài)503: FIFO已使用深度501大于預(yù)定義滿數(shù)值307相等的 狀態(tài),此時(shí)已經(jīng)越過預(yù)定義滿的門限;預(yù)定義滿狀態(tài)504: FIFO已經(jīng)進(jìn)入預(yù)定義滿的狀態(tài)。 本發(fā)明方法的一種預(yù)定義空狀態(tài)實(shí)現(xiàn)方式示意圖如圖6所示,具體說 明如下Di-FIFO空閑深度601:這個(gè)深度表示的是FIFO中未被寫入數(shù)據(jù)的深 度值,即還剩余的深度;Di-Ci狀態(tài)602: FIFO空閑深度601與預(yù)定義空數(shù)值306相等的狀態(tài), 此時(shí)已經(jīng)達(dá)到預(yù)定義空的門限;Di<Ci狀態(tài)603: FIFO空閑深度601與預(yù)定義空數(shù)值306相等的狀態(tài), 此時(shí)已經(jīng)越過預(yù)定義空的門限;預(yù)定義空狀態(tài)604: FIFO已經(jīng)進(jìn)入預(yù)定義滿的狀態(tài)。本發(fā)明在作以下的變更后,還可以提供相近的功效在寫FIFO和讀 FIFO的時(shí)候,對(duì)預(yù)定義滿/空的數(shù)值根據(jù)用戶的特定算法進(jìn)行設(shè)定,那么該 FIFO可以用作特殊的服務(wù)質(zhì)量和隊(duì)列管理領(lǐng)域,實(shí)現(xiàn)在數(shù)據(jù)緩沖上的控制 功能。雙口 RAM的深度和FIFO預(yù)定義滿/空的數(shù)值都可以靈活的進(jìn)行更改, 實(shí)現(xiàn)不同的需求,例如,在單純用作緩沖的時(shí)候,可以適當(dāng)增加雙口RAM 深度,增加預(yù)定義滿、減小預(yù)定義空的數(shù)值;在用作服務(wù)質(zhì)量的實(shí)現(xiàn)時(shí), 可以適當(dāng)減小雙口 RAM深度,減小預(yù)定義滿、增加預(yù)定義空的數(shù)值。本發(fā)明還可以運(yùn)用在以下的產(chǎn)品或方法中作為FPGA的實(shí)現(xiàn),可以 成為ASIC的前期驗(yàn)證,作為嵌入式的同步和異步FIFO模塊,可以應(yīng)用在 芯片化的通信產(chǎn)品中。其中,F(xiàn)PGA可以是Flash FPGA或SRAM FPGA等, 本發(fā)明對(duì)此并無限制。應(yīng)當(dāng)理解的是,對(duì)本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以 改進(jìn)或變換,而所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù) 范圍。
權(quán)利要求
1. 一種先進(jìn)先出存儲(chǔ)器裝置,其包括存儲(chǔ)器、寫地址控制器、讀地址控制器,所述存儲(chǔ)器分別與所述寫地址控制器和所述讀地址控制器連接;其特征在于,還包括比較器和減法器;其中,所述比較器分別與所述寫地址控制器和所述讀地址控制器連接,并且通過所述減法器連接所述存儲(chǔ)器;所述存儲(chǔ)器是至少雙端口存儲(chǔ)器;所述減法器用于將所述存儲(chǔ)器的指針差值減去零,得到已使用深度;所述比較器用于將所述已使用深度分別與存儲(chǔ)器深度、預(yù)定義滿數(shù)值進(jìn)行比較,得到滿、將滿、預(yù)定義滿狀態(tài)信號(hào),并反饋到所述寫地址控制器;還用于將所述已使用深度與0進(jìn)行比較,得到空、將空狀態(tài)信號(hào),并反饋到所述讀地址控制器;所述寫地址控制器還用于把滿、將滿、預(yù)定義滿信號(hào)反饋到外部;所述讀地址控制器還用于把空、將空信號(hào)反饋到外部。
2、 根據(jù)權(quán)利要求1所述的先進(jìn)先出存儲(chǔ)器裝置,其特征在于,所述 減法器還用于將存儲(chǔ)器深度減去所述指針差值,得到剩余深度;并且,所述比較器還用于將所述剩余深度與預(yù)定義空數(shù)值進(jìn)行比較,.得到 預(yù)定義空狀態(tài)信號(hào),并反饋到所述讀地址控制器;所述讀地址控制器還用于把預(yù)定義空狀態(tài)信號(hào)反饋到外部。
3、 根據(jù)權(quán)利要求2所述的先進(jìn)先出存儲(chǔ)器裝置,其特征在于,所述 比較器還用于將所述剩余深度與0進(jìn)行比較,得到滿、將滿狀態(tài)信號(hào),并 反饋到所述寫地址控制器;還用于將所述剩余深度與存儲(chǔ)器深度進(jìn)行比較, 得到空、將空狀態(tài)信號(hào),并反饋到所述讀地址控制器。
4、 根據(jù)權(quán)利要求2所述的先進(jìn)先出存儲(chǔ)器裝置,其特征在于,所述預(yù)定義滿數(shù)值和所述預(yù)定義空數(shù)值為用戶設(shè)置。
5、 根據(jù)權(quán)利要求4所述的先進(jìn)先出存儲(chǔ)器裝置,其特征在于,所述 比較器通過數(shù)據(jù)總線分別與所述寫地址控制器和所述讀地址控制器連接, 由數(shù)據(jù)總線定義所述預(yù)定義滿數(shù)值和所述預(yù)定義空數(shù)值。
6、 根據(jù)權(quán)利要求4所述的先進(jìn)先出存儲(chǔ)器裝置,其特征在于,其還 包括與所述比較器相連接的寄存器,用于存儲(chǔ)所述預(yù)定義滿數(shù)值和所述預(yù) 定義空數(shù)值。
7、 一種先進(jìn)先出存儲(chǔ)器實(shí)現(xiàn)方法,應(yīng)用在包括比較器和減法器的先 進(jìn)先出存儲(chǔ)器裝置中,其包括步驟,Al、讀地址控制單元和寫地址控制單元分別將讀指針地址和寫指針 地址送到所述減法器,進(jìn)行減法纟喿作,得到指針差值;A2、所述減法器將所述指針差值減零,得到已使用深度,并送到所 述比較器;A3、所述比較器將所述已使用深度分別與存儲(chǔ)器深度、預(yù)定義滿數(shù) 值進(jìn)行比較,得到滿、將滿、預(yù)定義滿狀態(tài)信號(hào),并反饋到所述 寫地址控制器;A4、所述比較器將所迷已使用深度與0進(jìn)行比較,得到空、將空狀態(tài)信號(hào),并反饋到所述讀地址控制器; A5、讀地址控制單元或?qū)懙刂房刂茊卧獙⒏鳡顟B(tài)信號(hào)反饋到外部。
8、 根據(jù)權(quán)利要求7所述的先進(jìn)先出存儲(chǔ)器實(shí)現(xiàn)方法,其特征在于, 在步驟A2還包括步驟所述減法器將存儲(chǔ)器深度減去所述指針差值,得到 剩余深度,并送到所述比較器;并且, '步驟A4還包括步驟所述比較器將所述剩余深度與預(yù)定義空數(shù)值進(jìn)行比較,得到預(yù)定義空狀態(tài)信號(hào),并反饋到所述讀地址控制器。
9、 根據(jù)權(quán)利要求8所述的先進(jìn)先出存儲(chǔ)器實(shí)現(xiàn)方法,其特征在于, 在步驟A3中,所述比較器將所述剩余深度與0進(jìn)行比較,得到滿、將滿狀 態(tài)信號(hào),并反饋到所述寫地址控制器。
10、 根據(jù)權(quán)利要求8所述的先進(jìn)先出存儲(chǔ)器實(shí)現(xiàn)方法,其特征在于, 在步驟A4中,所述比較器將所述剩余深度與存儲(chǔ)器深度進(jìn)行比較,得到空、 將空狀態(tài)信號(hào),并反饋到所述讀地址控制器。
11、 根據(jù)權(quán)利要求7至10任一所述的先進(jìn)先出存儲(chǔ)器實(shí)現(xiàn)方法,其 特征在于,在步驟A1之前,還包括步驟用戶設(shè)置所述預(yù)定義滿數(shù)值。
12、 根據(jù)權(quán)利要求7至10任一所述的先進(jìn)先出存儲(chǔ)器實(shí)現(xiàn)方法,其 特征在于,在步驟A1之前,還包括步驟用戶設(shè)置所述預(yù)定義空數(shù)值。
13、 根據(jù)權(quán)利要求7至10任一所述的先進(jìn)先出存儲(chǔ)器實(shí)現(xiàn)方法,其 特征在于,步驟A6中,所述讀地址控制單元或?qū)懙刂房刂茊卧獙⒏鳡顟B(tài)信 號(hào)反饋到用戶。
14、 根據(jù)權(quán)利要求13所述的先進(jìn)先出存儲(chǔ)器實(shí)現(xiàn)方法,其特征在于, 所述方法還包括步驟A7、用戶根據(jù)各狀態(tài)信號(hào),將寫信號(hào)和讀信號(hào)分別發(fā)送到寫地址控制單元和讀地址控制單元; A8、寫地址控制單元得到寫信號(hào),向存儲(chǔ)器寫入數(shù)據(jù); A9、讀地址控制單元得到讀信號(hào),從存儲(chǔ)器讀出數(shù)據(jù)。
全文摘要
本發(fā)明提供了一種先進(jìn)先出存儲(chǔ)器裝置,其包括存儲(chǔ)器、寫地址控制器、讀地址控制器,存儲(chǔ)器分別與寫地址控制器和讀地址控制器連接;還包括比較器和減法器;比較器分別與寫地址控制器和讀地址控制器連接,并且通過減法器連接存儲(chǔ)器;存儲(chǔ)器是至少雙端口存儲(chǔ)器;減法器用于將存儲(chǔ)器的指針差值減去零,得到已使用深度;比較器用于比較存儲(chǔ)器的讀指針和寫指針,得到指針差值;并將已使用深度分別與存儲(chǔ)器深度、預(yù)定義滿數(shù)值進(jìn)行比較,得到滿、將滿、預(yù)定義滿狀態(tài)信號(hào),并反饋到寫地址控制器;還用于將已使用深度與0進(jìn)行比較,得到空、將空狀態(tài)信號(hào),并反饋到讀地址控制器。本發(fā)明還提供了該裝置的實(shí)現(xiàn)方法,使得對(duì)于數(shù)據(jù)緩存FIFO的控制更加完善和方便。
文檔編號(hào)G06F12/02GK101281489SQ20071007394
公開日2008年10月8日 申請(qǐng)日期2007年4月3日 優(yōu)先權(quán)日2007年4月3日
發(fā)明者李艷花, 焱 楊 申請(qǐng)人:中興通訊股份有限公司