專利名稱:一種提高ram利用效率的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字電路設(shè)計領(lǐng)域,更具體的說,涉及到數(shù)字電路設(shè)計PLD(可編程邏輯器件)中RAM(隨機存儲模塊)的使用。
背景技術(shù):
PLD(Programmable Logic Device可編程邏輯器件)技術(shù)和FPGA(FieldProgrammable Gate Array現(xiàn)場可編程門陣列)技術(shù)是電子設(shè)計領(lǐng)域中最具活力和發(fā)展前途的一項技術(shù),幾乎能完成任何數(shù)字器件的功能,它如同一張白紙或是一堆積木,工程師可以通過傳統(tǒng)的原理圖輸入法,或是硬件描述語言自由地設(shè)計一個數(shù)字系統(tǒng)。雖然PLD和FPGA兩者名稱有異,但兩者的功能基本相同,只是實現(xiàn)原理略有不同。本發(fā)明所述的方法對PLD和FPGA都能適用且不存在原理性的區(qū)別,因此下文中忽略兩者的區(qū)別,統(tǒng)稱為可編程邏輯器件或PLD。
復(fù)雜的PLD器件會嵌入一些RAM塊,以滿足存儲數(shù)據(jù)的需要。這些RAM塊的存儲容量一般為512位、4096位等等。雖然不同的PLD器件可能包含不同數(shù)目不同種類的RAM塊,但是,RAM塊在PLD器件中的使用都存在共同的限制1、RAM塊必須成塊分配,如果一個RAM塊分配給了一個功能模塊,則不能被其他功能模塊使用。
2、每個RAM塊的寬度有限(一般最大為16位寬),如果要存儲32位寬的數(shù)據(jù),則需要由兩個RAM塊拼起來使用。
在數(shù)字電路設(shè)計中,經(jīng)常會使用FIFO(First in First out,先進先出)模塊來存儲數(shù)據(jù),下面以FIFO為例來闡述現(xiàn)有技術(shù)PLD器件中的RAM使用情況,如附圖1所示其中的雙端口RAM在PLD器件中就需要使用RAM塊來實現(xiàn),其中的“寫數(shù)據(jù)”、“寫信號”、“滿/幾乎滿”為FIFO入口信號;“讀數(shù)據(jù)”、“讀信號”、“空/幾乎空”為FIFO出口信號;寫地址產(chǎn)生邏輯控制雙端口存儲器的寫地址和寫信號;讀地址產(chǎn)生邏輯控制雙端口存儲器的讀地址和讀信號;空/滿標志產(chǎn)生邏輯產(chǎn)生FIFO的空/滿狀態(tài)信號,數(shù)據(jù)在控制信號的控制下分別從“寫數(shù)據(jù)”端口寫入、從“讀數(shù)據(jù)”端口讀出。
由于上述的PLD器件中RAM塊使用的限制,所以一個FIFO必須使用一塊或多塊RAM。當(dāng)FIFO深度較小,且位寬較大時就會造成RAM資源嚴重浪費,因為多塊RAM模塊拼接后的位寬必須與FIFO的位寬一致,如果FIFO位寬較大,則需要多塊位寬較小的RAM模塊拼接,但當(dāng)FIFO深度較小時,需要使用的RAM的存儲容量并不大。例如,一個寬度為64位、深度為16位的FIFO,只需要使用1024位的RAM資源。假設(shè)每個RAM塊最大位寬為16位,則如果用512位的RAM塊來實現(xiàn),需要使用4塊,占用了2048位的RAM資源,但實際使用的資源只有1024位,浪費了1024位的RAM資源;如果使用4096位的RAM塊來實現(xiàn),同樣需要使用4塊,占用了16K位的RAM資源,浪費更加嚴重。
因此,現(xiàn)有技術(shù)中PLD器件實現(xiàn)深度淺,位寬大的RAM時資源利用率低,浪費嚴重。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種提高RAM利用效率的方法,以解決現(xiàn)有技術(shù)中RAM在PLD中使用時利用率低的問題。
為實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是這樣實現(xiàn)的一種提高RAM利用效率的方法,該方法包括以下步驟a、將所述的RAM寫數(shù)據(jù)的時鐘頻率設(shè)置為外部寫數(shù)據(jù)的時鐘頻率的整數(shù)倍n,將所述的RAM讀數(shù)據(jù)的時鐘頻率設(shè)置為外部讀數(shù)據(jù)的時鐘頻率的整數(shù)倍n;
b、寫數(shù)據(jù)時,將一個外部寫數(shù)據(jù)的時鐘周期所寫入的數(shù)據(jù)分成n份在n個RAM時鐘周期內(nèi)依次寫入所述的RAM,讀數(shù)據(jù)時,依次在n個RAM時鐘周期內(nèi)從所述的RAM中讀出一個外部時鐘周期內(nèi)應(yīng)讀取的數(shù)據(jù)。
其中所述的整數(shù)倍n是分別根據(jù)所述的讀和寫數(shù)據(jù)的位寬與RAM的位寬的比值確定的。
本發(fā)明還公開了另一種提高RAM利用效率的方法,包括下列步驟a、將所述的RAM寫數(shù)據(jù)的時鐘頻率設(shè)置為外部寫數(shù)據(jù)的時鐘頻率的整數(shù)倍n,將所述的RAM讀數(shù)據(jù)的時鐘頻率設(shè)置為外部讀數(shù)據(jù)的時鐘頻率的整數(shù)倍n,同時將RAM分成整數(shù)份m;b、寫數(shù)據(jù)時,將一個外部寫數(shù)據(jù)的時鐘周期所寫入的數(shù)據(jù)分成n份在n個RAM時鐘周期內(nèi)依次寫入所述的分成m份的RAM,讀數(shù)據(jù)時,依次在n個RAM時鐘周期內(nèi)從所述的分成m份的RAM中讀出一個外部時鐘周期內(nèi)應(yīng)讀取的數(shù)據(jù)。
其中所述的整數(shù)倍m是根據(jù)需要共用同一個所述的RAM的功能模塊的個數(shù)確定并且小于或者等于n。
本發(fā)明克服現(xiàn)有技術(shù)不足,采用將RAM讀寫數(shù)據(jù)的時鐘頻率與外部時鐘頻率分離的方法,使用倍頻時鐘作為RAM的時鐘,使得位寬小的RAM可以適用于位寬大的PLD中的功能模塊,同樣也使得一塊RAM塊可以適用于一個以上的PLD中的功能模塊,有效的提高了RAM塊的利用效率,節(jié)約了資源。
圖1是現(xiàn)有技術(shù)中FIFO結(jié)構(gòu)示意圖;圖2是本發(fā)明實施例一的FIFO結(jié)構(gòu)示意圖;圖3是本發(fā)明實施例二的FIFO結(jié)構(gòu)示意圖。
具體實施例方式
下面結(jié)合附圖和具體實施例對本發(fā)明進行進一步詳細的說明。
實施例一、如附圖2所示,對于一個位寬比雙端口RAM寬的FIFO,可以對其讀寫數(shù)據(jù)的方式進行的修改,首先將RAM時鐘與FIFO的時鐘分離,設(shè)置RAM的寫時鐘和讀時鐘,其頻率為FIFO時鐘頻率的n倍,將外部寫入FIFO的數(shù)據(jù)分成n份,分別用“寫數(shù)據(jù)1”、“寫數(shù)據(jù)2”……“寫數(shù)據(jù)n-1”、“寫數(shù)據(jù)n”表示,將從FIFO讀出的數(shù)據(jù)也分成n份,分別用“讀數(shù)據(jù)1”、“讀數(shù)據(jù)2”……“讀數(shù)據(jù)n-1”、“讀數(shù)據(jù)n”表示,由于RAM的寫時鐘頻率為FIFO寫時鐘頻率的n倍,RAM讀時鐘頻率為FIFO讀時鐘頻率的n倍,RAM帶寬相應(yīng)為FIFO帶寬的n倍。當(dāng)外部數(shù)據(jù)寫入FIFO時,每個RAM時鐘周期寫入相當(dāng)于FIFO一個時鐘周期寫入數(shù)據(jù)的1\n份,F(xiàn)IFO在一個其本身時鐘周期要求寫入的數(shù)據(jù),在n各RAM時鐘周期內(nèi)分次寫入,在FIFO內(nèi)部第一個RAM時鐘周期寫入上述分成n份的數(shù)據(jù)的第1份數(shù)據(jù)“寫數(shù)據(jù)1”,第二個RAM時鐘周期寫入第2份數(shù)據(jù)“寫數(shù)據(jù)2”,如此類推,第n個RAM時鐘周期寫入了第n份數(shù)據(jù)“寫數(shù)據(jù)n”,至此,在一個FIFO時鐘周期應(yīng)該寫入的數(shù)據(jù)已經(jīng)全部寫入完畢,只是分成了n次。讀操作與上述的寫操作原理一樣,當(dāng)從FIFO中讀取數(shù)據(jù)時,將FIFO一個時鐘周期的數(shù)據(jù)分成n份,依次在n個RAM時鐘周期內(nèi)讀取。
以下通過具體的例子來說明,假設(shè)FIFO的位寬為64位、深度為16,擬使用16位寬的4096位RAM,在現(xiàn)有技術(shù)中需要4塊RAM拼接才能滿足FIFO的位寬要求,但采用本發(fā)明所述的方法只需1塊RAM即可。首先根據(jù)FIFO和RAM的位寬比確定n的值,也就是RAM時鐘頻率倍頻的倍數(shù),此時應(yīng)確定n為4,設(shè)置RAM的時鐘頻率為FIFO時鐘頻率的4倍,同時將在一個FIFO時鐘周期內(nèi)寫入FIFO或者從中讀出的數(shù)據(jù)分成4份,在寫入或者讀出數(shù)據(jù)時,在每一個RAM時鐘周期寫入或者讀取一份數(shù)據(jù),在4個RAM時鐘周期寫入或者讀取一個FIFO時鐘周期的全部數(shù)據(jù)。
因此,將FIFO的數(shù)據(jù)分成n份以后依次寫入FIFO或者從FIFO依次讀出,同時提高內(nèi)部讀寫數(shù)據(jù)的頻率,在不影響數(shù)據(jù)讀寫速度的情況下降低了對RAM的位寬要求,由此達到了提高RAM利用率的效果。
實施例二、如果FIFO寬度與雙端口RAM一樣,通過本發(fā)明所述的方法還可以將RAM空間分為多份,給多個FIFO使用,生成多個FIFO,以此克服前述的一塊RAM塊只能分配給一個模塊使用的缺陷。如附圖3所示,首先將RAM時鐘與FIFO的時鐘分離,設(shè)置RAM的寫時鐘和讀時鐘,其頻率為FIFO時鐘頻率的n倍,修改時鐘后,RAM帶寬為FIFO帶寬的n倍。此外還需修改該FIFO內(nèi)部的各個邏輯模塊,將雙端口RAM分為n份(每份可以大小不同),分別為“RAM1”、“RAM2”……“RAMn”,將外部FIFO接口擴展為n個,分別為“FIFO1”、“FIFO2”、……“FIFOn”、每個FIFO使用其對應(yīng)的一份RAM。寫操作時,n個FIFO在一個外部FIFO時鐘周期同時寫入數(shù)據(jù),但是在內(nèi)部,實際是使用了n個RAM時鐘周期,在每一個RAM時鐘周期針對每個FIFO依次寫入數(shù)據(jù),第一個RAM時鐘周期將“FIFO1”的數(shù)據(jù)寫入,第二個RAM時鐘周期將“FIFO2”的數(shù)據(jù)寫入,……第n個RAM時鐘周期將“FIFOn”數(shù)據(jù)寫入,如此類推,在一個完整的FIFO時鐘周期內(nèi)將數(shù)據(jù)全部寫入所有的FIFO。同理,讀操作也是一樣。這樣,達到了n個FIFO同時使用一個RAM的目的,同樣提高了RAM利用率。假如n為2,則一塊RAM就可以生成兩個FIFO。例如一個4096位的RAM塊就可以生成2個寬度為16位,深度為64的FIFO。此時,RAM塊的利用率為100%。而傳統(tǒng)方法只能生成一個FIFO,RAM塊的利用率為50%。
實施例三、前面所述的兩種方法中,第一種方法是一個FIFO占用RAM的所有時間片(n個RAM時鐘周期),第二種方法是一個FIFO占用RAM的一個時間片(1個RAM時鐘周期)。其實,兩種方法也可以結(jié)合使用,可以將內(nèi)部RAM時鐘頻率提高為外部FIFO時鐘頻率的n倍,然后將RAM分成m份對應(yīng)外部的m個FIFO,(m小于等于n),將RAM時間片(時鐘周期)合理分配給每個FIFO,就可以滿足寬度、深度各異的FIFO的需要。例如m=3、n=4,則可以生成3個FIFO,其中一個占用2個時間片,數(shù)據(jù)寬度為RAM的兩倍。另外2個各占一個時間片,數(shù)據(jù)寬度與RAM一樣。同理如m=2、n=4,則可以生成2個FIFO,每個FIFO占用2個時間片,數(shù)據(jù)寬度都為RAM的兩倍。
權(quán)利要求
1.一種提高RAM利用效率的方法,其特征在于,該方法包括以下步驟a、將所述的RAM寫數(shù)據(jù)的時鐘頻率設(shè)置為外部寫數(shù)據(jù)的時鐘頻率的整數(shù)倍n,將所述的RAM讀數(shù)據(jù)的時鐘頻率設(shè)置為外部讀數(shù)據(jù)的時鐘頻率的整數(shù)倍n;b、寫數(shù)據(jù)時,將一個外部寫數(shù)據(jù)的時鐘周期所寫入的數(shù)據(jù)分成n份在n個RAM時鐘周期內(nèi)依次寫入所述的RAM,讀數(shù)據(jù)時,依次在n個RAM時鐘周期內(nèi)從所述的RAM中讀出一個外部時鐘周期內(nèi)應(yīng)讀取的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的整數(shù)倍n是分別根據(jù)所述的讀和寫數(shù)據(jù)的位寬與RAM的位寬的比值確定的。
3.一種提高RAM利用效率的方法,其特征在于,該方法包括以下步驟a、將所述的RAM寫數(shù)據(jù)的時鐘頻率設(shè)置為外部寫數(shù)據(jù)的時鐘頻率的整數(shù)倍n,將所述的RAM讀數(shù)據(jù)的時鐘頻率設(shè)置為外部讀數(shù)據(jù)的時鐘頻率的整數(shù)倍n,同時將RAM分成整數(shù)份m;b、寫數(shù)據(jù)時,將一個外部寫數(shù)據(jù)的時鐘周期所寫入的數(shù)據(jù)分成n份在n個RAM時鐘周期內(nèi)依次寫入所述的分成m份的RAM,讀數(shù)據(jù)時,依次在n個RAM時鐘周期內(nèi)從所述的分成m份的RAM中讀出一個外部時鐘周期內(nèi)應(yīng)讀取的數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述的整數(shù)倍m根據(jù)需要共用同一個所述的RAM的功能模塊的個數(shù)確定并且小于或者等于n。
全文摘要
本發(fā)明公開了一種提高PLD中RAM的利用效率的方法,將RAM讀寫數(shù)據(jù)的時鐘頻率與外部時鐘頻率分離,使用倍頻時鐘作為RAM的時鐘,在多個RAM時鐘周期內(nèi)依次讀寫一個外部讀寫數(shù)據(jù)周期所讀寫的數(shù)據(jù),使得位寬小的RAM可以適用于位寬大的PLD中的功能模塊,同樣也使得一塊RAM塊可以適用于一個以上的PLD中的功能模塊,有效地提高了RAM塊的利用效率,節(jié)約了資源。
文檔編號G06F3/06GK1858695SQ20061003338
公開日2006年11月8日 申請日期2006年1月24日 優(yōu)先權(quán)日2006年1月24日
發(fā)明者范嘉旗, 張玉泉, 李星, 何軍 申請人:華為技術(shù)有限公司