專利名稱:一種緩沖器管理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及集成電路設(shè)計(jì)技術(shù)領(lǐng)域,特別是關(guān)于一種緩沖器管理方法。
背景技術(shù):
FIFO緩沖器是按先進(jìn)先出算法對數(shù)據(jù)進(jìn)行管理的緩沖器。先進(jìn)先出技術(shù)FIFO(First In First Out)是業(yè)界常用的一種排隊(duì)方法,按此方法有序數(shù)據(jù)組成隊(duì)列后定向地流入流出,圖1所示的指令隊(duì)列按順序從緩存區(qū)的上口流入,下口流出。
目前,F(xiàn)IFO技術(shù)采用單一獨(dú)立的設(shè)計(jì)模式。如果在數(shù)據(jù)緩沖過程中需要使用5個(gè)FIFO緩沖器,那么在硬件設(shè)計(jì)中就需要設(shè)置5個(gè)獨(dú)立的FIFO緩沖器。
在許多數(shù)據(jù)緩沖應(yīng)用場合需要多個(gè)FIFO緩沖器,如在音視頻領(lǐng)域。由于,F(xiàn)IFO利用率低,只能為一種多媒體格式使用。如圖2所示,當(dāng)有N種不同的流媒體格式時(shí),需要有N個(gè)獨(dú)立的FIFO緩沖器,其中,MP3格式使用FIFO1,電子樂器數(shù)字化接口MIDI(Musical Instrument Digital Interface)格式使用FIFO2,自適應(yīng)差值脈沖編碼調(diào)制ADPCM(Adaptive Differential Pulse CodeModulation)格式使用FIFO3,脈沖編碼調(diào)制PCM(Pluse Code Modulation)格式使用FIFO4等等。
如果要滿足同時(shí)播放的要求,如許多游戲要求有多種音效,就必須針對每種音效設(shè)定一個(gè)FIFO緩沖器來實(shí)現(xiàn)同時(shí)播放的效果,且一旦在芯片設(shè)計(jì)中確定下來,就不能改變,進(jìn)而使系統(tǒng)靈活性低,成本高。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種緩沖器管理方法,以實(shí)現(xiàn)系統(tǒng)靈活性且降低系統(tǒng)成本。
本發(fā)明公開一種緩沖器管理方法,包括如下步驟定義FIFO的劃分屬性和數(shù)據(jù)操作屬性,依據(jù)劃分屬性將FIFO分成若干獨(dú)立的FIFO子模塊,并依據(jù)數(shù)據(jù)操作屬性對FIFO子模塊進(jìn)行數(shù)據(jù)操作。
所述劃分屬性是邊界屬性。
所述邊界屬性是各FIFO子模塊的起始地址和邊界地址、各FIFO子模塊的超始地址和預(yù)設(shè)大小或者各FIFO子模塊的邊界地址和預(yù)設(shè)大小。
所述劃分是由低位地址向高位地址劃分,也可以由高位地址向低位地址劃分,所述劃分屬性是一對讀、寫水標(biāo)的地址位置、FIFO起始地址及至讀、寫水標(biāo)至起始地址的距離值或者FIFO的邊界地址及讀、寫水標(biāo)的至邊界地址的距離值。
所述數(shù)據(jù)操作屬性指CPU水標(biāo)、DSP水標(biāo)或者邏輯單元調(diào)用水標(biāo)。
所述CPU水標(biāo)是FIFO子模塊CPU操作中斷時(shí)的地理位置、所述DSP水標(biāo)是FIFO子模塊DSP操作中斷時(shí)的地理位置,所述邏輯單元調(diào)用水標(biāo)是FIFO子模塊邏輯單元調(diào)用操作中斷時(shí)的地理位置。
所述FIFO子模塊也可以不連續(xù),通過為FIFO子模塊建立邊界屬性表,記錄其所含部分的地址空間進(jìn)而完成該FIFO子模塊邊界屬性的定義。
Firmware程序接受外部的FIFO管理操作請求對FIFO進(jìn)行管理操作。
所述管理操作請求包括申請F(tuán)IFO子模塊、釋放FIFO子模塊及請求間的沖突仲裁。
建立FIFO的空間使用情況記錄表,F(xiàn)irmware接受到請求分配FIFO子模塊的申請時(shí),依據(jù)FIFO空間使用情況記錄表判斷原FIFO是否有足夠的地址空間,如果有,則建立該FIFO子模塊的邊界屬性記錄和數(shù)據(jù)操作水標(biāo)以形成FIFO子模塊,并將該屬性返回;否則,返回申請失敗結(jié)果。
當(dāng)Firmware接受到請求釋放FIFO子模塊空間的請求時(shí),判斷該FIFO子模塊中的數(shù)據(jù)是否已全部被讀出或者已經(jīng)不需要使用,如果是,則刪除該FIFO子模塊的邊界屬性記錄且對FIFO空間使用情況記錄表進(jìn)行修改將該空間并入到FIFO的可使用空間中。
所述釋放請求是FIFO子模塊主動(dòng)上報(bào)的或者由外部提出。
當(dāng)Firmware程序同時(shí)接收到兩個(gè)以上請求分配FIFO的請求時(shí),F(xiàn)irmware程序?qū)⒁罁?jù)各請求的參數(shù)或者FIFO空間使用情況來決定FIFO分配的先后順序。
為FIFO子模塊設(shè)置二個(gè)水標(biāo),一個(gè)CPU讀出水標(biāo),一個(gè)DSP寫入水標(biāo)。
當(dāng)DSP對FIFO子模塊進(jìn)行寫操作時(shí),當(dāng)FIFO子模塊內(nèi)的數(shù)據(jù)超過DSP水標(biāo)時(shí),產(chǎn)生DSP內(nèi)部中斷,使DSP停止對該FIFO子模塊的操作;當(dāng)CPU對FIFO子模塊進(jìn)行讀操作時(shí),如FIFO子模塊內(nèi)的數(shù)據(jù)低于CPU水標(biāo)時(shí),產(chǎn)生CPU內(nèi)部中斷,停止CPU對該FIFO子模塊的讀操作。
所述方法是指先進(jìn)行FIFO劃分屬性初始化設(shè)置,包括設(shè)置各FIFO子模塊低邊界值、CPU水標(biāo)和DSP水標(biāo),該方法進(jìn)一步包括A、當(dāng)接收到線路傳遞來的操作請求時(shí),判斷FIFO邊界設(shè)置是否需要更改,如果需要更改,則進(jìn)入步驟B,否則進(jìn)入步驟C;B、對設(shè)置進(jìn)行更改,但當(dāng)?shù)瓦吔绱笥诟哌吔鐣r(shí),設(shè)置FIFO滿標(biāo)志;C、判斷CPU水標(biāo)設(shè)置是否需要更改,如果需要更改,進(jìn)入步驟D;否則進(jìn)入E;D、進(jìn)行水標(biāo)設(shè)置更改,然后判斷當(dāng)前FIFO子模塊狀態(tài)是否需要產(chǎn)生CPU中斷,如果不產(chǎn)生中斷進(jìn)入步驟E,E、判斷DSP水標(biāo)設(shè)置是否需要更改,如果需要更改進(jìn)入步驟F;否則進(jìn)入步驟G;F、對水標(biāo)設(shè)置進(jìn)行更改,判斷當(dāng)前FIFO狀態(tài)是否需要產(chǎn)生DSP中斷,如果不需要產(chǎn)生DSP中斷,進(jìn)入步驟G;G、判斷是否進(jìn)行讀或?qū)懖僮?,如果需要進(jìn)入對FIFO子模塊的讀寫操作,否則,返回步驟A。
所述對FIFO子模塊的讀寫操作進(jìn)一步包括如下步驟A1、判斷是需要進(jìn)行讀操作還是寫操作,如果需要寫操作,進(jìn)入步驟B1,否則進(jìn)入步驟G1;B1、判斷FIFO是否滿,如果滿進(jìn)入步驟D1,否則進(jìn)入步驟C1;C1、設(shè)置錯(cuò)誤標(biāo)志,進(jìn)入步驟A;D1、進(jìn)入FIFO寫入操作,寫操作完成后進(jìn)入步驟E1;E1、判斷FIFO內(nèi)的數(shù)據(jù)是否超過DSP水標(biāo),如果是進(jìn)入步驟F1,否則進(jìn)入步驟A;F1、產(chǎn)生DSP內(nèi)部中斷后進(jìn)入步驟A;G1、判斷FIFO是否為空,如果是,進(jìn)入步驟H1,否則進(jìn)入步驟I1;H1、產(chǎn)生讀錯(cuò)誤標(biāo)志后進(jìn)入步驟A;I1、讀出一個(gè)字節(jié),進(jìn)入步驟J1;
J1、判斷FIFO里是否還有數(shù)據(jù),如果沒有數(shù)據(jù),進(jìn)入步驟K1;否則進(jìn)入步驟L1;K1、設(shè)FIFO空標(biāo)志后進(jìn)入步驟A;L1、FIFO里所有的字節(jié)向前移一位后,進(jìn)入步驟M1;M1、判斷是否低于CPU水標(biāo),如是進(jìn)入步驟N1,否則進(jìn)入步驟A;N1、產(chǎn)生一個(gè)CPU中斷后進(jìn)入步驟A。
通過本發(fā)明所述的方法,通過定義FIFO的劃分屬性和數(shù)據(jù)操作屬性,將FIFO分成若干獨(dú)立的FIFO子模塊,并依據(jù)數(shù)據(jù)操作屬性對FIFO子模塊進(jìn)行數(shù)據(jù)操作,進(jìn)而可以把一個(gè)整體的FIFO分割成若干單獨(dú)的FIFO,分割數(shù)量可以依據(jù)系統(tǒng)需要進(jìn)行調(diào)整,同時(shí)還可以調(diào)整每個(gè)單獨(dú)FIFO的大小以滿足不同的多媒體格式文件解碼需求,進(jìn)而實(shí)現(xiàn)了FIFO的動(dòng)態(tài)處理,保證芯片的靈活性,滿足多種多媒體解碼的需求,有效的減小了芯片尺寸,降低了芯片成本。
圖1是FIFO工作原理示意圖;圖2是現(xiàn)有技術(shù)系統(tǒng)中FIFO結(jié)構(gòu)圖;圖3是本發(fā)明中FIFO的工作架構(gòu)示意圖;圖4是本發(fā)明中FIFO結(jié)構(gòu)示意圖;圖5是本發(fā)明又一實(shí)施例FIFO結(jié)構(gòu)示意圖;圖6是本發(fā)明FIFO申請流程示意圖;圖7是本發(fā)明中FIFO結(jié)構(gòu)水標(biāo)設(shè)置示意圖;圖8是本發(fā)明實(shí)施例流程一示意圖;圖9是本發(fā)明實(shí)施例流程二示意圖。
具體實(shí)施例方式
本發(fā)明提供一種緩沖器管理方法,在設(shè)計(jì)中采用統(tǒng)一的FIFO結(jié)構(gòu),通過軟件進(jìn)行設(shè)置,可以把一個(gè)整體的FIFO分割成若干單獨(dú)的FIFO,分割數(shù)量可以進(jìn)行設(shè)置達(dá)到系統(tǒng)所需要的FIFO個(gè)數(shù),同時(shí)可以調(diào)整每個(gè)單獨(dú)FIFO的大小,滿足不同的多媒體格式文件解碼需求。通過調(diào)整FIFO的數(shù)量可以保證音樂文件同時(shí)播放,通過調(diào)整FIFO的大小適應(yīng)不同多媒體文件格式,例如MP3需要較大的FIFO空間,而ADPCM格式文件則需要比較少的FIFO空間。本發(fā)明的核心思想是定義FIFO的劃分屬性和數(shù)據(jù)操作屬性,該劃分屬性將FIFO分成若干獨(dú)立的FIFO子模塊,并依據(jù)數(shù)據(jù)操作屬性對FIFO子模塊進(jìn)行數(shù)據(jù)操作。
以劃分屬性是邊界屬性為例。如圖5所示,將一個(gè)統(tǒng)一的FIFOA進(jìn)行分割,通過定義各FIFO子模塊的邊界屬性將FIFOA分成FIFO1、FIFO2、FIFO3,為每個(gè)FIFO設(shè)置水標(biāo)以實(shí)現(xiàn)對各FIFO子模塊數(shù)據(jù)的讀與寫管理。對各FIFO子模塊進(jìn)行劃分的邊界屬性可以有多種方式,包括定義各FIFO子模塊的起始地址和邊界地址或定義各FIFO子模塊的超始地址和預(yù)設(shè)大小(如20個(gè)字節(jié))或者定義各FIFO子模塊的邊界地址和預(yù)設(shè)大小。對各FIFO子模塊的劃分可以由低位地址向高位地址劃分,也可以由高位地址向低位地址劃分。其中,各FIFO子模塊也可以不連續(xù),如圖7所示,F(xiàn)IFO子模塊FIFO1包括FIFO-1及FIFO-2兩部分,通過為FIFO1建立一個(gè)邊界屬性表,記錄其所含兩部分的地址空間進(jìn)而完成該FIFO子模塊邊界的定義。
如圖3所示。本發(fā)明通過外部軟件進(jìn)行FIFO分割的設(shè)置。該外部軟件與芯片內(nèi)部的Firmware程序通訊,F(xiàn)irmware程序負(fù)責(zé)芯片內(nèi)部硬件FIFO的申請、大小控制、釋放或收回及仲裁沖突。
下面以通過設(shè)置起始地址、邊界值對統(tǒng)一FIFO進(jìn)行子模塊分割為例,對本發(fā)明進(jìn)行詳細(xì)說明。建立一原FIFO的空間使用情況記錄表,該表可以是已使用空間記錄或者未使用空間記錄,在該記錄中記錄已經(jīng)使用空間的大小及位置,或者未使用空間的大小及位置。
如圖6所示,F(xiàn)irmware接受到請求分配FIFO的申請,該申請中包括申請的FIFO大小參數(shù);Firmware依據(jù)原FIFO空間使用情況記錄表判斷原FIFO是否有足夠的地址空間,如果有,則相應(yīng)于該請求為其分配空間,建立該FIFO子模塊的邊界屬性記錄和數(shù)據(jù)操作水標(biāo),并將該屬性返回以方便外部對該FIFO子模塊的調(diào)用;否則,返回申請失敗結(jié)果。
當(dāng)某一FIFO子模塊中的數(shù)據(jù)全部被讀出或者已經(jīng)不需要使用時(shí),存在釋放及收回該子模塊空間的情況。當(dāng)Firmware接受到請求釋放該FIFO子模塊空間的請求時(shí),判斷該FIFO子模塊中的數(shù)據(jù)是否全部被讀出或者已經(jīng)不需要使用,如果是,則刪除該FIFO子模塊的邊界屬性記錄且對原FIFO空間使用情況記錄表進(jìn)行修改將該空間并入到原FIFO的可使用空間中,以使該收回的空間可以參與到下一次FIFO子模塊的建立中去。當(dāng)然,也可以設(shè)置為當(dāng)某一FIFO子模塊中的數(shù)據(jù)全部被讀出時(shí),該FIFO子模塊主動(dòng)上報(bào)收回請求,當(dāng)Firmware接受到該請求時(shí)直接釋放該FIFO子模塊空間。
當(dāng)Firmware程序同時(shí)接收到兩個(gè)請求分配FIFO的申請時(shí),F(xiàn)irmware程序?qū)⒁罁?jù)申請的參數(shù)或者原FIFO空間使用情況來決定FIFO分配的先后順序。如一個(gè)請求申請的優(yōu)先級(jí)參數(shù)高于另一個(gè)申請的優(yōu)先級(jí)參數(shù),則優(yōu)先接受高優(yōu)先級(jí)的請求;或者當(dāng)一個(gè)申請的空間請求可以被滿足而另一個(gè)申請的空間請求不能被滿足時(shí),優(yōu)先處理可以被滿足的請求。
在本發(fā)明中,通過為各FIFO子模塊設(shè)置水標(biāo)控制CPU、DSP或者邏輯單元對該子模塊的數(shù)據(jù)操作進(jìn)而實(shí)現(xiàn)對該子模塊大小的調(diào)整。所述CPU水標(biāo)是FIFO子模塊CPU操作中斷時(shí)的地理位置、所述DSP水標(biāo)是FIFO子模塊DSP操作中斷時(shí)的地理位置,所述邏輯單元調(diào)用水標(biāo)是FIFO子模塊邏輯單元調(diào)用操作中斷時(shí)的地理位置。所述CPU水標(biāo)屬性在設(shè)置時(shí)可以是地理位置地址、起始位置及該地理位置至起始位置的距離或者邊界位置及該地理位置至邊界位置的距離。如圖7所示,為該FIFO1模塊設(shè)置二個(gè)水標(biāo),一個(gè)CPU讀出水標(biāo),一個(gè)DSP寫入水標(biāo),通過調(diào)整水標(biāo)至起始位置的大小決定該FIFO1內(nèi)可操作數(shù)據(jù)的大小及FIFO1的大小。當(dāng)DSP對FIFO1進(jìn)行寫操作時(shí),F(xiàn)IFO1內(nèi)的數(shù)據(jù)超過DSP水標(biāo)時(shí),產(chǎn)生DSP內(nèi)部中斷,使DSP停止對該FIFO的操作,當(dāng)CPU對FIFO1進(jìn)行讀操作時(shí),如FIFO1內(nèi)的數(shù)據(jù)低于CPU水標(biāo)時(shí),產(chǎn)生CPU內(nèi)部中斷,使CPU停止對該FIFO1的讀操作。當(dāng)然依據(jù)不同需要可以有不同水標(biāo)設(shè)置方式,比如可以設(shè)置邏輯單元操作水標(biāo),也可以以邊界位置為基準(zhǔn)來設(shè)置水標(biāo)。
本實(shí)施例完整的流程圖如圖8及9所示,具體方法如下110、首先,進(jìn)行FIFO設(shè)置初始化,設(shè)置本FIFO的邊界值,包括低邊界值。同時(shí),設(shè)置CPU水標(biāo)和DSP水標(biāo);當(dāng)從寄存器控制器電路接收到線路傳遞來的操作請求時(shí),進(jìn)入步驟111以判斷該FIFO邊界設(shè)置是否需要更改,如果需要更改,則進(jìn)入步驟112,否則進(jìn)入步驟113;112、對設(shè)置進(jìn)行更改,但當(dāng)?shù)瓦吔绱笥诟哌吔鐣r(shí),設(shè)置FIFO滿標(biāo)志;113、判斷CPU水標(biāo)設(shè)置是否需要更改,如果需要更改,進(jìn)入步驟114;否則進(jìn)入115;114、進(jìn)行水標(biāo)設(shè)置更改,然后判斷當(dāng)前FIFO狀態(tài)是否需要產(chǎn)生CPU中斷,如果不產(chǎn)生中斷進(jìn)入步驟115,115、判斷DSP水標(biāo)設(shè)置是否需要更改,如果需要更改進(jìn)入步驟116;否則進(jìn)入步驟117;116、對水標(biāo)設(shè)置進(jìn)行更改,判斷當(dāng)前FIFO狀態(tài)是否需要產(chǎn)生DSP中斷,如果不需要產(chǎn)生DSP中斷,進(jìn)入步驟117;117、判斷是否進(jìn)行讀或?qū)懖僮?,如果需要進(jìn)入P2程序,否則,返回等待接受從寄存器控制器電路傳遞來的操作請求的步驟。
P2程序如下118、判斷是需要進(jìn)行讀操作還是寫操作,如果需要寫操作,進(jìn)入步驟119,否則進(jìn)入步驟124;119、判斷FIFO是否滿,如果滿進(jìn)入步驟121,否則進(jìn)入步驟120;120、設(shè)置錯(cuò)誤標(biāo)志,進(jìn)入程序P1;121、進(jìn)入FIFO寫入操作,寫操作完成后進(jìn)入步驟122;122、判斷FIFO內(nèi)的數(shù)據(jù)是否超過DSP水標(biāo),如果是進(jìn)入步驟123,否則進(jìn)入P1;123、產(chǎn)生DSP內(nèi)部中斷后進(jìn)入步驟P1;124、判斷FIFO是否為空,如果是,進(jìn)入步驟125,否則進(jìn)入步驟126;125、產(chǎn)生讀錯(cuò)誤標(biāo)志后進(jìn)入程序P1;126、讀出一個(gè)字節(jié),進(jìn)入步驟127;127、判斷FIFO里是否還有數(shù)據(jù),如果沒有數(shù)據(jù),進(jìn)入步驟128;否則進(jìn)入步驟129;128、設(shè)FIFO空標(biāo)志后進(jìn)入程序P1;129、FIFO里所有的字節(jié)向前移一位后,進(jìn)入步驟130;130、判斷是否低于CPU水標(biāo),如是進(jìn)入步驟131,否則進(jìn)入P1;131、產(chǎn)生一個(gè)CPU中斷后進(jìn)入程序P1。
在上述實(shí)施例中,當(dāng)?shù)瓦吔?amp;gt;高邊界時(shí)FIFO始終為滿,不能寫入;FIFO范圍發(fā)生重疊時(shí),不作判斷,所以不糾正由此引起的讀寫錯(cuò)誤。
以上介紹的僅僅是基于本發(fā)明的幾個(gè)較佳實(shí)施例,并不能以此來限定本發(fā)明的范圍。任何對本發(fā)明的裝置作本技術(shù)領(lǐng)域內(nèi)熟知的部件的替換、組合、分立,以及對本發(fā)明實(shí)施步驟作本技術(shù)領(lǐng)域內(nèi)熟知的等同改變或替換均不超出本發(fā)明的揭露以及保護(hù)范圍。
權(quán)利要求
1.一種緩沖器管理方法,其特征在于,包括如下步驟定義FIFO的劃分屬性和數(shù)據(jù)操作屬性,依據(jù)劃分屬性將FIFO分成若干獨(dú)立的FIFO子模塊,并依據(jù)數(shù)據(jù)操作屬性對FIFO子模塊進(jìn)行數(shù)據(jù)操作。
2.如權(quán)利要求1所述的方法,其特征在于,所述劃分屬性是邊界屬性。
3.如權(quán)利要求2所述的方法,其特征在于,所述邊界屬性是各FIFO子模塊的起始地址和邊界地址、各FIFO子模塊的超始地址和預(yù)設(shè)大小或者各FIFO子模塊的邊界地址和預(yù)設(shè)大小。
4.如權(quán)利要求1所述的方法,其特征在于,所述劃分是由低位地址向高位地址劃分,也可以由高位地址向低位地址劃分,
5.如權(quán)利要求1所述的方法,其特征在于,所述劃分屬性是一對讀、寫水標(biāo)的地址位置、FIFO起始地址及至讀、寫水標(biāo)至起始地址的距離值或者FIFO的邊界地址及讀、寫水標(biāo)的至邊界地址的距離值。
6.如權(quán)利要求1至5任一項(xiàng)所述的方法,其特征在于,所述數(shù)據(jù)操作屬性指CPU水標(biāo)、DSP水標(biāo)或者邏輯單元調(diào)用水標(biāo)。
7.如權(quán)利要求6所述的方法,其特征在于,所述CPU水標(biāo)是FIFO子模塊CPU操作中斷時(shí)的地理位置、所述DSP水標(biāo)是FIFO子模塊DSP操作中斷時(shí)的地理位置,所述邏輯單元調(diào)用水標(biāo)是FIFO子模塊邏輯單元調(diào)用操作中斷時(shí)的地理位置。
8.如權(quán)利要求1所述的方法,其特征在于,所述FIFO子模塊也可以不連續(xù),通過為FIFO子模塊建立邊界屬性表,記錄其所含部分的地址空間進(jìn)而完成該FIFO子模塊邊界屬性的定義。
9.如權(quán)利要求1所述的方法,其特征在于,F(xiàn)irmware程序接受外部的FIFO管理操作請求對FIFO進(jìn)行管理操作。
10.如權(quán)利要求9所述的方法,其特征在于,所述管理操作請求包括申請F(tuán)IFO子模塊、釋放FIFO子模塊及請求間的沖突仲裁。
11.如權(quán)利要求10所述的方法,其特征在于,建立FIFO的空間使用情況記錄表,F(xiàn)irmware接受到請求分配FIFO子模塊的申請時(shí),依據(jù)FIFO空間使用情況記錄表判斷原FIFO是否有足夠的地址空間,如果有,則建立該FIFO子模塊的邊界屬性記錄和數(shù)據(jù)操作水標(biāo)以形成FIFO子模塊,并將該屬性返回;否則,返回申請失敗結(jié)果。
12.如權(quán)利要求10所述的方法,其特征在于,當(dāng)Firmware接受到請求釋放FIFO子模塊空間的請求時(shí),判斷該FIFO子模塊中的數(shù)據(jù)是否已全部被讀出或者已經(jīng)不需要使用,如果是,則刪除該FIFO子模塊的邊界屬性記錄且對FIFO空間使用情況記錄表進(jìn)行修改將該空間并入到FIFO的可使用空間中。
13.如權(quán)利要求12所述的方法,其特征在于,所述釋放請求是FIFO子模塊主動(dòng)上報(bào)的或者由外部提出。
14.如權(quán)利要求10所述的方法,其特征在于,當(dāng)Firmware程序同時(shí)接收到兩個(gè)以上請求分配FIFO的請求時(shí),F(xiàn)irmware程序?qū)⒁罁?jù)各請求的參數(shù)或者FIFO空間使用情況來決定FIFO分配的先后順序。
15.如權(quán)利要求6所述的方法,其特征在于,為FIFO子模塊設(shè)置二個(gè)水標(biāo),一個(gè)CPU讀出水標(biāo),一個(gè)DSP寫入水標(biāo)。
16.如權(quán)利要求15所述的方法,其特征在于,當(dāng)DSP對FIFO子模塊進(jìn)行寫操作時(shí),當(dāng)FIFO子模塊內(nèi)的數(shù)據(jù)超過DSP水標(biāo)時(shí),產(chǎn)生DSP內(nèi)部中斷,使DSP停止對該FIFO子模塊的操作;當(dāng)CPU對FIFO子模塊進(jìn)行讀操作時(shí),如FIFO子模塊內(nèi)的數(shù)據(jù)低于CPU水標(biāo)時(shí),產(chǎn)生CPU內(nèi)部中斷,停止CPU對該FIFO子模塊的讀操作。
17.如權(quán)利要求1所述的方法,其特征在于先進(jìn)行FIFO劃分屬性初始化設(shè)置,包括設(shè)置各FIFO子模塊低邊界值、CPU水標(biāo)和DSP水標(biāo),該方法進(jìn)一步包括A、當(dāng)接收到線路傳遞來的操作請求時(shí),判斷FIFO邊界設(shè)置是否需要更改,如果需要更改,則進(jìn)入步驟B,否則進(jìn)入步驟C;B、對設(shè)置進(jìn)行更改,但當(dāng)?shù)瓦吔绱笥诟哌吔鐣r(shí),設(shè)置FIFO滿標(biāo)志;C、判斷CPU水標(biāo)設(shè)置是否需要更改,如果需要更改,進(jìn)入步驟D;否則進(jìn)入E;D、進(jìn)行水標(biāo)設(shè)置更改,然后判斷當(dāng)前FIFO子模塊狀態(tài)是否需要產(chǎn)生CPU中斷,如果不產(chǎn)生中斷進(jìn)入步驟E,E、判斷DSP水標(biāo)設(shè)置是否需要更改,如果需要更改進(jìn)入步驟F;否則進(jìn)入步驟G;F、對水標(biāo)設(shè)置進(jìn)行更改,判斷當(dāng)前FIFO狀態(tài)是否需要產(chǎn)生DSP中斷,如果不需要產(chǎn)生DSP中斷,進(jìn)入步驟G;G、判斷是否進(jìn)行讀或?qū)懖僮鳎绻枰M(jìn)入對FIFO子模塊的讀寫操作,否則,返回步驟A。
18.如權(quán)利要求17所述的方法,其特征在于,所述對FIFO子模塊的讀寫操作進(jìn)一步包括如下步驟A1、判斷是需要進(jìn)行讀操作還是寫操作,如果需要寫操作,進(jìn)入步驟B1,否則進(jìn)入步驟G1;B1、判斷FIFO是否滿,如果滿進(jìn)入步驟D1,否則進(jìn)入步驟C1;C1、設(shè)置錯(cuò)誤標(biāo)志,進(jìn)入步驟A;D1、進(jìn)入FIFO寫入操作,寫操作完成后進(jìn)入步驟E1;E1、判斷FIFO內(nèi)的數(shù)據(jù)是否超過DSP水標(biāo),如果是進(jìn)入步驟F1,否則進(jìn)入步驟A;F1、產(chǎn)生DSP內(nèi)部中斷后進(jìn)入步驟A;G1、判斷FIFO是否為空,如果是,進(jìn)入步驟H1,否則進(jìn)入步驟I1;H1、產(chǎn)生讀錯(cuò)誤標(biāo)志后進(jìn)入步驟A;I1、讀出一個(gè)字節(jié),進(jìn)入步驟J1;J1、判斷FIFO里是否還有數(shù)據(jù),如果沒有數(shù)據(jù),進(jìn)入步驟K1;否則進(jìn)入步驟L1;K1、設(shè)FIFO空標(biāo)志后進(jìn)入步驟A;L1、FIFO里所有的字節(jié)向前移一位后,進(jìn)入步驟M1;M1、判斷是否低于CPU水標(biāo),如是進(jìn)入步驟N1,否則進(jìn)入步驟A;N1、產(chǎn)生一個(gè)CPU中斷后進(jìn)入步驟A。
全文摘要
本發(fā)明公開一種緩沖器管理方法,包括如下步驟定義FIFO的劃分屬性和數(shù)據(jù)操作屬性,依據(jù)劃分屬性將FIFO分成若干獨(dú)立的FIFO子模塊,并依據(jù)數(shù)據(jù)操作屬性對FIFO子模塊進(jìn)行數(shù)據(jù)操作。通過本發(fā)明實(shí)現(xiàn)系統(tǒng)靈活性且降低系統(tǒng)成本。
文檔編號(hào)G06F5/06GK1834896SQ200510137069
公開日2006年9月20日 申請日期2005年12月20日 優(yōu)先權(quán)日2005年12月20日
發(fā)明者沈方, 宋戈, 麥克·方 申請人:方泰開曼公司