freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

ieee80216e編碼器的設(shè)計(jì)ic課設(shè)報(bào)告(已修改)

2025-05-25 18:37 本頁面
 

【正文】 IC課程設(shè)計(jì)報(bào)告()摘要:,并使用Modelsim完成功能仿真,以及采用綜合工具完成電路的綜合。為了簡化設(shè)計(jì),本文只完成碼長為576,碼率為1/2的編碼器的硬件實(shí)現(xiàn)。關(guān)鍵詞: , LDPC, RU算法, 編碼器1. 題目要求及理解,并使用Modelsim完成功能仿真,以及采用綜合工具完成電路的綜合。為了簡化設(shè)計(jì),本題只要求完成碼長為576,碼率為1/2的編碼器的硬件實(shí)現(xiàn)。在課程設(shè)計(jì)過程中,verilog代碼的編寫可以在UltraEdit等文本編輯軟件中進(jìn)行,代碼的編譯及波形的仿真可以借助ModelSim等EDA工具,最后的綜合可以使用Quartus II、Leonardo Spectrum或者Linux操作系統(tǒng)下的DC(Design Compiler)。,而WiMAX論壇推動(dòng)著IEEE802.16技術(shù)的發(fā)展。,IEEE 802.16e標(biāo)準(zhǔn)規(guī)定了可同時(shí)支持固定和移動(dòng)寬帶無線接入的系統(tǒng),其工作在6GHz以下適宜于移動(dòng)性的許可頻段,可支持用戶終端以車輛速度移動(dòng)。低密度奇偶校驗(yàn)碼(LDPC)是由Gallager在1962年發(fā)明,在近十年人們認(rèn)識(shí)到LDPC碼所具有的優(yōu)越性能和巨大的實(shí)用價(jià)值。研究表明非規(guī)則LDPC長碼的性能可以優(yōu)于Turbo碼,并且其性能十分接近shannon限。LDPC碼在碼長較長時(shí)沒有誤碼平臺(tái),可以提供性能極高的誤碼特性。近年的研究表明, LDPC碼是一類性能優(yōu)異的好碼,它比Turbo碼在技術(shù)上更具優(yōu)勢(shì),更能適應(yīng)未來通信系統(tǒng)高速數(shù)據(jù)傳輸和高性能的要求。為了滿足數(shù)據(jù)傳輸?shù)牡驼`碼率要求。作為前向糾錯(cuò)系統(tǒng)的重要部分,設(shè)計(jì)高速率低復(fù)雜度的LDPC碼編譯碼器成為提高系統(tǒng)性能的關(guān)鍵。盡管LDPC碼相對(duì)Turbo碼有較好的性能和較低的譯碼復(fù)雜度,但編碼卻較復(fù)雜。Turbo碼能在線性時(shí)間內(nèi)編碼,而LDPC碼編碼器的時(shí)間復(fù)雜度與碼長成二次方。Richardson等提出了一種新的編碼方法— RU算法,使用準(zhǔn)下三角校驗(yàn)矩陣構(gòu)造LDPC碼,可以較大程度地降低編碼運(yùn)算量,實(shí)現(xiàn)線性時(shí)間內(nèi)編碼。IEEE802. 16e 標(biāo)準(zhǔn)中規(guī)定的LDPC編碼規(guī)則如下: H矩陣是由塊矩陣來組成的。每個(gè)塊矩陣都用一個(gè)數(shù)字來表示, 而當(dāng)這個(gè)數(shù)字大于等于零時(shí), 這個(gè)數(shù)字就表示了將單位矩陣循環(huán)右移的位數(shù)。 而當(dāng)這個(gè)數(shù)字小于零時(shí)(為1時(shí))這個(gè)數(shù)字就表示了零矩陣。由此, 可以將模型矩陣擴(kuò)展成一個(gè)非常巨大的稀疏矩陣。觀察協(xié)議中規(guī)定的H矩陣, 可以發(fā)現(xiàn)H矩陣可由如下幾個(gè)子矩陣構(gòu)成( A, B, T, C, D, E),如下圖1所示。圖1 具有近似下三角陣形式的校驗(yàn)矩陣H矩陣其中A是一個(gè)(mg)k的矩陣,B是一個(gè)(mg)g的矩陣,T是一個(gè)(mg)(mg)的方陣,C是一個(gè)gk的矩陣,D是一個(gè)gg的方陣,E是一個(gè)g(mg)的矩陣。所有的矩陣都是稀疏的,并且T是一個(gè)下三角矩陣。m代表模型H矩陣的行數(shù), n代表模型H矩陣的列數(shù), g代表擴(kuò)展因子。根據(jù)RU算法, 如果一個(gè)完整的碼字為( s,p1, p2) , 其中s 為信息位, p1和p2為校驗(yàn)位, 則表1 計(jì)算p1時(shí)算法復(fù)雜度分析表2 計(jì)算p2時(shí)算法復(fù)雜度分析根據(jù)表1可以看到在計(jì)算最后一步的算法復(fù)雜度為O(g2) , 并不是線性編碼。如果一味地照搬RU算法, 在碼長n很大時(shí), 實(shí)現(xiàn)的硬件復(fù)雜度將會(huì)非常驚人。使用Matlab仿真計(jì)算后可以發(fā)現(xiàn), 表達(dá)式(3)中的F矩陣在WIMAX標(biāo)準(zhǔn)中規(guī)定的不同碼率, 不同擴(kuò)展因子的情況下都是單位矩陣。這無疑大大降低了計(jì)算p1的算法復(fù)雜度。據(jù)此, 可以對(duì)RU算法進(jìn)行簡化,得出適用于WIMAX標(biāo)準(zhǔn)中的LDPC線性編碼算法:由以上兩式可知,編碼步驟可以分為以下六個(gè)步驟:根據(jù)以上步驟計(jì)算P1和P2,為了達(dá)到最快的速度和最大的吞吐量,可以采用并行執(zhí)行和硬件流水的方法,采用兩級(jí)流水,以平衡各級(jí)的執(zhí)行時(shí)間。該編碼器結(jié)構(gòu)適合于各種碼率和碼長,這里只針對(duì)碼率為r=1/2,碼長為576的LDPC碼。2. 系統(tǒng)設(shè)計(jì)針對(duì)題目的要求,編碼器總體框圖如圖2所示,從圖中可以看到編碼器主要由矩陣向量乘法器(MVM)、前向迭代運(yùn)算器 (FS)、矩陣加法器(VA)和向量合成器(CWG)等單元組成。圖2 編碼器總體框圖本設(shè)計(jì)把編碼過程劃分為兩級(jí)流水的主要依據(jù)是平衡各級(jí)的執(zhí)行時(shí)間,使得兩級(jí)的空閑時(shí)間盡量小。編碼器主要是針對(duì)碼長n=57碼率r=1/2的LDPC碼設(shè)計(jì)的,但也適用于其他碼率和碼長。碼長為57碼率為1/2的LDPC碼校驗(yàn)矩陣如圖3所示,圖中1表示96*96全0矩陣,其他元素表示96*96的單位陣循環(huán)移位后的矩陣,元素值表示循環(huán)移位值。 圖3 碼長為57碼率為1/2的LDPC碼校驗(yàn)矩陣3. 模塊設(shè)計(jì)編碼器的主要模塊為矩陣向量乘法器(MVM)、前向迭代運(yùn)算器 (FS)、矩陣加法器(VA)和向量合成器(CWG)等單元組成。下面分別介紹各個(gè)模塊的設(shè)計(jì)。 矩陣乘法(MVM)由于 標(biāo)準(zhǔn)中的 LDPC 碼校驗(yàn)矩陣的特殊性,校驗(yàn)矩陣中的每個(gè)元素都是由單位矩陣循環(huán)右移后的矩陣或者全零矩陣。所以矩陣乘法可以用桶形移位器來實(shí)現(xiàn)。這種方法能夠充分利用校驗(yàn)矩陣的稀疏性,減少計(jì)算量。詳細(xì)的矩陣乘法的結(jié)構(gòu)如下圖4所示:圖4 矩陣乘法器結(jié)構(gòu)圖在計(jì)算矩陣乘法時(shí),我們是按行并行執(zhí)行的。校驗(yàn)矩陣中的每個(gè)非0元素按行分別存儲(chǔ)在一個(gè)11位的寄存器中,存儲(chǔ)格式如圖5所示:圖5 校驗(yàn)矩陣非0元素存儲(chǔ)格式寄存器的第0位到第6位共7位用來存儲(chǔ)校驗(yàn)矩陣中的循環(huán)移位值,第7位到第10位共4位用來存儲(chǔ)校驗(yàn)矩陣中非0元素的所在列的列號(hào)。因?yàn)長DPC碼的校驗(yàn)矩陣是稀疏矩陣,矩陣中大部分都是0,所以通過這種方法能夠高效的存儲(chǔ)矩陣。如果LDPC碼編碼器掛在一個(gè)SOC中,軟件員可以通過配置寄存器的值使得編碼器能夠適應(yīng)各種碼長和碼率的編碼。通過這樣的存儲(chǔ)機(jī)制,在執(zhí)行矩陣某一行和信息位乘法時(shí),并行執(zhí)行這一行中的非0元素和信息位相乘,首先利用寄存器的高4位選擇信息位中相應(yīng)的矢量,然后把它輸入到桶形移位器中,通過寄存器中的低7位控制移位位數(shù),這樣就完成了一次非0元和信息位相乘操作,然后把這一行中的所有非0元和信息位相乘所得結(jié)果做一次異或操作(即矢量相加VA),這樣就完成了矩陣一行和信息位相乘。編碼器中矩陣乘法行和行之間是并行執(zhí)行的。我們已經(jīng)提到過用移位的思想來實(shí)現(xiàn)經(jīng)過循環(huán)移位后的矩陣乘法。我們有結(jié)論如下:對(duì)于一個(gè)單位矩陣Inn,和一個(gè)任意矩陣An1,如果現(xiàn)在我們對(duì)矩陣An1循環(huán)上移x位得到Bn1,對(duì)Inn循環(huán)右移x位得到Jnn,則,即對(duì)單位矩陣循環(huán)右移的位數(shù)相當(dāng)于對(duì)A矩陣循環(huán)上移的位數(shù)。因此,我們考慮使用桶形移位器來實(shí)現(xiàn)循環(huán)移位的操作。桶形移位器(barrelshifter)可以在一個(gè)組合函數(shù)中執(zhí)行n位移位操作,而且可以進(jìn)行有效地進(jìn)行版圖設(shè)計(jì)。它可以循環(huán)和擴(kuò)展符號(hào)位。該移位器的結(jié)構(gòu)如下圖所示:圖6 桶形移位器桶形移位器一般可以接受2n個(gè)數(shù)據(jù)位和n個(gè)控制信號(hào),并產(chǎn)生n個(gè)輸出位。它將2n位數(shù)據(jù)的n位片段傳送到輸出端來實(shí)現(xiàn)移位。傳輸?shù)哪繕?biāo)片段的位置由控制位決定,具體的操作是由數(shù)據(jù)輸入端上的值決定。例如:發(fā)送一個(gè)數(shù)據(jù)字d到頂部的輸入,一個(gè)全0字到底部的輸入。假設(shè)從輸入端向這個(gè)桶形移位器來看,輸出是右移,在移出位填0,設(shè)定控制位,若選定最上方的n位,那么執(zhí)行0移位,而選擇最下方的n位,則是把整個(gè)字都移出移位器的n位操作。如果給底部輸入送入全1字,那么所做的移位操作就是填1移位。在上方和下方輸入端送入相同的數(shù)據(jù)字,那么結(jié)果就是一個(gè)循環(huán)操作——上方移出的字將在底部輸出端重新出現(xiàn)。(FS)考慮等式,其中T是雙對(duì)角的稀疏矩陣,f3和f1為矢量,設(shè)。解決這個(gè)問題的一種比較直接的方法是先求矩陣T的逆矩陣,然后計(jì)算。然而,矩陣的逆是一個(gè)很復(fù)雜的運(yùn)算,求矩陣的逆矩陣破壞了矩陣的稀疏性。如果按這種方法來實(shí)現(xiàn),那么它的復(fù)雜度將和碼長的二次方成正比。采用前面提出的前向置換的算法,計(jì)算只需要異或操作就可以實(shí)現(xiàn),如下式但是如果不加以改進(jìn)直接串行使用異或門來實(shí)現(xiàn),將會(huì)引入的延時(shí),而且這個(gè)延時(shí)在兩級(jí)的流水線中都存在(矢量加法也是由異或門實(shí)現(xiàn)的),這將極大的影響整個(gè)編碼器的速度,%。我們?cè)O(shè)計(jì)了一種編碼異或樹,使得實(shí)現(xiàn)的延時(shí)只有。圖7是當(dāng)mb=9時(shí),編碼異或樹的結(jié)構(gòu)圖。圖7 編碼異或樹結(jié)構(gòu)計(jì)算和采用同樣的方法 碼字生成(CWG),LDPC碼是系統(tǒng)碼的形式,所以碼字生成模塊的設(shè)計(jì)比較簡單。主要原理如圖8所示。圖8 碼字生成原理圖由于支持19中碼長的LDPC碼的編碼,所以通過配置寄存器中的值選擇輸出。例如當(dāng)我們配置目前的LDPC碼的碼長為576位時(shí),則通過配置寄存器中的值我們可以選擇信息位信號(hào)的前288位輸出到輸出碼字的前288位,而校驗(yàn)信號(hào)的前288位輸出到輸出碼字的289位到576位。4. 整體電路仿真和綜合根據(jù)上一節(jié)的我們?cè)O(shè)計(jì)的編碼器總體方案和矩陣乘法器模塊、前項(xiàng)置換器模塊及碼字生成等模塊的結(jié)構(gòu),我們用Verilog HDL硬件描述語言編寫了整個(gè)編碼器模塊,在Modelsim軟件上實(shí)現(xiàn)算法仿真,并將所得出的結(jié)果與Matlab仿真的結(jié)果作一個(gè)比較,驗(yàn)證RTL代碼的正確性。最后使用Leonardo Spectrum進(jìn)行綜合。圖9輸入輸出接口時(shí)序仿真圖時(shí)序仿真結(jié)果如圖9所示。其中輸入信號(hào)dat_in(32bit),編碼輸出data_out_top[63..0](由于碼率為 1/2,編碼輸出為64bit是輸入的2倍)。編碼時(shí)延與每個(gè)碼字分組的長度成正比,實(shí)現(xiàn)了線性時(shí)間編碼。使用Leonardo Spectrum進(jìn)行綜合,器件選擇為 Altera 公司的 FLEX 10K系列的 EPF10K10QC208,整個(gè)LDPC編碼器最高工作時(shí)鐘 49MHz。綜合得到的電路的RTL電路如圖10所示:圖10 編碼器RTL級(jí)電路示意圖其中編碼模塊的RTL級(jí)電路如圖11所示,碼字生成模塊RTL級(jí)電路如圖12所示:圖11 編碼模塊RTL級(jí)電路示意圖圖12 碼字生成模塊RTL級(jí)電路示意圖5. 源代碼和注釋 prep模塊module prep(nd_prep,clk,rst,data_in_prep,data_out_prep0,data_out_prep1,data_out_prep2,data_out_prep3,data_out_prep4,data_out_prep5,data_out_prep6,data_out_prep7,data_out_prep8,data_out_prep9,data_out_prep10,data_out_prep11,rdy_out_prep )。 input nd_prep。 input clk。 input rst。 input [31:0] data_in_prep。 output [23:0] data_out_prep0,data_out_prep1,data_out_prep2, data_out_prep3,data_out_prep4,data_out_prep5, data_out_prep6,data_out_prep7,data_out_prep8, data_out_prep9,data_out_prep10,data_out_prep11。output rdy_out_prep。 reg [23:0] data_out_prep0,data_out_prep1,data_out_prep2, data_out_prep3,data_out_prep4,data_out_prep5, data_out_prep6,data_out_prep7,data_out_prep8, data_out_prep9,data_out_prep10,data_out_prep11。 reg rdy_out_prep。 reg [3:0]counter。 always @(posedge clk or negedge rst) if(!rst) counter = 439。d9。 else begin if(nd_prep == 139。d1) counter = 439。d0。 else begin if(counter == 439。d8) counter = 439。d8。 else counter = counter + 139。d1。 end end always @(posedge clk or negedge rst) if(!rst) rdy_out_prep = 139。d0。 else begin if(counter == 539。d7 ) //high level sustain one cycle of clk rdy_out_prep = 139。d1。 else rdy_out_prep = 139。d0。 end always @(posedge clk or negedge rst) if(!rst) begin data_out_prep0= 2439。d0。 data_out_prep1= 2439。d0。 data_out_prep2=2439。d0。 data_out_prep3=2439。
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1