本發(fā)明涉及無線通信
技術(shù)領(lǐng)域:
,尤其涉及一種譯碼方法及裝置。
背景技術(shù):
:無線通信中,2G制式、3G制式、與4G制式,乃至將來的5G制式將長期共存,用于滿足不同用戶的不同需求;因此,無線通信設(shè)備的多?;菬o線通信設(shè)備發(fā)展的必然趨勢(shì)。Turbo作為一種信道編碼技術(shù),廣泛應(yīng)用與3G制式和4G制式的無線通信系統(tǒng);Turbo編碼器的編碼原理示意圖,如圖1所示,Turbo編碼器將兩個(gè)簡(jiǎn)單分量編碼器通過偽隨機(jī)交織器并行級(jí)聯(lián)來構(gòu)造具有偽隨機(jī)特性的長碼,以最大限度地提高數(shù)據(jù)的隨機(jī)性和單位比特的信息量,使其容量更接近于香農(nóng)理論的極限,在信噪比較低的高噪聲環(huán)境下性能更優(yōu)越,并且具有更強(qiáng)的抗衰落和抗干擾能力。Turbo譯碼器通過在兩個(gè)軟入/軟出譯碼器之間進(jìn)行多次迭代實(shí)現(xiàn)偽隨機(jī)譯碼;Turbo譯碼器的譯碼原理示意圖,如圖2所示,兩個(gè)譯碼器MAP0和MAP1組成一個(gè)循環(huán)迭代結(jié)構(gòu),在外部信息的作用下,一定信噪比的誤比特率將隨著循環(huán)次數(shù)的增加而降低,置信度也逐步增加;同時(shí),由于外部信息的相關(guān)性也隨著譯碼次數(shù)的增加而逐漸增加,從而外部信息所提供的糾錯(cuò)能力也隨之減弱,在一定的循環(huán)次數(shù)之后,Turbo譯碼器的譯碼性能將不再提高。Turbo譯碼器不僅采用迭代循環(huán)過程,而且采用的算法不僅要能夠?qū)γ勘忍剡M(jìn)行譯碼,還要伴隨著譯碼給出每比特譯出的先驗(yàn)信息;因此,Turbo譯碼器具有實(shí)現(xiàn)復(fù)雜的缺點(diǎn);這里,MAP1為進(jìn)行交織處理的解碼器,MAP0為進(jìn)行非交織處理的解碼器。3G制式和4G制式采用的Turbo算法唯一的不同就在于交織器,交織器的實(shí)現(xiàn)通常通過控制訪問數(shù)據(jù)的地址來完成;3G制式采用的多級(jí)(MIL)交織器,通過構(gòu)造RxC矩陣、進(jìn)行行內(nèi)置換和行間置換等多級(jí)步驟來實(shí)現(xiàn),其地址毫無規(guī)律性,并行操作的可能性小;而4G制式采用基于二次多項(xiàng)式置換(QPP)交織器,地址的規(guī)律性強(qiáng),可以實(shí)現(xiàn)無沖突訪問,并且操作簡(jiǎn)便。同時(shí),由于3G制式和4G制式采用的關(guān)鍵技術(shù)不同,導(dǎo)致其干擾類型和干擾抵消的目標(biāo)有所不同;3G制式為保證可靠性,通常采用硬比特干擾抵消算法,不需要輸出軟符號(hào);而4G制式為了獲取更大的增益,通常采用軟符號(hào)干擾抵消算法,這樣在Turbo譯碼的過程中需要緩存軟符號(hào)信息,以便輸出到外部模塊做干擾抵消。為提高系統(tǒng)吞吐率,3G制式和4G制式通常采用基4的Turbo譯碼算法,即每時(shí)刻譯碼產(chǎn)生4比特的數(shù)據(jù);但由于3G制式和4G制式在采用的交織器算法方面的差異,直接影響到其譯碼實(shí)現(xiàn)所采用的方式以及存儲(chǔ)空間的開銷;譯碼實(shí)現(xiàn)方式,如圖3所示:對(duì)于4G制式,由于交織的規(guī)律性,Turbo譯碼器可以方便的分并行處理單元(PU)并行、分串行處理單元(WIN)串行;而對(duì)于3G制式,由于交織的無規(guī)律性,MAP1僅能分WIN串行。傳統(tǒng)MAP流水線,如圖4所示,對(duì)于MP0,由于后半窗需要讀寫LE,故存在讀寫LE沖突;而對(duì)于MAP1,除讀寫LE沖突外,3G制式由于交織地址的沖突性,還存在4比特的讀沖突和寫沖突;因此,現(xiàn)有技術(shù)中多模Turbo譯碼器的實(shí)現(xiàn)架構(gòu),如圖5所示:通過前窗緩存、后窗使用的方式來解決后半窗的讀寫LE沖突;通過4份拷貝的方式來解決3G支持的4比特讀沖突和寫沖突;但是,該方法由于不能充分共享4G制式軟符號(hào)的存儲(chǔ)資源,從而導(dǎo)致存儲(chǔ)資源開銷比較大。同時(shí),Turbo譯碼器為提高譯碼性能,通常采用一定大小的重疊窗(overlap),通過固定默認(rèn)初始值的方法來訓(xùn)練序列,從而提高譯碼的精度和正確性;采用固定默認(rèn)初始值,重疊窗至少需要16才能滿足譯碼的一般性能需求。這極大地增加了資源的無用開銷。由此可見,傳統(tǒng)的Turbo譯碼器由于交織器的差異,4G并行和3G串行, 存儲(chǔ)資源受限于3G,邏輯資源受限于4G,資源共享不充分,從而導(dǎo)致資源利用率低,整體硬件開銷和功耗都大。對(duì)于3G制式,由于沒有充分利用邏輯資源,導(dǎo)致系統(tǒng)吞吐率也低。技術(shù)實(shí)現(xiàn)要素:有鑒于此,本發(fā)明實(shí)施例期望提供一種譯碼方法及裝置,能夠提高資源利用率和吞吐率,降低系統(tǒng)開銷和功耗。本發(fā)明實(shí)施例的技術(shù)方案是這樣實(shí)現(xiàn)的:本發(fā)明實(shí)施例提供了一種譯碼方法,所述方法包括:在譯碼的前半窗階段讀取譯碼的輸入數(shù)據(jù),并對(duì)讀取的輸入數(shù)據(jù)進(jìn)行處理,得到處理結(jié)果;在譯碼的后半窗階段將所述處理結(jié)果進(jìn)行譯碼,得到譯碼結(jié)果;根據(jù)所述譯碼結(jié)果確認(rèn)譯碼結(jié)束時(shí),封裝并輸出譯碼結(jié)果。上述方案中,所述確認(rèn)接收的外部數(shù)據(jù)為前半窗數(shù)據(jù)之前,所述方法還包括:接收譯碼參數(shù)包,根據(jù)所述譯碼參數(shù)包獲取譯碼參數(shù);接收譯碼的輸入數(shù)據(jù),根據(jù)由所述譯碼參數(shù)計(jì)算得到的補(bǔ)零個(gè)數(shù)PadNum對(duì)所述輸入數(shù)據(jù)進(jìn)行處理,并存儲(chǔ)處理后的數(shù)據(jù)。上述方案中,所述讀取譯碼的輸入數(shù)據(jù),包括:對(duì)于3G制式,在對(duì)所述譯碼的輸入數(shù)據(jù)進(jìn)行交織處理階段的第一個(gè)窗,先讀取兩組譯碼的輸入數(shù)據(jù),在前半窗階段,再讀取兩組譯碼的輸入數(shù)據(jù),獲取四組譯碼的輸入數(shù)據(jù);或,對(duì)于3G制式,在對(duì)所述譯碼的輸入數(shù)據(jù)進(jìn)行非交織處理階段直接讀取四組譯碼的輸入數(shù)據(jù);或?qū)τ?G制式,在對(duì)所述譯碼的輸入數(shù)據(jù)進(jìn)行非交織處理階段及在對(duì)所述譯碼的輸入數(shù)據(jù)進(jìn)行交織處理階段,均直接讀取四組譯碼的輸入數(shù)據(jù)。上述方案中,所述對(duì)讀取的輸入數(shù)據(jù)進(jìn)行處理,得到譯碼結(jié)果,包括:對(duì)讀取的輸入數(shù)據(jù)進(jìn)行g(shù)amma計(jì)算,得到gamma值。上述方案中,所述將所述處理結(jié)果進(jìn)行譯碼,包括:對(duì)所述gamma值進(jìn)行前后向碰撞計(jì)算,得到硬比特信息、先驗(yàn)信息、及軟符號(hào)信息。本發(fā)明實(shí)施例還提供了一種譯碼裝置,所述裝置包括:第一處理模塊、譯碼模塊、和輸出模塊;其中,所述第一處理模塊,用于在譯碼的前半窗階段讀取譯碼的輸入數(shù)據(jù),并對(duì)讀取的輸入數(shù)據(jù)進(jìn)行處理,得到處理結(jié)果;所述譯碼模塊,用于在譯碼的后半窗階段將所述處理結(jié)果進(jìn)行譯碼,得到譯碼結(jié)果;所述輸出模塊,用于根據(jù)所述譯碼結(jié)果確認(rèn)譯碼結(jié)束時(shí),封裝并輸出譯碼結(jié)果。上述方案中,所述裝置還包括:第二處理模塊,用于接收譯碼參數(shù)包,根據(jù)所述譯碼參數(shù)包獲取譯碼參數(shù);接收譯碼的輸入數(shù)據(jù),根據(jù)由所述譯碼參數(shù)計(jì)算得到的補(bǔ)零個(gè)數(shù)PadNum對(duì)所述輸入數(shù)據(jù)進(jìn)行處理,并存儲(chǔ)處理后的數(shù)據(jù)。上述方案中,所述第一處理模塊,具體用于對(duì)于3G制式,在對(duì)所述譯碼的輸入數(shù)據(jù)進(jìn)行交織處理階段的第一個(gè)窗,先讀取兩組譯碼的輸入數(shù)據(jù),在前半窗階段,再讀取兩組譯碼的輸入數(shù)據(jù),獲取四組譯碼的輸入數(shù)據(jù);或,對(duì)于3G制式,在對(duì)所述譯碼的輸入數(shù)據(jù)進(jìn)行非交織處理階段直接讀取四組譯碼的輸入數(shù)據(jù);或?qū)τ?G制式,在對(duì)所述譯碼的輸入數(shù)據(jù)進(jìn)行非交織處理階段及在對(duì)所述譯碼的輸入數(shù)據(jù)進(jìn)行交織處理階段,均直接讀取四組譯碼的輸入數(shù)據(jù)。上述方案中,所述第一處理模塊,具體用于對(duì)讀取的輸入數(shù)據(jù)進(jìn)行g(shù)amma計(jì)算,得到gamma值。上述方案中,所述譯碼模塊,具體用于對(duì)所述gamma值進(jìn)行前后向碰撞計(jì)算,得到硬比特信息、先驗(yàn)信息、及軟符號(hào)信息。本發(fā)明實(shí)施例所提供的譯碼方法及裝置,在譯碼的前半窗階段,讀取譯碼的輸入數(shù)據(jù),并對(duì)讀取的輸入數(shù)據(jù)進(jìn)行處理,得到處理結(jié)果;在譯碼的后半窗階段,將所述處理結(jié)果進(jìn)行譯碼,得到譯碼結(jié)果;根據(jù)所述譯碼結(jié)果確認(rèn)譯碼結(jié)束時(shí),封裝并輸出譯碼結(jié)果;如此,可通過前半窗階段的讀數(shù)據(jù)與后半窗階段的寫數(shù)據(jù)分離,解決了讀寫沖突的問題,降低了資源的功耗;同時(shí)通過對(duì)譯碼的輸入數(shù)據(jù)進(jìn)行數(shù)據(jù)對(duì)齊,將3GMAP0、4GMAP0和4GMAP1合并為無沖突通道,統(tǒng)一并行處理,3GMAP1為沖突通道,單獨(dú)進(jìn)行串行處理,提高了吞吐率。附圖說明圖1為現(xiàn)有技術(shù)Turbo編碼器的編碼原理示意圖;圖2為現(xiàn)有技術(shù)Turbo譯碼器的譯碼原理示意圖;圖3為現(xiàn)有技術(shù)Turbo譯碼器的譯碼實(shí)現(xiàn)方式示意圖;圖4為現(xiàn)有技術(shù)MAP流水線示意圖;圖5為現(xiàn)有技術(shù)多模Turbo譯碼器的實(shí)現(xiàn)架構(gòu)示意圖;圖6為本發(fā)明實(shí)施例譯碼方法的基本處理流程示意圖;圖7為本發(fā)明實(shí)施例alpha繼承歷史值初始化的原理示意圖;圖8為本發(fā)明實(shí)施例beta繼承歷史值初始化的原理示意圖;圖9為本發(fā)明實(shí)施例讀寫數(shù)據(jù)的示意圖;圖10為本發(fā)明實(shí)施例譯碼方法的詳細(xì)處理流程示意圖;圖11為本發(fā)明實(shí)施例譯碼裝置的組成結(jié)構(gòu)示意圖;圖12為本發(fā)明實(shí)施例譯碼裝置的實(shí)現(xiàn)示意圖。具體實(shí)施方式本發(fā)明實(shí)施例一種譯碼方法的基本處理流程,如圖6所示,包括以下步驟:步驟101,在譯碼的前半窗階段,讀取譯碼的輸入數(shù)據(jù),并對(duì)讀取的輸入數(shù)據(jù)進(jìn)行處理,得到處理結(jié)果;具體地,譯碼裝置的第一處理模塊在譯碼的前半窗階段讀取譯碼的輸入數(shù)據(jù);1)對(duì)于3G制式,在對(duì)所述譯碼的輸入數(shù)據(jù)進(jìn)行交織處理MAP1階段的第一個(gè)窗前,先從緩存中讀取兩組譯碼的輸入數(shù)據(jù),在前半窗階段,再從緩存中讀取兩組譯碼的輸入數(shù)據(jù),獲取四組譯碼的輸入數(shù)據(jù);每次MAP1迭代前均有半個(gè)窗的預(yù)讀階段,后半窗作為后一個(gè)窗的預(yù)讀階段;這里,所述每組譯碼的輸入數(shù)據(jù)包括:先驗(yàn)值LE、系統(tǒng)數(shù)據(jù)S、和校驗(yàn)值P1;如此,通過提前半窗讀的方式,即在3GMAP1的每次迭代前增加一級(jí)提前預(yù)讀流水,從4比特的數(shù)據(jù)中任取2比特的數(shù)據(jù)進(jìn)行提前預(yù)讀并緩存,其余2比特在正常流程的前半窗讀取,并與提前預(yù)讀的2比特組成完整的數(shù)據(jù);由于3GMAP1采用拷貝的方式來解決沖突,讀寫不會(huì)同時(shí)存在于同一存儲(chǔ)資源空間,因此從根本上就不會(huì)發(fā)生讀寫沖突,提前預(yù)讀流水可以和其它窗的后半窗重合。這樣,通過增加少量的開銷,即可實(shí)現(xiàn)從同時(shí)讀4個(gè)數(shù)據(jù)降低到同時(shí)讀2個(gè)數(shù)據(jù),從而使相應(yīng)的拷貝數(shù)也從4份降低為2份,存儲(chǔ)資源可以完全共享4G軟符號(hào)的存儲(chǔ)資源,達(dá)到降低存儲(chǔ)資源開銷和提高共享資源利用率的目的;2)對(duì)于3G制式,在對(duì)所述譯碼的輸入數(shù)據(jù)進(jìn)行非交織處理MAP0階段直接讀取四組譯碼的輸入數(shù)據(jù);這里,所述每組譯碼的輸入數(shù)據(jù)包括:LE、S、和P0;3)對(duì)于4G制式,在對(duì)所述譯碼的輸入數(shù)據(jù)進(jìn)行非交織處理階段及在對(duì)所述譯碼的輸入數(shù)據(jù)進(jìn)行交織處理階段,均直接讀取四組譯碼的輸入數(shù)據(jù);這里,所述每組譯碼的輸入數(shù)據(jù)包括:LE、S、和P0,或LE、S、和P1。對(duì)讀取的輸入數(shù)據(jù)進(jìn)行處理是指將輸入的數(shù)據(jù)進(jìn)行g(shù)amma計(jì)算,得到gamma值,并將所述gamma值緩存至gamma_ram;具體地,gamma計(jì)算采用(1,0)的方案;由Turbo算法從理論上推到出的gamma計(jì)算的方程式,為:其中,(χ2ks,χ2k+1s,χ2kp,χ2k+1p)={0000,0001,......,1111};]]>表示從狀態(tài)S2k到S2k+2的gamma值;表示編碼系統(tǒng)比特SYS,表示編碼校驗(yàn)比特P0或P1;表示接收的軟系統(tǒng)符號(hào),表示接收的軟校驗(yàn)符號(hào);La(χ2k),La(χ2k+1)表示先驗(yàn)軟信息Le。硬比特符號(hào)x在通信意義上僅有+1,-1之分,而0表示無信號(hào),±1可以增大兩個(gè)不同信號(hào)之間的區(qū)分度;因此,通常gamma的計(jì)算采用(1,-1)方案;gamma計(jì)算方案比較值,如表1所示:表1由表1可以看出,gamma(1,-1)和gamma(1,0)兩種算法的概率差相差一個(gè)整數(shù)倍數(shù),這是由于采用gamma簡(jiǎn)化算法帶來的結(jié)果;如果采用浮點(diǎn)算法,兩種譯碼算法的結(jié)果一樣;但是如果采用定點(diǎn)算法,由于定點(diǎn)精度問題,gamma(1,-1)算法在精度上會(huì)有損失;同時(shí),從實(shí)現(xiàn)角度而言,gamma(1,0)算法也相對(duì)簡(jiǎn)化;因此,采用gamma(1,0)算法不僅能降低邏輯資源的開銷,提高譯碼性能,而且由于前半窗需要緩存,也能降低緩存存儲(chǔ)資源的開銷;而且,由于gamma值在隨后的無論是用于求硬比特符號(hào),還是用于求先驗(yàn)信息,抑或用于求軟符號(hào)信息,均采用的是不同組合的概率差值,因此,gamma采用(1,0)方案計(jì)算,并不會(huì)造成任何性能損失。本發(fā)明實(shí)施例中,若不是3G制式下的MAP1階段的第一個(gè)窗,在執(zhí)行本步驟之前,則需初始化alpha或beta;若是3G制式下的MAP1階段的第一個(gè)窗,則在緩存中讀取兩組譯碼的輸入數(shù)據(jù)后,再初始化alpha或beta;這里,如果為首次對(duì)輸入的數(shù)據(jù)進(jìn)行譯碼,即首次迭代,則采用固定的默認(rèn)值初始化alpha或beta;否則,采用緩存的歷史值初始化alpha或beta;其 中,緩存的歷史值為上一次譯碼產(chǎn)生并緩存的值;具體地,由于Turbo碰撞譯碼算法通過采用增加overlap訓(xùn)練窗大小的方法來提高譯碼性能,因此,用于訓(xùn)練所選擇的初始值不僅決定訓(xùn)練窗WIN的大小,而且決定其譯碼性能;訓(xùn)練窗從理論上來說是無用的,僅僅是為了訓(xùn)練,而不會(huì)產(chǎn)生有效的譯碼輸出;因此,本申請(qǐng)通過采用繼承歷史值來初始化alpha或beta,在保證譯碼性能的前提下,能有效地減小訓(xùn)練窗WIN的大小,從而降低無用開銷;而無用開銷的減少,也必然會(huì)提高系統(tǒng)吞吐率和降低動(dòng)態(tài)功耗。alpha繼承歷史值初始化的原理,如圖7所示:由于alpha采用前向計(jì)算,各窗間可以平滑過渡,除第一個(gè)窗外的其它窗無需重疊訓(xùn)練,后窗可以直接采用前窗的計(jì)算結(jié)果做為訓(xùn)練結(jié)果繼續(xù)處理,因此alpha僅各PU的第一個(gè)窗需要初始化。在第一次迭代的時(shí)候,采用傳統(tǒng)的默認(rèn)固定值初始化,并保存距離各PU末尾重疊窗WIN長度點(diǎn)的alpha中間計(jì)算值,用于下次迭代的初始化;除第一次迭代外的其他迭代,均采用上次迭代保存的中間值作為alpha的初始值,并保存本次計(jì)算的中間值以供下次迭代使用。beta繼承歷史值初始化的原理,如圖8所示:由于beta由于采用反向計(jì)算,各窗間在數(shù)據(jù)上無連貫性,因此,各個(gè)窗均需要獨(dú)立初始化。在第一次迭代的時(shí)候,各窗采用傳統(tǒng)的默認(rèn)固定值初始化,并保存距離各窗頭部重疊窗WIN長度點(diǎn)的beta中間計(jì)算值,用于下次迭代的初始化;除第一次迭代外的其他迭代均采用上次迭代保存的中間值作為beta的初始值,并保存本次計(jì)算的中間值以供下次迭代使用。本發(fā)明實(shí)施例中,在執(zhí)行步驟101之前,還包括:步驟100a,接收譯碼參數(shù)包,根據(jù)所述譯碼參數(shù)包獲取譯碼參數(shù);具體地,譯碼裝置中的第二處理模塊接收外部發(fā)送的譯碼參數(shù)包,并解析所述譯碼參數(shù)包;如果解析所述譯碼參數(shù)包為3G制式,根據(jù)補(bǔ)零個(gè)數(shù)計(jì)算公式計(jì)算PadNum;對(duì)于3G制式,由于MAP0采用順序地址,地址間無沖突,因此,MAP0可采用并行操作;但是,由于3G制式下交織器的無規(guī)律性,MAP1讀寫數(shù)據(jù) 時(shí)的交織地址容易產(chǎn)生沖突,因此MAP1無法并行操作;對(duì)于4G制式,交織器采用無沖突的二次置換多項(xiàng)式(QuadraticPolynomialPermutation,QPP),因此,4G制式下的MAP0和MAP1均能并行操作。因此,把3GMAP0、4GMAP0和4GMAP1合并為無沖突通道,統(tǒng)一并行處理;而3GMAP1為沖突通道,采用固定窗長的原則單獨(dú)進(jìn)行串行處理。這樣,既能最大限度的共享其邏輯資源,達(dá)到資源利用率的最大化;同時(shí),由于并行處理3GMAP0,也能極大提高3G系統(tǒng)的吞吐率。4G協(xié)議規(guī)定的Turbo碼塊大小K為在[40,6144]區(qū)間的188種可能取值,且每種取值在各自的區(qū)間均為N(N=8,16,32,64)的整數(shù)倍,因此能容易的均分為PUxWIN等份,利于并行處理;而3G協(xié)議中規(guī)定的Turbo碼塊大小K可以是[40,5114]的任意值,并不完全是PUxWIN的整數(shù)倍,為兼容4G的多PU并行處理,需要對(duì)3G的輸入數(shù)據(jù)進(jìn)行末尾補(bǔ)零對(duì)齊到與4G最接近的碼塊大小K;具體的補(bǔ)零個(gè)數(shù)計(jì)算公式如下:PadNum=(8-k%8)%8,k∈[40,512](2)(16-k%16)%16,k∈(512,1024](32-k%32)%32,k∈(1024,2048](64-k%64)%64,k∈(2048,5114];再根據(jù)解碼快大小k和PadNum分別計(jì)算出MAP0和MAP1運(yùn)算所需要的并行處理單元數(shù)量(PuNum)、串行處理單元數(shù)量(WinNum)和串行處理單元大小(WinSize),K’、PuNum、WinNum和WinSize的關(guān)系,如表2所示:K’=k+PuNumPuNumWinNumWinSize[40,376]11K’%2(376,752]21K’%4(752,1504]41K’%8(1504,3072]81K’%16(3072,6144]82K’%32表2步驟100b,接收譯碼的輸入數(shù)據(jù),根據(jù)PadNum對(duì)所述輸入數(shù)據(jù)進(jìn)行處理,并存儲(chǔ)處理后的數(shù)據(jù);具體地,譯碼裝置的第二處理模塊接收外部的譯碼輸入數(shù)據(jù),解析所述輸入數(shù)據(jù)中的p0、p1和S,根據(jù)所述PadNum的大小在所接收的數(shù)據(jù)尾部補(bǔ)零對(duì)齊后存儲(chǔ)至緩存;同時(shí),所述第二處理模塊根據(jù)k產(chǎn)生交織地址,并將產(chǎn)生的交織地址緩存至addr_ram,所述交織地址用于MAP1階段讀寫數(shù)據(jù)使用;在執(zhí)行該步驟后,執(zhí)行初始化alpha或beta的操作。步驟102,在譯碼的后半窗階段將所述處理結(jié)果進(jìn)行譯碼,得到譯碼結(jié)果;具體地,譯碼裝置中的譯碼模塊對(duì)步驟101中計(jì)算得到的所述gamma值基于基4碰撞MAP算法進(jìn)行前后向碰撞計(jì)算,得到譯碼結(jié)果,并將所述譯碼結(jié)果進(jìn)行緩存;其中,所述譯碼結(jié)果包括:硬比特信息、LE、及軟符號(hào)信息;相應(yīng)的,所述硬比特信息存儲(chǔ)至hd_ram,所述4G校驗(yàn)比特p1軟符號(hào)存儲(chǔ)至p1_le_ram,4G校驗(yàn)比特p0軟符號(hào)存儲(chǔ)至p0_le_ram,4G系統(tǒng)比特軟符號(hào)存儲(chǔ)至llrs_scpy_ram,LE存儲(chǔ)至le_ram;對(duì)于非沖突通道,則將四組譯碼結(jié)果并行寫入le_ram,如果是沖突通道,在寫入譯碼結(jié)果的過程中若遇到地址沖突,則將有沖突的地址和數(shù)據(jù)先緩存起至delay_ram,在沒有地址沖突的時(shí)候,將已經(jīng)緩存的有沖突的地址和數(shù)據(jù)同其他譯碼結(jié)果一同寫入le_ram。本發(fā)明實(shí)施例中,為解決4比特?cái)?shù)據(jù)的寫沖突,采用延遲寫法,由于MAP的譯碼結(jié)果數(shù)據(jù)僅發(fā)生在后半窗,通過延遲可以擴(kuò)展寫到前半窗,相當(dāng)于每一時(shí)刻只寫2比特?cái)?shù)據(jù),而在無地址沖突的時(shí)候,可以同時(shí)寫入多比特?cái)?shù)據(jù),從而,在根本上消除寫沖突的問題。同時(shí),在本發(fā)明實(shí)施例中,如圖9所示,在前半窗從共享存儲(chǔ)資源讀取本 窗所有需要的數(shù)據(jù)信,并對(duì)所述數(shù)據(jù)進(jìn)行g(shù)amma計(jì)算后緩存,在后半窗僅從該緩存中讀取相應(yīng)的gamma值進(jìn)行譯碼,并將譯碼結(jié)果回寫到共享存儲(chǔ)資源;如此,實(shí)現(xiàn)了共享存儲(chǔ)資源的讀/寫完全分開,解決了讀寫沖突;同時(shí),由于不需要從較大的共享存儲(chǔ)資源二次重復(fù)讀取數(shù)據(jù)和進(jìn)行g(shù)amma值的二次計(jì)算,而僅從較小的緩存中直接獲取gamma值降低了大RAM的讀寫概率和邏輯資源的翻轉(zhuǎn)率,有效地降低了動(dòng)態(tài)功耗。步驟103,根據(jù)所述譯碼結(jié)果確認(rèn)譯碼結(jié)束時(shí),封裝并輸出譯碼結(jié)果;具體地,譯碼裝置中的輸出模塊對(duì)所述譯碼結(jié)果中的硬比特信息進(jìn)行循環(huán)冗余校驗(yàn)(CyclicRedundancyCheck,CRC),或?qū)⒈敬巫g碼結(jié)果中的硬比特信息與上次迭代結(jié)果中的硬比特信息進(jìn)行比較,依據(jù)迭代提前停止準(zhǔn)則及CRC結(jié)果或比較結(jié)果確定迭代是否結(jié)束;如果迭代未結(jié)束,則重復(fù)執(zhí)行步驟101至步驟103;如果迭代結(jié)束,則將譯碼得到的硬比特信息或軟比特信息封裝、輸出至外部;需要說明的是,本發(fā)明實(shí)施例中所述迭代是指對(duì)輸入的譯碼數(shù)據(jù)進(jìn)行多次譯碼。本發(fā)明實(shí)施例一種譯碼方法的詳細(xì)處理流程,如圖10所示,包括以下步驟:步驟201,接收譯碼參數(shù)包,根據(jù)所述譯碼參數(shù)包獲取譯碼參數(shù);具體地,譯碼裝置中的第二處理模塊接收外部發(fā)送的譯碼參數(shù)包,并解析所述譯碼參數(shù)包;如果解析所述譯碼參數(shù)包為3G制式,根據(jù)補(bǔ)零個(gè)數(shù)計(jì)算公式計(jì)算PadNum;對(duì)于3G制式,由于MAP0采用順序地址,地址間無沖突,因此,MAP0可采用并行操作;但是,由于3G制式下交織器的無規(guī)律性,MAP1讀寫數(shù)據(jù)時(shí)的交織地址容易產(chǎn)生沖突,因此MAP1無法并行操作;對(duì)于4G制式,交織器采用無沖突的QPP,因此,4G制式下的MAP0和MAP1均能并行操作。因此,把3GMAP0、4GMAP0和4GMAP1合并為無沖突通道,統(tǒng)一并行處理;而3GMAP1為沖突通道,采用固定窗長的原則單獨(dú)進(jìn)行串行處理。這樣,既能最大限度的共享其邏輯資源,達(dá)到資源利用率的最大化;同時(shí),由于并行處 理3GMAP0,也能極大提高3G系統(tǒng)的吞吐率。4G協(xié)議規(guī)定的Turbo碼塊大小K為在[40,6144]區(qū)間的188種可能取值,且每種取值在各自的區(qū)間均為N(N=8,16,32,64)的整數(shù)倍,因此能容易的均分為PUxWIN等份,利于并行處理;而3G協(xié)議中規(guī)定的Turbo碼塊大小K可以是[40,5114]的任意值,并不完全是PUxWIN的整數(shù)倍,為兼容4G的多PU并行處理,需要對(duì)3G的輸入數(shù)據(jù)進(jìn)行末尾補(bǔ)零對(duì)齊到與4G最接近的碼塊大小K;具體的補(bǔ)零個(gè)數(shù)計(jì)算公式如下:PadNum=(8-k%8)%8,k∈[40,512](2)(16-k%16)%16,k∈(512,1024](32-k%32)%32,k∈(1024,2048](64-k%64)%64,k∈(2048,5114];再根據(jù)解碼快大小k和PadNum分別計(jì)算出MAP0和MAP1運(yùn)算所需要的并行處理單元數(shù)量(PuNum)、串行處理單元數(shù)量(WinNum)和串行處理單元大小(WinSize),K’、PuNum、WinNum和WinSize的關(guān)系,如表2所示:K’=k+PuNumPuNumWinNumWinSize[40,376]11K’%2(376,752]21K’%4(752,1504]41K’%8(1504,3072]821K’%16(3072,6144]812K’%32表2步驟202,接收譯碼的輸入數(shù)據(jù),根據(jù)PadNum對(duì)所述輸入數(shù)據(jù)進(jìn)行處理,并存儲(chǔ)處理后的數(shù)據(jù);具體地,譯碼裝置的第二處理模塊接收外部的譯碼輸入數(shù)據(jù),解析所述輸入數(shù)據(jù)中的p0、p1和S,根據(jù)所述PadNum的大小在所接收的數(shù)據(jù)尾部補(bǔ)零對(duì) 齊后存儲(chǔ)至緩存;同時(shí),所述第二處理模塊根據(jù)k產(chǎn)生交織地址,并將產(chǎn)生的交織地址緩存至addr_ram,所述交織地址用于MAP1階段讀寫數(shù)據(jù)使用。步驟203,判斷是否需要進(jìn)入提前預(yù)讀階段,在判斷結(jié)果為是時(shí),執(zhí)行步驟204,在判斷結(jié)果為否時(shí),執(zhí)行步驟205;具體地,譯碼裝置的第一處理模塊判斷為3G制式,且在對(duì)所述譯碼的輸入數(shù)據(jù)進(jìn)行交織處理MAP1階段的第一個(gè)窗時(shí),確認(rèn)需要進(jìn)入提前預(yù)讀階段,否則,不需要進(jìn)入提前預(yù)讀階段。步驟204,提前預(yù)讀數(shù)據(jù);具體地,先從緩存中讀取兩組待譯碼的輸入數(shù)據(jù);這里,所述每組譯碼的輸入數(shù)據(jù)包括:先驗(yàn)值LE、系統(tǒng)數(shù)據(jù)S、和校驗(yàn)值P1;如此,通過提前半窗讀的方式,即在3GMAP1的每次迭代前增加一級(jí)提前預(yù)讀流水,從4比特的數(shù)據(jù)中任取2比特的數(shù)據(jù)進(jìn)行提前預(yù)讀并緩存,其余2比特在正常流程的前半窗讀取,并與提前預(yù)讀的2比特組成完整的數(shù)據(jù);由于3GMAP1采用拷貝的方式來解決沖突,讀寫不會(huì)同時(shí)存在于同一存儲(chǔ)資源空間,因此從根本上就不會(huì)發(fā)生讀寫沖突,提前預(yù)讀流水可以和其它窗的后半窗重合。這樣,通過增加少量的開銷,即可實(shí)現(xiàn)從同時(shí)讀4個(gè)數(shù)據(jù)降低到同時(shí)讀2個(gè)數(shù)據(jù),從而使相應(yīng)的拷貝數(shù)也從4份降低為2份,存儲(chǔ)資源可以完全共享4G軟符號(hào)的存儲(chǔ)資源,達(dá)到降低存儲(chǔ)資源開銷和提高共享資源利用率的目的。步驟205,在譯碼的前半窗階段,讀取譯碼的輸入數(shù)據(jù),并對(duì)讀取的輸入數(shù)據(jù)進(jìn)行處理,得到處理結(jié)果;具體地,譯碼裝置的第一處理模塊在譯碼的前半窗階段讀取譯碼的輸入數(shù)據(jù);1)對(duì)于3G制式,在對(duì)所述譯碼的輸入數(shù)據(jù)進(jìn)行交織處理MAP1階段的第一個(gè)窗,在前半窗階段,從緩存中讀取兩組譯碼的輸入數(shù)據(jù),與步驟204中提前預(yù)讀的兩組數(shù)據(jù)共同組成四組譯碼的輸入數(shù)據(jù);這里,所述每組譯碼的輸入數(shù)據(jù)包括:LE、S、和P1;每次MAP1迭代前均有半個(gè)窗的預(yù)讀階段,后半窗作為后一個(gè)窗的預(yù)讀階段;2)對(duì)于3G制式,在對(duì)所述譯碼的輸入數(shù)據(jù)進(jìn)行非交織處理MAP0階段直接讀取四組譯碼的輸入數(shù)據(jù);這里,所述每組譯碼的輸入數(shù)據(jù)包括:LE、S、和P0;3)對(duì)于4G制式,在對(duì)所述譯碼的輸入數(shù)據(jù)進(jìn)行非交織處理階段及在對(duì)所述譯碼的輸入數(shù)據(jù)進(jìn)行交織處理階段,均直接讀取四組譯碼的輸入數(shù)據(jù);這里,所述每組譯碼的輸入數(shù)據(jù)包括:LE、S、和P0,或LE、S、和P1。對(duì)讀取的輸入數(shù)據(jù)進(jìn)行處理是指將輸入的數(shù)據(jù)進(jìn)行g(shù)amma計(jì)算,得到gamma值,并將所述gamma值緩存至gamma_ram;具體地,gamma計(jì)算采用(1,0)的方案;由Turbo算法從理論上推到出的gamma計(jì)算的方程式,為:其中,(χ2ks,χ2k+1s,χ2kp,χ2k+1p)={0000,0001,......,1111};]]>表示從狀態(tài)S2k到S2k+2的gamma值;表示編碼系統(tǒng)比特SYS,表示編碼校驗(yàn)比特P0或P1;表示接收的軟系統(tǒng)符號(hào),表示接收的軟校驗(yàn)符號(hào);La(χ2k),La(χ2k+1)表示先驗(yàn)軟信息Le。本發(fā)明實(shí)施例中采用gamma(1,0)算法進(jìn)行g(shù)amma計(jì)算。本發(fā)明實(shí)施例中,若不是3G制式下的MAP1階段的第一個(gè)窗,在執(zhí)行本步驟之前,則需初始化alpha或beta;若是3G制式下的MAP1階段的第一個(gè)床,則在緩存中讀取兩組譯碼的輸入數(shù)據(jù)后,再初始化alpha或beta;這里,如果為首次對(duì)輸入的數(shù)據(jù)進(jìn)行譯碼,即首次迭代,則采用固定的默認(rèn)值初始化alpha或beta;否則,采用緩存的歷史值初始化alpha或beta;其中,緩存的歷史值為上一次譯碼產(chǎn)生并緩存的值;alpha繼承歷史值初始化的原理,如圖7所示,beta繼承歷史值初始化的原理,如圖8所示,在前述均有描述,這里不在贅述。步驟206,在譯碼的后半窗階段將所述處理結(jié)果進(jìn)行譯碼,得到譯碼結(jié)果;具體地,譯碼裝置中的譯碼模塊對(duì)步驟203中計(jì)算得到的所述gamma值基于基4碰撞MAP算法進(jìn)行前后向碰撞計(jì)算,得到譯碼結(jié)果,并將所述譯碼結(jié)果進(jìn)行緩存;其中,所述譯碼結(jié)果包括:硬比特信息、LE、及軟符號(hào)信息;相應(yīng)的,所述硬比特信息存儲(chǔ)至hd_ram,所述4G校驗(yàn)比特p1軟符號(hào)存儲(chǔ)至p1_le_ram,4G校驗(yàn)比特p0軟符號(hào)存儲(chǔ)至p0_le_ram,4G系統(tǒng)比特軟符號(hào)存儲(chǔ)至llrs_scpy_ram,LE存儲(chǔ)至le_ram;對(duì)于非沖突通道,則將四組譯碼結(jié)果并行寫入le_ram,如果是沖突通道,在寫入譯碼結(jié)果的過程中若遇到地址沖突,則將有沖突的地址和數(shù)據(jù)先緩存起至delay_ram,在沒有地址沖突的時(shí)候,將已經(jīng)緩存的有沖突的地址和數(shù)據(jù)同其他譯碼結(jié)果一同寫入le_ram。本發(fā)明實(shí)施例中,為解決4比特?cái)?shù)據(jù)的寫沖突,采用延遲寫法,由于MAP的譯碼結(jié)果數(shù)據(jù)僅發(fā)生在后半窗,通過延遲可以擴(kuò)展寫到前半窗,相當(dāng)于每一時(shí)刻只寫2比特?cái)?shù)據(jù),而在無地址沖突的時(shí)候,可以同時(shí)寫入多比特?cái)?shù)據(jù),從而,在根本上消除寫沖突的問題。步驟207,判斷是否所有窗均處理完畢,判斷結(jié)果為是時(shí),執(zhí)行步驟208,判斷結(jié)果為否時(shí),執(zhí)行步驟205步驟208,根據(jù)所述譯碼結(jié)果判斷譯碼是否結(jié)束,判斷結(jié)果為是時(shí),執(zhí)行步驟209,判斷結(jié)果為否時(shí),執(zhí)行步驟203;具體地,譯碼裝置中的輸出模塊對(duì)所述譯碼結(jié)果中的硬比特信息進(jìn)行循環(huán)冗余校驗(yàn)(CyclicRedundancyCheck,CRC),或?qū)⒈敬巫g碼結(jié)果中的硬比特信息與上次迭代結(jié)果中的硬比特信息進(jìn)行比較,依據(jù)迭代提前停止準(zhǔn)則及CRC結(jié)果或比較結(jié)果確定迭代是否結(jié)束。步驟209,封裝并輸出譯碼結(jié)果;譯碼裝置中的輸出模塊將譯碼得到的硬比特信息或軟比特信息封裝、輸出至外部;需要說明的是,本發(fā)明實(shí)施例中所述迭代是指對(duì)輸入的譯碼數(shù)據(jù)進(jìn)行多次 譯碼。為實(shí)現(xiàn)上述譯碼方法,本發(fā)明實(shí)施例提供一種譯碼裝置,所述裝置的組成結(jié)構(gòu),如圖11所示,包括:第一處理模塊10、譯碼模塊20、和輸出模塊30;其中,所述第一處理模塊10,用于在譯碼的前半窗階段讀取譯碼的輸入數(shù)據(jù),并對(duì)讀取的輸入數(shù)據(jù)進(jìn)行處理,得到處理結(jié)果;所述譯碼模塊20,用于在譯碼的后半窗階段將所述處理結(jié)果進(jìn)行譯碼,得到譯碼結(jié)果;所述輸出模塊30,用于根據(jù)所述譯碼結(jié)果確認(rèn)譯碼結(jié)束時(shí),封裝并輸出譯碼結(jié)果。本發(fā)明實(shí)施例中,所述裝置還包括:第二處理模塊40,用于接收譯碼參數(shù)包,根據(jù)所述譯碼參數(shù)包獲取譯碼參數(shù);接收譯碼的輸入數(shù)據(jù),根據(jù)所述譯碼參數(shù)中的PadNum對(duì)所述輸入數(shù)據(jù)進(jìn)行處理,并存儲(chǔ)處理后的數(shù)據(jù)。本發(fā)明實(shí)施例中,所述第一處理模塊10,具體用于對(duì)于3G制式,在對(duì)所述譯碼的輸入數(shù)據(jù)進(jìn)行交織處理階段的第一個(gè)窗,先讀取兩組譯碼的輸入數(shù)據(jù),在前半窗階段,再讀取兩組譯碼的輸入數(shù)據(jù),獲取四組譯碼的輸入數(shù)據(jù);或,對(duì)于3G制式,在對(duì)所述譯碼的輸入數(shù)據(jù)進(jìn)行非交織處理階段直接讀取四組譯碼的輸入數(shù)據(jù);或?qū)τ?G制式,在對(duì)所述譯碼的輸入數(shù)據(jù)進(jìn)行非交織處理階段及在對(duì)所述譯碼的輸入數(shù)據(jù)進(jìn)行交織處理階段,均直接讀取四組譯碼的輸入數(shù)據(jù)。本發(fā)明實(shí)施例中,所述第一處理模塊10,具體用于對(duì)讀取的輸入數(shù)據(jù)進(jìn)行g(shù)amma計(jì)算,得到gamma值。本發(fā)明實(shí)施例中,所述譯碼模塊30,具體用于對(duì)所述gamma值進(jìn)行前后向碰撞計(jì)算,得到硬比特信息、LE、及軟符號(hào)信息。本發(fā)明實(shí)施例中,若不是3G制式下的MAP1階段的第一個(gè)窗,在執(zhí)行本步驟之前,則需初始化alpha或beta;若是3G制式下的MAP1階段的第一個(gè)床, 則在緩存中讀取兩組譯碼的輸入數(shù)據(jù)后,再初始化alpha或beta;這里,如果為首次對(duì)輸入的數(shù)據(jù)進(jìn)行譯碼,即首次迭代,則采用固定的默認(rèn)值初始化alpha或beta;否則,采用緩存的歷史值初始化alpha或beta;其中,緩存的歷史值為上一次譯碼產(chǎn)生并緩存的值。本發(fā)明實(shí)施例中,所述第二處理模塊40具體用于接收外部的譯碼輸入數(shù)據(jù),解析所述輸入數(shù)據(jù)中的p0、p1和S,根據(jù)所述PadNum的大小在所接收的數(shù)據(jù)尾部補(bǔ)零對(duì)齊后存儲(chǔ)至緩存;同時(shí),所述第二處理模塊根據(jù)k產(chǎn)生交織地址,并將產(chǎn)生的交織地址緩存至addr_ram,所述交織地址用于MAP1階段讀寫數(shù)據(jù)使用。本發(fā)明實(shí)施例中,所述譯碼模塊30,具體用于對(duì)gamma值基于基4碰撞MAP算法進(jìn)行前后向碰撞計(jì)算,得到譯碼結(jié)果,并將所述譯碼結(jié)果進(jìn)行緩存;具體地,對(duì)于非沖突通道,則將四組譯碼結(jié)果并行寫入le_ram,如果是沖突通道,在寫入譯碼結(jié)果的過程中若遇到地址沖突,則將有沖突的地址和數(shù)據(jù)先緩存起至delay_ram,在沒有地址沖突的時(shí)候,將已經(jīng)緩存的有沖突的地址和數(shù)據(jù)同其他譯碼結(jié)果一同寫入le_ram;其中,所述譯碼結(jié)果包括:硬比特信息、LE、及軟符號(hào)信息;相應(yīng)的,所述硬比特信息存儲(chǔ)至hd_ram,所述4G校驗(yàn)比特p1軟符號(hào)存儲(chǔ)至p1_le_ram,4G校驗(yàn)比特p0軟符號(hào)存儲(chǔ)至p0_le_ram,4G系統(tǒng)比特軟符號(hào)存儲(chǔ)至llrs_scpy_ram,LE存儲(chǔ)至le_ram;本發(fā)明實(shí)施例中譯碼裝置的實(shí)現(xiàn)示意圖,如圖12所示。本發(fā)明實(shí)施例中,為解決4比特?cái)?shù)據(jù)的寫沖突,采用延遲寫法,由于MAP的譯碼結(jié)果數(shù)據(jù)僅發(fā)生在后半窗,通過延遲可以擴(kuò)展寫到前半窗,相當(dāng)于每一時(shí)刻只寫2比特?cái)?shù)據(jù),而在無地址沖突的時(shí)候,可以同時(shí)寫入多比特?cái)?shù)據(jù),從而,在根本上消除寫沖突的問題。同時(shí),在本發(fā)明實(shí)施例中,在前半窗從共享存儲(chǔ)資源讀取本窗所有需要的數(shù)據(jù)信,并對(duì)所述數(shù)據(jù)進(jìn)行g(shù)amma計(jì)算后緩存,在后半窗僅從該緩存中讀取相應(yīng)的gamma值進(jìn)行譯碼,并將譯碼結(jié)果回寫到共享存儲(chǔ)資源;如此,實(shí)現(xiàn)了共 享存儲(chǔ)資源的讀/寫完全分開,解決了讀寫沖突;同時(shí),由于不需要從較大的共享存儲(chǔ)資源二次重復(fù)讀取數(shù)據(jù)和進(jìn)行g(shù)amma值的二次計(jì)算,而僅從較小的緩存中直接獲取gamma值降低了大RAM的讀寫概率和邏輯資源的翻轉(zhuǎn)率,有效地降低了動(dòng)態(tài)功耗。需要說明的是,在實(shí)際應(yīng)用中,所述第一處理模塊10、譯碼模塊20、和輸出模塊30和第二處理模塊40執(zhí)行的功能可由位于譯碼裝置上的中央處理器(CPU)、或微處理器(MPU)、或數(shù)字信號(hào)處理器(DSP)、或可編程門陣列(FPGA)實(shí)現(xiàn)。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。當(dāng)前第1頁1 2 3