本申請涉及通信技術領域,尤其涉及一種交織處理方法及裝置。
背景技術:
物理層是無線接口層的最底層,直接影響著無線鏈路容量和系統性能好壞。比特信息處理是物理層中一個復雜處理步驟,然而在陸地移動通信這種變參信道上,比特差錯經常是成串發生的,并且如果遭遇突發干擾,某些重要的比特信息被破壞。
其中,交織是一種克服突發干擾的有效技術。通過打亂符號間的相關性,將突發的干擾隨機化,減小信道衰落和干擾帶來的影響。目前,在發送端可采用“行寫列讀”的信道交織方式。相應的,在接收端則使用“列寫行讀”的解交織方式。例如,發送端將原始數據按行填入交織矩陣,以列的形式讀出后得到交織數據,將交織數據發送到接收端,接收端將交織數據按列寫入交織矩陣,再按行讀出實現交織數據的解交織。
其中,交織可由交織器實現,假設cmux為交織矩陣的列數,rmux為交織矩陣的行數,lmux為交織矩陣的交織數據粒度,則交織器實現交織需要cmux*rmux*lmux的存儲開銷。通過交織器實現交織時,先按“行”順序,每個時鐘周期填充交織器的一個位置,每個位置存放lmux個數據,全部“行”寫滿后,再按“列”順序依次讀出數據,完成交織過程。其中,交織的處理時間為cmux*rmux,且需要全部“行”寫入后才能啟動交織,啟動時延為cmux*rmux。類似的,通過解交織器實現解交織時,也需要cmux*rmux*lmux的存儲開銷,按“列”順序,每個時鐘周期填充交織器的一個位置,每個位置存放lmux個數據,全部“列”寫滿后,再依次按“行”讀出數據,完成解交織過程。
上述進行交織/解交織的過程,完成“行寫列讀/列寫行讀”需要cmux*rmux*lmux的存儲器開銷,存儲開銷大,成本高,并且需要cmux*rmux個時鐘周期填滿所有行/列后,才能啟動交織/解交織,交織/解交織啟動時間慢。進一步的,每個時鐘周期僅能填入一個數據,全部填滿需cmux*rmux個時鐘周期,交織/解交織的效率也比較低。而且由于協議演進,交織的行數和列數規格差異也變大,多場景并發場景下,大小規格任務切換頻繁,切換時延較大。
技術實現要素:
本申請實施例提供一種交織處理方法及裝置,以解決存儲開銷大、處理時延長以及大小規格任務切換頻繁的問題。
第一方面,提供一種交織處理方法,在該交織處理方法中,獲取到待處理交織任務,根據待處理交織任務所需存儲空間大小將交織器的存儲空間劃分為多個分塊存儲空間,將所述待處理交織任務劃分為至少一個交織塊,并以交織塊為單位,在所述多個分塊存儲空間內,實現多個分塊存儲空間并行處理交織任務。
本申請實施例中可設置最大分塊存儲空間,每一分塊存儲空間的大小均小于等于最大分塊存儲空間的大小,即每個分塊存儲空間處理的交織任務所需的存儲空間不會超出該最大分塊存儲空間,進而可限制每個分塊存儲空間處理的交織任務的大小,均衡分布處理時延。其中,可依據獲取的待處理交織任務所需存儲空間以及交織存儲器的最大分塊存儲空間,將交織器的存儲空間劃分為n個分塊存儲空間。其中,所述n為正整數。
其中,若待處理交織任務所需存儲空間小于等于最大分塊存儲空間b,則可不對待處理交織任務進行劃分,而將待處理交織任務作為一個交織塊寫入所述n個分塊存儲空間中包括的存儲空間大小為所述待處理交織任務所需存儲空間大小的第一分塊存儲空間。并且若存在多個所需存儲空間小于最大分塊存儲空間b的交織任務,則在交織器存儲空間不變的情況下,可在交織器的存儲空間內存儲多個所需存儲空間小于最大分塊存儲空間b的交織任務。
其中,若待處理交織任務所需存儲空間大于最大分塊存儲空間b,則可對待交織任務進行分塊處理,將待處理交織任務劃分為多個交織塊,并將劃分得到的多個交織塊,以交織塊為單位寫入所述n個分塊存儲空間中存儲空間大小為所述最大分塊存儲空間的大小的至少一個第二分塊存儲空間中,實現對多個交織塊進行并行處理。
一種可能的設計中,在待處理交織任務所需存儲空間大于最大分塊存儲空間情況下,可對待處理交織任務分塊處理,具體分塊時可根據最大分塊存儲空間為b以及交織任務矩陣的列數cmux確定分塊粒度r,然后根據交織粒度r對待交織任務進行分塊處理。例如,可按r=b/cmux的分塊粒度,對cmux*rmux的交織矩陣進行分塊處理,得到若干個cmux*r的交織塊,即對所述待處理交織任務進行分塊處理得到交織塊中的交織矩陣的行數為所述最大分塊存儲空間與所述待處理交織任務對應交織矩陣列數之商;對所述待處理交織任務進行分塊處理得到交織塊中的交織矩陣的列數為所述待處理交織任務對應交織矩陣列數。以劃分得到的交織塊為單位,將交織塊寫入交織器的最大分塊存儲空間內,即可在一個交織塊內完成“行寫列讀/列寫行讀”的交織操作。
又一種可能的設計中,可采用循環緩存機制存儲各交織塊,例如,進行不同交織塊任務切換時雖然剩余地址空間不夠存放一個完整交織塊的數據,但可根據動態水線,將剩余空間填滿,未輸入的數據受到反壓,待空間允許時輸入。采用上述循環緩存機制情況下,交織器的存儲空間劃分得到的n個分塊存儲空間中包括第三分塊存儲空間,該第三分塊存儲空間的大小小于最大分塊存儲空間大小,且寫入所述第三分塊存儲空間內的交織塊為對所述待處理交織任務進行分塊處理后得到的交織塊中的部分交織塊。采用上述循環緩存機制可避免由于分塊以后,大小交織塊穿插帶來的調度效率損失。
又一種可能的設計中,對于多層碼字需要進行分層映射時,可將層等效為交織矩陣的列數,即將交織矩陣的列數等效為所述待處理交織任務對應交織矩陣列數與對所述交織矩陣進行層映射的層數之積,并采用上述涉及的交織處理方式進行交織處理,實現在完成行列交織的同時完成分層映射過程。
又一種可能的設計中,對于交織旁路的場景,可將交織旁路后的每一列,等效為一個lmux列的小任務,則等效后的交織矩陣中列數ceq=lmux,任務數t=cmux,分塊數為cmux*mmux,然后按照上述第一方面涉及的交織處理方式進行交織處理過程,可實現在交織旁路的同時完成分層映射。
第二方面,提供一種交織處理裝置,該交織處理裝置具備實現上述交織處理方法中交織器的全部功能。所述功能可以通過硬件實現,也可以通過硬件執行相應的軟件實現。所述硬件或軟件包括一個或多個與上述功能相對應的模塊。所述模塊可以是軟件和/或硬件。
一種可能的設計中,該交織處理裝置包括獲取單元、處理單元和交織單元。獲取單元、處理單元和交織單元的功能可以和各方法步驟相對應,在此不予贅述。
第三方面,提供一種交織器,該交織器包括映射電路、讀寫電路以及交織存儲器。其中,映射電路和讀寫電路用于執行第一方面或第一方面的任意可能的設計中的交織處理方法,并將交織處理過程中的數據存儲至交織存儲器。
第四方面,提供一種算機可讀存儲介質或者計算機程序產品,用于存儲計算機程序,該計算機程序用于執行第一方面以及第一方面任意可能的設計中的方法。
附圖說明
圖1為本申請實施例提供的一種比特級實現裝置的結構示意圖;
圖2為本申請實施例提供的另一種比特級實現裝置的結構示意圖;
圖3為本申請實施例提供的一種交織處理方法流程圖
圖4為本申請實施例提供的交織器存儲空間一種劃分示意圖;
圖5為本申請實施例提供的交織器存儲空間另一種劃分示意圖;
圖6為本申請實施例提供的交織任務處理過程示意圖;
圖7為本申請實施例提供的交織任務處理過程示意圖;
圖8為本申請實施例提供的采用4塊雙口的tp-ram的存放數據格式;
圖9為本申請實施例提供的寫入數據的過程示意圖;
圖10為本申請實施例提供的讀取數據的過程示意圖;
圖11為本申請實施例提供的循環存儲過程示意圖;
圖12為本申請實施例提供的交織過程示意圖;
圖13為本申請實施例提供的交織與層映射同時完成的過程示意圖;
圖14為本申請實施例提供的交織與層映射同時完成的數據存放過程示意圖;
圖15為本申請實施例提供的實現交織旁路的同時完成分層映射的處理過程;
圖16為本申請實施例提供的一種交織處理裝置的結構示意圖;
圖17為本申請實施例提供的交織處理裝置的另一結構示意圖。
具體實施方式
下面將結合附圖,對本申請實施例中的技術方案進行描述。
為了應對比特級處理各過程中協議的變化,靈活擴展支持多種場景的問題,發送端可采用圖1所示的面向5g的高靈活擴展性的比特級實現裝置,接收端可采用圖2所示的面向5g的高靈活擴展性的比特級實現裝置,靈活支持各種幀格式,以及各模塊可靈活進行組合。
圖1中,子任務控制器用于控制子任務的調度。調制模塊用于計算時域/頻域調制符號均值。加擾模塊用于對數據加擾計算。上行控制信息(uplinkcontrolinformation,uci)復用模塊用于進行信道質量指示(channelqualityindicator,cqi)、資源標識(resourceidentifier,ri)和應答指令(acknowledge,ack)編碼,以及cqi、ri、ack和導頻與數據的復用。交織器用于對數據進行分塊處理,對隨機存取存儲器(randomaccessmemory,ram)進行讀寫地址亂序讀寫。雙倍速率同步動態隨機存儲器(dualdatarate0,ddr0)用于存儲交織前的數據。ddr1用于存儲交織后的數據。其中,物理實現上,上述ddr0和ddr1也可以用同一塊緩存中的不同地址段進行替換。
圖2中,子任務控制器能夠控制控制子任務調度,解調模塊用于計算每個數據的軟信息,解擾模塊用于計算加擾前的數據,上行控制信息(uplinkcontrolinformation,uci)檢測模塊用于進行ri和ack映射以及譯碼。解交織器用于對數據進行分塊處理,對ram進行讀寫地址亂序讀寫。uci解復用和檢測模塊用于對ri、ack、導頻與數據分離,并計算ri/ack檢測結果。ddr0:外部存儲交織前數據的ddr。ddr1:外部存儲交織后數據的ddr。其中,物理實現上,上述ddr0和ddr1也可以用同一塊緩存中的不同地址段進行替換
圖1和圖2所示的比特級實現裝置各處理模塊進行比特級數據處理過程中,子任務控制器可靈活配置各模塊的啟動和處理流程,以適應各種場景。例如可通過各種開關的組合,實現在5g各種變化下,僅旁路該變化的模塊,其余功能可以正常運作。或通過各種開關組合,可以演化出幾十上百種場景,涵蓋大部分可能的擴展場景。將輸出的各種數據內容和格式通過開關進行靈活配置,實現在5g各種變化下,可旁路輸出某些數據供軟件或其他硬件模塊進行處理。例如,5g中進行解交織和層映射過程中,幀格式和交織方式由層級解交織、比特級解交織和符號級解交織三種復雜場景,針對該復雜場景應用圖2所示的比特級實現裝置,子任務控制器可分別采用以下表1所示的配置方式實現。
表1
其中,為了節約調度時延,復雜幀格式可以拆分成多個子任務進行處理。圖1和圖2所示的比特級實現裝置中子任務控制器可實現多子任務單次調度的方式,將復雜任務拆分之后僅需調度一次,裝置自動連續執行多個子任務,最終發出完成消息。例如:以某些不符合lte幀格式為例,采用子任務降低調度時延,通過拆分任務,組合實現復雜場景下的處理,具有低開銷低時延的優點。
其中,圖1和圖2所示的比特級實現裝置可支持多種位圖方式進行ri/ack映射。例如支持列分布的ri/ack位圖,還可支持資源粒子(resourceelement,re)級分布的ri、ack、導頻位圖,以實現在各種幀格式場景下,可以正常完成數據通路的解調、解擾、解交織、解復用,保證后級能夠提前啟動。而ri/ack按照指定格式能夠解調、解擾、分離、解交織、解層映射,最大程度的降低軟件的開銷,減小處理時延。
其中,圖1所示的比特級實現裝置可靈活支持多種規格下,數據的交織以及層映射,圖2所示的比特級實現裝置可靈活支持多種規格下,數據的解交織和解層映射,以解決存儲開銷大、處理時延長以及大小規格任務切換頻繁的問題。
本申請實施例以下主要針對應用圖1所示的比特級實現裝置實現交織處理的過程進行說明,由于解交織為交織的逆過程,故對于解交織的過程本申請實施例不再詳述。
圖3所示為本申請實施例提供的一種交織處理方法流程圖,圖3所示的交織處理方法執行主體可以是交織器,也可以稱為交織存儲器,參閱圖3所示,包括:
s101:獲取待處理交織任務,并確定交織器對所述待處理交織任務進行交織處理所需的存儲空間。
本申請實施例中的待處理交織任務可以理解為是以交織矩陣形式呈現的各待交織數據。交織器是指對數據進行交織處理的部件。交織器進行交織處理過程中,需要分配存儲空間存儲交織數據,其中,該分配的存儲空間的大小可以通過交織矩陣的行數、列數以及交織數據粒度表示,例如,交織器對cmux*rmux的交織矩陣進行交織處理,交織矩陣的交織數據粒度為lmux,則交織器對交織矩陣進行交織處理所分配的存儲空間大小為cmux*rmux*lmux。
s102:依據待處理交織任務所需存儲空間以及交織存儲器的最大分塊存儲空間,將所述交織器的存儲空間劃分為n個分塊存儲空間。其中,所述n為正整數。
本申請實施例中為增加處理的并行度,并減少處理時延和存儲開銷,可根據待處理交織任務所需存儲空間大小將交織器的存儲空間劃分為多個分塊存儲空間,多個分塊存儲空間并行處理交織任務。本申請實施例中可設置最大分塊存儲空間,每一分塊存儲空間的大小均小于等于最大分塊存儲空間的大小,即每個分塊存儲空間處理的交織任務所需的存儲空間不會超出該最大分塊存儲空間,進而可限制每個分塊存儲空間處理的交織任務的大小,均衡分布處理時延。
本申請實施例中可采用如下方式依據待處理交織任務所需存儲空間以及交織存儲器的最大分塊存儲空間,將所述交織器的存儲空間劃分為n個分塊存儲空間:
假設最大分塊存儲空間的大小為b,若待處理交織任務所需存儲空間小于等于所述最大分塊存儲空間b,則在交織器的存儲空間中劃分一個存儲空間大小為所述待處理交織任務所需存儲空間大小的第一分塊存儲空間,在該第一分塊存儲空間內寫入該所需存儲空間小于等于所述最大分塊存儲空間b的待處理交織任務。若待處理的交織任務所需存儲空間大于所述最大分塊存儲空間b,則在交織器的存儲空間中劃分至少一個存儲空間大小為所述最大分塊存儲空間b大小的第二分塊存儲空間,第二分塊存儲空間的數量依據待交織任務所需存儲空間來確定,即劃分的多個第二存儲空間能夠滿足將所述待處理交織任務全部寫入。在所述第二分塊存儲空間內寫入待處理交織任務的部分交織任務,該部分交織任務所占用的存儲空間大小為所述最大分塊存儲空間b的大小,或者小于所述最大分塊存儲空間b的大小。其中,該部分交織任務可以理解為是對所需存儲空間大于所述最大分塊存儲空間b進行分塊處理后得到的交織塊。
對于存儲空間劃分了第一分塊存儲空間或第二分塊存儲空間后剩余的存儲空間,可繼續按照上述方式根據其它待處理交織任務所需的存儲空間進行劃分,并在劃分得到的存儲空間內寫入待交織任務或者對所述待處理交織任務進行分塊處理后得到的交織塊。
本申請實施例中為描述方便,將對交織器的存儲空間進行劃分后得到的分塊存儲空間數量設定為n個,該n為正整數,具體取值依據待處理交織任務數量以及所需存儲空間大小來確定。
s103:將所述待處理交織任務劃分為至少一個交織塊,并以交織塊為單位,在所述n個分塊存儲空間內寫入交織塊。
本申請實施例中將交織器劃分為n個分塊存儲空間,則可在所述n個分塊存儲空間內分別寫入交織任務,實現多個交織任務的并行處理。應用于本申請實施例中,可將待處理交織任務劃分為至少一個交織塊,并以交織塊為單位,在所述n個分塊存儲空間內寫入交織塊。其中,若待處理交織任務所需存儲空間小于等于最大分塊存儲空間b,則可不對待處理交織任務進行劃分,而將待處理交織任務作為一個交織塊寫入所述n個分塊存儲空間中包括的存儲空間大小為所述待處理交織任務所需存儲空間大小的第一分塊存儲空間。并且若存在多個所需存儲空間小于最大分塊存儲空間b的交織任務,則在交織器存儲空間不變的情況下,可在交織器的存儲空間內存儲多個所需存儲空間小于最大分塊存儲空間b的交織任務。如圖4所示,在交織器的存儲空間內存儲有bs0、bs1、bs2、bs3、bs4和bs5一個六個交織任務,六個交織任務所需的存儲空間大小均小于最大分塊存儲空間b,交織器可并行處理這六個交織任務。
其中,若待處理交織任務所需存儲空間大于最大分塊存儲空間b,則可對待交織任務進行分塊處理,將待處理交織任務劃分為多個交織塊,并將劃分得到的多個交織塊,以交織塊為單位寫入所述n個分塊存儲空間中存儲空間大小為所述最大分塊存儲空間的大小的至少一個第二分塊存儲空間中。例如,待處理交織任務bb0所需的存儲空間為2b,則將待處理交織任務劃分為兩個交織塊,分別為bb0slc0和bb0slc1,bb0slc0和bb0slc1所需的存儲空間大小均為最大分塊存儲空間b,將bb0slc0和bb0slc1分別寫入n個分塊存儲空間中存儲空間大小為所述最大分塊存儲空間的大小的兩個分塊存儲空間內,如圖5所示。圖5所示中交織器的存儲空間內寫入待處理交織任務的兩個交織塊,該交織器可對這兩個交織塊進行并行處理。
采用本申請實施例上述提供的將交織器存儲空間按照交織任務大小劃分為多個分塊存儲空間,并行處理多個交織任務的過程,實現了一種分塊粒度可變的交織方式,實現過程示意圖可如圖6所示。圖6中,對交織塊0、交織塊1、交織塊2和交織塊3進行交織處理過程中,可以交織塊為單位,依次寫入交織塊0、交織塊1、交織塊2和交織塊3,而在完成交織塊0寫入后,即可進行交織塊0的讀操作,后續類似可以進行交織塊1、交織塊2和交織塊3的讀操作,參閱圖6所示。
本申請實施例中若待處理交織任務所需存儲空間小于等于最大分塊存儲空間,則無需對待處理交織任務進行分塊處理,按照原有的交織任務交織處理方式寫入劃分得到對應分塊存儲空間即可。以下著重對待處理交織任務所需存儲空間大于最大分塊存儲空間情況下,對待處理交織任務分塊處理以及寫入交織塊后進行交織處理的過程進行說明。
本申請實施例中假設待處理交織任務為列數為cmux,行數為rmux的交織矩陣,最大分塊存儲空間為b,則可按r=b/cmux的分塊粒度,對cmux*rmux的交織矩陣進行分塊處理,得到若干個cmux*r的交織塊,即對所述待處理交織任務進行分塊處理得到交織塊中的交織矩陣的行數為所述最大分塊存儲空間與所述待處理交織任務對應交織矩陣列數之商;對所述待處理交織任務進行分塊處理得到交織塊中的交織矩陣的列數為所述待處理交織任務對應交織矩陣列數。以劃分得到的交織塊為單位,將交織塊寫入交織器的最大分塊存儲空間內,即可在一個交織塊內完成“行寫列讀/列寫行讀”的交織操作,如圖7所示。圖7中劃分得到的交織塊分別表示為cmux*r0、cmux*r1……cmux*rn。數據按“行/列”順序寫入交織器,寫滿cmux*r0的數據量后即可按“列/行”順序讀出本交織塊內的所有數據,交織時“列”輸出時預留地址偏移,保證各交織塊輸出的數據最終在ddr內連續排列。解交織時“列”輸入時跳躍讀取交織塊內數據,最終等效讀取ddr內連續交織數據。同樣的繼續按“行/列”順序寫入交織器,寫滿cmux*r1的數據量后即可按“列/行”順序讀出本交織塊內的所有數據。后續交織塊依次處理,直至完成對所有劃分得到的交織塊的交織處理。采用此種交織處理方式,交織的啟動時延減小為cmux*r,而不再是cmux*rmux,能夠減小處理時延。
本申請實施例以下以lte協議中一個碼子的信道交織處理過程為例,對上述涉及的交織處理過程進行說明。根據協議,時序資源單載波頻分多址(single-carrierfrequency-divisionmultipleaccess,sc-fdma)符號順序對應于交織矩陣中的列序號cmux,頻域資源re順序對應于交織矩陣中的行序號rmux。假設數據塊大小為cmux*rmux=16*300,b=2048,則r=2048/16=128,即按r=128進行分塊交織,整個數據塊分為3個交織塊處理。r0=128,r1=128,r0=44。前兩個分塊以一行16個數據,128行進行寫入,寫入完成后,依次按列輸出每列128個數據。為了使外部數據連續,將輸出地址做偏移,列0輸出0~127位置,列1相對列0偏移300個數據位置,寫入300~327位置,依次類推。待第二個分塊輸出時,列0寫入128~255位置,列1寫入328~555位置……待第三個分塊輸出時,列0寫入256~299位置,列1寫入556~599位置……。若數據塊大小為cmux*rmux=64*300,b=2048,則r=2048/64=32,即按r=32進行分塊交織,整個數據塊分為10個交織塊處理。r0=32,r1=32,…r9=12。
本申請實施例上述交織處理方式,可通過設置b的大小,實現針對不同待處理交織任務設置可變分塊粒度r,根據r決定分塊粒度以及分塊數,在固定存儲空間大小的情況下,可以支持任意規格的交織塊處理。并且在交織任務中的列數較小的場景下,可分塊的r較大,有利于提高總線效率。
本申請實施例中為提高“行寫列讀/列寫行讀”的處理能力,使每時鐘周期“寫”或者“讀”兩個位置,可在交織器中設置4塊雙口的tp-ram。采用4塊雙口的tp-ram情況下,為確保在交織讀/寫的過程中,tp-ram的讀寫端口不會發生沖突,tp-ram內的數據需要按特定格式存放,例如可按照圖8所示的方式存放數據。此排列格式可有效避免讀寫沖突。
其中,采用4塊雙口的tp-ram進行交織處理的寫操作過程中,每個時鐘周期可寫入2個數據,示例如圖9所示,第一個時鐘周期寫x0、x1,分別寫入ram0、ram1的地址0;第二個時鐘周期寫x2、x3,分別寫入ram0、ram1的地址1。以此類推,直至將所有數據寫入完畢。對于讀操作與寫操作類似,第一個時鐘周期讀取ram0、ram2的地址0;第二個時鐘周期讀取ram0、ram2的地址6。以此類推,直至將所有數據讀取完畢。
其中,具體實現寫操作和讀操作的過程,可采用如下方式:
記x(k)–>x(r,c),其中r=0,1,2,……,rmax-1;c=0,1,2,……,cmax-1。其中rmax為交織矩陣的總行數,cmax為交織矩陣的總列數,則有以下關系:
k=r*cmax+c。
r=floor(k/cmax)floor()表示向下取整
c=k%cmax%表示模
假設,wr0、wr1、wr2、wr3分別表示intlram0~3的寫使能信號。waddr0~waddr3分別表示intlram0~3的寫地址。則:
wr0=~(r%2)&~(c%2);
wr1=~(r%2)&(c%2);
wr2=(r%2)&~(c%2);
wr3=(r%2)&(c%2);
其中,maxaddr是物理ram的實際深度。
假設rd0、rd1、rd2、rd3分別表示intlram0~3的讀使能信號。raddr0~raddr3分別表示intlram0~3的讀地址。則:
rd0=~(r%2)&~(c%2);
rd1=~(r%2)&(c%2);
rd2=(r%2)&~(c%2);
rd3=(r%2)&(c%2);
可以理解的是,讀寫使能、讀寫地址的計算公式相同。區別只在于順序不同,寫操作先增加c的序號,再增加r的序號;讀操作先增加r的序號,再增加c的序號。
本申請實施例中一種可能的實現方式中,為了提高分塊效率,交織器可采用循環緩存機制,按b*2的數據量為待處理任務預留緩存空間,即可滿足任意cmux*rmux的行列交織。循環緩存機制可以理解為是如下的實現過程:進行不同交織塊任務切換時雖然剩余地址空間不夠存放一個完整交織塊的數據,但可根據動態水線,將剩余空間填滿,未輸入的數據受到反壓,待空間允許時輸入,如圖11所示,ram2中存儲完交織塊bb0slc2、bs1、bs2和bs3之后剩余的存儲空間不足以將交織塊bb1slc0完整存儲,此種情況下可將交織塊bb1slc0的部分交織塊先存儲,然后待空間允許輸入時再寫入bb1slc0剩余部分,如圖11所示。同樣的,在ram3中采用循環存儲的方式,將bb2slc0的部分交織塊寫入。本申請實施例采用上述循環緩存機制情況下,可以理解為是在交織器的存儲空間劃分得到的n個分塊存儲空間中包括第三分塊存儲空間,該第三分塊存儲空間的大小小于最大分塊存儲空間大小,且寫入所述第三分塊存儲空間內的交織塊為對所述待處理交織任務進行分塊處理后得到的交織塊中的部分交織塊。采用上述循環緩存機制可避免由于分塊以后,大小交織塊穿插帶來的調度效率損失。
本申請實施例中采用循環緩存機制的實現方式,計算出來的邏輯地址對maxaddr取模以后可得到物理ram的實際寫地址。
圖1和圖2所示的比特級實現裝置應用本申請實施例中上述交織處理方法,交織過程示意圖,如圖12所示。圖12中,對于交織“行寫列讀”,二維矩陣映射以后,按x0、x1、x2、……、x15、……的順序依次寫入交織存儲器。然后按照x0、x12、x24、x36、……、x1、x13、……的順序從交織存儲器讀取。對于解交織“列寫行讀”,二維矩陣映射以后,按照x0、x12、x24、x36、……、x1、x13、……的順序依次寫入解交織存儲器。然后按x0、x1、x2、……、x15、……的順序從解交織存儲器讀取。
本申請的另一實施例中,對于多層碼字需要進行分層映射時,可將層等效為交織矩陣的列數,即將交織矩陣的列數等效為所述待處理交織任務對應交織矩陣列數與對所述交織矩陣進行層映射的層數之積,并采用上述涉及的交織處理方式進行交織處理,實現在完成行列交織的同時完成分層映射過程。例如,可采用如下方式實現在完成行列交織的同時完成分層映射過程:
假設層數為lmux,交織矩陣的列數為cmux,則等效后的交織矩陣的列數表示為ceq=lmux*cmux。按“行”順序寫入時,列0層0、列0層1、列0層2、列0層3、列1層0、列1層1、列1層2和列1層3……的數據等效為列0、1、2、3、5、6、7、8……一起寫入。按“列”順序讀出時,先將交織塊內的列0所有數據讀出,再將列1數據讀出,再將列2數據讀出,再將列3數據讀出,再讀取列4即在交織的同時完成了分層映射。實現過程如圖13所示。
采用上述實施例涉及的循環緩存機制進行交織處理時,緩存的數據排列方式適應性變化,例如以兩層為例,數據的排列方式如圖14所示。并且,在計算輸出地址偏移時,需要增加層間的便宜,具體實現過程如下:
1)根據碼字輸出起始地址cw_o_base,可計算出每個sym的輸出起始地址:
sym_o_base=cw_o_base+rmux*sym_idx*data_width*lay_num
2)根據當前交織塊內數據的re序號計算輸出偏移地址:
sym_o_offset=(re_idx+rmux*lay_idx)*data_width
3)每個交織塊內按sym按層粒度輸出數據到ddr1,每次輸出的起始地址為:
sym_o_addr=sym_o_base+sym_o_offset
4)每次輸出的數據長度為r個data_width,共計cmux*n*lay_num次輸出后ddr1中即得到整個碼字交織后的數據(其中n為交織塊的數目,最后一個交織塊剩余數據量不足r時,按實際大小輸出)。
本申請的另一實施例中,針對lte協議中交織旁路的場景,可將交織旁路后的每一列,等效為一個lmux列的小任務,則等效后的交織矩陣中列數ceq=lmux,任務數t=cmux,分塊數為cmux*mmux,然后按照上述實施例涉及的交織處理方式進行交織處理過程,可實現在交織旁路的同時完成分層映射。實現交織旁路的同時完成分層映射的處理過程如圖15所示,圖15中,每列的數據按“行”順序寫入時,列0層0、列0層1、列0層2、列0層3的數據等效為列0、1、2、3起寫入。按“列”順序讀出時,先將交織塊內的列0所有數據讀出,再將列1數據讀出,再將列2數據讀出,再將列3數據讀出。完成一列的操作之后,按照相同過程進行下一列操作,即在交織旁路的同時完成了分層映射。
本申請實施例提供的交織處理方法,根據交織任務所需存儲空間大小將交織器的存儲空間劃分為多個分塊存儲空間,在多個分塊存儲空間內并行處理多個交織塊對應的交織任務,在進行交織讀寫的過程中,各個交織塊之間互相獨立,實現以交織塊為單位進行讀操作或寫操作,與現有技術中,需要將整個交織矩陣為單位進行讀寫操作,能夠減少所占用交織存儲的大小,降低交織成本。并且交織塊的大小可靈活配置,在固定存儲空間大小的情況下,可以支持任意規格的交織塊處理。
為了對本申請的有益效果進行更加清楚的解釋,以一個lte中滿規格的傳輸碼塊為例,256相正交振幅調制(quadratureamplitudemodulation,qam)時,碼塊信道交織的數據量為3300re*64sym*4lay*64bit,則采用本申請實施例上述涉及的交織處理方式,僅需2048re*64bit*2buffer即可實現流水處理。現有技術與本申請所需的存儲容量、處理時延、切換時延和啟動時延對比如下表表2所示:
表2
由上述表2可以看出,本申請可以減少交織處理過程中所需存儲容量、處理時延、切換時延和啟動時延。
基于上述實施例提供的交織處理方法,本申請實施例還提供一種交織處理裝置。可以理解的是,交織處理裝置為了實現上述功能,其包含了執行各個功能相應的硬件結構和/或軟件模塊。結合本申請中所公開的實施例描述的各示例的單元及算法步驟,本申請實施例能夠以硬件或硬件和計算機軟件的結合形式來實現。某個功能究竟以硬件還是計算機軟件驅動硬件的方式來執行,取決于技術方案的特定應用和設計約束條件。本領域技術人員可以對每個特定的應用來使用不同的方法來實現所描述的功能,但是這種實現不應認為超出本申請實施例的技術方案的范圍。
本申請實施例可以根據上述方法示例對交織處理裝置進行功能單元的劃分,例如,可以對應各個功能劃分各個功能單元,也可以將兩個或兩個以上的功能集成在一個處理單元中。上述集成的單元既可以采用硬件的形式實現,也可以采用軟件功能單元的形式實現。需要說明的是,本申請實施例中對單元的劃分是示意性的,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式。
在采用集成的單元的情況下,圖16示出了一種交織處理裝置的結構示意圖,參閱圖16所示。交織處理裝置100包括獲取單元101、處理單元102和交織單元103。獲取單元101,用于獲取待處理交織任務。處理單元102,用于確定交織器對所述獲取單元101獲取的待處理交織任務進行交織處理所需的存儲空間,依據所述待處理交織任務所需存儲空間以及交織器的最大分塊存儲空間,將所述交織器的存儲空間劃分為n個分塊存儲空間,所述n為正整數,其中,n個分塊存儲空間中每一分塊存儲空間的大小均小于等于最大分塊存儲空間的大小。交織單元103,用于將所述獲取單元101獲取的待處理交織任務劃分為至少一個交織塊,并以交織塊為單位,在所述處理單元102劃分得到的n個分塊存儲空間內寫入交織塊。
一種可能的實施方式中,若待處理交織任務所需存儲空間小于等于所述最大分塊存儲空間,則處理單元102劃分包含存儲空間大小為所述待處理交織任務所需存儲空間大小的第一分塊存儲空間的n個分塊存儲空間。所述交織單元103,在所述處理單元102劃分得到的所述第一分塊存儲空間內寫入所述待處理交織任務。
另一種可能的實施方式中,若待處理的交織任務所需存儲空間大于所述最大分塊存儲空間,則處理單元102劃分得到包括存儲空間大小為所述最大分塊存儲空間的大小的至少一個第二分塊存儲空間的n個分塊存儲空間。所述交織單元103在所述處理單元102劃分得到的所述第二分塊存儲空間內寫入對所述待處理交織任務進行分塊處理后得到的交織塊。
又一種可能的實施方式中,所述n個分塊存儲空間中還包括第三分塊存儲空間,且寫入所述第三分塊存儲空間內的交織塊為對所述待處理交織任務進行分塊處理后得到的交織塊中的部分交織塊。
又一種可能的實施方式中,若待處理的交織任務所需存儲空間大于所述最大分塊存儲空間,則交織單元103對所述待處理交織任務進行分塊處理得到交織塊中的交織矩陣的行數為所述最大分塊存儲空間與所述待處理交織任務對應交織矩陣列數之商;對所述待處理交織任務進行分塊處理得到交織塊中的交織矩陣的列數為所述待處理交織任務對應交織矩陣列數。
又一種可能的實施方式中,所述交織塊內的交織矩陣對所述待處理交織任務進行分塊處理得到的交織塊中的交織矩陣的列數為所述待處理交織任務對應交織矩陣列數與對所述交織矩陣進行層映射的層數之積。
當采用硬件形式實現時,獲取單元101和處理單元102可以是映射電路,交織單元103可以是讀寫電路。當獲取單元和處理單元是映射電路,交織單元是讀寫電路時,交織處理裝置可以是圖17所示的交織器。
圖17示出了本申請實施例提供的交織處理裝置的另一結構示意圖。圖17中,交織處理裝置可以是交織器1000,該交織器1000包括映射電路1001、讀寫電路1002以及交織存儲器1003。
其中,映射電路1001用于獲取待交織任務,將待交織任務中的待交織數據進行二維序號映射得到交織矩陣,使得待交織數據中的每個數據都與交織矩陣中的一個元素對應。并確定交織器對所述待處理交織任務進行交織處理所需的存儲空間,依據待處理交織任務所需存儲空間以及交織存儲器1003的最大分塊存儲空間,將所述交織存儲器1003的存儲空間劃分為n個分塊存儲空間,所述n為正整數,其中,n個分塊存儲空間中每一分塊存儲空間的大小均小于等于最大分塊存儲空間的大小。讀寫電路,用于將所述待處理交織任務劃分為至少一個交織塊,并以交織塊為單位,在所述n個分塊存儲空間內寫入交織塊。交織存儲器1003為存儲器,用于在交織的過程中存儲數據,其一般包括一個或多個ram。
其中,映射電路1001以及讀寫電路1002具備上述實施例涉及的交織處理方法中的相應功能,具體功能實現過程可參閱上述實施例的相關描述,在此不再贅述。
本申請實施例中,交織處理裝置100和交織器1000具備上述方法實施例中涉及的交織器進行交織處理的功能,對于本發明實施例描述不夠詳盡的地方,可參閱上述實施例的相關描述,本申請實施例在此不再贅述。
基于上述實施例,本申請實施例還提供一種計算機介質或計算機程序產品,該計算機介質或計算機程序產品用于儲存為上述交織處理裝置以及交織器所用的計算機軟件指令,其包含用于執行上述實施例所涉及的交織處理方法的程序。
本領域內的技術人員應明白,本申請實施例可提供為方法、系統、或計算機程序產品。因此,本申請實施例可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本申請實施例可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、cd-rom、光學存儲器等)上實施的計算機程序產品的形式。
本申請實施例是參照根據本申請實施例的方法、設備(系統)、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
顯然,本領域的技術人員可以對本申請實施例進行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請實施例的這些修改和變型屬于本申請權利要求及其等同技術的范圍之內,則本申請也意圖包含這些改動和變型在內。