專利名稱:超細(xì)粒度門控時鐘的fifo數(shù)據(jù)存儲方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及集成電路芯片設(shè)計領(lǐng)域,具體涉及ー種體系結(jié)構(gòu)級和電路級低功耗的超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲方法及裝置。
背景技術(shù):
FIFOCFirst In and First Out,先進(jìn)先出)數(shù)據(jù)隊列是集成電路芯片中廣泛使用電路結(jié)構(gòu),用于緩存數(shù)據(jù)以及控制數(shù)據(jù)訪問的順序,它的構(gòu)建有兩種方式基于SRAM構(gòu)建和基于寄存器構(gòu)建,前者面積小但是速度慢,后者面積大但是速度快。在高速芯片設(shè)計過程中,為了降低訪問FIFO數(shù)據(jù)隊列的延遲,滿足芯片的設(shè)計頻率要求,F(xiàn)IFO數(shù)據(jù)隊列必須采用寄存器構(gòu)建,因此如何降低FIFO數(shù)據(jù)隊列功耗成為了高速芯片低功耗設(shè)計中的重要問題之一。門控時鐘是指一個時鐘信號與另外ー個非時鐘信號作邏輯輸出 的時鐘。門控時鐘技木通過關(guān)閉芯片上不工作電路的時鐘以實現(xiàn)節(jié)省電路功耗的目的。在門控時鐘技術(shù)中,驅(qū)動時鐘的邏輯僅包含ー個“與”門或ー個“或”門,如果采用任何附加邏輯會導(dǎo)致在某些工作狀態(tài)下出現(xiàn)競爭、產(chǎn)生毛刺。門控時鐘通過一個使能信號控制時鐘的開關(guān)。當(dāng)電路不工作時可以關(guān)閉時鐘,整個系統(tǒng)處于非激活狀態(tài),這樣就能夠在某種程度上降低電路功耗。傳統(tǒng)的FIFO數(shù)據(jù)隊列低功耗設(shè)計技術(shù)主要面向基于SRAM構(gòu)建的FIFO數(shù)據(jù)隊列,功耗控制技術(shù)包括讀寫指針采用格雷碼編碼、SRAM采用低功耗SRAM、SRAM的讀寫使能采用門控時鐘、SRAM中的存儲單元使用位線隔離、門控電壓等技術(shù)。對于高性能芯片來說,某些關(guān)鍵部件如交叉開關(guān)的緩存隊列等,具有規(guī)模不大、但是對訪問速度要求高的特點。在這些場合,SRAM的訪問速度已經(jīng)不能滿足要求,必須采用速度更快的寄存器搭建FIFO數(shù)據(jù)隊列。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種門控粒度細(xì)、門控時鐘負(fù)載低、門電路速度快、功耗低的超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲方法及裝置。為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案為
一種超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲方法,其實施步驟如下
1)通過多個具有多位寄存器的寄存器位組呈陣列狀布置構(gòu)建數(shù)據(jù)隊列電路,所述寄存器位組沿著所述數(shù)據(jù)隊列電路的寬度方向形成寄存器項,所述寄存器位組沿著所述數(shù)據(jù)隊列電路的深度方向形成位組陣列,在輸入數(shù)據(jù)時將FIFO輸入數(shù)據(jù)按照所述寄存器位組的位寬分割成位數(shù)相等的多個部分并輸入各個位組陣列,在輸出數(shù)據(jù)時讀取所述位組陣列末端的寄存器位組的輸出數(shù)據(jù);
2)在每ー個時鐘周期判斷每ー個寄存器位組的內(nèi)容在下一個時鐘周期是否保持不變,如果寄存器位組的內(nèi)容在下一個時鐘周期保持不變則切斷所述寄存器位組的輸入時鐘;如果寄存器位組的內(nèi)容在下一個時鐘周期需要更新則保持所述寄存器位組的輸入時鐘。作為本發(fā)明超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲方法的進(jìn)ー步改進(jìn)所述步驟2)中判斷每ー個寄存器位組的內(nèi)容在下一個時鐘周期是否保持不變的詳細(xì)步驟如下
2.I)為姆ー個寄存器位組標(biāo)記數(shù)據(jù)有效狀態(tài);
2.2)獲取數(shù)據(jù)隊列電路的寫使能命令和讀使能命令;
2.3)根據(jù)所述寫使能命令、讀使能命令、寄存器位組在當(dāng)前時鐘周期的數(shù)據(jù)有效狀態(tài)以及所述位組陣列中相鄰寄存器位組在當(dāng)前時鐘周期的數(shù)據(jù)有效狀態(tài)維護(hù)每ー個所述寄存器位組在下一個時鐘周期的數(shù)據(jù)有效狀態(tài);
2.4)根據(jù)所述寫使能命令、讀使能命令、寄存器位組在當(dāng)前時鐘周期的數(shù)據(jù)有效狀態(tài)以及所述位組陣列中相鄰寄存器位組在當(dāng)前時鐘周期的數(shù)據(jù)有效狀態(tài)判斷每ー個所述寄存器位組在下一個時鐘周期是否需要被選擇;根據(jù)所述讀使能命令以及所述位組陣列中的 下一個寄存器位組對應(yīng)的數(shù)據(jù)有效狀態(tài)判斷每ー個寄存器位組在下一個時鐘周期是否需要被移位;如果任意一個寄存器位組在下一個時鐘周期需要被選擇或者被移位,則判斷所述寄存器位組的內(nèi)容在下一個時鐘周期需要更新;如果任意一個寄存器位組在下一個時鐘周期既不需要被選擇也不需要被移位,則判斷寄存器位組的當(dāng)前內(nèi)容在下一個時鐘周期保持不變。所述步驟2. 3)中根據(jù)式(Al)和式(A2)維護(hù)每一個寄存器位組在下一個時鐘周期的數(shù)據(jù)有效狀態(tài);
v0_din = ( V O _ d ο u t & wr_en) | 、v0_dout & w r _e n & r d _ e n ) | (v0_dout & w r _ e n ) | (vl_dout & w r _ e n )(Al)
Vi_din = (v (i~l) _dout & wr_en & rd_en) | (vi_dout & wr_e n & rd_en) | (v i_dout & rd_en) | (v(i + 1)_dout & rd_en)(A2)
式(Al)和式(A2)中,vi_din為位組陣列中第i個寄存器位組在下一個時鐘周期的數(shù)據(jù)有效狀態(tài)廠為取反運(yùn)算符,&為與運(yùn)算符,I為或運(yùn)算符,rd_en為讀使能命令、wr_en為寫使能命令,vi_dout為位組陣列中第i個寄存器位組在當(dāng)前時鐘周期的數(shù)據(jù)有效狀態(tài),i為寄存器項的編號且i e [1,N-1],N為寄存器項的數(shù)目。所述步驟2. 4)根據(jù)式(A3)和式(A4)判斷每ー個寄存器位組在下一個時鐘周期是否需要被選擇;
se I [O]=wr_en & (( vl_dout & v0_dout & rd_en) | v0_dout);
(A3)
sel [i] =wr_en & (、 v(i + l)_dout & v i _ d o u t & r d _e n ) I ( vi_dout & v(i_l)_dout & rd_en));(A4)
式(A3)和式(A4)中,sel[i]為位組陣列中第i個寄存器位組在下一個時鐘周期的被選擇狀態(tài)廠為取反運(yùn)算符,&為與運(yùn)算符,I為或運(yùn)算符,rd_en為讀使能命令、wr_en為寫使能命令,vi_dout為位組陣列中第i個寄存器位組在當(dāng)前時鐘周期的數(shù)據(jù)有效狀態(tài);
所述步驟2. 4)中判斷寄存器位組在下一個時鐘周期是否需要被移位是指根據(jù)式(A5) shift[i]=v(i + l)_dout & rd_en(A5)
判斷每ー個寄存器位組在下一個時鐘周期是否需要被移位;式(A5)中,shift[i]為位組陣列中第i個寄存器位組在下一個時鐘周期的被移位狀態(tài),&為與運(yùn)算符,rd_en為讀使能命令、v(i+l)_doUt為位組陣列中第i+Ι個寄存器位組在當(dāng)前時鐘周期的數(shù)據(jù)有效狀態(tài);
式(A4)中,i為寄存器項的編號且i e [1,N-1],《(A5)中,i為寄存器項的編號且i e [O,N-1],N為寄存器項的數(shù)目。本發(fā)明還提供一種超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲裝置,包括數(shù)據(jù)輸入?yún)g元、數(shù)據(jù)隊列電路、門控時鐘單元和數(shù)據(jù)輸出単元,所述數(shù)據(jù)隊列電路由多個具有多位寄存器的寄存器位組呈陣列狀布置構(gòu)成,所述寄存器位組沿著所述數(shù)據(jù)隊列電路的寬度方向形成寄存器項,所述寄存器位組沿著所述數(shù)據(jù)隊列電路的深度方向形成位組陣列,所述數(shù)據(jù)輸入?yún)g元分別與各個寄存器位組的輸入端相連,所述門控時鐘單元分別與各個寄存器位組的時鐘輸入端相連,所述位組陣列尾部的寄存器位組的輸出端與所述數(shù)據(jù)輸 出單元相連,每ー個所述位組陣列還包括一個用于判斷每ー個寄存器位組的內(nèi)容在下一個時鐘周期是否保持不變的寄存器監(jiān)控電路,所述寄存器監(jiān)控電路的輸出端分別與數(shù)據(jù)輸入?yún)g元的控制端、門控時鐘單元的控制端相連。作為本發(fā)明超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲裝置的進(jìn)ー步改進(jìn)
所述寄存器位組中設(shè)有用于標(biāo)記數(shù)據(jù)有效狀態(tài)的有效信號寄存器,所述寄存器監(jiān)控電路包括用于維護(hù)所述有效信號寄存器狀態(tài)的位組狀態(tài)生成単元、用于判斷所述寄存器位組在下一個時鐘周期是否需要被選擇的位組選擇単元、用于判斷所述寄存器位組在下ー個時鐘周期是否需要被移位的位組移位単元、用于判斷所述寄存器位組在下一個時鐘周期是否保持不變的位組保持単元,所述位組狀態(tài)生成単元根據(jù)寫使能命令、讀使能命令、有效信號寄存器的數(shù)據(jù)有效狀態(tài)維護(hù)每ー個寄存器位組在下一個時鐘周期的數(shù)據(jù)有效狀態(tài);所述位組選擇単元根據(jù)寫使能命令、讀使能命令、有效信號寄存器的數(shù)據(jù)有效狀態(tài)輸出每ー個所述寄存器位組在下一個時鐘周期是否需要被選擇;所述位組移位単元根據(jù)讀使能命令以及有效信號寄存器的數(shù)據(jù)有效狀態(tài)輸出每ー個寄存器位組在下一個時鐘周期是否需要被移位;所述位組保持単元根據(jù)所述位組選擇單元輸出的寄存器位組在下一個時鐘周期是否需要被選擇、位組移位單元輸出的寄存器位組在下一個時鐘周期是否需要被移位來輸出寄存器位組在下一個時鐘周期是否保持不變的狀態(tài),所述位組保持単元的輸出端通過門控時鐘単元與每ー個寄存器位組的時鐘輸入相連;當(dāng)寄存器位組的內(nèi)容在下一個時鐘周期保持不變時所述位組保持単元通過門控時鐘單元切斷所述寄存器位組的輸入時鐘;當(dāng)寄存器位組的內(nèi)容下一個時鐘周期需要更新時所述位組保持単元通過門控時鐘單元保持寄存器位組的輸入時鐘。所述位組狀態(tài)生成單元、位組選擇單元、位組移位單元、位組保持單元均為邏輯門電路;
所述位組狀態(tài)生成単元的邏輯門電路表達(dá)式如式(Al)和式(A2)所示
V O _ a i η = ι, ν O _ d o u t & w r _ e η ) | ι, v0_aout & w r _e η & rd_en) | ( v0_dout & w r _ e η ) | (vl_dout & w r _ e η )(Al)
ν i_d i η = (v (i-l)_dout & wr_en & rd_en) | (v i_dout & wr_e η & r d_e η ) | (ν i_dout & rd_en) | (v (i + 1)_dout & rd_en)(A2)
式(Al)和式(A2)中,vi_din為位組狀態(tài)生成單元輸出的位組陣列中第i個寄存器位組中有效信號寄存器在下一個時鐘周期的數(shù)據(jù)有效狀態(tài), 為取反運(yùn)算符,&為與運(yùn)算符,為或運(yùn)算符,rd_en為讀使能命令、wr_en為寫使能命令,vi_dout為位組陣列中第i個寄存器位組中有效信號寄存器的值;
所述位組選擇單元的邏輯門電路表達(dá)式如式(A3)和式(A4)所示
sel [O] =wr_en & (. ( v l_dout & vO_dout & r d_en) | vO_dout ;;
(A3)
sel [i] =wr_en & (( v(i + l)_dout & v i _ d o u t & r d _e n ) I ( vi_dout & v(i_l)_dout & rd_en));(A4)
式(A3)和式(A4)中,sel[i]為位組選擇單元輸出的位組陣列中第i個寄存器位組在下一個時鐘周期的被選擇狀態(tài), 為取反運(yùn)算符,&為與運(yùn)算符,I為或運(yùn)算符,rd_en為讀使能命令、wr_en為寫使能命令,vi_dout為位組陣列中第i個寄存器位組中有效信號寄存器的值;
所述位組移位単元的邏輯門電路表達(dá)式如式(A5)所示
shift[i]=v(i + l)_dout & rd_en
(A5)
式(A5)中,shift[i]為位組移位單元輸出的位組陣列中第i個寄存器位組在下ー個時鐘周期的被移位狀態(tài),&為與運(yùn)算符,rd_en為讀使能命令、v(i+l)_dout為位組陣列中第i+Ι個寄存器位組中有效信號寄存器的值;
所述位組保持單元的邏輯門電路表達(dá)式如式(A6)所示
hold[i] = sel[i] & shift[i]
(A6)
式(A6)中,hold[i]為所述位組保持單元輸出的位組陣列中第i個寄存器位組在下一個時鐘周期是否保持不變的狀態(tài),sel [i]為位組陣列中第i個寄存器位組在下一個時鐘周期的被選擇狀態(tài),shift [i]為位組陣列中第i個寄存器位組在下一個時鐘周期的被移位狀態(tài), 為取反運(yùn)算符,&為與運(yùn)算符;
式(A2)和式(A4)中,i為寄存器項(22)的編號且i e [1,N-1],式(A5)和式(A6)中,i為寄存器項的編號且i e
,N為寄存器項的數(shù)目。所述數(shù)據(jù)輸入單元包括與寄存器位組一一對應(yīng)的多路選擇器,所述多路選擇器的輸出端與對應(yīng)的寄存器位組的輸入端相連,所述多路選擇器的輸入端分別與外部信號輸入端、對應(yīng)的寄存器位組的輸出端相連、對應(yīng)的寄存器位組在同一位組陣列中的上一個寄存器位組的輸出端相連。門控時鐘單元包括依次相連的時鐘源、一級門控時鐘單元和ニ級門控時鐘單元,所述ニ級門控時鐘單元包括用于控制每ー個寄存器位組時鐘通斷的位組門控時鐘模塊,所 述位組門控時鐘模塊(321的輸入端與一級門控時鐘單元相連,所述位組門控時鐘模塊與寄存器位組一一對應(yīng),所述位組門控時鐘模塊的控制端與所述寄存器監(jiān)控電路相連,所述位組門控時鐘模塊的輸出端與對應(yīng)寄存器位組的時鐘輸入端相連;
所述數(shù)據(jù)輸出單元包括輸出控制模塊和至少兩個輸出使能門控寄存器,所述輸出控制模塊與所述位組陣列一一對應(yīng),所述輸出控制模塊的輸入端與對應(yīng)位組陣列尾部的寄存器位組相連,所述輸出控制模塊的控制端與輸出使能門控寄存器的輸出端相連,所述輸出使能門控寄存器的輸出端分別與至少ー個輸出控制模塊相對應(yīng),所述輸出使能門控寄存器的輸入端用于輸入預(yù)讀使能命令,所述ニ級門控時鐘單元還包括與輸出使能門控寄存器一一對應(yīng)的輸出門控時鐘模塊,所述輸出使能門控寄存器的時鐘輸入端與所述輸出門控時鐘模塊相連。本發(fā)明超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲方法具有下述優(yōu)點
I、本發(fā)明通過多個具有多位寄存器的寄存器位組呈陣列狀布置構(gòu)建數(shù)據(jù)隊列電路,構(gòu)建以寄存器位組作為最小単元的超細(xì)粒度門控時鐘結(jié)構(gòu),根據(jù)每ー個寄存器位組的內(nèi)容在下一個時鐘周期是否保持不變控制寄存器位組的輸入時鐘,門控時鐘的粒度進(jìn)ー步細(xì)化到寄存器位組級別,粒度比現(xiàn)有技術(shù)更細(xì),不僅能夠?qū)﹃犃兄忻咯`個寄存器 項的時鐘進(jìn)行門控,而且能夠?qū)γ恳粋€寄存器項中的每ー個寄存器位組的時鐘獨立地進(jìn)行門控,能夠在更細(xì)的粒度上控制對寄存器的時鐘進(jìn)行門控,降低了門控時鐘的負(fù)載,在降低功耗的同時提高了門控電路的工作速度。2、本發(fā)明進(jìn)一歩根據(jù)寄存器位組在當(dāng)前時鐘周期的數(shù)據(jù)有效狀態(tài)、寫使能命令和讀使能命令判斷當(dāng)前寄存器位組是否需要被選擇或者被移位,進(jìn)而根據(jù)選擇、移位判斷檢測寄存器位組的內(nèi)容在下一個時鐘周期是否保持不變,能夠控制新寫入FIFO的數(shù)據(jù)將要放入FIFO數(shù)據(jù)隊列的位置,因此不需要傳統(tǒng)的基于SRAM的FIFO數(shù)據(jù)隊列中的讀指針、寫指針等控制電路,能夠?qū)崿F(xiàn)在控制門控時鐘的同時控制數(shù)據(jù)隊列電路的讀寫,降低了邏輯規(guī)模和復(fù)雜度。本發(fā)明超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲裝置由于具有與本發(fā)明超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲方法相應(yīng)的結(jié)構(gòu),因此本發(fā)明超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲裝置也具備上述本發(fā)明超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲方法相對應(yīng)的優(yōu)點。
圖I為本發(fā)明實施例的結(jié)構(gòu)示意圖。圖2為本發(fā)明實施例中寄存器監(jiān)控電路的結(jié)構(gòu)示意圖。圖3為本發(fā)明實施例中位組狀態(tài)生成單元的電路原理示意圖。圖4為本發(fā)明實施例中位組選擇單元的電路原理示意圖。圖5為本發(fā)明實施例中位組移位單元的電路原理示意圖。圖6為本發(fā)明實施例中位組保持單元的電路原理示意圖。圖7為本發(fā)明實施例中隊列空滿判斷単元的電路原理示意圖。圖8為本發(fā)明實施例中門控時鐘單元的結(jié)構(gòu)示意圖。圖例說明11、多路選擇器;21、寄存器位組;211、有效信號寄存器;22、寄存器項;23、位組陣列;30、時鐘源;31、一級門控時鐘單元;32、ニ級門控時鐘單元;321、位組門控時鐘模塊;322、輸出門控時鐘模塊;41、輸出控制模塊;42、輸出使能門控寄存器;5、寄存器監(jiān)控電路;51、位組狀態(tài)生成単元;52、位組選擇単元;53、位組移位単元;54、位組保持單元;55、隊列空滿判斷単元。
具體實施例方式本實施例超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲方法的實施步驟如下
1)通過多個具有多位寄存器的寄存器位組呈陣列狀布置構(gòu)建數(shù)據(jù)隊列電路,寄存器位組沿著數(shù)據(jù)隊列電路的寬度方向形成寄存器項,寄存器位組沿著數(shù)據(jù)隊列電路的深度方向形成位組陣列,在輸入數(shù)據(jù)時將FIFO輸入數(shù)據(jù)按照寄存器位組的位寬分割成位數(shù)相等的多個部分并輸入各個位組陣列,在輸出數(shù)據(jù)時讀取位組陣列末端的寄存器位組的輸出數(shù)據(jù);
2)在每ー個時鐘周期判斷每ー個寄存器位組的內(nèi)容在下一個時鐘周期是否保持不變,如果寄存器位組的內(nèi)容在下一個時鐘周期保持不變則切斷寄存 器位組的輸入時鐘;如果寄存器位組的內(nèi)容在下一個時鐘周期需要更新則保持寄存器位組的輸入時鐘。步驟2)中判斷每ー個寄存器位組的內(nèi)容在下一個時鐘周期是否保持不變的詳細(xì)步驟如下
2.I)為姆ー個寄存器位組標(biāo)記數(shù)據(jù)有效狀態(tài);
2.2)獲取數(shù)據(jù)隊列電路的寫使能命令和讀使能命令;
2.3)根據(jù)寫使能命令、讀使能命令、寄存器位組在當(dāng)前時鐘周期的數(shù)據(jù)有效狀態(tài)以及位組陣列中相鄰寄存器位組在當(dāng)前時鐘周期的數(shù)據(jù)有效狀態(tài)維護(hù)每ー個寄存器位組在下一個時鐘周期的數(shù)據(jù)有效狀態(tài);
2.4)根據(jù)寫使能命令、讀使能命令、寄存器位組在當(dāng)前時鐘周期的數(shù)據(jù)有效狀態(tài)以及位組陣列中相鄰寄存器位組在當(dāng)前時鐘周期的數(shù)據(jù)有效狀態(tài)判斷每ー個寄存器位組在下一個時鐘周期是否需要被選擇(即接收FIFO入ロ的新值);根據(jù)讀使能命令以及位組陣列中的下一個寄存器位組對應(yīng)的數(shù)據(jù)有效狀態(tài)判斷每ー個寄存器位組在下一個時鐘周期是否需要被移位(即移入后繼寄存器位組的值);如果任意一個寄存器位組在下一個時鐘周期需要被選擇或者被移位,則判斷寄存器位組的內(nèi)容在下一個時鐘周期需要更新;如果任意一個寄存器位組在下一個時鐘周期既不需要被選擇也不需要被移位,則判斷寄存器位組的當(dāng)前內(nèi)容在下一個時鐘周期保持不變。步驟2. 3)中根據(jù)式(Al)和式(A2)維護(hù)每一個寄存器位組在下一個時鐘周期的數(shù)據(jù)有效狀態(tài);
v0_din=( v0_dout & wr_en; | (v0_aout & wr_en & rd_en) | (v0_dout & wr_en;(vl_dout & wr_en)(Al)
vi_din = (v(i-l)_dout & wr_en & rd_en) | (vi_dout & wr_en & rd_en) | (vi_dout & rd_en) | (v(i+l)_dout & rd_en)(A2)
式(Al)和式(A2)中,vi_din為位組陣列中第i個寄存器位組在下一個時鐘周期的數(shù)據(jù)有效狀態(tài)廠為取反運(yùn)算符,&為與運(yùn)算符,I為或運(yùn)算符,rd_en為讀使能命令、wr_en為寫使能命令,vi_dout為位組陣列中第i個寄存器位組在當(dāng)前時鐘周期的數(shù)據(jù)有效狀態(tài),i為寄存器項的編號且i e [1,N-1],N為寄存器項的數(shù)目。步驟2. 4)根據(jù)式(A3)和式(A4)判斷每ー個寄存器位組在下一個時鐘周期是否需要被選擇;sel[O]=wr_en & (( vl_dout & vO_dout & rd_en) | vO_dout) ; (A3)sel[i]=wr_en & (( v(i+l)_dout & vi_dout & rd_en) | ( vi_dout & v (i-l)_dout& rd_en)) ;(A4)
式(A3)和式(A4)中,sel[i]為位組陣列中第i個寄存器位組在下一個時鐘周期的被選擇狀態(tài)廠為取反運(yùn)算符,&為與運(yùn)算符,I為或運(yùn)算符,rd_en為讀使能命令、wr_en為寫使能命令,vi_dout為位組陣列中第i個寄存器位組在當(dāng)前時鐘周期的數(shù)據(jù)有效狀態(tài);步驟2. 4)中判斷寄存器位組在下一個時鐘周期是否需要被移位是指根據(jù)式(A5)shift[i]=v(i+l)_dout & rd_en(A5)
判斷每ー個寄存器位組在下一個時鐘周期是否需要被移位;式(A5)中,shift[i]為位組陣列中第i個寄存器位組在下一個時鐘周期的被移位狀態(tài),&為與運(yùn)算符,rd_en為讀使能命令、v(i+l)_doUt為位組陣列中第i+Ι個寄存器位組在當(dāng)前時鐘周期的數(shù)據(jù)有效狀態(tài);上述式(A4)中,i為寄存器項的編號且i e [1,N-1],《(A5)中 ,i為寄存器項的編號且i e [O,N-1],N為寄存器項的數(shù)目。如圖I所示,本實施例超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲裝置包括數(shù)據(jù)輸入單元、數(shù)據(jù)隊列電路、門控時鐘單元和數(shù)據(jù)輸出単元,數(shù)據(jù)隊列電路由多個具有多位寄存器的寄存器位組21 (Bits Group,簡稱BG)呈陣列狀布置構(gòu)成,寄存器位組21沿著數(shù)據(jù)隊列電路的寬度方向形成寄存器項22 (Register Item,簡稱RI),寄存器位組21沿著數(shù)據(jù)隊列電路的深度方向形成位組陣列23 (Bits Group Array,簡稱BG_ARRAY),數(shù)據(jù)輸入單元分別與各個寄存器位組21的輸入端相連,門控時鐘單元分別與各個寄存器位組21的時鐘輸入端相連,位組陣列23尾部的寄存器位組21的輸出端與數(shù)據(jù)輸出単元相連,每ー個位組陣列23還包括一個用于判斷每ー個寄存器位組21的內(nèi)容在下一個時鐘周期是否保持不變的寄存器監(jiān)控電路5,寄存器監(jiān)控電路5的輸出端分別與數(shù)據(jù)輸入?yún)g元的控制端、門控時鐘單元的控制端相連。本實施例的數(shù)據(jù)隊列電路的數(shù)據(jù)輸入輸出的基本単位為寄存器位組21,寄存器位組21也是門控時鐘單元實施門控時鐘控制的最小単元,從而以寄存器位組21為基本粒度形成超細(xì)粒度門控時鐘結(jié)構(gòu)。本實施例的超細(xì)粒度門控時鐘結(jié)構(gòu)能夠?qū)γ恳粋€寄存器項22中的每ー個寄存器位組21的時鐘獨立地進(jìn)行門控,可以選擇打開或關(guān)閉每ー個寄存器位組21的時鐘,不活動的寄存器位組21的時鐘可以選擇被關(guān)閉;以寄存器位組21為粒度進(jìn)行時鐘門控能夠降低門控時鐘電路的實際負(fù)載,提高門控時鐘電路中負(fù)載電容的充、放電速度,從而減少門控時鐘開啟和關(guān)閉時間。數(shù)據(jù)輸入?yún)g元包括與寄存器位組21 —一對應(yīng)的多路選擇器11,多路選擇器11的輸出端與對應(yīng)的寄存器位組21的輸入端相連,多路選擇器11的輸入端分別與外部信號輸入端、對應(yīng)的寄存器位組21的輸出端相連、對應(yīng)的寄存器位組21在同一位組陣列23中的上一個寄存器位組21的輸出端相連。如圖I所示,本實施例使用4個寄存器項通過串行連接構(gòu)建位寬為128的數(shù)據(jù)隊列電路,數(shù)據(jù)隊列電路的深度為4,數(shù)據(jù)隊列電路一共有4個寄存器項22(1 10—1 13),每個寄存器項22的位寬均為128位,每個寄存器項22分為8個寄存器位組21,每個寄存器位組21是ー個16位寄存器。數(shù)據(jù)隊列電路隊列頭的數(shù)據(jù)總是固定放在RI0,每當(dāng)從隊列中讀出ー個寄存器項22,則后繼的寄存器項22需要依次向隊列頭移動。假設(shè)隊列中僅RIO — RI2存放有效數(shù)據(jù),隊列頭為RI0,隊列尾為RI2。從RIO中讀出數(shù)據(jù)后,RIl中的內(nèi)容需要移動到RIO中,RI2中的內(nèi)容移動到RIl中,有效數(shù)據(jù)變?yōu)镽IO — RIl,隊列尾由之前的RI2變?yōu)镽Il0若又收到ー個新的寫請求,新數(shù)據(jù)將寫到RI2中,作為新的隊列尾。圖中的BGxy代表ー個基本的寄存器位組21,其中x(x e [O, 3])是寄存器位組21所在寄存器項22的編號,y(y e [O, 7])是寄存器位組21所在寄存器項22中的位組編號。每個寄存器項22中的第i(i e [O, 7])個寄存器位組21構(gòu)成ー個位組陣列23 (BG_ARRAYi, i e
)。每ー個寄存器位組21都使用ー個單獨的門控時鐘llclk_m[n],其中m(m e [O, 7])是寄存器位組21所在寄存器項22中的位組編號,n(n e [O, 3])是寄存器位組21所在寄存器項22的編號。例如BGOl代表第O個寄存器項22的第一個寄存器位組21,它屬于第I個位組陣列BG_ARRAYl,使用的門控時鐘為Ilclkl [O]。隊列輸入的第[15:0]位(din [15:0])可以被輸入到屬于BG_ARRAY0的BG30,BG20,BGlO和BGOO四個位組中的某ー個,取決于隊列尾的位置;隊列輸出的第[15:0]位(dout[15:0])固定地從BGOO獲得。每ー個寄存器位組21的輸入端都有三個輸入來源(I)新的輸入數(shù)據(jù);(2)后繼寄存器項22的輸出;(3)自己的輸出,通過寄存器位組21選擇其中的ー個。例如BGOl的輸入端的三 個來源分別是din[31:16],BGll的輸出,BGOl的輸出。如圖I和圖2所示,寄存器位組21中設(shè)有用于標(biāo)記數(shù)據(jù)有效狀態(tài)的有效信號寄存器211,寄存器監(jiān)控電路5包括用于維護(hù)有效信號寄存器211狀態(tài)的位組狀態(tài)生成單兀51、用于判斷寄存器位組21在下一個時鐘周期是否需要被選擇的位組選擇単元52、用于判斷寄存器位組21在下一個時鐘周期是否需要被移位的位組移位単元53、用于判斷寄存器位組21在下一個時鐘周期是否保持不變的位組保持単元54,位組狀態(tài)生成単元51根據(jù)寫使能命令、讀使能命令、有效信號寄存器211的數(shù)據(jù)有效狀態(tài)維護(hù)每ー個寄存器位組21在下一個時鐘周期的數(shù)據(jù)有效狀態(tài);位組選擇単元52根據(jù)寫使能命令、讀使能命令、有效信號寄存器211的數(shù)據(jù)有效狀態(tài)輸出每ー個寄存器位組21在下一個時鐘周期是否需要被選擇;位組移位単元53根據(jù)讀使能命令以及有效信號寄存器211的數(shù)據(jù)有效狀態(tài)輸出每ー個寄存器位組21在下一個時鐘周期是否需要被移位;位組保持単元54根據(jù)位組選擇單元52輸出的寄存器位組21在下一個時鐘周期是否需要被選擇、位組移位単元53輸出的寄存器位組21在下一個時鐘周期是否需要被移位來輸出寄存器位組21在下一個時鐘周期是否保持不變的狀態(tài),位組保持單元54的輸出端通過門控時鐘單元與姆ー個寄存器位組21的時鐘輸入相連;當(dāng)寄存器位組21的內(nèi)容在下一個時鐘周期保持不變時位組保持単元54通過門控時鐘単元切斷寄存器位組21的輸入時鐘;當(dāng)寄存器位組21的內(nèi)容下一個時鐘周期需要更新時位組保持単元54通過門控時鐘單元保持寄存器位組21的輸入時鐘。本實施例中有效信號寄存器211的位寬為I位,每ー個寄存器位組21的位數(shù)可以根據(jù)需要采用不同的位寬,位寬大小與數(shù)據(jù)隊列電路的訪問速度和設(shè)計要求相關(guān),輸入數(shù)據(jù)隊列電路的數(shù)據(jù)被平均分配到各個位組陣列23中,數(shù)據(jù)隊列電路輸出的數(shù)據(jù)為各個位組陣列23尾部的寄存器位組21輸出的數(shù)據(jù)拼接而成。位組狀態(tài)生成單元51、位組選擇單元52、位組移位單元53、位組保持單元54、隊列空滿判斷単元55均為邏輯門電路,此外也可以采用其他的模擬或者數(shù)字處理電路。寄存器監(jiān)控電路5實現(xiàn)對數(shù)據(jù)隊列電路中各個位組陣列23 (圖中以BG_ARRAY0為例)的狀態(tài)進(jìn)行動態(tài)監(jiān)控的機(jī)制,寄存器監(jiān)控電路5以寄存器位組21為粒度實現(xiàn)寄存器狀態(tài)的動態(tài)監(jiān)控,能夠降低控制信號的負(fù)載。寄存器監(jiān)控電路5能夠監(jiān)控對位組陣列23的每一次讀或者寫操作,根據(jù)每個位組陣列23中有效信號寄存器211的當(dāng)前狀態(tài),確定該位組陣列23中哪些寄存器位組21在下一個時鐘沿到來時會被訪問,哪些寄存器位組21的值保持不變,對每一個寄存器位組21輸入端的多路選擇器11產(chǎn)生ー組控制信號選擇(sel)、移位(shift)和保持(hold)。某個寄存器位組21的選擇信號有效表示當(dāng)前進(jìn)入FIFO的數(shù)據(jù)需要被寫入到該寄存器位組21中;移位信號有效表示該寄存器位組21的后繼寄存器位組21的值需要被寫入到該寄存器位組21中;保持信號有效表示該寄存器位組21的內(nèi)容保持不變。當(dāng)寄存器位組21的內(nèi)容保持不變時,可以通過門控時鐘單元關(guān)閉該寄存器位組21的時鐘。以圖I中BG_ARRAY0中的各寄存器位組BG30、BG20、BGlO和BGOO進(jìn)行控制為例,BG_ARRAY0中的有效信號寄存器211 —共有4個,用V3,V2,V1和VO標(biāo)識,分別用于存儲寄存器位組BG30、BG20、BGlO和BGOO的有效位信息V30,V20, VlO和VOO。寄存器監(jiān)控電路5通過FIFO寫使能命令(wr_en)、FIF0讀使能命令(rd_en)和當(dāng)前有效信號寄存器211的輸出(V3_dout,V2_dout,Vl_dout和v0_dout)產(chǎn)生對各寄存器位 組 21 的控制信號BG0_sel [3:0], BG0_shift [3:0]和 BG0_hold[3:0]。BG0_sel [i]、BG0_shift [i]和BG0_hold[i](其中i e
)控制位組陣列BG_ARRAY0中的第i個寄存器位組21輸入端的多路選擇器11進(jìn)行輸入數(shù)據(jù)選擇,BG0_hold[3:0]還用于控制位組門控時鐘模塊321產(chǎn)生到各寄存器位組21的門控時鐘llclk_0[3:0]。另外,寄存器監(jiān)控電路5還根據(jù)當(dāng)前狀態(tài)產(chǎn)生下一個時鐘周期時有效信號寄存器211的輸入值(v3_din,v2_din,vl_din和v0_din)、FIFO隊列的空信號(empty)和滿信號(full)。寄存器監(jiān)控電路5各個子單元的輸入輸出關(guān)系如下位組狀態(tài)生成単元51、位組選擇單元52、位組保持單元54的輸入均包括BG_ARRAY0中所有的有效信號寄存器211的輸出、數(shù)據(jù)隊列電路的寫使能命令和讀使能命令;位組移位単元53的輸入包括BG_ARRAY0中所有的有效信號寄存器211的輸出和數(shù)據(jù)隊列電路的讀使能命令;隊列空滿判斷単元55的輸入僅僅包括BG_ARRAY0中所有的有效信號寄存器211的輸出信號。位組狀態(tài)生成単元51的輸出作為BG_ARRAY0中有效信號寄存器211的輸入;位組選擇單元52、位組移位單元53、位組保持單元54的輸出BG0_sel、BG0_shift和BG0_hold作為BG_ARRAY0中各寄存器位組21的多路選擇器11的控制信號,另外位組保持単元54的輸出BG0_hold還作為位組門控時鐘模塊321的輸入信號,用于控制門控時鐘的產(chǎn)生。參見圖3,位組狀態(tài)生成單元51的邏輯門電路表達(dá)式如式(Al)和式(A2)所示 v0_din=( v0_dout & wr_en; | (v0_aout & wr_en & rd_en) | (v0_dout & wr_en;
(vl_dout & wr_en)(Al)
vi_din = (v(i-l)_dout & wr_en & rd_en) | (vi_dout & wr_en & rd_en) | (vi_dout & rd_en) | (v(i+l)_dout & rd_en)(A2)
式(Al)和式(A2)中,vi_din為位組狀態(tài)生成単元51輸出的位組陣列23中第i個寄存器位組21中有效信號寄存器211在下一個時鐘周期的數(shù)據(jù)有效狀態(tài)廣為取反運(yùn)算符,&為與運(yùn)算符,I為或運(yùn)算符,rd_en為讀使能命令、wr_en為寫使能命令,vi_dout為位組陣列23中第i個寄存器位組21中有效信號寄存器211的值。以圖2中BG_ARRAY0為例,BG_ARRAY0中的位組狀態(tài)生成單元51用于產(chǎn)生v0_din — v3_din,更新對應(yīng)的有效信號寄存器211的值。由于寄存器項RIO位于FIFO數(shù)據(jù)隊列的隊列頭,v0_din和vi_din (i代表寄存器項22的編號且i e [I, N-1],N為寄存器項22的數(shù)目)的產(chǎn)生電路略有區(qū)別
(a)對應(yīng)式(Al),為位組狀態(tài)生成單元51產(chǎn)生vO_din的邏輯示意圖,此時位組狀態(tài)生成單元51的輸入端分別與rd_en、wr_en、vO_dout和vl_dout相連;
(b)對應(yīng)式(A2),為位組狀態(tài)生成單元51產(chǎn)生vi_din的邏輯示意圖,此時位組狀態(tài)生成單元 51 的輸入端分別與 rd_en、wr_en、v (i_l)_dout、v (i_l)_dout 和 v (i+l)_dout 相連,特殊情況是當(dāng)i=N_l吋,電路中的v(i+l)_dout信號接O。本實施例中寄存器項22的數(shù)目N=4,v0_din—v3_din 生成電路的邏輯表達(dá)式為vO_din=( vO_dout & wr_en) | (vO_dout& wr_en & rd_en; | (vO_dout & wr_en; | (vl_dout & wr_en) ;vl_din = (vO_dout &wr_en & rd_en) | (vl_dout & wr_en & rd_en) | (vl_dout & rd_en) | (v2_dout &rd_en) ;v2_din = (vl_dout & wr_en & rd_en) | (v2_dout & wr_en & rd_en) | (v2_dout & rd_en) | (v3_dout & rd_en) ;v3_din = (v2_dout & wr_en & rd_en) | (v3_dout & wr_en & rd_en) | (v3_dout & rd_en)。參見圖4,位組選擇単元52的邏輯門電路表達(dá)式如式(A3)和式(A4)所示 sel[O]=wr_en & (( vl_dout & v0_dout & rd_en) | v0_dout) ; (A3)
sel[i]=wr_en & (( v(i+l)_dout & vi_dout & rd_en) | ( vi_dout & v (i-l)_dout& rd_en)) ;(A4)
式(A3)和式(A4)中,sel[i]為位組選擇單元52輸出的位組陣列23中第i個寄存器位組21在下一個時鐘周期的被選擇狀態(tài), 為取反運(yùn)算符,&為與運(yùn)算符,I為或運(yùn)算符,rd_en為讀使能命令、wr_en為寫使能命令,vi_dout為位組陣列23中第i個寄存器位組21中有效信號寄存器211的值。以圖2中BG_ARRAY0為例,BG_ARRAY0中的位組選擇單元52用于產(chǎn)生BG0_sel [O]—BG0_sel [3](圖4中用sel [O] —sel [3]簡化表示)。由于寄存器項RIO位于FIFO數(shù)據(jù)隊列的隊列頭,sel [O]與sel [i] (i代表寄存器項的編號且i e [1,N_l],N為寄存器項22的數(shù)目)的產(chǎn)生電路也略有區(qū)別
(a)對應(yīng)式(A3),為位組選擇單元52產(chǎn)生sel[O]的邏輯示意圖,此時位組選擇單元52的輸入端分別與rd_en、wr_en、vl_dout和v0_dout相連;
(b)對應(yīng)式(A4),為位組選擇單元52產(chǎn)生sel[i]的邏輯示意圖,此時位組選擇單元52的輸入端分別與 rd_en、wr_en、v (i_l)_dout、vi_dout 和 v (i+l)_dout 相連。特殊情況是當(dāng)i=N_l吋,電路中的v(i+l)_dout信號接O。本實施例中寄存器項22的數(shù)目 N=4,BG0_sel [O]—BG0_sel [3]生成電路的邏輯表達(dá)式為sel [O] =wr_en & ((^ν1_dout & v0_dout & rd_en) | v0_dout) ;sel[I]=wr_en & (( v2_dout & vl_dout & rd_en) I ( vl_dout & v0_dout & rd_en)) ;sel[2]=wr_en & (( v3_dout & v2_dout & rd_en) I ( v2_dout & vl_dout & rd_en)) ;sel[3]=wr_en & ((v3_dout & rd_en) | ( v3_dout & v2_dout & rd_en))。參見圖5,位組移位單元53的邏輯門電路表達(dá)式如式(A5)所示 shift[i]=v(i+l)_dout & rd_en(A5)
式(A5)中,shift[i]為位組移位單元53輸出的位組陣列23中第i個寄存器位組21在下一個時鐘周期的被移位狀態(tài),&為與運(yùn)算符,rd_en為讀使能命令、v(i+l)_dout為位組陣列23中第i+Ι個寄存器位組21中有效信號寄存器211的值。
以圖2中BG_ARRAY0為例,BG_ARRAY0中的位組移位單元53用于產(chǎn)生BG0_shift [O]一BG0_shift [3],圖 5 中用 shift [O] — shift [3]簡化表示。位組移位單元 53 產(chǎn)生移位信號shift[i] (i代表寄存器項22的編號且i e
,N為寄存器項22的數(shù)目)時,其輸入信號為rd_en、vi+l_dout ;當(dāng)i=N_l時,電路中的v(i+l)_dout信號接O。本實施例中寄存器項22的數(shù)目N=4,BG0_shift [O]—BG0_shift [3]生成電路的邏輯表達(dá)式為shift[O] =vI & rd_en ;shift[l]=v2 & rd_en ;shift[2]=v3 & rd_en ;shift[3]=O0參見圖6,位組保持單元54的邏輯門電路表達(dá)式如式(A6)所示 hold[i]= sel[i] & shift[i](A6)
式(A6)中,hold[i]為位組保持單元54輸出的位組陣列23中第i個寄存器位組21在下一個時鐘周期是否保持不變的狀態(tài),sel [i]為位組陣列23中第i個寄存器位組21在下一個時鐘周期的被選擇狀態(tài),shift [i]為位組陣列23中第 i個寄存器位組21在下ー個時鐘周期的被移位狀態(tài), 為取反運(yùn)算符,&為與運(yùn)算符。位組保持單元54用于產(chǎn)生位組保持信號,根據(jù)位組選擇單元52、位組移位單元53的輸出結(jié)果進(jìn)行邏輯處理如果被控制的寄存器位組21被選擇或者被移位,則判斷其內(nèi)容在下一個時鐘周期需要更新;如果被控制的寄存器位組21既不被選擇也不被移位,則判斷其內(nèi)容在下一個時鐘周期保持不變。以圖2中BG_ARRAY0為例,BG_ARRAY0中的位組保持単元 54 用于產(chǎn)生 BG0_hold
—BG0_hold[3](圖 6 中用 hold [O]—hold[3]簡化表示)。位組保持単元54根據(jù)輸入的sel[i]和shift [i]決定產(chǎn)生hold [i]信號(i代表寄存器項22的編號且i e
,N為寄存器項22的數(shù)目)。本實施例中寄存器項22的數(shù)目N=4,BG0_hold
—BG0_hold[3]生成電路的邏輯表達(dá)式為hold
= sel [O] & "shift [O];shift[I]= sel[l] & shift[l] ;shift[2]= sel[2] & shift[2] ;shift[3]= sel[3]& shift[3]。式(A2)和式(A4)中,i為寄存器項22的編號且i e [1,N-1],式(A5)和式(A6)中,i為寄存器項22的編號且i e
,N為寄存器項22的數(shù)目。參見圖7,當(dāng)位組陣列23中所有有效信號寄存器211的有效位均為I時,表示隊列滿,隊列空滿判斷單元55輸出full信號;當(dāng)位組陣列23中所有有效信號寄存器211的有效位均為O時,表示隊列空,隊列空滿判斷單元55輸出empty信號。如圖8所示,門控時鐘單元包括依次相連的時鐘源30 (clk_root)、ー級門控時鐘単元31 (clk_gen)和ニ級門控時鐘單元32,ニ級門控時鐘單元32包括用于控制每ー個寄存器位組21時鐘通斷的位組門控時鐘模塊321,位組門控時鐘模塊321的輸入端與ー級門控時鐘單元31相連,位組門控時鐘模塊321與寄存器位組21 —一對應(yīng),位組門控時鐘模塊321的控制端與寄存器監(jiān)控電路5相連,位組門控時鐘模塊321的輸出端與對應(yīng)寄存器位組21的時鐘輸入端相連。本實施例中,數(shù)據(jù)輸出単元包括輸出控制模塊41和至少兩個輸出使能門控寄存器42,輸出控制模塊41與位組陣列23 —一對應(yīng),輸出控制模塊41的輸入端與對應(yīng)位組陣列23尾部的寄存器位組21相連,輸出控制模塊41的控制端與輸出使能門控寄存器42的輸出端相連,輸出使能門控寄存器42的輸出端分別與至少ー個輸出控制模塊41相對應(yīng),輸出使能門控寄存器42的輸入端用于輸入預(yù)讀使能命令(rd_en_pre),預(yù)讀使能命令(rd_en_pre)比fifo的讀使能命令早一個時鐘節(jié)拍發(fā)出,ニ級門控時鐘單元32還包括與輸出使能門控寄存器42 —一對應(yīng)的輸出門控時鐘模塊322,輸出使能門控寄存器42的時鐘輸入端與輸出門控時鐘模塊322相連。本實施例的數(shù)據(jù)輸出単元包括輸出控制模塊41和兩個輸出使能門控寄存器42,8個輸出控制模塊41被平均分為兩組,每ー組輸出控制模塊41受不同的輸出使能門控寄存器42產(chǎn)生的獨立的讀使能信號,兩個輸出使能門控寄存器42分別輸出rd_en_a和rd_en_b兩個控制信號,分別控制一組輸出控制模塊41,其中rd_en_a控制dout [63:0],rd_en_b控制dout [127:64],當(dāng)這兩個信號為O時,隊列的輸出為全O。兩個輸出使能門控寄存器42分別輸入的時鐘信號為Ilclka和llclkb,當(dāng)沒有對數(shù)據(jù)隊列的讀請求吋,Ilclka和Ilclkb被關(guān)閉以降低功耗。本實施例通過使用兩個獨立的輸出使能門控寄存器42控制輸出控制模塊41能夠分?jǐn)傋x使能信號的負(fù)載,提高電路速度。
如圖8所示,時鐘源30 (clk_root)產(chǎn)生的時鐘為elk。FIFO使能信號(fifo_en)用于控制一級門控時鐘單元31 (clk_gen)產(chǎn)生第一級門控時鐘12clk,當(dāng)fifo_en無效時,整個FIFO的時鐘均被關(guān)閉;當(dāng)fifo_en有效時,一級門控時鐘單元31 (clk_gen)輸出時鐘信號12clk,12clk再通過各個位組門控時鐘模塊321產(chǎn)生超細(xì)粒度的門控時鐘FIF0預(yù)讀使能rd_en_pre信號用于控制輸出門控時鐘模塊322產(chǎn)生Ilclka和llclkb,Ilclka和Ilclkb信號輸出到輸出使能門控寄存器42。對于4深度、128位寬的FIFO數(shù)據(jù)隊列,位組陣列BG_ARRAYi (i代表寄存器項22的編號且i e [O, N-1],N為寄存器項22的數(shù)目)對應(yīng)的寄存器監(jiān)控電路5產(chǎn)生的控制信號BGi_hold[3:0]分別用于控制位組門控時鐘模塊321產(chǎn)生到BG_ARRAYi中各位組的門控時鐘llclk_i [3:0],位組陣列BG_ARRAY0對應(yīng)的寄存器監(jiān)控電路5產(chǎn)生的控制信號BG0_hold[3:0]分別用于控制位組門控時鐘模塊321產(chǎn)生到BG_ARRAY0中各位組的門控時鐘llclk_0 [3:0]。以上所述僅是本發(fā)明的優(yōu)選實施方式,本發(fā)明的保護(hù)范圍并不僅局限于上述實施例,凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護(hù)范圍。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理前提下的若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲方法,其特征在于其實施步驟如下 1)通過多個具有多位寄存器的寄存器位組呈陣列狀布置構(gòu)建數(shù)據(jù)隊列電路,所述寄存器位組沿著所述數(shù)據(jù)隊列電路的寬度方向形成寄存器項,所述寄存器位組沿著所述數(shù)據(jù)隊列電路的深度方向形成位組陣列,在輸入數(shù)據(jù)時將FIFO輸入數(shù)據(jù)按照所述寄存器位組的位寬分割成位數(shù)相等的多個部分并輸入各個位組陣列,在輸出數(shù)據(jù)時讀取所述位組陣列末端的寄存器位組的輸出數(shù)據(jù); 2)在每一個時鐘周期判斷每一個寄存器位組的內(nèi)容在下一個時鐘周期是否保持不變,如果寄存器位組的內(nèi)容在下一個時鐘周期保持不變則切斷所述寄存器位組的輸入時鐘;如果寄存器位組的內(nèi)容在下一個時鐘周期需要更新則保持所述寄存器位組的輸入時鐘。
2.根據(jù)權(quán)利要求I所述的超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲方法,其特征在于,所述步驟2)中判斷每一個寄存器位組的內(nèi)容在下一個時鐘周期是否保持不變的詳細(xì)步驟如下 2.I)為每一個寄存器位組標(biāo)記數(shù)據(jù)有效狀態(tài); 2.2)獲取數(shù)據(jù)隊列電路的寫使能命令和讀使能命令; 2.3)根據(jù)所述寫使能命令、讀使能命令、寄存器位組在當(dāng)前時鐘周期的數(shù)據(jù)有效狀態(tài)以及所述位組陣列中相鄰寄存器位組在當(dāng)前時鐘周期的數(shù)據(jù)有效狀態(tài)維護(hù)每一個所述寄存器位組在下一個時鐘周期的數(shù)據(jù)有效狀態(tài); 2.4)根據(jù)所述寫使能命令、讀使能命令、寄存器位組在當(dāng)前時鐘周期的數(shù)據(jù)有效狀態(tài)以及所述位組陣列中相鄰寄存器位組在當(dāng)前時鐘周期的數(shù)據(jù)有效狀態(tài)判斷每一個所述寄存器位組在下一個時鐘周期是否需要被選擇;根據(jù)所述讀使能命令以及所述位組陣列中的下一個寄存器位組對應(yīng)的數(shù)據(jù)有效狀態(tài)判斷每一個寄存器位組在下一個時鐘周期是否需要被移位;如果任意一個寄存器位組在下一個時鐘周期需要被選擇或者被移位,則判斷所述寄存器位組的內(nèi)容在下一個時鐘周期需要更新;如果任意一個寄存器位組在下一個時鐘周期既不需要被選擇也不需要被移位,則判斷寄存器位組的當(dāng)前內(nèi)容在下一個時鐘周期保持不變。
3.根據(jù)權(quán)利要求2所述的超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲方法,其特征在于所述步驟2. 3)中根據(jù)式(Al)和式(A2)維護(hù)每一個寄存器位組在下一個時鐘周期的數(shù)據(jù)有效狀態(tài);vO_din=( vO_dout & wr_en) | (vO_dout & wr_en & rd_en) | (vO_dout & wr_en) (vl_dout & wr_en)(Al)vi_din = (v (i-l)_dout & wr_en & rd_en) | (vi_dout & wr_en & rd_en) | (vi_dout & rd_en) | (v(i+l)_dout & rd_en)(A2) 式(Al)和式(A2)中,vi_din為位組陣列中第i個寄存器位組在下一個時鐘周期的數(shù)據(jù)有效狀態(tài)廠為取反運(yùn)算符,&為與運(yùn)算符,I為或運(yùn)算符,rd_en為讀使能命令、wr_en為寫使能命令,vi_dout為位組陣列中第i個寄存器位組在當(dāng)前時鐘周期的數(shù)據(jù)有效狀態(tài),i為寄存器項的編號且i e [1,N-1],N為寄存器項的數(shù)目。
4.根據(jù)權(quán)利要求3所述的超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲方法,其特征在于所述步驟2. 4)根據(jù)式(A3)和式(A4)判斷每一個寄存器位組在下一個時鐘周期是否需要被選擇;seI[O]=wr_en & (( vl_dout & vO_dout & rd_en) | vO_dout) ; (A3)sel[i]=wr_en & (( v(i+l)_dout & vi_dout & rd_en) | ( vi_dout & v(i-l)_dout& rd_en)) ;(A4) 式(A3)和式(A4)中,sel[i]為位組陣列中第i個寄存器位組在下一個時鐘周期的被選擇狀態(tài)廠為取反運(yùn)算符,&為與運(yùn)算符,I為或運(yùn)算符,rd_en為讀使能命令、wr_en為寫使能命令,vi_dout為位組陣列中第i個寄存器位組在當(dāng)前時鐘周期的數(shù)據(jù)有效狀態(tài); 所述步驟2. 4)中判斷寄存器位組在下一個時鐘周期是否需要被移位是指根據(jù)式(A5) shift[i]=v(i+l)_dout & rd_en(A5)判斷每一個寄存器位組在下一個時鐘周期是否需要被移位;式(々5)中,shift[i]為位組陣列中第i個寄存器位組在下一個時鐘周期的被移位狀態(tài),&為與運(yùn)算符,rd_en為讀使能命令、v(i+l)_doUt為位組陣列中第i+Ι個寄存器位組在當(dāng)前時鐘周期的數(shù)據(jù)有效狀態(tài);式(A4)中,i為寄存器項的編號且i e [1,N-1],S(A5)中,i為寄存器項的編號且i e [O,N-1],N為寄存器項的數(shù)目。
5.一種超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲裝置,其特征在于包括數(shù)據(jù)輸入單元、數(shù)據(jù)隊列電路、門控時鐘單元和數(shù)據(jù)輸出單元,所述數(shù)據(jù)隊列電路由多個具有多位寄存器的寄存器位組(21)呈陣列狀布置構(gòu)成,所述寄存器位組(21)沿著所述數(shù)據(jù)隊列電路的寬度方向形成寄存器項(22),所述寄存器位組(21)沿著所述數(shù)據(jù)隊列電路的深度方向形成位組陣列(23),所述數(shù)據(jù)輸入單元分別與各個寄存器位組(21)的輸入端相連,所述門控時鐘單元分別與各個寄存器位組(21)的時鐘輸入端相連,所述位組陣列(23)尾部的寄存器位組(21)的輸出端與所述數(shù)據(jù)輸出單元相連,每一個所述位組陣列(23)還包括一個用于判斷每一個寄存器位組(21)的內(nèi)容在下一個時鐘周期是否保持不變的寄存器監(jiān)控電路(5),所述寄存器監(jiān)控電路(5)的輸出端分別與數(shù)據(jù)輸入單元的控制端、門控時鐘單元的控制端相連。
6.根據(jù)權(quán)利要求5所述的超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲裝置,其特征在于所述寄存器位組(21)中設(shè)有用于標(biāo)記數(shù)據(jù)有效狀態(tài)的有效信號寄存器(211),所述寄存器監(jiān)控電路(5)包括用于維護(hù)所述有效信號寄存器(211)狀態(tài)的位組狀態(tài)生成單元(51)、用于判斷所述寄存器位組(21)在下一個時鐘周期是否需要被選擇的位組選擇單元(52)、用于判斷所述寄存器位組(21)在下一個時鐘周期是否需要被移位的位組移位單元(53)、用于判斷所述寄存器位組(21)在下一個時鐘周期是否保持不變的位組保持單元(54),所述位組狀態(tài)生成單元(51)根據(jù)寫使能命令、讀使能命令、有效信號寄存器(211)的數(shù)據(jù)有效狀態(tài)維護(hù)每一個寄存器位組(21)在下一個時鐘周期的數(shù)據(jù)有效狀態(tài);所述位組選擇單元(52)根據(jù)寫使能命令、讀使能命令、有效信號寄存器(211)的數(shù)據(jù)有效狀態(tài)輸出每一個所述寄存器位組(21)在下一個時鐘周期是否需要被選擇;所述位組移位單元(53)根據(jù)讀使能命令以及有效信號寄存器(211)的數(shù)據(jù)有效狀態(tài)輸出每一個寄存器位組(21)在下一個時鐘周期是否需要被移位;所述位組保持單元(54)根據(jù)所述位組選擇單元(52)輸出的寄存器位組(21)在下一個時鐘周期是否需要被選擇、位組移位單元(53)輸出的寄存器位組(21)在下一個時鐘周期是否需要被移位來輸出寄存器位組(21)在下一個時鐘周期是否保持不變的狀態(tài),所述位組保持單元(54)的輸出端通過門控時鐘單元與每一個寄存器位組(21)的時鐘輸入相連;當(dāng)寄存器位組(21)的內(nèi)容在下一個時鐘周期保持不變時所述位組保持單元(54)通過門控時鐘單元切斷所述寄存器位組(21)的輸入時鐘;當(dāng)寄存器位組(21)的內(nèi)容下一個時鐘周期需要更新時所述位組保持單元(54)通過門控時鐘單元保持寄存器位組(21)的輸入時鐘。
7.根據(jù)權(quán)利要求6所述的超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲裝置,其特征在于所述位組狀態(tài)生成單元(51)、位組選擇單元(52)、位組移位單元(53)、位組保持單元(54)均為邏輯門電路; 所述位組狀態(tài)生成單元(51)的邏輯門電路表達(dá)式如式(Al)和式(A2)所示
8.根據(jù)權(quán)利要求5或6或7所述的超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲裝置,其特征在于所述數(shù)據(jù)輸入單元包括與寄存器位組(21) —一對應(yīng)的多路選擇器(11),所述多路選擇器(11)的輸出端與對應(yīng)的寄存器位組(21)的輸入端相連,所述多路選擇器(11)的輸入端分別與外部信號輸入端、對應(yīng)的寄存器位組(21)的輸出端相連、對應(yīng)的寄存器位組(21)在同一位組陣列(23)中的上一個寄存器位組(21)的輸出端相連。
9.根據(jù)權(quán)利要求8所述的超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲裝置,其特征在于門控時鐘單元包括依次相連的時鐘源(30)、一級門控時鐘單元(31)和二級門控時鐘單元(32),所述二級門控時鐘單元(32)包括用于控制每一個寄存器位組(21)時鐘通斷的位組門控時鐘模塊(321 ),所述位組門控時鐘模塊(321)的輸入端與一級門控時鐘單元(31)相連,所述位組門控時鐘模塊(321)與寄存器位組(21)——對應(yīng),所述位組門控時鐘模塊(321)的控制端與所述寄存器監(jiān)控電路(5)相連,所述位組門控時鐘模塊(321)的輸出端與對應(yīng)寄存器位組(21)的時鐘輸入端相連。
10.根據(jù)權(quán)利要求9所述的超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲裝置,其特征在于所述數(shù)據(jù)輸出單元包括輸出控制模塊(41)和至少兩個輸出使能門控寄存器(42),所述輸出控制模塊(41)與所述位組陣列(23) 對應(yīng),所述輸出控制模塊(41)的輸入端與對應(yīng)位組陣列(23)尾部的寄存器位組(21)相連,所述輸出控制模塊(41)的控制端與輸出使能門控寄存器(42)的輸出端相連,所述輸出使能門控寄存器(42)的輸出端分別與至少一個輸出控制模塊(41)相對應(yīng),所述輸出使能門控寄存器(42)的輸入端用于輸入預(yù)讀使能命令,所述二級門控時鐘單元(32)還包括與輸出使能門控寄存器(42)—一對應(yīng)的輸出門控時鐘模塊(322),所述輸出使能門控寄存器(42)的時鐘輸入端與所述輸出門控時鐘模塊(322)相連。
全文摘要
本發(fā)明公開了一種超細(xì)粒度門控時鐘的FIFO數(shù)據(jù)存儲方法及裝置,方法步驟如下1)通過多個具有多位寄存器的寄存器位組呈陣列狀布置構(gòu)建數(shù)據(jù)隊列電路;2)在每一個時鐘周期判斷每一個寄存器位組的內(nèi)容在下一個時鐘周期是否保持不變,如果寄存器位組的內(nèi)容在下一個時鐘周期保持不變則切斷所述寄存器位組的輸入時鐘;如果寄存器位組的內(nèi)容在下一個時鐘周期需要更新則保持所述寄存器位組的輸入時鐘;裝置包括數(shù)據(jù)輸入單元、數(shù)據(jù)隊列電路、門控時鐘單元和數(shù)據(jù)輸出單元,數(shù)據(jù)隊列電路由多個具有多位寄存器的寄存器位組呈陣列狀布置構(gòu)成。本發(fā)明具有門控粒度細(xì)、門控時鐘負(fù)載低、門電路速度快、功耗低的優(yōu)點。
文檔編號G06F5/06GK102819418SQ20121026734
公開日2012年12月12日 申請日期2012年7月31日 優(yōu)先權(quán)日2012年7月31日
發(fā)明者周宏偉, 鄧讓鈺, 李永進(jìn), 晏小波, 衣曉飛, 張英, 竇強(qiáng), 曾坤, 謝倫國, 王永文, 馬卓 申請人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)