新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一種基于FPGA的QC_LDPC碼的譯碼器設計

        一種基于FPGA的QC_LDPC碼的譯碼器設計

        作者: 時間:2014-05-13 來源:網絡 收藏

        摘要 針對碼的短環對碼性能的重要影響,采用了1種圍數為8的碼設計。算法首先分別對3個不同的子矩陣進行移位運算,每個子矩陣分別與它們移位后生成的子矩陣共同組合形成1個新的子矩陣,然后再將新生成的3個子矩陣組合成1個矩陣構成基陣,最后將該矩陣轉置后用單位矩陣及其移位矩陣隨機擴展即可得到所需校驗矩陣。根據該校驗矩陣的特殊結構,采用分層迭代譯碼算法,選用Altera公司的Stratix III系列,實現碼率為1/2、碼長為3456的正規(3,6)碼譯碼器的布局布線。

        本文引用地址:http://www.104case.com/article/246737.htm

        LDPC碼是近年來發展較快且日趨成熟的一種信道編碼方案,因其具有的優越性能和實用價值而被人們認知,但由于隨機結構的LDPC碼編譯碼器硬件實現較為復雜,具有的準循環特性QC_LDPC碼已成為IEEE 802.11n(WiFi)、IEEE 802.16e(WiMAX)、(DVB—S2)等眾多標準的信道編碼方案。LDPC碼是一種基于稀疏校驗矩陣的線性分組碼,具有類似于Turbo碼的良好糾錯性能。1981年Tanner提出的用二部圖表示一個低密度線性分組碼的方法,成為LDPC碼的主要分析工具。若LDPC碼的Tanner圖是無環的,那么與積SP(Sum—Product)譯碼算法可實現最佳譯碼,若存在環尤其是短環的話,則由和積算法計算所得的概率并非真正的后驗概率(這是因為迭代過程中的獨立性假設不能成立),因而譯碼并不是最優的逐符號最大后驗概率譯碼,因此,環的存在大幅影響了譯碼的性能。MacKay和Neal經過大量的仿真結果證明信息傳遞算法(Message —Passing Algorithm,MPA)在Tanner圖中有環的情況下仍具有較好的譯碼性能,但短環的存在還是會降低譯碼性能。因此通過增大碼的最小圍數(環長),可提高碼字的性能,圍數達到一定的值就可接近無環時的性能。

        文獻提出一種圍數為8的低密度校驗矩陣的設計算法,獲得的QC_LDPC碼在AWGN信道下的仿真結果表明,其具有逼近隨機QC_LDPC碼的誤碼率性能。本文采用該算法構造的校驗矩陣屬于正規的QC_LDPC碼,具有更好的分塊循環移位特性,大幅降低了編譯碼復雜度,而Mansour和Sha nbhag則提出了一種LDPC譯碼策略——分層譯碼(Lnyered decoding),本文采用分層譯碼方案,為降低硬件復雜度,在Mansour和Shanbhag的基礎上進一步優化,采用更為簡單的歸一化最小和算法(NMS)代替了傳統的和積算法(SPA)。整個譯碼過程只包含比較、移位和加減運算,運算量比SPA算法大幅降低,同時譯碼性能損失可不超過0.1 dB。

        1 校驗矩陣的構造

        該方法構造的是一個列重為3,行重>3的校驗矩陣。首先構造3個子矩陣D、E和F,然后將子矩陣D、D和F按照行的方向排列生成H1,H1=[D E F],再將H1轉置生成矩陣H2,最終用pxp的單位矩陣及其移位矩陣作為隨機因子,對矩陣H2中的“1”進行隨機擴展,即可生成所需的校驗矩陣H。

        1.1 子矩陣D的構造

        構造一個v行、v2列的矩陣D0,其中D0的元素D0(1,1)=D0(2,1)=D0(3,1)=…=D0(v,1)=1,其余元素均為0,

         

         

        (1)將矩陣D0中的元素向右循環移位,每移動1位生成一個新矩陣。當D0中所有元素為1的列移動到第v2列時移位完畢,共生成v2-1個新矩陣D1,D2,D3,…,Dv2-1。

        (2)將D0,D1,D2,D3,…,Dv2-1按照列的方向排列便生成子矩陣D=[D0,D1,D2,…,Dv2-1]T,其維數為v3×v2。

        1.2 子矩陣E的構造

        (1)構造一個v行、v2列的矩陣E0,其中E0中的元素E0(1,1)=E0(2,2)=E0(3,3)=…=E0(v,v)=1,其余元素均為0,即E0的前v列所構成的塊為單位矩陣。如,當v=4時

         

         

        (2)將v個E0矩陣按照列的方向排列生成矩陣E1=[E0,E0,…,E0]T。

        (3)將矩陣E1向右循環移位,每移動v位生成一個新矩陣,由此共生成v-1個新矩陣,分別記為E2,E3,…,Ev。

        (4)將E1,E2,E3,…,Ev按照列的方向排列生成子矩陣E=[E1,E2,E3,…,Ev]T,其維數為v3×v2。

        1.3 子矩陣F的構造

        (1)構造一個v行v2、列的矩陣F0。其中F0中的元素F0(1,1)=F0(2,v+1)=F0(3,2v+1)=…=F0(v,v2-v+1)=1,其余元素均為0。即在F0中,從第2行開始,每行中的元素“1”的列位置較上一行中的“1”向右移動v位。假設,當v=4時

         

         

        (2)將F0向右循環移位,每移動1位生成v-1個新矩陣,共生成個新矩陣時停止移位,將新矩陣記為F1,F2,F3,…,Fv-1。

        (3)將F0,F1,F2,F3,…,Fv-1按照列的方向排列,生成的矩陣記為Fv=[F0,F1,F2,F3,…,Fv-1]T。

        (4)將v個Fv按照列的方向排列生成矩陣F=[Fv,Fv,…,Fv]T,其維數為v3×v2。

        1.4 矩陣H2的擴展算法

        將生成的子矩陣按行排列得到H1

         

         

        1.5 擴展H2得到校驗矩陣H

        (1)設一個單位矩陣I的維數為p×p,則

         

         

        (2)隨機產生1-p之間的隨機數,該隨機數即為單位矩陣的循環移位數。

        (3)將矩陣H2中的“1”用產生的隨機數來替代。

        (4)將矩陣中的隨機數用對應的置換矩陣替代填充,而矩陣H2中的元素“0”用p×P的零矩陣代替,由此即可生成所需的校驗矩陣H,其維數為3pv2×pv3。

        c++相關文章:c++教程



        上一頁 1 2 3 下一頁

        關鍵詞: FPGA QC_LDPC

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 嘉鱼县| 龙口市| 安吉县| 锦屏县| 焦作市| 吉林市| 喀什市| 开鲁县| 武胜县| 都江堰市| 桑植县| 甘泉县| 阿瓦提县| 临澧县| 永川市| 尼木县| 渝中区| 夹江县| 威远县| 建瓯市| 汶川县| 黎川县| 江都市| 平罗县| 延川县| 龙口市| 灵丘县| 琼结县| 泰和县| 昌图县| 瓮安县| 榆社县| 西平县| 湾仔区| 林口县| 禄丰县| 外汇| 象山县| 普安县| 隆德县| 五原县|