一種低功耗fifo的電路結構的制作方法
【專利摘要】本實用新型提供一種低功耗FIFO的電路結構,包括大容量的靜態隨機存儲器、用于控制在靜態隨機存儲器寫入數據地址的寫控制電路,和用于控制從靜態隨機存儲器讀出數據地址的讀控制電路,其特征在于:所述的大容量的靜態隨機存儲器由若干個小容量的靜態隨機存儲器構成;本電路結構還包括用于控制每個小容量的靜態隨機存儲器的工作模式的模式控制器,模式控制器的輸入端分別與寫控制電路和讀控制電路連接,模式控制器的輸出端數量與小容量的靜態隨機存儲器相同,每個模式控制器的輸出端與一個小容量的靜態隨機存儲器連接。利用本實用新型結構極大地減小了功耗,節約了電能。
【專利說明】
一種低功耗FIFO的電路結構
技術領域
[0001]本實用新型涉及集成電路設計的技術領域,具體涉及一種低功耗FIFO(先入先出)的電路結構。
【背景技術】
[0002]FIFO是指先入先出(first in first out),它在當今集成電路中是廣泛被使用的結構,尤其是大規模的復雜的SOC(系統級芯片)芯片中,應用領域較多,如遠程通信、數字信號處理、大容量存儲系統、圖像處理、打印系統等等。其主要用途是用來緩沖數據,位于發送方和接收方之間,當發送方和接收方的數據率不一致的時候,或者發送出去的數據還沒有被接收方讀取走的時候,這些數據就必須要用FIFO來做一下數據緩沖,避免數據遺漏或丟失。在芯片設計過程中,如何來設計FIFO的容量或者深度,要根據應用需求來決定,一般FIFO的深度都是用最壞情況來考慮,倘若發送方在某個時間段內,突發地發送了大量數據,而接收方還來不及讀取走的時候,這時候就必須要使用一個足夠大的FIFO來存儲這些數據。對于這樣一種大容量的FIF0,就需要一塊較大的存儲空間。在當今芯片設計中,一般會用到一塊容量較大的SRAM(靜態隨機存儲器)來作為存儲數據的空間,其結構如圖1所示,FIFO內還需要有讀寫控制兩個子模塊,分別控制寫入數據的地址和讀出數據的地址。
[0003]在如今的芯片設計過程中,低功耗是個非常關注的方面,無論是大型芯片還是小型芯片,都對功耗指標有所要求。尤其是在一些移動設備或者小型設備上,低功耗方面的要求非常高。然而,對于一個大容量的FIF0,若其所搭配的是一整塊大的SRAM來做數據存儲空間的話,它在工作過程中,這一個大塊SRAM的每一次讀或寫操作,其功耗都是較大的。因此,對于大容量FIFO的功耗較高的問題,必須要解決。
[0004]然而經過分析實際中的工作情況,對于這樣一種大容量的FIFO來說,若在所有工作時間內,并不是總是真的要用得到最大的容量,僅僅在特殊情況或者最壞情況下才有可能用得到。若在多數情況下,FIFO內部其實并沒有存儲很多的數據,那么這塊大的SRAM內,其實很多空間是沒有真的被利用到的。
[0005]現代的低功耗的SRAM,其內部電路設計方面已經有所改進,有的可以有SD(shutdown)、DS(deep sleep)、LS(light sleep)等幾種低功耗工作模式。根據實際工作情況和需要,當某一個SRAM不需要其工作的時候,可以把它至于合適的低功耗模式下。SD模式是指完全關閉,該塊SRAM的內部電源整個被切斷,以節省靜態功耗,在SD模式下,內部存儲的數據不能被保持,會完全丟失。DS模式是指深度睡眠,關閉SRAM內部的周邊電路,并且把存儲單元的內部核心電壓降低,以節省一些靜態功耗,但內部已經存儲的數據,不會被丟失。LS模式是輕度睡眠,僅僅關閉掉SRAM的周邊電路,存儲單元的內部核心電壓仍然保持,所以已經存儲的數據,不會被丟失。
[0006]對于這樣一種內部只有一整塊大的SRAM的FIFO來說,若系統開始工作后,根據功能要求,它里面的這塊大的SRAM是無法整個進入睡眠模式或關閉模式的,它就是需要一直在工作狀態,即使沒有讀寫的操作,因為它至少也要一直處于待命狀態。在它的待命狀態的靜態功耗是比較大的。另一方面,當有數據寫入和讀出的時候,對于一塊大的SRAM的讀寫操作,其功耗也是較大的。所以,這塊大的SRAM,無論是整體待命狀態,還是處于讀寫的工作狀態,這兩個方面功耗大的問題,需要用新方法來解決。
【實用新型內容】
[0007]本實用新型要解決的技術問題是:提供一種低功耗FIFO的電路結構,節約電能。
[0008]本實用新型為解決上述技術問題所采取的技術方案為:一種低功耗FIFO的電路結構,包括大容量的靜態隨機存儲器、用于控制在靜態隨機存儲器寫入數據地址的寫控制電路,和用于控制從靜態隨機存儲器讀出數據地址的讀控制電路,其特征在于:所述的大容量的靜態隨機存儲器由若干個小容量的靜態隨機存儲器構成;本電路結構還包括用于控制每個小容量的靜態隨機存儲器的工作模式的模式控制器,模式控制器的輸入端分別與寫控制電路和讀控制電路連接,模式控制器的輸出端數量與小容量的靜態隨機存儲器相同,每個模式控制器的輸出端與一個小容量的靜態隨機存儲器連接。
[0009]按上述方案,所述的模式控制器包括計數器和喚醒信號發生裝置,所述的計數器的輸入端分別與寫控制電路和讀控制電路連接,計數器的輸出端與喚醒信號發生裝置連接,喚醒信號發生裝置的輸出端與小容量的靜態隨機存儲器連接。
[0010]本實用新型的有益效果為:
[0011 ] 1、通過將原有的一整個大容量的靜態隨機存儲器替換為若干個小容量的靜態隨機存儲器,當讀寫數據量較少時,僅用其中I個或幾個小容量的靜態隨機存儲器,其它小容量的靜態隨機存儲器處于關閉狀態,當所用的小容量的靜態隨機存儲器不足以存儲寫入的數據量時,智能的喚醒其中I個處于關閉狀態的小容量的靜態隨機存儲器;利用本實用新型結構極大地減小了功耗,節約了電能。
【附圖說明】
[0012]圖1為現有技術中FIFO的電路結構圖。
[0013]圖2為本實用新型一實施例的電路結構圖。
【具體實施方式】
[0014]下面結合具體實例和附圖對本實用新型做進一步說明。
[0015]本實用新型提供一種低功耗FIFO的電路結構,如圖2所示,包括大容量的靜態隨機存儲器、用于控制在靜態隨機存儲器寫入數據地址的寫控制電路、用于控制從靜態隨機存儲器讀出數據地址的讀控制電路、和用于控制每個小容量的靜態隨機存儲器的工作模式的模式控制器,所述的大容量的靜態隨機存儲器由若干個小容量的靜態隨機存儲器構成;模式控制器的輸入端分別與寫控制電路和讀控制電路連接,模式控制器的輸出端數量與小容量的靜態隨機存儲器相同,每個模式控制器的輸出端與一個小容量的靜態隨機存儲器連接。模式控制器輸出喚醒信號,喚醒相應的小容量的靜態隨機存儲器。
[0016]所述的模式控制器可以采取各種硬件結構,優選的,本實施例的模式控制器包括計數器和喚醒信號發生裝置,所述的計數器的輸入端分別與寫控制電路和讀控制電路連接,計數器的輸出端與喚醒信號發生裝置連接,喚醒信號發生裝置的輸出端與小容量的靜態隨機存儲器連接。
[0017]讀、寫控制電路分別控制讀寫兩個指針,寫指針指向下一個需要寫入的地址,讀指針指向下一個需要讀出的地址。在開始工作的時候,靜態隨機存儲器內部沒有存儲任何數據,寫指針和讀指針都指向起始地址,第一塊小容量的靜態隨機存儲器處于工作狀態,其它小容量的靜態隨機存儲器處于關閉狀態。當發送方有數據發過來的時候,每個數據依次地寫入第一塊小容量的靜態隨機存儲器,并且寫指針依次上移,指向下一個可用的地址。當接收方讀取數據走的時候,讀指針依次上移,讀取走了的數據,其空間釋放出來。當寫指針寫到第一塊小容量的靜態隨機存儲器的頂部的時候,可以循環回來,只要讀取走了的空間,是可以繼續使用的。
[0018]模式控制器能夠根據讀寫指針的位置,按情況地去開啟需要工作的小容量的靜態隨機存儲器,并關閉掉完全不需要工作的其他小塊,或者把它們置于睡眠模式,可以根據需要設置深度睡眠或淺度睡眠模式。通過這樣的預測式地開啟需要工作的部分,關閉不必要的部分,可以極大地節省動態功耗,同時也可以節省大量的靜態功耗。
[0019]本實施例中將大塊的SRAM分切成6塊,分別是SRAM1-SRAM6。在FIFO剛開始工作的時候,只有SRAMl處于工作狀態。因為在FIFO剛開始工作的時候,不確定什么時候發送方的寫數據會過來,所以要隨時待命準備寫入數據,SRAMl必須處于工作狀態,其他5塊是可以置于關閉模式或睡眠模式。下面用睡眠模式和工作模式的切換方式來繼續說明。
[0020]當有數據陸續寫入FIFO內,寫指針就會指向下一個地址。當寫指針指向SRAMI的快要到達頂部地址的時候(可以通過模式控制器計數得到),這時候需要提前激活SRAM2。這個提前量,可以根據SRAM的電路的內部要求,比如一塊SRAM的從淺度睡眠到喚醒模式,至少需要2ns的喚醒時間,若當前電路的工作頻率是lGHz(寫速度是每周期寫一個數據),那么就需要提前兩個周期,把SRAM2從淺度睡眠模式喚醒起來,當寫指針指向SRAMl的頂部地址減去2的時候,(模式控制器發送喚醒信號)開始激活SRAM2,那么當寫指針指向到SRAM2的第一個地址的時候,它已經完全激活可以工作了。若是SRAM2在初始態是置于深度睡眠模式的話,若其需要1ns的喚醒時間(深度睡眠模式的喚醒時間比淺度睡眠模式長一些),那么就需要當寫指針到達SRAMl的頂地址減去10的位置的時候,(模式控制器發送喚醒信號)就開始喚醒SRAM2。即使在發出喚醒信號到寫指針真的指向到SRAM2的這段時間內,若寫數據并沒有每個時鐘都寫入數據,看起來SRAM2的喚醒過早了,但是這樣的提前量是為了滿足最差情況的,若萬一寫數據不停地寫入,SRAM2是必須要在寫指針指向它的底部地址的那個時刻,能夠被完全激活起來開始工作。這樣就是預測式地激活的基本方法。
[0021]當讀取操作將某一個小SRAM塊內部的數據都讀取完了之后,可以檢查一下這個塊是不是還在使用,是在被正在寫入或者準備寫入(提前激活),若不是,那么這個塊就是就可以被關閉,可以將其置于睡眠模式(深度睡眠或淺度睡眠需要根據實際情況)。當讀完SRAMl之后,寫指針還沒有指向到SRAMl或還沒有逼近SRAMl的時候,這塊SRAMl是可以立即置為睡眠模式,以節省功耗。若寫指針循環一圈過來,讀指針已經讀取SRAM3完畢,指向SRAM4了,但是寫指針已經指向了SRAM3,這時候是不能把SRAM3關閉的,它仍然是需要工作,在這種情況是寫入數據較多,讀取還沒有來得及讀取走這么多量的數據,這些數據都存儲在FIFO內。
[0022]根據SRAM的內部電路所能夠支持哪些低功耗模式,和該芯片在低功耗方面的要求,以及控制的復雜度,來靈活地實施本發明的想法。差別只是“預測式”激活的提前量的長短不同,基本原理相同。
[0023]實施例1,工作模式與LS(淺度睡眠)配合。因為LS到喚醒的時間較短,其控制方法也較簡單。假如SRAM的從LS模式到工作模式的喚醒時間為2ns,那么預測式喚醒的方法,就需要留夠至少2ns的時間用來喚醒下一個需要投入工作的小塊。舉例,假如FIFO工作在IGHz的頻率,寫入速度也是IG速度,每個時鐘周期就是1ns,當寫指針快要到達SRAMl的頂部,還差2個地址的時候,開始發送喚醒信號來激活SRAM2小塊。那么當寫指針指向SRAM2的底部的時候,它已經完成了激活,進入可以工作的狀態。
[0024]實施例2,工作與DS(深度睡眠)配合。與實施例1稍有不同的是,激活所需要的提前量,是由于SRAM從DS模式到工作模式的喚醒時間較長一些。仍然按照上述假設條件,工作頻率IGhz,寫速度為也是1G。若SRAM內部電路的要求從DS到工作模式需要1ns時間,那么就需要在寫指針在距離SRAMl的頂部還差10個地址的時候,開始發送喚醒信號來激活SRAM2小塊。
[0025]實施例3,工作與LS(淺度睡眠)+DS(深度睡眠)一起配合。由于DS的喚醒時間長,但是它所節省的功耗比LS要多。可以將距離工作區域較遠的小塊,置于DS模式,接近快要開始使用的小塊置于LS模式。當工作的小塊為SRAMl時,把SRAM2從DS模式切換到LS模式。當前寫入的塊已經到達SRAM2時,可以把SRAM3提前的從DS模式切換到LS模式。激活SRAM3的條件,與實施例1相同,當寫指針逼近SRAM3的時候,將它置入工作狀態,這時候需要把SRAM4從DS模式切換到LS模式。這樣階梯式地切換和喚醒需要工作的下一個小塊,可以更多地節省功耗,并可以較快速地把下一個小塊從LS狀態激活到工作狀態。
[0026]實施例4,工作模式和SD、DS、LS—起配合使用。在實施例3的基礎上,若更遠處的沒有需要用的小塊,可以完全置于SD(Shutdown)的電源關閉模式,這樣可以更多的節省功耗。根據指針所處的位置,預測式地把小塊從SD模式置入DS模式,再進入LS模式,然后被激活進入工作模式來寫入數據,存儲數據或被讀出數據。使用完了的小塊,也根據它舉例工作區域的遠近,進入SD或DS、LS模式。這樣的實施例,其工作狀態較多,控制起來稍復雜,但是可以達到最大程度的節省功耗。
[0027]以上實施例的各模式的結合,在模式控制器中,以硬件的方式,根據小容量的靜態隨機存儲器的地址數量,設置計數器的計數值,根據計數值來喚醒各小容量的靜態隨機存儲器。
【主權項】
1.一種低功耗FIFO的電路結構,包括大容量的靜態隨機存儲器、用于控制在靜態隨機存儲器寫入數據地址的寫控制電路,和用于控制從靜態隨機存儲器讀出數據地址的讀控制電路,其特征在于:所述的大容量的靜態隨機存儲器由若干個小容量的靜態隨機存儲器構成;本電路結構還包括用于控制每個小容量的靜態隨機存儲器的工作模式的模式控制器,模式控制器的輸入端分別與寫控制電路和讀控制電路連接,模式控制器的輸出端數量與小容量的靜態隨機存儲器相同,每個模式控制器的輸出端與一個小容量的靜態隨機存儲器連接。2.根據權利要求1所述的一種低功耗FIFO的電路結構,其特征在于:所述的模式控制器包括計數器和喚醒信號發生裝置,所述的計數器的輸入端分別與寫控制電路和讀控制電路連接,計數器的輸出端與喚醒信號發生裝置連接,喚醒信號發生裝置的輸出端與小容量的靜態隨機存儲器連接。
【文檔編號】G06F5/06GK205540689SQ201620095725
【公開日】2016年8月31日
【申請日】2016年1月29日
【發明人】李瀟
【申請人】啟芯瑞華科技(武漢)有限公司