亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于數(shù)字信號處理的基于片區(qū)的交織和解交織的制作方法

文檔序號:6509331閱讀:352來源:國知局
用于數(shù)字信號處理的基于片區(qū)的交織和解交織的制作方法
【專利摘要】描述了行列交織的數(shù)據(jù)的基于片區(qū)(tile)的交織和解交織。在一個示例中,將解交織劃分成兩個存儲器傳輸階段,第一階段從片上存儲器到DRAM,第二階段從DRAM到片上存儲器。每一階段對行列交織的數(shù)據(jù)塊的一部分進行操作,并對這些數(shù)據(jù)項進行重新排序,使得第二階段的輸出包括解交織的數(shù)據(jù)。在第一階段中,根據(jù)非線性存儲器讀地址序列從片上存儲器讀取數(shù)據(jù)項,并將這些數(shù)據(jù)項寫入DRAM。在第二階段中,根據(jù)線性地址序列的突發(fā),從DRAM讀取數(shù)據(jù)項,這高效地利用了DRAM接口,并根據(jù)非線性存儲器寫地址序列,將這些數(shù)據(jù)項寫回到片上存儲器。
【專利說明】用于數(shù)字信號處理的基于片區(qū)的交織和解交織
【背景技術】
[0001]數(shù)字信號處理在多種多樣的應用程序中獲得了使用。這些應用中的很多都是實時的,在該意義上,對于數(shù)據(jù)的處理存在時間約束,以便其對于終端用戶來說是有意義的或者有用的。這方面的一個例子是數(shù)字廣播流,例如數(shù)字電視和數(shù)字無線電。數(shù)據(jù)信號處理系統(tǒng)需要能夠足夠快速地對實時流進行處理和解碼,以便使數(shù)據(jù)能夠像其被接收那樣快速地被輸出(除非緩沖)。
[0002]數(shù)字信號處理系統(tǒng)除了使用更加通用的數(shù)字信號處理器之外,通常還使用一個或多個專用硬件外圍設備。這些硬件外圍設備是被設計為以快速和高效方式來執(zhí)行特定的信號處理任務的處理模塊。例如,交織和解交織是通常使用硬件外圍設備來針對實時數(shù)據(jù)執(zhí)行的操作。交織和解交織是存儲器密集型的操作,執(zhí)行該操作的硬件外圍設備使用相關聯(lián)的專用存儲器設備對數(shù)據(jù)進行重新排序。
[0003]但是,不同類型的實時數(shù)據(jù)的要求變化非常大。例如,世界范圍內使用的各種不同的數(shù)字電視和無線標準通常具有不同結構的實時數(shù)據(jù),例如,使用不同的類型或者參數(shù)進行編碼、交織、均衡等等。如果數(shù)字信號處理系統(tǒng)能足夠靈活地應用于不同的標準,那么用于交織/解交織的專用存儲器設備必須足夠地大,以便處理具有最大存儲器要求的標準。結果,與交織/解交織硬件外圍設備一起使用的存儲器經(jīng)常是未充分利用的。
[0004]存儲器設備的一個示例是DRAM (動態(tài)隨機存取存儲器)設備。DRAM設備以頁來組織它們所存儲的內容,每一頁的大小通常為幾千字節(jié)。每一個DRAM —次只打開有限數(shù)量的頁(通常為四頁),并且打開一頁來存取數(shù)據(jù)需要許多開銷周期。
[0005]下面所描述的實施例并不限于解決已知數(shù)字信號處理系統(tǒng)的任何或者所有缺點的實現(xiàn)。

【發(fā)明內容】

[0006]提供該概括以便以簡化形式來介紹在下面的【具體實施方式】中進一步描述的構思的精華。該概括并不是旨在標識要求保護的主題的關鍵特征或者必要特征,也不是旨在用作幫助確定所要求保護的主題的范圍。
[0007]描述了行列交織的數(shù)據(jù)的基于片區(qū)(Tile)的交織和解交織。在一個示例中,將解交織劃分成兩個存儲器傳輸階段,第一階段從片上存儲器到DRAM,第二階段從DRAM到片上存儲器。每一階段都對行列交織的數(shù)據(jù)塊的一部分進行操作,并對這些數(shù)據(jù)項進行重新排序,使得第二階段的輸出包括解交織的數(shù)據(jù)。在第一階段中,根據(jù)非線性的存儲器讀地址序列從片上存儲器讀取數(shù)據(jù)項,并將這些數(shù)據(jù)項寫入DRAM。在第二階段中,根據(jù)高效地利用了 DRAM接口的線性地址序列的突發(fā),從DRAM讀取數(shù)據(jù)項,并根據(jù)非線性的存儲器寫地址序列,將這些數(shù)據(jù)項寫回到片上存儲器。
[0008]第一方面提供了一種片上數(shù)字信號處理系統(tǒng),其包括:第一存儲器,用于存儲以第一序列排列的多個數(shù)據(jù)項,每一個數(shù)據(jù)項在所述第一存儲器上具有相關聯(lián)的存儲器地址,所述多個數(shù)據(jù)項包括一塊數(shù)據(jù)項的一個子集;第二存儲器;耦接到所述第一存儲器和所述第二存儲器的傳輸引擎,其包括去往動態(tài)隨機存取存儲器DRAM的端口,其中所述傳輸引擎配置為:在第一存儲器傳輸階段中,將所述多個數(shù)據(jù)項從所述第一存儲器直接傳輸?shù)剿鯠RAM,在第二存儲器傳輸階段中,將所述多個數(shù)據(jù)項從所述DRAM直接傳輸?shù)剿龅诙鎯ζ?,其中,在所述第一存儲器傳輸階段中,所述傳輸引擎用于:根據(jù)預定的非線性的存儲器讀地址序列,從所述第一存儲器讀取所述多個數(shù)據(jù)項,并將所述多個數(shù)據(jù)項寫入到所述DRAM,并且其中,在所述第二存儲器傳輸階段中,所述傳輸引擎用于:根據(jù)線性地址序列的突發(fā),從所述DRAM讀取所述多個數(shù)據(jù)項,線性地址序列的每一個突發(fā)都具有基于DRAM接口突發(fā)大小所選定的長度,以及根據(jù)預定的非線性的存儲器寫地址序列,將所述多個數(shù)據(jù)項寫入到所述第二存儲器,使得所述多個數(shù)據(jù)項按照與所述第一序列不相同的第二序列排列在所述第二存儲器上,其中所述第一序列和所述第二序列中的一個包括行列交織的數(shù)據(jù)。
[0009]第二方面提供了一種在數(shù)字信號處理系統(tǒng)中對一塊數(shù)據(jù)項執(zhí)行交織或解交織操作的方法,該方法包括:根據(jù)預定的非線性的存儲器讀地址序列,從第一片上存儲器讀取以第一序列存儲的第一多個數(shù)據(jù)項,其中所述第一多個數(shù)據(jù)項包括該塊數(shù)據(jù)項的一個子集;將所述第一多個數(shù)據(jù)項寫入動態(tài)隨機存取存儲器DRAM;根據(jù)線性地址序列的突發(fā),從所述DRAM讀取所述第一多個數(shù)據(jù)項,線性地址序列的每一個突發(fā)均具有基于DRAM接口突發(fā)大小所選定的長度;以及根據(jù)預定的非線性的存儲器寫地址序列,將所述第一多個數(shù)據(jù)項寫入第二片上存儲器,使得所述數(shù)據(jù)項以與所述第一序列不相同的第二序列排列在所述第二片上存儲器上,并且其中,所述第一序列和所述第二序列中的一個包括行列交織的數(shù)據(jù)。
[0010]第三方面提供了包括計算機程序代碼模塊的計算機程序,其中這些計算機程序代碼模塊用于在所述程序運行在計算機上時,執(zhí)行上面所描述的方法中的任何一個方法的所有步驟。所述計算機程序可以包含在計算機可讀介質上。
[0011]第四方面提供了執(zhí)行交織或解交織操作的方法,基本如參照附圖中的圖5-10中的任何一個所描述的。
[0012]本申請所描述的方法可以由配置有機器可讀形式的軟件的計算機執(zhí)行,其中該軟件以例如計算機程序的形式存儲在有形存儲介質上,計算機程序包括用于配置計算機執(zhí)行所描述方法的構成部分的計算機程序代碼。有形(或非臨時性)存儲介質的例子包括磁盤、指狀驅動器、存儲卡等等,其不包括傳播的信號。軟件可適合于在并行處理器或者串行處理器上執(zhí)行,使得這些方法步驟可以按照任何適當?shù)捻樞驁?zhí)行,或可以同時地執(zhí)行。
[0013]本申請承認固件和軟件可以是有價值的可單獨交易的商品。旨在涵蓋在“啞”或標準硬件上運行或對“啞”或標準硬件進行控制以執(zhí)行期望功能的軟件。還旨在涵蓋“描述”或定義硬件的配置的軟件,例如HDL (硬件描述語言)軟件,如用于設計硅芯片,或用于配置通用編程芯片,以執(zhí)行期望功能。
[0014]上面的特征可以適當?shù)亟M合,這對于技術人員將是顯而易見的,并且可以與例子的任意方面進行組合。
【專利附圖】

【附圖說明】
[0015]通過示例的方式,參照下面的附圖來描述實施例,其中:
[0016]圖1描繪了一種數(shù)字信號處理系統(tǒng);
[0017]圖2描繪了傳輸引擎的示意圖;[0018]圖3示出了用于描繪解交織的各種示例性方法的示意圖;
[0019]圖4描繪了使用傳輸引擎在兩塊數(shù)據(jù)上執(zhí)行的行列操作的示例;
[0020]圖5示出了用于描繪解交織的兩個另外示例性方法的示意圖;
[0021]圖6描繪了圖4的行列操作的示例,其具有抵消DRAM設備的限制的增強措施;
[0022]圖7示出了一種示例性的時間交織的數(shù)據(jù)塊;
[0023]圖8是一種解交織的示例性方法的流程圖;
[0024]圖9示出了針對圖7中所示的輸入交織塊而在圖8的方法的第一階段的結束處,在DRAM中存儲的數(shù)據(jù)項的網(wǎng)格表示;以及
[0025]圖10示出了針對圖7中所示的輸入交織塊而在圖8的方法的第二階段的結束處,在片上存儲器中存儲的數(shù)據(jù)項的網(wǎng)格表示。
[0026]貫穿附圖使用共同的參考數(shù)字來指示類似的特征。
【具體實施方式】
[0027]下面僅僅是通過例子的方式來描述實施例。這些例子代表了 申請人:當前已知的將這些實施例付諸于實踐的最佳方式,雖然這些最佳方式并不是能夠實現(xiàn)本發(fā)明的僅有的方式。描述給出了例子的功能以及用于構造和操作例子的步驟的序列。然而,可以通過不同的例子來實現(xiàn)相同的或等同的功能和序列。
[0028]下文描述了利用通用數(shù)字信號處理器(DSP)以及專用硬件外圍設備的數(shù)字信號處理系統(tǒng)。為了能高效地使用存儲器,該系統(tǒng)的不同元件可以訪問共享的片上存儲器。諸如直接存儲器存取(DMA)控制器之類的傳輸引擎可以將數(shù)據(jù)項寫入到片上存儲器,也可以從片上存儲器讀取數(shù)據(jù)項。片上存儲器包括靜態(tài)隨機存取存儲器(SRAM),傳輸引擎還具有去往動態(tài)RAM (DRAM)的端口,其中該DRAM可以是在外部的,也可以是片上的。傳輸引擎具有地址生成元件,地址生成元件使得能夠從存儲器讀取不同的數(shù)據(jù)項序列,和/或能夠將不同的數(shù)據(jù)項序列寫入到存儲器,并且這些序列可以包括線性的和非線性的數(shù)據(jù)項序列。
[0029]本申請使用的術語“線性”與讀取/寫入數(shù)據(jù)項序列有關,其指代讀取/寫入連續(xù)的(或者毗鄰的)數(shù)據(jù)項。相比而言,本申請使用的術語“非線性”與讀取/寫入數(shù)據(jù)項序列有關,其指代讀取/寫入非連續(xù)的(或者非毗鄰的)數(shù)據(jù)項,下面將描述非線性序列的示例。
[0030]下面的描述之中的DRAM的任何使用,旨在覆蓋任何形式的DRAM,包括同步DRAM、雙倍數(shù)據(jù)速率(DDR) DRAM (其可以稱為DDR RAM)和突發(fā)存取DRAM。如上所述,DRAM設備用頁來組織它們的存儲內容,DRAM設備一次只打開有限數(shù)量的頁。當存取任何類型的DRAM時,頻繁地存取不同的頁的數(shù)據(jù)存取模式是不高效的,這是由于其花費許多開銷周期來打開一個頁。在突發(fā)存取DRAM中,DRAM接口讀取/寫入4、8、16、32或者64 (或更多)個連續(xù)字節(jié)的突發(fā)。使用不完整DRAM接口突發(fā)的存取模式也是不高效的。
[0031]讀取/寫入不同數(shù)據(jù)項序列的能力使得能夠對數(shù)據(jù)項即時地執(zhí)行重新排序操作(例如,交織或者解交織),同時在存儲器單元之間傳送這些數(shù)據(jù)項,或者將這些數(shù)據(jù)項從一個存儲器傳送到另一個存儲器(例如,在SRAM和DRAM之間傳送)。這避免為了結合交織或解交織使用而在數(shù)字信號處理系統(tǒng)上包括專用(非共享)存儲器的需要,從而減少了芯片面積和費用。可以排列所使用的不同序列,以抵消某些類型的存儲器設備的性能限制,例如DRAM (就面積和因此產(chǎn)生的費用而言,與SRAM相比,使用DRAM更便宜,從而可以使用更大的DRAM),如下面所更詳細描述的。
[0032]在下文的描述中,只是通過示例的方式使用了時間交織/解交織;但是,應當理解的是,這些方法還可適用于其它形式的交織/解交織,例如比特交織/解交織。
[0033]首先參見圖1,圖1示出了一種示例性片上數(shù)字信號處理系統(tǒng)100的結構。系統(tǒng)100包括連接到傳輸引擎106的片上存儲器102和DRAM112。存儲器設備102、112都用于存儲數(shù)據(jù)項,它們均可以提供共享的存儲空間(例如,存儲與該數(shù)字信號處理系統(tǒng)有關的數(shù)據(jù),以及MPEG或者其它與視頻流有關的數(shù)據(jù))。片上存儲器102可以是任何適當形式的RAM,例如(但不限于)SRAM,但不是DRAM。DRAM112可以是片上的,也可以在芯片之外(即,其不能由DSP104進行直接存取),在下面的描述中,術語‘片上’存儲器用于指代片上存儲器102(其是非DRAM存儲器元件),盡管事實是DRAMl 12也可以是片上存儲器(即,當其形成在相同的硅片上時是片上系統(tǒng)100的集成部分)。
[0034]一個或多個DSP104連接到片上存儲器102。DSP104是可編程以便于對數(shù)據(jù)執(zhí)行信號處理計算(例如,快速傅里葉變換和均衡)的處理器。雖然沒有視作為通用處理器,但與下面所描述的硬件外圍設備相比,DSP104是更加可配置的。DSP104執(zhí)行程序代碼/指令,以便從片上存儲器102讀取數(shù)據(jù),對該數(shù)據(jù)執(zhí)行信號處理操作,并將數(shù)據(jù)寫回到片上存儲器 102。
[0035]此外,傳輸引擎106也連接到片上存儲器102,其中傳輸引擎106為多個硬件(HW)外圍設備108提供對于片上存儲器102的存取。在一些不例中,傳輸引擎106可以具有直接存儲器存取(DMA)控制器的形式。傳輸引擎106提供可以由硬件外圍設備108使用的多個存儲器存取通道(例如,DMA通道),以實現(xiàn)從片上存儲器102讀取數(shù)據(jù)或者向片上存儲器102寫入數(shù)據(jù)。
[0036]如上所述,硬件外圍設備108是特殊的、專用固定功能硬件模塊,其配置為執(zhí)行特定的信號處理任務。例如,一個硬件外圍設備可以是專用的Viterbi解碼模塊,另一個可以是專用的Reed-Solomon解碼模塊。此外,這些硬件外圍設備還可以稱為加速器。這些硬件外圍設備中的每一個彼此之間獨立地操作??梢詫τ布鈬O備進行充分地配置,以便提供特定于它們的任務的操作參數(shù),但不能對它們進行充分地配置來改變它們的任務(例如,不能將Viterbi模塊重新配置成Reed-Solomon模塊)。因此,與DSP104相比,硬件外圍設備更加專用于特定的任務。但是,硬件外圍設備被布置為以非??焖俸透咝У姆绞絹韴?zhí)行它們的特定任務。此外,通用控制處理器110也連接到片上存儲器102,其中通用控制處理器110可以用于初始化、配置和控制該數(shù)字信號處理系統(tǒng)的操作。
[0037]上面所描述的數(shù)字信號處理系統(tǒng)提供信號處理操作方面的靈活性。例如,該系統(tǒng)可以配置為進行操作,使得不同的DSP104和硬件外圍設備108以任何期望的配置或者序列對數(shù)據(jù)進行處理。每一個硬件外圍設備或DSP可以對一塊或多塊數(shù)據(jù)(本申請還將其稱為數(shù)據(jù)緩沖區(qū))進行操作,其中所述一塊或多塊數(shù)據(jù)由系統(tǒng)的其它部件提供并存儲在片上存儲器102中,每一個硬件外圍設備或DSP生成和存儲由該系統(tǒng)的其它元件使用的一個或多個數(shù)據(jù)緩沖區(qū)。這使該數(shù)字信號處理系統(tǒng)能用于多種不同類型的信號,例如用于不同的廣播/電信標準。
[0038]使用片上存儲器102所提供的公共存儲空間,能減少在該片上系統(tǒng)100中提供的存儲器存貯的總量。在不使用公共存儲空間的情況下,向每一個處理元件提供其自己的專用存儲器。例如,每一個DSP104都可以具有它們自己的工作空間存儲器,通用控制處理器110具有用于存儲執(zhí)行代碼和數(shù)據(jù)的另一個單獨的存儲器,硬件外圍設備108具有單獨的輸入和輸出緩沖區(qū),并且可以使用一個或多個另外的存儲器來在這些處理元件之間交換數(shù)據(jù)。
[0039]由于可對該數(shù)字信號處理系統(tǒng)進行配置以便允許實現(xiàn)不同的通信標準,因此針對具體的標準(其中該標準對于任何給定的存儲器都具有最大要求),需要對這些單獨的存儲器中的每一個單獨地確定大小。換言之,DSP存儲器需要足夠的大,以便適應對于DSP存儲器具有最大要求的標準。類似地,硬件外圍設備緩沖器也需要足夠的大,以便適應對于硬件外圍設備緩沖器具有最高要求的標準(其與具有較高DSP存儲器要求的標準不相同)。結果,非常大量的存儲器通常并不被處理元件中的一些使用。
[0040]但是,如果由片上存儲器102提供公共存儲空間的話,那么可以將不同標準的存儲器需求作為一個整體進行考慮(而不是它們對于系統(tǒng)的各個元件的需求)。換言之,片上存儲器102需要足夠的大,以便適應這些標準的最大整體、總存儲器需求。這具有對標準之間的不同存儲器需求進行平均的效果(例如,一種標準可能需要更多的DSP存儲器、但更小的緩沖器,而另一種標準可能則是相反的)。這具有只需要顯著的更低的總存儲器量的效果,并因此節(jié)省了硅片面積。
[0041]因此,片上存儲器102所提供的公共存儲空間可以保存該系統(tǒng)所使用的所有不同類型的數(shù)據(jù),例如,數(shù)字信號處理器工作空間、用于通用控制處理器的執(zhí)行代碼和數(shù)據(jù)、用于硬件外圍設備中的一個或多個的輸入和輸出緩沖區(qū)、用于在處理器之間交換數(shù)據(jù)的一個或多個緩沖區(qū)、以及用于該數(shù)字信號處理系統(tǒng)的其它配置數(shù)據(jù)。
[0042]現(xiàn)參見圖2,圖2描繪了傳輸引擎106的示意圖。傳輸引擎106包括第一存儲器端口 202 (其配置為連接到片上存儲器102)和第二存儲器端口 204 (其配置為連接到DRAM112)。此外,傳輸引擎106還包括多個外圍設備端口 206,每一個外圍設備端口配置為連接到相關聯(lián)的硬件外圍設備108。存儲器端口 202、204和外圍設備端口 206都連接到交叉線(crossbar) 208,其使得這些端口中的任何一個端口能夠連接到這些端口中的任何其它端口。
[0043]此外,傳輸引擎106還包括地址生成元件210,其耦接到存儲器端口 202、204,并配置為生成針對連接到存儲器端口 202、204的存儲器中的任意一個或者二者的讀和/或寫地址序列。在一些示例中,地址生成元件210可以包括可配置的地址生成器,其可以編程為以多種不同的模式(例如,線性模式和非線性模式)進行操作,并且其配置為從一組可能的模式之中選擇一個或多個操作模式。在其它示例中,地址生成元件210可以包括:用于生成特定地址序列(例如,將行列模式用于特定的數(shù)據(jù)項排列的序列,和將突發(fā)行列模式用于特定的數(shù)據(jù)項排列的序列)的一個或多個專用硬件模塊。在一些示例中,地址生成元件210可以生成線性和非線性序列,在其它示例中,針對線性序列可以使用直接連接,地址生成元件可以用于只生成非線性序列。
[0044]通過生成非線性的讀和/或寫地址序列,地址生成元件210可以對連接到傳輸引擎106的一個端口的存儲器(例如,片上存儲器102或者DRAM112)上所存儲的數(shù)據(jù)項執(zhí)行非線性重新排序。例如,圖2描繪了如何在傳輸?shù)紻RAM112期間,對片上存儲器102上所存儲的第一數(shù)據(jù)項序列212進行重新排序。在圖2的示例中,在片上存儲器102上有八個數(shù)據(jù)項,它們存儲在被表示為O到7的存儲器地址。在其它示例中,存儲器地址可以從不同于零的基地址開始,和/或每一個單獨數(shù)據(jù)項可以比存儲器設備上的單個存儲單元更大。在該示例中,將這些數(shù)據(jù)項傳輸?shù)紻RAM112,但按照與第一序列212不相同的第二序列214進行排序。為了清楚說明起見,在DRAM112上,將第二序列214中的數(shù)據(jù)項存儲在被表示為O’到7’的存儲器地址,但在其它示例中,這些地址也可以從不同于零的基地址開始。
[0045]在第一示例中,地址生成元件210可以生成非線性讀序列[3,6,4, 1,2,7,0, 5],并將該讀序列提供給第一存儲器端口 202。地址生成元件210還可以生成線性寫序列[O’,I’,2’,3’,4’,5’,6’,7’ ],并將其提供給第二存儲器端口 204 (其中,只是為了便于說明起見,將DRAM112上的地址表示為O’,I’等等以便與片上存儲器102上的地址進行區(qū)分)。這使得第一存儲器端口 202首先從讀序列中的第一地址(地址3)讀取數(shù)據(jù)項,在該示例中其是數(shù)據(jù)項“A”。該數(shù)據(jù)項穿過交叉線208到達第二存儲器204,第二存儲器204將該數(shù)據(jù)項寫入到寫序列中的第一存儲器地址(地址O’)。這導致將數(shù)據(jù)項“A”從第一序列212中的第四個數(shù)據(jù)項重新排序成第二序列214中的第一數(shù)據(jù)項。通過讀取讀序列中的下一個地址(地址6、地址4等等),并將相應的數(shù)據(jù)項(B、C、.寫入到寫序列中的下一個地址(地址I’、地址2’、...),來重復該操作。作為該操作的結果,來自第一序列的數(shù)據(jù)項(其被表示為G、D、E、A、C、H、B、F)現(xiàn)在按照第二序列(A、B、C、D、E、F、G、H)存儲在 DRAM 上。
[0046]在第二示例中,通過地址生成元件210生成線性讀序列[O, 1,2, 3,4, 5,6, 7]和非線性寫序列[6’,3’,4’,O’,2’,7’,I’,5’ ],也可以實現(xiàn)對數(shù)據(jù)項的相同的重新排序。在該示例中,首先從片上存儲器上的地址O讀取數(shù)據(jù)項“G”,并將其寫入到DRAM上的地址6’,其后從片上存儲器上的地址I讀取數(shù)據(jù)項“D”,并將其寫入到DRAM上的地址3’,等等。類似地,在第三示例中,通過地址生成元件210生成非線性讀序列以及也是非線性的寫序列,也可以實現(xiàn)對數(shù)據(jù)項的相同的重新排序。這種方式的一個示例可以是讀序列[O, 2,4,6,I, 3,5,7]和寫序列[6,,4,,2,,I,,3,,O,,7,,5,]。
[0047]在上面的每一個示例中,在傳輸引擎106從片上存儲器102向DRAMl 12直接傳輸數(shù)據(jù)項期間,即時地執(zhí)行從第一序列到第二序列的重新排序。對于從DRAM112到片上存儲器102的傳輸,或者從片上存儲器到該片上存儲器中的另一個位置的傳輸,以及類似地對于從DRAM到DRAM中的另一個地址的傳輸,也可以執(zhí)行相似的操作。
[0048]此外,上面的示例還示出了在執(zhí)行傳輸之前,完全地生成讀地址序列和寫地址序列。但是,也可以與傳輸一起并發(fā)地執(zhí)行地址序列的這種生成,例如,通過在對一個或多個之前數(shù)據(jù)項進行讀/寫時生成一個或多個讀地址和寫地址。
[0049]上面所描述的過程,作為向DRAM112進行的存儲器傳輸操作的組成部分,使得片上存儲器102上的數(shù)據(jù)項能夠被重新排序成不同的序列,并且類似地,作為向片上存儲器102進行的存儲器傳輸操作的一部分,DRAMl 12上的數(shù)據(jù)項可以被重新排序成不同的序列。這可以用于例如通過使用地址生成元件210來實現(xiàn)交織或解交織,其中地址生成元件210配置為根據(jù)某種交織方案來生成讀/寫地址序列。
[0050]圖3示出了描繪解交織的各種示例性方法的示意圖。在第一示意圖300中,在從片上存儲器102到片上存儲器102的單個傳輸中,執(zhí)行解交織。在后續(xù)的兩個示意圖302、304中,存在兩個傳輸:一個是從片上存儲器102到DRAMl 12的傳輸,第二個是從DRAM返回到片上存儲器102的傳輸。在第二示意圖302中,可以通過根據(jù)線性寫序列將存儲在片上存儲器102上的數(shù)據(jù)項寫入到DRAMl 12,隨后使用特定的非線性序列從DRAMl 12讀回這些數(shù)據(jù)項(其可以稱為‘行列模式’或‘行列交織’),來執(zhí)行這些數(shù)據(jù)項的解交織。下面參照圖4來詳細地描述這種非線性序列。替代地,可以通過使用行列模式將數(shù)據(jù)項寫入DRAM112,隨后線性地讀回這些數(shù)據(jù)項,來執(zhí)行數(shù)據(jù)項的解交織,如圖3中的第三示意圖304所示。
[0051]在圖3中所示的所有實現(xiàn)中,在所有交織的數(shù)據(jù)都位于輸入存儲器(即,圖3中的每一個圖的左手方所示出的片上存儲器102)之前,這種解交織過程不能開始。
[0052]行列模式考慮將數(shù)據(jù)項排列在具有多個行和列的一個或多個網(wǎng)格或表中。在圖4中對其進行了描繪,其中圖4示出了具有從O到23的連續(xù)存儲器地址(只是為了說明起見)的第一塊的輸入數(shù)據(jù)項402,以及具有從24到47的連續(xù)存儲器地址(同樣只是為了說明起見)的第二塊的輸入數(shù)據(jù)項404。如果參照圖3中的第二示例302來描述行列模式,則這些存儲器地址位于DRAM112中。在圖4所示的示例中,考慮這些數(shù)據(jù)項每隔六個數(shù)據(jù)項具有列中斷,如圖4中的虛線所指示的。這意味著將這些連續(xù)存儲器地址被考慮為沿著具有六個行的網(wǎng)格的列進行排列(這可以描述成沿著這些列來寫入/讀取數(shù)據(jù))。
[0053]在圖4中示出了以網(wǎng)格形式呈現(xiàn)的數(shù)據(jù)項,圖4示出了第一塊的輸入數(shù)據(jù)項402的第一網(wǎng)格406和第二塊的輸入數(shù)據(jù)項404的第二網(wǎng)格408。第一網(wǎng)格和第二網(wǎng)格均具有六個行和四個列。應當注意的是,連續(xù)尋址的數(shù)據(jù)項是沿著列進行排列的。但是,在其它示例中,也可以將數(shù)據(jù)項呈現(xiàn)為:相反地,連續(xù)的項是沿著行進行排列的,在該情況下,下面的描述仍然適用,但參照倒置的行和列。
[0054]行列模式的目的是對每一個網(wǎng)格進行轉置,使得當以穿過網(wǎng)格的列的序列來排列(例如,來自于DRAMl 12的)輸入數(shù)據(jù)項時,以穿過網(wǎng)格的行的序列來排列輸出數(shù)據(jù)項(例如,作為到片上存儲器102的輸出)。例如,參見網(wǎng)格406,如果輸入數(shù)據(jù)序列的前四個數(shù)據(jù)項是A、B、C、D (沿著第一列讀取四個項),那么輸出數(shù)據(jù)序列的前四個數(shù)據(jù)項是A、G、M、S (沿著第一行讀取四個項)。因此,諸如該方式的行列操作改變了數(shù)據(jù)項的順序,這其取決于定義了多少個行存在于網(wǎng)格中。
[0055]為了實現(xiàn)該行列模式,地址生成元件210生成用于導致行列轉置的讀和寫序列。這可以通過生成非線性讀序列(例如,從DRAMl 12讀)和線性寫序列(如圖4中所示,下面將更詳細地進行描述),或者通過生成線性讀序列(例如,從片上存儲器102讀)和非線性寫序列(例如,如圖3中的第三示例304所示)來實現(xiàn)。在另外的示例中,為了實現(xiàn)高效的存儲器存取,還可以使用非線性讀序列和非線性寫序列,如下面參照圖6所描述的。
[0056]圖4示出了非線性讀序列410的示例,可以觀察到其包括非連續(xù)的存儲器地址。在一個示例中,可以使用下面的偽代碼所描繪的算法,來生成該地址序列:
[0057]NO 二 rows * columns;
Ni = rows;
N2 二 numBlocks * rows * columns;
For ind = I to numlterns
nextItemAddr = a + o;
a = a + NI;
[0058]
if a >= NO

a.— a.- NO + I;
b = b + I;
if b >= Ni
a ^ 0 ;
b = 0 ;

o 二 rem(o + NO, N2);
end

end
end
[0059]其中“rows”(NI)是網(wǎng)格中的行的數(shù)量(在圖4的示例中,其是6),“columns”是網(wǎng)格中的列的數(shù)量(在圖4的示例中,其是4),“numBl0Cks”是數(shù)據(jù)項的塊的數(shù)量(在圖4的示例中,其是2),“numltems”是所有塊上的數(shù)據(jù)項的全部數(shù)量(在圖4的示例中,其是48)。變量“a”、“b”和“ο”是在該算法中使用的內部變量,它們可以都被初始化為零,或者一個或多個可以被初始化為非零值以便應用偏移量。
[0060]在計算了 NO (網(wǎng)格中的行的數(shù)量)、N1 (行的數(shù)量與列的數(shù)量相乘)和N2 (行的數(shù)量、列的數(shù)量和數(shù)據(jù)項的塊的數(shù)量的乘積)的初始值之后,該算法迭代的次數(shù)為所給出的數(shù)據(jù)項的數(shù)量,在每一次迭代計算該序列中的下一個地址(“nextltemAddr”)。實際上,該算法跳過了輸入序列中的固定數(shù)量的數(shù)據(jù)項(例如,在圖4中是6個),直到到達一行的結束位置為止(由第一個“if”語句來確定),隨后將該行的起始點遞增1,并進行重復。第二個“if”語句檢測一個塊的結束,該“if”語句對計算進行重置,但增加通過求余運算(rem(.))所計算的偏移量(在圖4中,其是24)。隨后,重復該過程,直到到達“numltems”為止。應當注意,可以將“numltems”設置為比所給出的數(shù)據(jù)項的總數(shù)更大的值,并且如果是這樣的話,則一旦訪問了所有的塊,該算法就卷繞回到第一塊。
[0061]在圖4中示出了通過上面的算法所生成的讀序列410,其中最上面一行示出了用于第一塊(網(wǎng)格406)的序列,最下面一行示出了用于第二塊(網(wǎng)格408)的序列。將讀序列410的前四個項作為例子,它們從地址0、6、12、18進行讀取,地址0、6、12、18對應于來自輸入數(shù)據(jù)項402的數(shù)據(jù)項A、G、M、S??梢杂^察到,其與網(wǎng)格406的第一行相對應。
[0062]地址生成元件210生成具有連續(xù)的存儲器地址的線性寫序列412,使得當傳輸引擎106使用讀序列410和寫序列412時,以非線性序列讀取數(shù)據(jù)項,并以線性序列寫入這些數(shù)據(jù)項。應當注意,為了簡單起見,圖4中的寫序列具有從O到47的地址,但在其它示例中,這些地址可以從任何基地址開始。在第一輸出數(shù)據(jù)項塊414和第二輸出數(shù)據(jù)項塊416中,可以觀察到讀序列410和寫序列412的組合的結果。通過將這些輸出數(shù)據(jù)項與網(wǎng)格406和408進行比較,可以觀察到,已經(jīng)成功地執(zhí)行了行列操作。
[0063]通過生成線性讀序列和非線性寫序列(例如,如圖3中的第二示例304所示),也可以獲得相同的結果,如下所示(為了簡潔起見,只示出了第一塊):
[0064]讀序列:
[0065]
【權利要求】
1.一種片上數(shù)字信號處理系統(tǒng),包括: 第一存儲器(102),其存儲以第一序列排列的多個數(shù)據(jù)項,每一個數(shù)據(jù)項具有所述第一存儲器上的相關聯(lián)的存儲器地址; 第二存儲器;以及 傳輸引擎,其耦接到所述第一存儲器和所述第二存儲器,并且包括通往動態(tài)隨機存取存儲器DRAM的端口,其中,所述傳輸引擎被配置為:在第一存儲器傳輸階段中,將所述多個數(shù)據(jù)項從所述第一存儲器直接傳輸?shù)剿鯠RAM,并且在第二存儲器傳輸階段中,將所述多個數(shù)據(jù)項從所述DRAM直接傳輸?shù)剿龅诙鎯ζ?,并? 其中,在所述第一存儲器傳輸階段中,所述傳輸引擎用于:根據(jù)預定的非線性存儲器讀地址序列,從所述第一存儲器讀取所述多個數(shù)據(jù)項,并將所述多個數(shù)據(jù)項寫入所述DRAM,并且 其中,在所述第二存儲器傳輸階段中,所述傳輸引擎用于:根據(jù)線性地址序列的突發(fā),從所述DRAM讀取所述多個數(shù)據(jù)項,線性地址序列的每一個突發(fā)具有基于DRAM接口突發(fā)大小所選定的長度,以及根據(jù)預定的非線性存儲器寫地址序列,將所述多個數(shù)據(jù)項寫入所述第二存儲器,使得所述多個數(shù)據(jù)項以與所述第一序列不相同的第二序列排列在所述第二存儲器上,并且其中,所述第一序列和所述第二序列中的一個包括行列交織的數(shù)據(jù)。
2.根據(jù)權利要求1所述的片上數(shù)字信號處理系統(tǒng),其中,所述第一存儲器和所述第二存儲器都是靜態(tài)隨機存取存儲器。
3.根據(jù)權利要求1所述的片上數(shù)字信號處理系統(tǒng),其中,所述第一存儲器和所述第二存儲器是同一片上存儲器。
4.根據(jù)權利要求1所述的片上數(shù)字信號處理系統(tǒng),還包括所述DRAM。
5.根據(jù)權利要求1所述的片上數(shù)字信號處理系統(tǒng),其中,所述多個數(shù)據(jù)項包括數(shù)據(jù)項塊的子集,并且所述傳輸引擎還用于:重復所述第一存儲器傳輸階段和所述第二存儲器傳輸階段,直到所述數(shù)據(jù)項塊的全部都已經(jīng)被寫入所述第二存儲器為止。
6.根據(jù)權利要求1所述的片上數(shù)字信號處理系統(tǒng),還包括: 至少一個地址生成元件(210),其用于生成所述預定的非線性存儲器讀地址序列和所述預定的非線性存儲器寫地址序列。
7.根據(jù)權利要求1所述的片上數(shù)字信號處理系統(tǒng),其中,所述多個數(shù)據(jù)項包括數(shù)據(jù)項塊的子集,并且所述數(shù)據(jù)項塊被定義為排列成網(wǎng)格,所述網(wǎng)格包括多個數(shù)據(jù)項行和多個數(shù)據(jù)項列。
8.根據(jù)權利要求7所述的片上數(shù)字信號處理系統(tǒng),其中,所述網(wǎng)格還包括多個片區(qū),每一個片區(qū)包括所述網(wǎng)格的一個矩形部分,并且還包括R個數(shù)據(jù)項行和C個數(shù)據(jù)項列,并且其中,所述多個數(shù)據(jù)項包括一個或多個片區(qū)。
9.根據(jù)權利要求8所述的片上數(shù)字信號處理系統(tǒng),其中,對于第一多個數(shù)據(jù)項中的每一個片區(qū),所述預定的非線性存儲器讀地址序列包括:間隔開固定數(shù)量的存儲器地址并開始于初始起始地址直到到達該片區(qū)的邊界為止的非連續(xù)存儲器地址序列,之后是一個或多個額外的非連續(xù)存儲器地址序列,所述固定數(shù)量與所述網(wǎng)格中的行的數(shù)量減去一相對應,每一個額外的序列開始于偏移的初始起始地址。
10.根據(jù)權利要求8所述的片上數(shù)字信號處理系統(tǒng),其中,所述預定的非線性存儲器寫地址序列包括:間隔開所述第二存儲器中的固定數(shù)量的存儲器地址并開始于所述第二存儲器中的初始起始地址的具有C個連續(xù)存儲器地址的組的序列,所述固定數(shù)量與所述網(wǎng)格中的列的數(shù)量減去C相對應。
11.根據(jù)權利要求8所述的片上數(shù)字信號處理系統(tǒng),其中,所述多個數(shù)據(jù)項包括所述網(wǎng)格的片區(qū)。
12.根據(jù)權利要求8所述的片上數(shù)字信號處理系統(tǒng),其中,在所述第二存儲器傳輸階段中,所述線性地址序列的突發(fā)包括:間隔開所述第二存儲器中的固定數(shù)量的存儲器地址并開始于所述第二存儲器中的初始起始地址的具有X個連續(xù)存儲器地址的突發(fā)的序列,其中,X等于所述網(wǎng)格的片區(qū)中的數(shù)據(jù)項的數(shù)量。
13.根據(jù)權利要求8所述的片上數(shù)字信號處理系統(tǒng),其中,在所述第一存儲器傳輸階段中,所述傳輸引擎用于:根據(jù)線性地址序列的突發(fā),將所述多個數(shù)據(jù)項寫入所述DRAM,線性地址序列的每一個突發(fā)具有基于DRAM接口突發(fā)大小所選定的長度。
14.根據(jù)權利要求13所述的片上數(shù)字信號處理系統(tǒng),其中,在所述第一存儲器傳輸階段中,所述線性地址序列的突發(fā)包括:間隔開所述第二存儲器中的固定數(shù)量的存儲器地址并開始于所述第二存儲器中的初始起始地址的具有X個連續(xù)存儲器地址的突發(fā)的序列,其中,X等于所述網(wǎng)格的片區(qū)中的數(shù)據(jù)項的數(shù)量。
15.根據(jù)權利要求8所述的片上數(shù)字信號處理系統(tǒng),其中,片區(qū)的大小是基于所述DRAM接口突發(fā)的大小進行調整的。
16.一種在數(shù)字信號處理系統(tǒng)中對數(shù)據(jù)項執(zhí)行交織或解交織操作的方法,所述方法包括: 根據(jù)預定的非線性存儲器讀地址序列,從第一片上存儲器讀取以第一序列存儲的第一多個數(shù)據(jù)項(521、561、804); 將所述第一多個數(shù)據(jù)項寫入動態(tài)隨機存取存儲器DRAM (522,562,806); 根據(jù)線性地址序列的突發(fā),從所述DRAM讀取所述第一多個數(shù)據(jù)項(523、563、814),線性地址序列的每一個突發(fā)具有基于DRAM接口突發(fā)大小所選定的長度;以及 根據(jù)預定的非線性存儲器寫地址序列,將所述第一多個數(shù)據(jù)項寫入第二片上存儲器(524、564、816),使得所述數(shù)據(jù)項以與所述第一序列不相同的第二序列排列在所述第二片上存儲器上,并且其中,所述第一序列和所述第二序列中的一個包括行列交織的數(shù)據(jù)。
17.根據(jù)權利要求16所述的方法,其中,所述第一多個數(shù)據(jù)項包括數(shù)據(jù)項塊的子集,其中,所述數(shù)據(jù)項塊被定義為排列成網(wǎng)格,所述網(wǎng)格包括多個數(shù)據(jù)項行和多個數(shù)據(jù)項列,所述網(wǎng)格還包括多個片區(qū),每一個片區(qū)包括所述網(wǎng)格的一個矩形部分,并且還包括R個數(shù)據(jù)項行和C個數(shù)據(jù)項列,并且其中,所述第一多個數(shù)據(jù)項包括一個或多個片區(qū),并且其中,根據(jù)預定的非線性存儲器讀地址序列從第一片上存儲器讀取以第一序列存儲的第一多個數(shù)據(jù)項包括:對于所述第一多個數(shù)據(jù)項中的每一個片區(qū), (i)讀取位于所述第一片上存儲器中的初始起始地址的數(shù)據(jù)項; (ii)跳過固定數(shù)量的數(shù)據(jù)項,所述固定數(shù)量與所述網(wǎng)格中的行的數(shù)量減去一相對應; (iii)讀取數(shù)據(jù)項; (iv)重復步驟(ii)和(iii),直到到達該片區(qū)的邊界為止; (v)向所述初始起始地址增加一個偏移;以及(Vi)重復步驟(i)- (V),直到已經(jīng)讀取了該片區(qū)中的每一個數(shù)據(jù)項為止。
18.根據(jù)權利要求16所述的方法,其中,所述第一多個數(shù)據(jù)項包括數(shù)據(jù)項塊的子集,其中,所述數(shù)據(jù)項塊被定義為排列成網(wǎng)格,所述網(wǎng)格包括多個數(shù)據(jù)項行和多個數(shù)據(jù)項列,所述網(wǎng)格還包括多個片區(qū),每一個片區(qū)包括所述網(wǎng)格的一個矩形部分,并且還包括R個數(shù)據(jù)項行和C個數(shù)據(jù)項列,并且其中,所述第一多個數(shù)據(jù)項包括一個或多個片區(qū),并且其中,根據(jù)預定的非線性存儲器寫地址序列將所述第一多個數(shù)據(jù)項寫入第二片上存儲器包括: (i)開始于所述第二片上存儲器中針對該片區(qū)的初始起始地址,將來自所述第一多個數(shù)據(jù)項的C個數(shù)據(jù)項寫入所述第二片上存儲器中的多個連續(xù)地址; (ii)跳過所述第二片上存儲器中的固定數(shù)量的地址,所述固定數(shù)量與所述網(wǎng)格中的列的數(shù)量減去C相對應; (iii)將來自所述第一多個數(shù)據(jù)項的C個數(shù)據(jù)項寫入所述第二片上存儲器中的多個連續(xù)地址;以及 (iv)重復步驟(ii)和(iii)。
19.根據(jù)權利要求16所述的方法,其中,所述第一多個數(shù)據(jù)項包括數(shù)據(jù)項塊的子集,其中,所述數(shù)據(jù)項塊被定義為排列成網(wǎng)格,所述網(wǎng)格包括多個數(shù)據(jù)項行和多個數(shù)據(jù)項列,所述網(wǎng)格還包括多個片區(qū),每一個片區(qū)包括所述網(wǎng)格的一個矩形部分,并且還包括R個數(shù)據(jù)項行和C個數(shù)據(jù)項列,并且其中,所述第一多個數(shù)據(jù)項包括一個或多個片區(qū),并且其中,將所述第一多個數(shù)據(jù)項寫入所述DRAM (562)包括: (i)開始于所述DRAM中針對該片區(qū)的初始起始地址,將來自所述第一多個數(shù)據(jù)項的X個數(shù)據(jù)項寫入所述DRAM中的多個連續(xù)地址;` (ii)跳過所述DRAM中的固定數(shù)量的地址; (iii)將來自所述第一多個數(shù)據(jù)項的X個數(shù)據(jù)項寫入所述DRAM中的多個連續(xù)地址;以及 (iv)重復步驟(ii)和(iii),其中,X等于所述網(wǎng)格的片區(qū)中的數(shù)據(jù)項的數(shù)量。
20.根據(jù)權利要求16所述的方法,其中,所述第一多個數(shù)據(jù)項包括數(shù)據(jù)項塊的子集,其中,所述數(shù)據(jù)項塊被定義為排列成網(wǎng)格,所述網(wǎng)格包括多個數(shù)據(jù)項行和多個數(shù)據(jù)項列,所述網(wǎng)格還包括多個片區(qū),每一個片區(qū)包括所述網(wǎng)格的一個矩形部分,并且還包括R個數(shù)據(jù)項行和C個數(shù)據(jù)項列,并且其中,所述第一多個數(shù)據(jù)項包括一個或多個片區(qū),并且其中,根據(jù)線性地址序列的突發(fā)從所述DRAM讀取所述第一多個數(shù)據(jù)項(563)包括: (i )開始于所述DRAM中的初始起始地址,從所述DRAM中的多個連續(xù)地址,讀取來自所述第一多個數(shù)據(jù)項的X個數(shù)據(jù)項; (ii)跳過所述DRAM中的固定數(shù)量的地址; (iii)從所述DRAM中的多個連續(xù)地址,讀取來自所述第一多個數(shù)據(jù)項的X個數(shù)據(jù)項;以及 (iv)重復步驟(ii)和(iii),其中,X等于所述網(wǎng)格的片區(qū)中的數(shù)據(jù)項的數(shù)量。
【文檔編號】G06F13/20GK103678190SQ201310384449
【公開日】2014年3月26日 申請日期:2013年8月29日 優(yōu)先權日:2012年8月30日
【發(fā)明者】P·默林, A·J·安德森, M·厄爾-哈加 申請人:想象力科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1