專利名稱:一種先進先出緩沖器及緩存數據的方法
技術領域:
本發明涉數據緩存技術領 域,特別涉及一種先進先出緩沖器及緩存數據的方法。
背景技術:
在數據傳輸過程中,經常會用到先進先出(FIFO, First In First Out)作為數據緩沖器,用來匹配不同傳輸速度之間的數據傳輸。圖I是FIFO在實際應用中的位置示意圖,可見,FIFO通常在發送方和接收方之間。圖2是現有的FIFO的結構示意圖,參見圖I和圖2,假設FIFO的深度為2~m,寬度為n,各信號的描述如下fifo_wdata fifo寫數據總線,位寬為n ;fifo_wr fifo 寫使能信號;fifo_wptr :fifo 寫指針;fifo_rdata fifo讀數據總線,位寬為n ;fifo_rd fifo 讀使能信號;fifo_rptr :fifo 讀指針;full fifo 滿標志信號;empty fifo 空標志信號;圖2中的FIFO—般會用雙端的靜態隨機存儲器(SRAM)或者寄存器文件(Register File)作為存儲單元。FIFO控制器單元電路主要是對FIFO進行控制,包括讀指針控制電路,與指針控制電路和fifo的空滿標志控制電路。FIFO每與回一個數據,與指針增加1,每讀取一個數據,讀地址指針增加I。當讀地址和寫地址低位相同時(除去最高位),則表示FIFO為空或者滿,具體是空或滿由讀寫地址的最高位來判斷。當讀寫FIFO的數據寬度是固定的時候,普通的FIFO能夠有效的處理數據發送方和接收方之間的數據。然而,在許多場合之下需要對不同的數據帶寬總線進行快速傳輸,例如采用直接存儲器存取(DMA)方式下載數據時寬度可能是lbyte,2byte,3byte或4byte,本地功能模塊讀取FIFO的數據寬度也有可能是lbyte, 2byte,3byte,4byte或8byte等。那么這種情況下,現有的FIFO至少存在如下問題I、由于讀寫的數據寬度不一致且不等長,無法實現任意的數據寬度讀寫;2、即使在fifo讀寫數據之前進行調整,但是數據傳輸的效率將會大大降低,無法做到數據的快速無縫傳輸。
發明內容
本發明實施例提供了一種先進先出緩沖器及緩存數據的方法,能夠支持任意的數據寬度進行FIFO讀寫,且實現數據的快速無縫傳輸。本發明實施例提供了一種先進先出緩沖器,包括寫指針、寫指針控制電路、寫回控制電路、移位寄存器,移位控制電路、讀指針、讀控制電路以及FIFO控制電路,其中,
寫指針,用于指向下個數據寫回的地址寫指針控制電路,用于計算寫回地址,控制寫指針指向該地址;寫回控制電路,用于提取出已排序的待寫回數據,將所述待寫回的數據寫回到移位寄存器;讀指針,用于始終指向移位寄存器中的0地址位;讀控制電路,用于對待讀取的數據進行格式處理;移位寄存器,用于存儲數據;移位控制電路,用于從移位寄存器中讀取數據時,控制移位寄存器進行移位操作,每讀出去多少個數據,移位寄存器就像0地址方向移動多少;FIFO控制電路,用于記錄移位寄存器中當前有效數據個數,每次寫,累加寫數據個數,每次讀,減去讀出數據的個數。其中,所述先進先出緩沖器中的FIFO控制電路,還用于獲知移位寄存器中存儲的有效數據個數小于將要讀取的數據量時,向接收方發出空標志。其中,所述先進先出緩沖器還中的FIFO控制電路,還用于獲知移位寄存器中存儲的剩余空間小于將要寫入的數據量時,向發送方發出滿標志。本發明實施例還提供了一種緩存數據的方法,應用于用移位寄存器作為存儲單元的先進先出緩沖器,所述方法包括當需要向先進先出緩沖器中寫入數據時,提取出已排序的待寫回數據,將所述待寫回的數據寫回到移位寄存器,每次寫,累加寫數據個數;當需要從先進先出緩沖器中讀出數據時,讀指針始終指向移位寄存器中的0地址位;對待讀取的數據進行格式處理;每次讀,從所述移位寄存器中當前有效數據個數中減去讀出數據的個數,并且,每讀出去多少個數據,移位寄存器就像0地址方向移動多少。其中,所述方法還包括在獲知移位寄存器中存儲的有效數據個數小于將要讀取的數據量時,向接收方發出空標志。其中,所述方法還包括在獲知移位寄存器中存儲的剩余空間小于將要寫入的數據量時,向發送方發出滿標志。其中,計算寫回地址的步驟包括應用當前FIFO控制電路有效數據計數器的值寫減去當前讀取的數據個數,得到寫回地址。其中,確定寫回的數據個數的步驟包括根據發送方發出的發送數據量決定寫回的數據個數。其中,確定讀取的數據個數的步驟包括根據接收方發出的讀數據量決定讀取的數據個數。應用本發明實施例提供的先進先出緩沖器及緩存數據的方法,在不同帶寬之間進行數據傳輸的時候,不需要對數據做任何處理,可以快速,高效的進行數據傳輸,因而本發明實施例能夠支持任意的數據寬度進行FIFO讀寫,且實現了數據的快速無縫傳輸。同時,本發明實施例的控制比較簡單,只需要控制一個地址指針就能夠對FIFO進行讀寫控制。
為了更清楚地說明本發明實施例和現有技術中的技術方案,下面將對實施例及現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖I是FIFO在實際應用中的位置示意圖;圖2是現有的FIFO的結構示意圖;圖3是本發明實施例提供的一種FIFO結構示意圖;圖4是本發明實施例提供的一種FIFO的內部結構示意圖。
具體實施例方式下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。參見圖3,其是本發明實施例提供的一種FIFO結構示意圖,參見圖4,其是本發明實施例提供的一種FIFO的內部結構示意圖。結合圖3和圖4,本發明實施例所提供的先進先出緩沖器包括寫指針wptr、寫指針控制電路、寫回控制電路、移位寄存器,移位控制電路、讀指針rptr、讀控制電路以及FIFO控制電路,其中,寫指針wptr,用于指向下個數據寫回的地址;寫指針控制電路,用于計算寫回地址,控制寫指針指向該地址;寫回控制電路,提取出已排序的待寫回數據,將所述待寫回的數據寫回到移位寄存器,每次寫,累加寫數據個數,;讀指針rptr,用于始終指向移位寄存器中的0地址位;讀控制電路,用于對待讀取的數據進行格式處理,例如,格式轉換,位數擴展等;移位寄存器,用于存儲數據;移位控制電路,用于從移位寄存器中讀取數據時,控制移位寄存器進行移位操作,每讀出去多少個數據,移位寄存器就像0地址方向移動多少;FIFO控制電路,用于記錄移位寄存器中當前有效數據個數,每次寫,累加寫數據個數,每次讀,減去讀出數據的個數。上述先進先出緩沖器中的FIFO控制電路,還用于獲知移位寄存器中存儲的有效數據個數小于將要讀取的數據量時,向接收方發出空標志。上述先進先出緩沖器還中的FIFO控制電路,還用于獲知移位寄存器中存儲的剩余空間小于將要寫入的數據量時,向發送方發出滿標志。圖3 中,“fifo_wr_cnt”表不寫 FIFO 的數據個數;“fifo_rd_cnt”表不讀 FIFO 的數據個數。仍參見圖3和圖4,本發明實施例還提供了一種緩存數據的方法,該方法應用于用移位寄存器作為存儲單元的先進先出緩沖器,所述方法包括當需要向先進先出緩沖器中寫入數據時,提取出已排序的待寫回數據,將所述待寫回的數據寫回到移位寄存器;當需要從先進先出緩沖器中讀出數據時,讀指針始終指向移位寄存器中的0地址位;對待讀取的數據進行格式處理;每次讀,從所述移位寄存器中當前有效數據個數中減去讀出數據的個數,并且,每讀出去多少個數據,移位寄存器就像0地址方向移動多少。在本發明實施例中,由于FIFO是支持任意數據寬度的,因此數據發送方發送的數 據寬度每次可能會不一樣,寫回控制電路就需要對整個數據總線進行解析,從而提取出已排序的待寫回數據,將所述待寫回的數據寫回到移位寄存器中。因此,移位寄存器的寫使能是由數據發送方的寫使能和FIFO的寫地址,寫數據個數共同決定的。而寫回的數據個數是有數據發送方確定的。讀使能和讀數據個數由數據接收方決定的。基于上述說明,可以理解,在向FIFO寫回地址時,下述步驟是同時完成的計算寫回地址,控制寫指針指向該地址;確定寫回的數據個數,根據寫指針指向的移位寄存器中的地址,對寫指針所指向的地址發出寫使能和所寫數據;記錄移位寄存器中當前有效數據個數,每次寫,累加寫數據個數。需要說明的是,上述方法還包括在獲知移位寄存器中存儲的有效數據個數小于將要讀取的數據量時,向接收方發出空標志。需要說明的是,上所述方法還包括在獲知移位寄存器中存儲的剩余空間小于將要寫入的數據量時,向發送方發出滿標志。需要說明的是,無論是先進先出緩沖器的實施例,還是緩存數據的方法實施例,其中計算寫回地址的步驟包括應用當前FIFO控制電路有效數據計數器的值寫減去當前將要讀取的數據個數,得到寫回地址。因為讀指針始終指向0,FIFO的寫指針就是FIFO控制電路的值(即FIFO控制電路有效數據計數器的值)減去當前要讀的數據個數得到的結果。需要說明的是,無論是先進先出緩沖器的實施例,還是緩存數據的方法實施例,其中確定寫回的數據個數的步驟包括根據發送方發出的發送數據量決定寫回的數據個數。需要說明的是,無論是先進先出緩沖器的實施例,還是緩存數據的方法實施例,其中確定讀取的數據個數的步驟包括根據接收方發出的讀數據量決定讀取的數據個數。需要說明的是,無論是先進先出緩沖器的實施例,還是緩存數據的方法實施例,向FIFO寫數據時,從寫指針處開始,依次將要寫的數據寫入fifo的移位寄存器中,低位數據寫在低地址的位置,高位數據寫在高位地址;同時,FIFO控制電路累加寫入fifo的數據個數。需要說明的是,無論是先進先出緩沖器的實施例,還是緩存數據的方法實施例,從FIFO讀數據時,由于數據是按照發送方提供的順序進行存放的,且最低位數據一定存放在0地址,因此,在讀取數據的時候一定是從0地址處將需要讀取的數據個數依次讀出,同時會把高位的數據按照地址大小順序依次移入到0地址處。讀取的數據量就是移位寄存器移位的偏移量。同時,FIFO控制電路需減去讀出的FIFO數據個數。需要說明的是,無論是先進先出緩沖器的實施例,還是緩存數據的方法實施例,同時讀寫數據的時候,是上面描述向FIFO寫數據和從FIFO讀數據的綜合情況,FIFO低地址的數據將被讀取走,具體數據量由接收方發出的讀數據個數決定,剩下沒有被讀取的高地址數據會按照地址大小順序依次的移入到0地址,將要寫回的新數據將被寫入移位后的地址后面。FIFO控制電路會加上寫入的數據個數,同時減去讀取的數據個數。需要說明的是,移位寄存器是先讀后寫的,也就是說對同一個地址進行讀寫的時候,先會將數據讀取走,再將新的數據寫入到該地址中。而且移位寄存器在移位時,只需要將有效數據進行移位,無效的數據并不需要對其進行移位操作。比如=FIFO中現在有4個有效數據,接下來要讀走這4個數據,同時還有4個新的數據要進來,那么會先將這4個數據先取走,再將4個新的數據寫進來。這個過程當中,FIFO其它地址的數據都是無效的,并不用進行移位操作。需要說明的是,無論是先進先出緩沖器的實施例,還是緩存數據的方法實施例,由于接收方讀數據的寬度可以是不固定的,因此空標志位(empty)可以根據不同的應用來設定,實際上是由接收方的讀取數據寬度來決定該FIFO當前是否為空的狀態。為了讓FIFO 的應用場合更廣泛,可以將FIFO控制電路記錄的值即有效數據個數作為FIFO輸出的狀態值。數據接收方將需要讀取的數據量和FIFO輸出的狀態值即有效數據個數進行比較,當有效數據個數小于將要讀取的數據量時,可以認為FIFO已經讀空,盡管FIFO中此時還可能存放一些有效數據。此時接收方不應該發出讀申請。需要說明的是,無論是先進先出緩沖器的實施例,還是緩存數據的方法實施例,由于發送方寫數據的寬度也可以是不固定的,因此滿標志位(full)也可以根據不同的應用來設定,實際上由發送方的寫取數據寬度來決定該FIFO當前是否為滿的狀態。為了讓FIFO的應用場合更廣泛,將FIFO的剩余空間值作為FIFO狀態輸出。數據發送方將需要發送的數據量和FIFO的剩余空間值進行比較,當FIFO的剩余空間值小于將要發送的數據量時,可以認為FIFO當前已經滿了,盡管FIFO中可能還有一定的空間。此時發送方不應該發出寫申請。應用本發明實施例提供的先進先出緩沖器及緩存數據的方法,在不同帶寬之間進行數據傳輸的時候,不需要對數據做任何處理,可以快速,高效的進行數據傳輸,因而本發明實施例能夠支持任意的數據寬度進行FIFO讀寫,且實現了數據的快速無縫傳輸。同時,本發明實施例的控制比較簡單,只需要控制一個地址指針就能夠對FIFO進行讀寫控制。下面以直接存儲器存取(DMA, Direct Memory Access)方式作為數據發送方,3D加速模塊作為數據接收方為例,對本發明再做詳細描述。DMA作為數據發送方,是不受制于本地功能模塊的,例如,不受限于本地的3D加速模塊,DMA控制器一旦響應了 DMA的請求,那么就會按照DMA控制器的要求進行數據發送,并不會考慮本地功能模塊的接收情況,直到數據發送完成。假設DMA的數據總線寬度為32bit,那么DMA傳輸的有效數據有可能是8bit,16bit,24bit,32bit。作為數據接收方的3D加速模塊,其接收的數據有三種類型,RGB數據(以rgb888格式為例,一個像素對應的數據量是24bit),深度depth數據(一個像素對應的數據量是16bit), alpha數據(一個像素對應的數據量是8bit)。假設3D加速模塊每次渲染都是以32行x32列作為一塊來處理的。DMA發送的RGB數據,深度cbpth數據,alpha數據,3D加速模塊會存放到本地的內存(memory)中,為了方便后續3D加速渲染的效率,會將每4個像素點的值存放到一個memory地址中,因此所有memory的深度都應該是256。不同的memory,其數據寬度是不一樣的,對于RGB數據來說,一個地址對應96bit,對于cbpth數據而言,一個地址對應64bit,對于alpha數據而言,一個地址對應32bit,另外在塊(block)不規整以及起始地址不對齊的情況下,DMA下載數據的有效字節數會不一樣,memory寫回數據的寬度也會不一樣。因為block是基于像素點的,在寫回時,數據至少是一個像素點所對應的數據,所以可以用字節使能(byte enable)來控制不規則的寫回。在表I中,列舉了數據緩沖器在不同情況下,讀寫數據長度的具體情況。表I
正常情況,一次寫4個字節,讀8個字節,讀的速度大于寫的速度; Depth 在tile不規整的情況下,讀有可能會是2, 4, 6, 8個字節,寫回 有可能是2,4個字節。在起始地址不對齊的情況,寫回則有可能 是1,2,3,4個字節。
正常情況,一次寫4個字節,讀12個字節,讀的速度大于寫的速 度;在tile不規整的情況下,讀有可能會是3,6,9,12個字節,
0寫回有可能是1,2,3,4個字節。在起始地址不對齊的情況,寫
回則有可能是1,2,3,4個字節。
正常情況,一次寫4個字節,讀4個字節,讀的速度等于寫的速 Altiha 度;在tile不規整的情況下,讀有可能會是1,2,3,4個字節,
P寫回有可能是I,2,3,4個字節。在起始地址不對齊的情況,寫
回則有可能是1,2,3,4個字節。由上分析可以得知,作為數據緩沖器的FIFO的寫回的數據寬度有可能是lbyte,2byte, 3byte,4byte 四種情況,FIFO 讀取的數據寬度有可能是 lbyte, 2byte, 3byte,4byte,6byte,8byte,9byte, 12byte八種情況。是一個非常典型的讀寫FIFO數據寬度不等長而且可變的情況。在應用本發明實施例提供的FIFO時,如圖4所示,假設寫數據寬度為nl,讀數據寬度為n2,讀地址指針始終指向0地址。整個FIFO的設計分為6個部分,寫回控制電路,移位寄存器,讀控制電路,寫指針控制電路,移位控制電路,FIFO控制電路。先做如下的約定數據發送方DMA這邊可以在任意時刻發送任意字節書的數據,數據接收方3D加速模塊在滿了4個像素的數據或者最后剩下的不滿4個像素的數據時,就發起一次讀FIFO的操作。寫回控制電路主要是確定寫回的數據個數,然后根據寫指針指向的地址,對移位寄存器相應的地址發出寫使能和寫的數據,寫回控制電路的電路結構由多路選擇器組成,其是現有已經存在的控制電路,在此不再詳細說明。移位寄存器是存儲數據的地方,在本實施例子中寬度是8bit,深度是15,這是考慮到傳輸最差情況下所需要的緩沖深度值。由移位控制電路來決定其移位操作。當FIFO讀使能有效候,移位寄存器就需要做移位的操作,每讀出去多少個byte的數據,移位寄存器就向0地址方向移多少個byte。寫指針控制電路用來計算FIFO的寫回地址。FIFO控制電路的值(即FIFO控制電路有效數據計數器的值減去將要讀取的數據個數,便得到寫指針的值。
本實施例中,FIFO控制電路主要包括一個計數器,該計數器用來記錄FIFO中的當前時刻有效數據個數,每次寫,計數器會累加寫數據個數,每次讀,計數器會減去讀取數據的個數。根據計數器的值即有效數據個數發出空滿標志,在本例子中,不需要滿(full)標志,讀的速度會比寫的要塊。空(empty)標志由當前下載數據的具體內容來決定,不同的分量的空標志所產生的條件是不同的。因此會根據FIFO計數器的數組輸出,由本地功能模塊如3D加速模塊自己去判斷是否為空。當DMA下載的是RGB數據時向FIFO中寫入的數據量可以是lbyte, 2byte, 3byte,4byte,從FIFO中讀出的數據量則有可能是3byte, 6byte, 9byte, 12byte。正常情況下,FIFO計數器的有效數據量小于12byte時,認為FIFO為空。在讀當前行的最后一次數據時,FIFO 計數器的值即有效數據個數小于剩余像素對應的數據個數時,也認為FIFO為空。當DMA下載的是depth數據時向FIFO中寫入的數據量可以是lbyte, 2byte,3byte, 4byte,從FIFO中讀出的數據量則有可能是2byte, 4byte, 6byte, 8byte。正常情況下,FIFO計數器的值即有效數據量的小于Sbyte時,認為FIFO為空。在讀當前行的最后一次數據時,FIFO計數器的值即有效數據個數小于剩余像素對應的數據個數時,也認為FIFO為空。當DMA下載的是alpha數據時向FIFO寫入的數據量可以是lbyte, 2byte, 3byte,4byte,從FIFO讀出的數據量則有可能是lbyte, 2byte, 3byte, 4byte。正常情況下,FIFO計數器的值即有效數據量小于4byte時,認為FIFO為空。在讀當前行的最后一次數據時,FIFO計數器的值即有效數據個數小于剩余像素對應的數據個數時,也認為FIFO為空。至此,對于讀寫寬度不一致的情況下,不需要對數據做任何處理,就可以快速,高效的進行數據傳輸,因而本發明實施例能夠支持任意的數據寬度進行FIFO讀寫,且實現了數據的快速無縫傳輸。同時,本發明實施例的控制比較簡單,只需要控制一個地址指針就能夠對FIFO進行讀寫控制。本發明實施例提供的FIFO同樣可以應用在請求DMA上傳數據的情況。上傳的時候,讀FIFO不受本地功能模塊影響,因此要保證寫FIFO的速度要快,不需要空標志,但是會告訴本地功能模塊滿標志,只要FIFO沒有滿,就應該向FIFO中填寫數據。其寫指針,移位寄存器的控制和DMA下載是一樣的。當然,本發明實施例提供的FIFO還可以用在其它數據傳輸的地方,只要把FIFO的空滿標志傳輸給數據發送方和數據接收方,就能夠實現快速的數據傳輸,而且控制邏輯也十分的簡單。需要說明的是,在本文中,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有
的要素。在沒有更多限制的情況下,由語句“包括一個......”限定的要素,并不排除在包
括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。本領域普通技術人員可以理解實現上述方法實施方式中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,所述的程序可以存儲于計算機可讀取存儲介質中,這里所稱得的存儲介質,如R0M/RAM、磁碟、光盤等。以上所述僅為本發明的較佳實施例而已,并非用于限定本發明的保護范圍。凡在本發明的精神和原則之內所作的任何修改、等同替換、改進等,均包含在本發明的保護范圍 內。
權利要求
1.一種先進先出緩沖器,其特征在于,包括寫指針、寫指針控制電路、寫回控制電路、移位寄存器,移位控制電路、讀指針、讀控制電路以及FIFO控制電路,其中, 寫指針,用于指向下個數據寫回的地址; 寫指針控制電路,用于計算寫回地址,控制寫指針指向該地址; 寫回控制電路,用于提取出已排序的待寫回數據,將所述待寫回的數據寫回到移位寄存器; 讀指針,用于始終指向移位寄存器中的0地址位; 讀控制電路,用于對待讀取的數據進行格式處理; 移位寄存器,用于存儲數據; 移位控制電路,用于從移位寄存器中讀取數據時,控制移位寄存器進行移位操作,每讀出去多少個數據,移位寄存器就像0地址方向移動多少; FIFO控制電路,用于記錄移位寄存器中當前有效數據個數,每次寫,累加寫數據個數,每次讀,減去讀出數據的個數。
2.根據權利要求I所述的先進先出緩沖器,其特征在于,所述先進先出緩沖器中的FIFO控制電路,還用于獲知移位寄存器中存儲的有效數據個數小于將要讀取的數據量時,向接收方發出空標志。
3.根據權利要求I或2所述的先進先出緩沖器,其特征在于,所述先進先出緩沖器還中的FIFO控制電路,還用于獲知移位寄存器中存儲的剩余空間小于將要寫入的數據量時,向發送方發出滿標志。
4.一種緩存數據的方法,其特征在于,應用于用移位寄存器作為存儲單元的先進先出緩沖器,所述方法包括 當需要向先進先出緩沖器中寫入數據時, 提取出已排序的待寫回數據,將所述待寫回的數據寫回到移位寄存器,每次寫,累加寫數據個數; 當需要從先進先出緩沖器中讀出數據時, 讀指針始終指向移位寄存器中的0地址位; 對待讀取的數據進行格式處理;每次讀,從所述移位寄存器中當前有效數據個數中減去讀出數據的個數,并且,每讀出去多少個數據,移位寄存器就像0地址方向移動多少。
5.根據權利要求4所述的方法,其特征在于,所述方法還包括在獲知移位寄存器中存儲的有效數據個數小于將要讀取的數據量時,向接收方發出空標志。
6.根據權利要求4或5所述的方法,其特征在于,所述方法還包括在獲知移位寄存器中存儲的剩余空間小于將要寫入的數據量時,向發送方發出滿標志。
7.根據權利要求4所述的方法,其特征在于,計算寫回地址的步驟包括 應用當前FIFO控制電路有效數據計數器的值寫減去當前讀取的數據個數,得到寫回地址。
8.根據權利要求4所述的方法,其特征在于,確定寫回的數據個數的步驟包括 根據發送方發出的發送數據量決定寫回的數據個數。
9.根據權利要求4所述的方法,其特征在于,確定讀取的數據個數的步驟包括 根據接收方發出的讀數據量決定讀取的數據個數。
全文摘要
本發明實施例公開了一種先進先出緩沖器及緩存數據的方法,所述先進先出緩沖器包括寫指針、寫指針控制電路、寫回控制電路、移位寄存器,移位控制電路、讀指針、讀控制電路以及FIFO控制電路,其中,讀指針,用于始終指向移位寄存器中的0地址位;移位寄存器,用于存儲數據;移位控制電路,用于從移位寄存器中讀取數據時,控制移位寄存器進行移位操作,每讀出去多少個數據,移位寄存器就像0地址方向移動多少;FIFO控制電路,用于記錄移位寄存器中當前有效數據個數,每次寫,累加寫數據個數,每次讀,減去讀出數據的個數。應用本發明,在不同帶寬之間進行數據傳輸的時候,不需要對數據做任何處理,支持任意的數據寬度進行FIFO讀寫。
文檔編號G06F5/06GK102654827SQ20111005004
公開日2012年9月5日 申請日期2011年3月2日 優先權日2011年3月2日
發明者劉濟凌, 胡勝發 申請人:安凱(廣州)微電子技術有限公司