本發(fā)明涉及通信領(lǐng)域,尤其涉及一種FIFO數(shù)據(jù)均衡輸出方法及其輸出裝置。
背景技術(shù):
在通信領(lǐng)域,F(xiàn)IFO(First In First Output先進(jìn)先出)應(yīng)用非常廣泛,它的主要作用是實(shí)現(xiàn)數(shù)據(jù)的緩存、跨時(shí)鐘域數(shù)據(jù)傳遞以及數(shù)據(jù)解包和封包處理等。
FIFO的工作原理具體為:輸入數(shù)據(jù)在寫(xiě)入時(shí)鐘域里根據(jù)寫(xiě)使能信號(hào)寫(xiě)入到FIFO內(nèi)部;在讀出時(shí)鐘域作用下,根據(jù)讀使能信號(hào)輸出數(shù)據(jù),輸出數(shù)據(jù)的順序與寫(xiě)入順序有關(guān);先寫(xiě)入的數(shù)據(jù),先讀出(即先進(jìn)先出)。
在實(shí)際的FIFO模塊中,為避免數(shù)據(jù)溢出或者讀出無(wú)效數(shù)據(jù),還需要根據(jù)FIFO內(nèi)部存儲(chǔ)數(shù)據(jù)的多少,輸出空滿信號(hào)或快空快滿信號(hào),用以反映FIFO的內(nèi)部存貯空間剩余量。
其中,空信號(hào)、快空信號(hào)可以表示FIFO存貯數(shù)據(jù)沒(méi)有了或快沒(méi)有了,此時(shí)停止進(jìn)行讀操作以避免讀出無(wú)效數(shù)據(jù)。滿信號(hào)、快滿信號(hào)表示FIFO存貯數(shù)據(jù)滿了或快滿了,此時(shí)停止進(jìn)行寫(xiě)操作以避免數(shù)據(jù)溢出。
一般的,數(shù)據(jù)寫(xiě)到FIFO后,讀信號(hào)主要是由FIFO的空信號(hào)或快空信號(hào)控制。當(dāng)FIFO空或快空信號(hào)指示有效,此時(shí)禁止讀FIFO;否則讀出FIFO數(shù)據(jù)。在實(shí)際中,從FIFO讀出的數(shù)據(jù)由于缺口時(shí)鐘的原因不會(huì)是一直有效的,而是帶缺口的,即存在數(shù)據(jù)有效指示信號(hào)。
由此,若采用這樣的數(shù)據(jù)讀取方式,如圖1所示,從FIFO輸出的有效信號(hào)和無(wú)效信號(hào)呈現(xiàn)連續(xù)變化,即在一段很長(zhǎng)的時(shí)間內(nèi)FIFO的輸出數(shù)據(jù)是有效的;在很長(zhǎng)一段時(shí)間內(nèi)是無(wú)效的,而不是有效無(wú)效信號(hào)間隔變化。也就是說(shuō)從FIFO輸出的數(shù)據(jù)并不是均勻的,不能均衡輸出。
為了適應(yīng)這種非均衡輸出,下游處理必須采用比較深的緩存空間存貯數(shù)據(jù)以能吸收掉比較大的缺口。由于采用大的緩存器,數(shù)據(jù)延時(shí)會(huì)相應(yīng)增大,特別是在級(jí)聯(lián)多級(jí)存貯器的情況下,非常明顯。但多級(jí)FIFO串聯(lián)使用是非常普遍的。下游級(jí)聯(lián)的每個(gè)FIFO存貯空間更大,消耗的存貯資源會(huì)增加更多,增加的功耗也會(huì)更大。
因此,現(xiàn)有技術(shù)還有待發(fā)展。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述現(xiàn)有技術(shù)的不足之處,本發(fā)明的目的在于提供一種FIFO數(shù)據(jù)均衡輸出方法及其輸出裝置,旨在解決現(xiàn)有技術(shù)中FIFO非均衡輸出的問(wèn)題。
為了達(dá)到上述目的,本發(fā)明采取了以下技術(shù)方案:
一種FIFO數(shù)據(jù)均衡輸出方法,其中,包括:
根據(jù)所述寫(xiě)入數(shù)據(jù)速率和讀取數(shù)據(jù)的讀時(shí)鐘頻率和讀取數(shù)據(jù)位寬,計(jì)算輸出數(shù)據(jù)有效信號(hào)比值;
化簡(jiǎn)獲得所述輸出數(shù)據(jù)有效信號(hào)比值為最簡(jiǎn)不可約分?jǐn)?shù);
根據(jù)所述最簡(jiǎn)不可約分?jǐn)?shù),獲取FIFO的讀取使能信號(hào)以及輸出數(shù)據(jù)指示信號(hào)。
所述的方法,其中,所述根據(jù)所述最簡(jiǎn)不可約分?jǐn)?shù),獲取FIFO的讀取使能信號(hào)以及輸出數(shù)據(jù)指示信號(hào),具體包括:
輸出FIFO的讀取啟動(dòng)信號(hào);
根據(jù)最簡(jiǎn)不可約分?jǐn)?shù)分別計(jì)算用于指示時(shí)鐘周期是否可以讀出數(shù)據(jù)的讀窗口指示信號(hào)以及讀取數(shù)據(jù)是否有效的讀數(shù)據(jù)有效窗口指示信號(hào);
將所述讀取啟動(dòng)信號(hào)與所述讀窗口指示信號(hào)進(jìn)行與,獲得FIFO的讀使能信號(hào);
將所述讀取啟動(dòng)信號(hào)與所述讀數(shù)據(jù)有效窗口指示信號(hào)進(jìn)行與,獲得FIFO讀數(shù)據(jù)有效指示信號(hào)。
所述的方法,其中,所述根據(jù)最簡(jiǎn)不可約分?jǐn)?shù)計(jì)算用于指示時(shí)鐘周期是否可以讀出數(shù)據(jù)的讀窗口指示信號(hào),具體包括:
設(shè)所述最簡(jiǎn)不可約分?jǐn)?shù)為n/m,n和m均為正整數(shù);j為時(shí)鐘周期,j在1到m之間取值;
所述讀窗口指示信號(hào)用于指示在第j個(gè)時(shí)鐘周期是否讀取數(shù)據(jù):
當(dāng)j×n mod m<n時(shí),表示第j個(gè)時(shí)鐘周期讀取數(shù)據(jù);
當(dāng)j×n mod m≥n時(shí),表示第j個(gè)時(shí)鐘周期不讀取數(shù)據(jù)。
所述的方法,其中,所述根據(jù)最簡(jiǎn)不可約分?jǐn)?shù)計(jì)算讀數(shù)據(jù)有效窗口指示信號(hào),具體包括:
設(shè)所述最簡(jiǎn)不可約分?jǐn)?shù)為n/m,n和m均為正整數(shù);j為時(shí)鐘周期,j在1到m之間取值;
所述讀數(shù)據(jù)有效窗口指示信號(hào)用于指示在第m個(gè)時(shí)鐘周期,第j個(gè)時(shí)鐘指示輸出數(shù)據(jù)是否有效:
當(dāng)j×n mod m<n時(shí),表示輸出數(shù)據(jù)有效;
當(dāng)j×n mod m≥n時(shí),表示輸出數(shù)據(jù)無(wú)效。
所述的方法,其中,所述根據(jù)所述寫(xiě)入數(shù)據(jù)速率和讀取數(shù)據(jù)速率,計(jì)算輸出數(shù)據(jù)有效信號(hào)比值,具體包括:
通過(guò)計(jì)算寫(xiě)入數(shù)據(jù)的寫(xiě)時(shí)鐘頻率、寫(xiě)入數(shù)據(jù)位寬以及寫(xiě)入數(shù)據(jù)有效信號(hào)指示的乘積,獲取寫(xiě)入數(shù)據(jù)速率;
令寫(xiě)入數(shù)據(jù)速率與讀時(shí)鐘頻率和讀取數(shù)據(jù)位寬的乘積相除,獲得輸出數(shù)據(jù)有效信號(hào)比值。
一種FIFO數(shù)據(jù)均衡輸出裝置,其中,包括:
FIFO模塊,用于根據(jù)控制信號(hào),輸入數(shù)據(jù)至FIFO中和從FIFO中讀取數(shù)據(jù);
讀使能均衡模塊,用于根據(jù)所述寫(xiě)入數(shù)據(jù)速率和讀取數(shù)據(jù)的讀時(shí)鐘頻率和讀取數(shù)據(jù)位寬,計(jì)算輸出數(shù)據(jù)有效信號(hào)比值;化簡(jiǎn)獲得所述輸出數(shù)據(jù)有效信號(hào)比值為最簡(jiǎn)不可約分?jǐn)?shù);根據(jù)所述最簡(jiǎn)不可約分?jǐn)?shù),獲取FIFO的讀取使能信號(hào)以及輸出數(shù)據(jù)指示信號(hào);
讀信號(hào)生成模塊,用于輸出與讀使能均衡模塊對(duì)應(yīng)的讀取控制信號(hào),提供給所述FIFO模塊。
所述的裝置,其中,所述讀信號(hào)生成模塊具體用于:輸出FIFO的讀取啟動(dòng)信號(hào);
所述讀使能均衡模塊具體用于:根據(jù)最簡(jiǎn)不可約分?jǐn)?shù)分別計(jì)算用于指示時(shí)鐘周期是否可以讀出數(shù)據(jù)的讀窗口指示信號(hào)以及讀取數(shù)據(jù)是否有效的讀數(shù)據(jù)有效窗口指示信號(hào);
所述讀信號(hào)生成模塊,具體用于:將所述讀取啟動(dòng)信號(hào)與所述讀窗口指示信號(hào)進(jìn)行與,獲得FIFO的讀使能信號(hào);
將所述讀取啟動(dòng)信號(hào)與所述讀數(shù)據(jù)有效窗口指示信號(hào)進(jìn)行與,獲得FIFO讀數(shù)據(jù)有效指示信號(hào)。
所述的裝置,其中,所述讀窗口指示信號(hào)具體為:設(shè)所述最簡(jiǎn)不可約分?jǐn)?shù)為n/m,n和m均為正整數(shù);j為時(shí)鐘周期,j在1到m之間取值;
所述讀窗口指示信號(hào)用于指示在第j個(gè)時(shí)鐘周期是否讀取數(shù)據(jù):
當(dāng)j×n mod m<n時(shí),表示第j個(gè)時(shí)鐘周期讀取數(shù)據(jù);
當(dāng)j×n mod m≥n時(shí),表示第j個(gè)時(shí)鐘周期不讀取數(shù)據(jù)。
所述的裝置,其中,所述讀數(shù)據(jù)有效窗口指示信號(hào)具體為:
設(shè)所述最簡(jiǎn)不可約分?jǐn)?shù)為n/m,n和m均為正整數(shù);j為時(shí)鐘周期,j在1到m之間取值;
所述讀數(shù)據(jù)有效窗口指示信號(hào)用于指示在第m個(gè)時(shí)鐘周期,第j個(gè)時(shí)鐘指示輸出數(shù)據(jù)是否有效:
當(dāng)j×n mod m<n時(shí),表示輸出數(shù)據(jù)有效;
當(dāng)j×n mod m≥n時(shí),表示輸出數(shù)據(jù)無(wú)效。
所述的裝置,其中,所述讀使能均衡模塊具體用于:通過(guò)計(jì)算寫(xiě)入數(shù)據(jù)的寫(xiě)時(shí)鐘頻率、寫(xiě)入數(shù)據(jù)位寬以及寫(xiě)入數(shù)據(jù)有效信號(hào)指示的乘積,獲取寫(xiě)入數(shù)據(jù)速率;令寫(xiě)入數(shù)據(jù)速率與讀時(shí)鐘頻率和讀取數(shù)據(jù)位寬的乘積相除,獲得輸出數(shù)據(jù)有效信號(hào)比值。
有益效果:本發(fā)明提供的一種FIFO數(shù)據(jù)均衡輸出方法及其裝置,令FIFO的輸出數(shù)據(jù)實(shí)現(xiàn)均衡輸出,減小下游需要的存儲(chǔ)器,從而節(jié)省資源。另外,由于存儲(chǔ)器空間減小了,也相應(yīng)的減低了數(shù)據(jù)的延遲。尤是在數(shù)據(jù)網(wǎng)絡(luò)傳輸中,對(duì)傳輸延時(shí)敏感的應(yīng)用,例如說(shuō)話音,無(wú)線通信等,可以保證傳輸敏感應(yīng)用在數(shù)據(jù)網(wǎng)絡(luò)中可靠低延時(shí)傳輸。
附圖說(shuō)明
圖1為現(xiàn)有的FIFO數(shù)據(jù)的非均衡輸出示意圖;
圖2為本發(fā)明實(shí)施例提供的FIFO數(shù)據(jù)均衡輸出方法的方法流程圖;
圖3為本發(fā)明實(shí)施例提供的生成讀窗口指示信號(hào)和讀數(shù)據(jù)有效窗口指示信號(hào)的示意圖;
圖4為本發(fā)明實(shí)施例提供的FIFO數(shù)據(jù)均衡輸出裝置的結(jié)構(gòu)框圖;
圖5為本發(fā)明實(shí)施例提供的FIFO數(shù)據(jù)的均衡輸出示意圖。
具體實(shí)施方式
本發(fā)明提供一種FIFO數(shù)據(jù)均衡輸出方法及其裝置。為使本發(fā)明的目的、技術(shù)方案及效果更加清楚、明確,以下參照附圖并舉實(shí)施例對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
圖2為本發(fā)明實(shí)施例提供的FIFO數(shù)據(jù)均衡輸出方法。如圖2所示,該方法包括如下步驟:
100:根據(jù)所述寫(xiě)入數(shù)據(jù)速率和讀取數(shù)據(jù)的讀時(shí)鐘頻率和讀取數(shù)據(jù)位寬,計(jì)算輸出數(shù)據(jù)有效信號(hào)比值。
具體的,該寫(xiě)入數(shù)據(jù)速率是指FIFO模塊的數(shù)據(jù)寫(xiě)入速率,其單位為比特每秒(bps)。該寫(xiě)入速率可以通過(guò)如下公式計(jì)算:
Sinput=validinput×bitlengthinput×clockinput
其中,Sinput為寫(xiě)入數(shù)據(jù)速率,validinput為寫(xiě)入數(shù)據(jù)有效信號(hào)指示,bitlengthinput為寫(xiě)入數(shù)據(jù)位寬,clockinput為寫(xiě)入時(shí)鐘頻率。
相對(duì)應(yīng)地,輸出信號(hào)有效信號(hào)比值可以通過(guò)如下算式計(jì)算:
Vaildoutput=Sinput/(clockoutput×bitlengthoutput)
其中,Vaildoutput為輸出信號(hào)有效信號(hào)比值,clockoutput為讀取時(shí)鐘頻率,bitlengthoutput為讀取數(shù)據(jù)位寬。
在一些實(shí)施例中,寫(xiě)入數(shù)據(jù)位寬和讀取數(shù)據(jù)位寬是一致的,因此,該輸出數(shù)據(jù)有效信號(hào)比值可以將寫(xiě)入數(shù)據(jù)位寬和讀取數(shù)據(jù)位寬約分,進(jìn)一步化簡(jiǎn)。
200:化簡(jiǎn)獲得所述輸出數(shù)據(jù)有效信號(hào)比值為最簡(jiǎn)不可約分?jǐn)?shù)。
所述最簡(jiǎn)不可約分?jǐn)?shù)是指令分子分母均為不可繼續(xù)約分的正整數(shù),例如當(dāng)所述輸出數(shù)據(jù)有效信號(hào)比值的結(jié)果是4/10。可以經(jīng)過(guò)化簡(jiǎn)后得到2/5,分子和分母是最小不可約正整數(shù),n是2,m是5,化簡(jiǎn)結(jié)束。
300:根據(jù)所述最簡(jiǎn)不可約分?jǐn)?shù),獲取FIFO的讀取使能信號(hào)以及輸出數(shù)據(jù)指示信號(hào)。
具體的,根據(jù)獲取的最簡(jiǎn)不可約分?jǐn)?shù),可以計(jì)算確定用于指示時(shí)鐘周期是否可以讀出數(shù)據(jù)的讀窗口指示信號(hào)(310)以及讀取數(shù)據(jù)是否有效的讀數(shù)據(jù)有效窗口指示信號(hào)(320)。
設(shè)所述最簡(jiǎn)不可約分?jǐn)?shù)為n/m,n和m均為正整數(shù);j為時(shí)鐘周期,j在1到m之間取值;
對(duì)于讀窗口指示信號(hào),其用于指示在第j個(gè)時(shí)鐘周期是否讀取數(shù)據(jù):
當(dāng)j×n mod m<n時(shí),表示第j個(gè)時(shí)鐘周期讀取數(shù)據(jù);
當(dāng)j×n mod m≥n時(shí),表示第j個(gè)時(shí)鐘周期不讀取數(shù)據(jù)。
而對(duì)于讀數(shù)據(jù)有效窗口指示信號(hào):其用于指示在第m個(gè)時(shí)鐘周期,第j個(gè)時(shí)鐘指示輸出數(shù)據(jù)是否有效:
當(dāng)j×n mod m<n時(shí),表示輸出數(shù)據(jù)有效;
當(dāng)j×n mod m≥n時(shí),表示輸出數(shù)據(jù)無(wú)效。
在具體的FIFO運(yùn)行過(guò)程中:FIFO啟動(dòng)時(shí)候,先進(jìn)行FIFO寫(xiě)操作,講輸入到FIFO的數(shù)據(jù)在寫(xiě)時(shí)鐘以及數(shù)據(jù)有效信號(hào)的作用下,寫(xiě)入到FIFO。FIFO復(fù)位的時(shí)候,F(xiàn)IFO的內(nèi)部數(shù)據(jù)存貯指示為0,F(xiàn)IFO為空,表示FIFO可以將輸入數(shù)據(jù)寫(xiě)入到FIFO內(nèi)部。待開(kāi)始進(jìn)行FIFO的寫(xiě)入操作之后,此時(shí)還不能允許FIFO讀操作,待FIFO的內(nèi)部數(shù)據(jù)存貯指示值為FIFO深度一半時(shí)候,開(kāi)始允許FIFO進(jìn)行讀操作,此時(shí)產(chǎn)生FIFO的讀取啟動(dòng)信號(hào)(350)。
為實(shí)現(xiàn)如圖5所示的FIFO均衡輸出,可以將所述讀取啟動(dòng)信號(hào)與所述讀窗口指示信號(hào)進(jìn)行與,獲得如圖3所示的FIFO的讀使能信號(hào)(330);以及將所述讀取啟動(dòng)信號(hào)與所述讀數(shù)據(jù)有效窗口指示信號(hào)進(jìn)行與,獲得如圖3所示的FIFO的讀數(shù)據(jù)有效指示信號(hào)(340)。
圖4為本發(fā)明實(shí)施例提供的FIFO數(shù)據(jù)均衡輸出裝置。如圖4所示,該裝置包括:FIFO模塊100、讀使能均衡模塊200以及讀信號(hào)生成模塊300。
其中,F(xiàn)IFO模塊100用于根據(jù)控制信號(hào),輸入數(shù)據(jù)至FIFO中和從FIFO中讀取數(shù)據(jù)。讀使能均衡模塊200用于根據(jù)所述寫(xiě)入數(shù)據(jù)速率和讀取數(shù)據(jù)的讀時(shí)鐘頻率和讀取數(shù)據(jù)位寬,計(jì)算輸出數(shù)據(jù)有效信號(hào)比值;化簡(jiǎn)獲得所述輸出數(shù)據(jù)有效信號(hào)比值為最簡(jiǎn)不可約分?jǐn)?shù);根據(jù)所述最簡(jiǎn)不可約分?jǐn)?shù),獲取FIFO的讀取使能信號(hào)以及輸出數(shù)據(jù)指示信號(hào)。讀信號(hào)生成模塊300用于輸出與讀使能均衡模塊對(duì)應(yīng)的讀取控制信號(hào),提供給所述FIFO模塊。
具體的,所述讀信號(hào)生成模塊具體用于:輸出FIFO的讀取啟動(dòng)信號(hào)。所述讀使能均衡模塊具體用于:根據(jù)最簡(jiǎn)不可約分?jǐn)?shù)分別計(jì)算用于指示時(shí)鐘周期是否可以讀出數(shù)據(jù)的讀窗口指示信號(hào)以及讀取數(shù)據(jù)是否有效的讀數(shù)據(jù)有效窗口指示信號(hào);
更具體的,所述讀信號(hào)生成模塊300具體用于:將所述讀取啟動(dòng)信號(hào)與所述讀窗口指示信號(hào)進(jìn)行與,獲得FIFO的讀使能信號(hào);將所述讀取啟動(dòng)信號(hào)與所述讀數(shù)據(jù)有效窗口指示信號(hào)進(jìn)行與,獲得FIFO讀數(shù)據(jù)有效指示信號(hào)。
更具體的,所述讀使能均衡模塊具體用于:通過(guò)計(jì)算寫(xiě)入數(shù)據(jù)的寫(xiě)時(shí)鐘頻率、寫(xiě)入數(shù)據(jù)位寬以及寫(xiě)入數(shù)據(jù)有效信號(hào)指示的乘積,獲取寫(xiě)入數(shù)據(jù)速率;令寫(xiě)入數(shù)據(jù)速率與讀時(shí)鐘頻率和讀取數(shù)據(jù)位寬的乘積相除,獲得輸出數(shù)據(jù)有效信號(hào)比值。
可以理解的是,對(duì)本領(lǐng)域普通技術(shù)人員來(lái)說(shuō),可以根據(jù)本發(fā)明的技術(shù)方案及本發(fā)明構(gòu)思加以等同替換或改變,而所有這些改變或替換都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。