本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體地,涉及一種數(shù)據(jù)處理方法及譯碼器。
背景技術(shù):
目前,QC-LDPC(Quasi-Cyclic Low Density Parity Check Code,準循環(huán)低密度奇偶校驗碼)譯碼的主流是分層譯碼,其中,上一層的迭代輸出消息會馬上用作下一層的輸入。
具體地,分層算法的核心在于將所有校驗節(jié)點按照QC-LDPC碼的代數(shù)結(jié)構(gòu)分組,然后采取組內(nèi)并行,組間串行的方式來更新校驗節(jié)點和變量節(jié)點的消息,從而實現(xiàn)了組間運算的硬件資源復(fù)用。但是,分層算法在所有層的更新全部完成以后,需要判別譯碼結(jié)果是否正確,即進行校驗運算。如果校驗成功則判斷譯碼成功,否則判斷失敗,重新開始新一輪的迭代更新。
現(xiàn)有技術(shù)中,消息更新和結(jié)果校驗的操作是順序遞進的,即在每一輪譯碼中,消息更新執(zhí)行完畢后,進行結(jié)果校驗,本輪結(jié)果校驗有誤,再開始下一輪譯碼。
由上述過程可知,現(xiàn)有分層譯碼的譯碼效率較低。
技術(shù)實現(xiàn)要素:
本發(fā)明的主要目的是提供一種數(shù)據(jù)處理方法及譯碼器,用以解決現(xiàn)有譯碼技術(shù)譯碼效率低下的技術(shù)問題。
為了實現(xiàn)上述目的,本發(fā)明第一方面提供一種數(shù)據(jù)處理方法,所述方法應(yīng)用于譯碼器,所述譯碼器根據(jù)校驗矩陣中的每一行對接收到的編碼信號進行迭代譯碼,所述方法包括:
根據(jù)所述校驗矩陣中的第一行進行節(jié)點更新運算,其中,所述第一行是所述校驗矩陣中除最后一行以外的任一行;
在所述節(jié)點更新運算完成后,對更新后的節(jié)點進行校驗運算;
在進行所述校驗運算時,并行根據(jù)所述校驗矩陣的第二行進行下一次節(jié)點更新運算,所述第二行是所述第一行的下一行。
可選地,所述在所述節(jié)點更新運算完成后,對更新后的節(jié)點進行校驗運算,包括:
在所述節(jié)點更新運算與所述校驗運算之間建立流水線結(jié)構(gòu);
基于所述流水線結(jié)構(gòu)在所述節(jié)點更新運算完成后,對更新后的節(jié)點進行校驗運算。
可選地,所述在所述節(jié)點更新運算完成后,對更新后的節(jié)點進行校驗運算,包括:
在所述節(jié)點更新運算對n個節(jié)點進行更新后,對部分或者全部的所述n個節(jié)點進行所述校驗運算。
可選地,所述對更新后的節(jié)點進行校驗運算,包括:
將所述節(jié)點更新運算得到的譯碼結(jié)果和碼的校驗矩陣相乘,得到相乘結(jié)果;
判斷所述相乘結(jié)果是否為全零矩陣,若所述相乘結(jié)果為全零矩陣,則確定校驗成功,若所述相乘結(jié)果非全零矩陣,則確定校驗失敗。
可選地,所述方法還包括:在完成所有的校驗運算后,若任一次校驗發(fā)生失敗,則根據(jù)本次譯碼結(jié)果進行下一次譯碼,直到所有校驗均成功。
本發(fā)明第二方面提供一種譯碼器,包括:控制裝置和運算裝置;
所述運算裝置用于,根據(jù)所述校驗矩陣中的第一行進行節(jié)點更新運算,其中,所述第一行是所述校驗矩陣中除最后一行以外的任一行;并在所述節(jié)點更新運算完成后,對更新后的節(jié)點進行校驗運算;
所述控制裝置用于,控制所述運算裝置在進行所述校驗運算時,并行根據(jù)所述校驗矩陣的第二行進行下一次節(jié)點更新運算,所述第二行是所述第一行的下一行。
可選地,所述控制裝置用于,在所述節(jié)點更新運算與所述校驗運算之間建立流水線結(jié)構(gòu);
所述運算裝置用于,基于所述流水線結(jié)構(gòu)在所述節(jié)點更新運算完成后,對更新后的節(jié)點進行校驗運算。
可選地,所述運算裝置用于,在所述節(jié)點更新運算對n個節(jié)點進行更新后,對部分或者全部的所述n個節(jié)點進行所述校驗運算。
可選地,所述運算裝置用于,將所述節(jié)點更新運算得到的譯碼結(jié)果和碼的校驗矩陣相乘,得到相乘結(jié)果;判斷所述相乘結(jié)果是否為全零矩陣,若所述相乘結(jié)果為全零矩陣,則確定校驗成功,若所述相乘結(jié)果非全零矩陣,則確定校驗失敗。
可選地,所述運算裝置還用于:在完成所有的校驗運算后,若任一次校驗發(fā)生失敗,則根據(jù)本次譯碼結(jié)果進行下一次譯碼,直到所有校驗均成功。
采用上述技術(shù)方案至少可以達到如下技術(shù)效果:對于相鄰兩層,上一層的校驗運算與下一層的節(jié)點更新運算并行執(zhí)行,相比現(xiàn)有技術(shù)在每一層的節(jié)點更新運算完成后才執(zhí)行校驗運算,本發(fā)明中校驗運算與節(jié)點更新運算同時進行,從而縮短了譯碼時間,并且,節(jié)點更新運算占用的資源在完成節(jié)點更新運算后可以用于校驗運算,從而提高了資源利用率。
本發(fā)明的其他特征和優(yōu)點將在隨后的具體實施方式部分予以詳細說明。
附圖說明
附圖是用來提供對本發(fā)明的進一步理解,并且構(gòu)成說明書的一部分,與下面的具體實施方式一起用于解釋本發(fā)明,但并不構(gòu)成對本發(fā)明的限制。在附圖中:
圖1為現(xiàn)有技術(shù)中譯碼流程的示意圖;
圖2為本發(fā)明實施例提供的一種數(shù)據(jù)處理方法的流程示意圖;
圖3為本發(fā)明實施例提供的基于圖2所示方法的譯碼流程的示意圖;
圖4為本發(fā)明實施例提供的一種譯碼器的結(jié)構(gòu)示意圖。
具體實施方式
以下結(jié)合附圖對本發(fā)明的具體實施方式進行詳細說明。應(yīng)當理解的是,此處所描述的具體實施方式僅用于說明和解釋本發(fā)明,并不用于限制本發(fā)明。
為了便于本領(lǐng)域技術(shù)人員更容易理解本發(fā)明實施例提供的技術(shù)方案,下面對現(xiàn)有相關(guān)技術(shù)進行簡單說明。
圖1是現(xiàn)有技術(shù)中分層譯碼的示意圖,如圖所示,包括第1至第M輪多輪譯碼,每一輪譯碼中,從第1層到最后一層依次進行節(jié)點更新運算,每一層的節(jié)點更新運算執(zhí)行完成后,開始對譯碼結(jié)果進行校驗運算。由于校驗譯碼結(jié)果的運算量也很大,現(xiàn)有技術(shù)對于將校驗運算分成串行的N次來完成。N越大對資源的消耗越少,速度越慢。其中,N的取值與譯碼層數(shù)無關(guān),具體可以衡量資源消耗量和運行速度設(shè)定。若N次校驗運算中存在校驗失敗,則表明本輪譯碼中存在節(jié)點未正確更新,因此,可以基于目前的譯碼結(jié)果進行下一輪譯碼,直到第M輪,所有節(jié)點正確更新,每一次的校驗運算均校驗成功。
由圖1可知,現(xiàn)有技術(shù)中,每一輪節(jié)點更新運算與校驗運算順序執(zhí)行,時間消耗過高,并且,每一層更新占用的資源在節(jié)點更新完成后處于空閑狀態(tài),資源利用率低下。
本發(fā)明實施例提供一種數(shù)據(jù)處理方法,所述方法應(yīng)用于譯碼器,所述譯碼器根據(jù)校驗矩陣中的每一行對接收到的編碼信號進行迭代譯碼,如圖2所示,該方法包括:
S201、根據(jù)所述校驗矩陣中的第一行進行節(jié)點更新運算,其中,所述第一行是所述校驗矩陣中除最后一行以外的任一行;
S202、在所述節(jié)點更新運算完成后,對更新后的節(jié)點進行校驗運算;
S203、在進行所述校驗運算時,并行根據(jù)所述校驗矩陣的第二行進行下一次節(jié)點更新運算,所述第二行是所述第一行的下一行。
也就是說,對于相鄰兩層,上一層的校驗運算與下一層的節(jié)點更新運算并行執(zhí)行,相比現(xiàn)有技術(shù)在每一層的節(jié)點更新運算完成后才執(zhí)行校驗運算,本發(fā)明中校驗運算與節(jié)點更新運算同時進行,從而縮短了譯碼時間,并且,節(jié)點更新運算占用的資源在完成節(jié)點更新運算后可以用于校驗運算,從而提高了資源利用率。
為了使本領(lǐng)域技術(shù)人員更加理解本發(fā)明實施例提供的技術(shù)方案,下面對上述方法步驟進行詳細說明。
示例地,下表1是QC-LDPC碼校驗矩陣相鄰的三行,其中,留空的位置對應(yīng)全0子矩陣,非負整數(shù)對應(yīng)單位子陣的循環(huán)移位。譯碼器分層譯碼即是指利用校驗矩陣中的每一行依次對變量節(jié)點進行更新的操作。
表1
在表1示出的校驗矩陣中,上述方法步驟中所述的第一行即為不包括第3行的任一行。下面基于表1示出的校驗矩陣舉例說明步驟S201中所述的節(jié)點更新運算。
校驗矩陣每一行中的非負整數(shù)為該行的校驗節(jié)點,與每一個校驗節(jié)點同一列的偏移地址表示該校驗節(jié)點對應(yīng)的變量節(jié)點。這樣,針對校驗矩陣的第一列(即第一層),變量節(jié)點0對應(yīng)校驗節(jié)點102、變量節(jié)點2對應(yīng)校驗節(jié)點0、變量節(jié)點7對應(yīng)校驗節(jié)點54、變量節(jié)點10對應(yīng)校驗節(jié)點0,變量節(jié)點12對應(yīng)校驗節(jié)點65。則第一層的節(jié)點更新運算包括:依次從變量節(jié)點0、2、7、10、12讀取變量節(jié)點信息,讀取到變量節(jié)點信息后,根據(jù)變量節(jié)點信息得到更新后的校驗節(jié)點信息,即V2C。進一步地,在得到更新后的校驗節(jié)點信息后,依次對變量節(jié)點進行更新,即C2V。
進一步地,上述步驟S202對更新后的節(jié)點進行校驗運算包括:將所述節(jié)點更新運算得到的譯碼結(jié)果和碼的校驗矩陣相乘,得到相乘結(jié)果;判斷所述相乘結(jié)果是否為全零矩陣,若所述相乘結(jié)果為全零矩陣,則確定校驗成功,若所述相乘結(jié)果非全零矩陣,則確定校驗失敗。
值得說明的是,對于某一節(jié)點的校驗可能需要使用到其他節(jié)點進行運算,在其他節(jié)點未更新或者未正確更新的情況下,對于該節(jié)點進行的校驗也會發(fā)生失敗,在任一次校驗發(fā)生失敗時,可以進行下一輪的譯碼,直到所有節(jié)點正確更新。
具體地,在上述步驟S202中,在本發(fā)明實施例可以通過在所述節(jié)點更新運算與所述校驗運算之間建立流水線結(jié)構(gòu),從而使得譯碼器基于所述流水線結(jié)構(gòu)在所述節(jié)點更新運算完成后,對更新后的節(jié)點進行校驗運算。
下面基于圖3舉例說明上述步驟S203。其中,在圖3所示的譯碼流程中,針對每一輪譯碼,第一層節(jié)點更新運算后,并行執(zhí)行譯碼結(jié)果校驗運算第1步以及第2層節(jié)點更新運算,再并行執(zhí)行譯碼結(jié)果校驗運算第2步以及第3層節(jié)點更新運算,直到并行執(zhí)行譯碼結(jié)果校驗運算最后一步以及最后一層節(jié)點更新運算,從而減少了每一輪譯碼的時間。
值得說明的是,由于對于某一節(jié)點的校驗可能需要使用到其他節(jié)點進行運算,在其他節(jié)點未更新或者未正確更新的情況下,對于該節(jié)點進行的校驗也會發(fā)生失敗,而本發(fā)明實施例提供在其他節(jié)點未更新時,即開始進行校驗運算,因此,譯碼成功至少進行兩輪,也就是說,第一輪節(jié)點更新全部正確,第二輪對更新后的節(jié)點進行校驗全部正確。
對照圖1和圖3所示的方法流程,圖1所示的譯碼過程在經(jīng)過M輪譯碼后對所有節(jié)點正確更新,因此,第M輪的N步校驗運算均檢驗成功。相應(yīng)地,圖3所示的譯碼過程在經(jīng)過第M輪譯碼后,所有節(jié)點也應(yīng)全部更新成功,但是由于節(jié)點更新運算與校驗運算并行執(zhí)行,因此,導致后面的節(jié)點還未更新,前面的校驗運算已經(jīng)應(yīng)用到后面的節(jié)點進行校驗運算,致使校驗失敗。例如,第M輪的總共L層節(jié)點更新中,最后的一次會改寫譯碼結(jié)果的更新處于第K層,其中,K<=L。第K層更新實際改寫的節(jié)點集合為{v1,v2,...,vj},共j個節(jié)點。那么前K-1層對應(yīng)的結(jié)果校驗中,必然有某些校驗方程的輸入是錯誤的,導致校驗失敗。故采用本發(fā)明實施例提供的方法,第M輪的結(jié)果校驗步驟會輸出失敗,流程進入第M+1輪的迭代。
由于譯碼算法能夠保證對正確的譯碼結(jié)果繼續(xù)做迭代,不會把正確結(jié)果變成錯誤結(jié)果。因此第M輪節(jié)點更新全部成功后,在第M+1輪中,所有校驗結(jié)果均會成功,從而輸出正確的譯碼結(jié)果。
下面比較圖1所示的譯碼流程和圖3所示的譯碼流程的譯碼耗時。
若一層的節(jié)點更新和結(jié)果校驗的耗時均為T,QC-LDPC碼的層數(shù)為L,需要M輪迭代成功。則現(xiàn)有技術(shù)中譯碼總耗時為:2*T*L*M,本發(fā)明實施例提供的數(shù)據(jù)處理方法總耗時為:TL(M+1)。顯然,隨著迭代輪數(shù)的增加,本發(fā)明實施例能夠節(jié)約的時間也會更加顯著。
值得說明的是,上述只是舉例說明,在具體實施時,校驗步數(shù)可以不等于層數(shù),也就是說,校驗步數(shù)的劃分不受層數(shù)的影響。在本發(fā)明實施例的一種可能的實現(xiàn)方式中,上述步驟S202包括:在所述節(jié)點更新運算對n個節(jié)點進行更新后,對部分或者全部的所述n個節(jié)點進行所述校驗運算。也就是說,每一層節(jié)點更新運算后,校驗運算可以對所有已經(jīng)更新的節(jié)點進行校驗,也可以是對部分更新后的節(jié)點進行運算,剩余部分的已經(jīng)更新節(jié)點可以在下一步校驗運算中進行校驗。具體可以根據(jù)實際需求進行設(shè)定。
采用上述方法,譯碼器在接收到編碼信號后,根據(jù)校驗矩陣分層對編碼信號迭代譯碼,在對每一層進行節(jié)點更新后,并行執(zhí)行對已更新的節(jié)點的校驗運算以及下一層的節(jié)點更新運算,因此,相比現(xiàn)有技術(shù),本發(fā)明實施例每一輪譯碼大約節(jié)省一半的時間,提高了譯碼效率。
本發(fā)明實施例還提供一種譯碼器40,用于實施上述方法實施例提供的數(shù)據(jù)處理方法,如圖4所示,該譯碼器40包括:運算裝置401和控制裝置402;
所述運算裝置401用于,根據(jù)所述校驗矩陣中的第一行進行節(jié)點更新運算,其中,所述第一行是所述校驗矩陣中除最后一行以外的任一行;并在所述節(jié)點更新運算完成后,對更新后的節(jié)點進行校驗運算;
所述控制裝置402用于,控制所述運算裝置401在進行所述校驗運算時,并行根據(jù)所述校驗矩陣的第二行進行下一次節(jié)點更新運算,所述第二行是所述第一行的下一行。
可選地,所述控制裝置402用于,在所述節(jié)點更新運算與所述校驗運算之間建立流水線結(jié)構(gòu);所述運算裝置401用于,基于所述流水線結(jié)構(gòu)在所述節(jié)點更新運算完成后,對更新后的節(jié)點進行校驗運算。
可選地,所述運算裝置401用于,在所述節(jié)點更新運算對n個節(jié)點進行更新后,對部分或者全部的所述n個節(jié)點進行所述校驗運算。
可選地,所述運算裝置401用于,將所述節(jié)點更新運算得到的譯碼結(jié)果和碼的校驗矩陣相乘,得到相乘結(jié)果;判斷所述相乘結(jié)果是否為全零矩陣,若所述相乘結(jié)果為全零矩陣,則確定校驗成功,若所述相乘結(jié)果非全零矩陣,則確定校驗失敗。
可選地,所述運算裝置401還用于:在完成所有的校驗運算后,若任一次校驗發(fā)生失敗,則根據(jù)本次譯碼結(jié)果進行下一次譯碼,直到所有校驗均成功。
所屬本領(lǐng)域的技術(shù)人員應(yīng)該清楚地了解到,為描述的方便和簡潔,上述描述的各裝置的具體工作過程,可以參考前述方法實施例中對應(yīng)的過程,此處不再贅述。
另外,圖4只是譯碼器的示意圖,在具體實施時,該譯碼器還可以包括其他部件,例如存儲器,用于存儲迭代過程中不斷更新的變量節(jié)點的信息,以及校驗節(jié)點傳送給變量節(jié)點的信息。本發(fā)明對此不作限定。
采用上述譯碼器,該譯碼器在接收到編碼信號后,根據(jù)校驗矩陣分層對編碼信號迭代譯碼,對于相鄰兩層,上一層的校驗運算與下一層的節(jié)點更新運算并行執(zhí)行,相比現(xiàn)有技術(shù)在每一層的節(jié)點更新運算完成后才執(zhí)行校驗運算,本發(fā)明中校驗運算與節(jié)點更新運算同時進行,從而縮短了譯碼時間,并且,節(jié)點更新運算占用的資源在完成節(jié)點更新運算后可以用于校驗運算,從而提高了資源利用率。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
具體來講,本申請實施例中的信息處理方法對應(yīng)的計算機程序指令可以被存儲在光盤,硬盤,U盤等存儲介質(zhì)上,當存儲介質(zhì)中的與操作引導方法對應(yīng)的計算機程序指令被一電子設(shè)備讀取或被執(zhí)行時,包括如下步驟:
根據(jù)校驗矩陣中的第一行進行節(jié)點更新運算,其中,所述第一行是所述校驗矩陣中除最后一行以外的任一行;
在所述節(jié)點更新運算完成后,對更新后的節(jié)點進行校驗運算;
在進行所述校驗運算時,并行根據(jù)所述校驗矩陣的第二行進行下一次節(jié)點更新運算,所述第二行是所述第一行的下一行。
可選地,所述在所述節(jié)點更新運算完成后,對更新后的節(jié)點進行校驗運算,包括:
在所述節(jié)點更新運算與所述校驗運算之間建立流水線結(jié)構(gòu);
基于所述流水線結(jié)構(gòu)在所述節(jié)點更新運算完成后,對更新后的節(jié)點進行校驗運算。
可選地,所述在所述節(jié)點更新運算完成后,對更新后的節(jié)點進行校驗運算,包括:
在所述節(jié)點更新運算對n個節(jié)點進行更新后,對部分或者全部的所述n個節(jié)點進行所述校驗運算。
可選地,所述對更新后的節(jié)點進行校驗運算,包括:
將所述節(jié)點更新運算得到的譯碼結(jié)果和碼的校驗矩陣相乘,得到相乘結(jié)果;
判斷所述相乘結(jié)果是否為全零矩陣,若所述相乘結(jié)果為全零矩陣,則確定校驗成功,若所述相乘結(jié)果非全零矩陣,則確定校驗失敗。
可選地,所述方法還包括:在完成所有的校驗運算后,若任一次校驗發(fā)生失敗,則根據(jù)本次譯碼結(jié)果進行下一次譯碼,直到所有校驗均成功。
盡管已描述了本發(fā)明的優(yōu)選實施例,但本領(lǐng)域內(nèi)的普通技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本申請范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。