關(guān)于基于Xilinx FPGA 的高速Viterbi回溯譯碼器的性能分析和應(yīng)用介紹_第1頁(yè)
關(guān)于基于Xilinx FPGA 的高速Viterbi回溯譯碼器的性能分析和應(yīng)用介紹_第2頁(yè)
關(guān)于基于Xilinx FPGA 的高速Viterbi回溯譯碼器的性能分析和應(yīng)用介紹_第3頁(yè)
關(guān)于基于Xilinx FPGA 的高速Viterbi回溯譯碼器的性能分析和應(yīng)用介紹_第4頁(yè)
關(guān)于基于Xilinx FPGA 的高速Viterbi回溯譯碼器的性能分析和應(yīng)用介紹_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

關(guān)于基于XilinxFPGA的高速Viterbi回溯譯碼器的性能分析和應(yīng)用介紹新一代移動(dòng)通信系統(tǒng)目前主要采用多載波傳輸技術(shù),基帶傳輸速率較3G有很大提高,一般要求業(yè)務(wù)速率能達(dá)到30Mb/s以上。約束長(zhǎng)度卷積碼以及Viterbi譯碼器由于其性能和實(shí)現(xiàn)的優(yōu)點(diǎn),在新一代通信系統(tǒng)中仍然占有一席之地。這就要求進(jìn)一步提高Viterbi譯碼器的譯碼速率,同時(shí)優(yōu)化Viterbi設(shè)計(jì)以減少由速率提高和約束長(zhǎng)度的增加帶來(lái)的硬件實(shí)現(xiàn)復(fù)雜度。1Viterbi譯碼器基本結(jié)構(gòu)

Viterbi譯碼器主要由分支度量計(jì)算(BMU),度量累積存貯(PathMetric),度量比較判斷(ACS)以及回溯譯碼(TraceBack)4個(gè)模塊組成[1],如圖1所示。本文優(yōu)化主要針對(duì)約束長(zhǎng)度為9的1/2卷積碼,生成多項(xiàng)式為561(oct),753(oct)。BMU(BranchMetricUnit)模塊計(jì)算接收的2個(gè)軟信息與4種可能的編碼輸出的歐式距離,作為分支度量送入ACS模塊。ACS(Add_Compare_Select)模塊根據(jù)編碼方式和狀態(tài)轉(zhuǎn)移將分支度量和256狀態(tài)的度量分別進(jìn)行累積相加,得到進(jìn)入下一時(shí)刻的新度量,然后比較到達(dá)下一時(shí)刻同一狀態(tài)的2種度量大小,選擇小的度量,同時(shí)生成各狀態(tài)的幸存比特輸出。TraceBack回溯模塊由ACS生成的當(dāng)前時(shí)刻的判決比特回溯L個(gè)時(shí)刻(L為回溯深度),得到L時(shí)刻前的狀態(tài)和譯碼輸出。2XilinxVirtexII的結(jié)構(gòu)和功能

VirtexII是Xilinx公司的高性能系列FPGA。最高規(guī)模能達(dá)到8000000門,內(nèi)部時(shí)鐘高達(dá)400MHz。存貯單元具有高達(dá)到3M容量的真正雙端口BlockRam。運(yùn)算單元中包括最多168b的專用乘法器。VirtexII中的可配置單元為CLB(ConfigurableLogicBloccks)。CLB中的資源可以靈活配置成多種結(jié)構(gòu)。包括實(shí)現(xiàn)查找表,移位寄存器等功能。在存貯資源不夠的時(shí)候,CLB也可以配置為分布式的Ram[2]。雙口BlockRam是Viterbi譯碼器中實(shí)現(xiàn)回溯譯碼的主要模塊,其端口如圖2所示??梢钥闯鯞lock-Ram具有2套獨(dú)立的地址和數(shù)據(jù)輸入、輸出線,獨(dú)立的端口使能、寫使能控制線,而且2個(gè)端口各自的時(shí)鐘輸入可以不同。這些結(jié)構(gòu)保證了BlockRam是一個(gè)完全真正雙端口操作的存貯器。VirtexII系列中BlockRam最多有168個(gè),每個(gè)容量為18k??梢耘渲贸刹煌臄?shù)據(jù)寬度和深度。同時(shí)BlockRam的訪問(wèn)時(shí)間只有3.3ns,能夠保證高速的存取要求。3基于XilinxBlockRam的回溯優(yōu)化方案

3.1回溯算法的原理和存在的問(wèn)題

在Viterbi譯碼模塊中,ACS和TraceBack是最核心的模塊。ACS需進(jìn)行大量的累積和比較運(yùn)算,TraceBack需進(jìn)行多步回溯運(yùn)算。當(dāng)Viterbi譯碼器譯碼狀態(tài)為256時(shí),這些運(yùn)算都需要占用大量的時(shí)間和資源。對(duì)于256狀態(tài)的1/2卷積碼的譯碼,需要512個(gè)加法器,512個(gè)比較器和選擇器來(lái)完成累加度量、比較度量大小,并選擇小的度量作為該狀態(tài)新的度量。對(duì)一個(gè)狀態(tài)度量更新的操作如圖3所示。ACS得出的256位的判決比特送入回溯模塊進(jìn)行譯碼。回溯譯碼通過(guò)尋找在一定深度范圍內(nèi)的最小度量的路徑來(lái)獲得最大似然譯碼。實(shí)現(xiàn)中采用截尾譯碼,每一個(gè)時(shí)鐘到來(lái)的時(shí)候,ACS模塊會(huì)送入當(dāng)前時(shí)刻各狀態(tài)的幸存比特(如圖4中的Sign[S]),從這些幸存比特可以得到由當(dāng)前各狀態(tài)往回L時(shí)刻的最小路徑上,前一時(shí)刻經(jīng)過(guò)的狀態(tài)(如圖4中,Sign[S]=0,最小路徑上前一時(shí)刻狀態(tài)為T1,否則為T2)。如果存貯了L個(gè)時(shí)刻的256位狀態(tài)幸存比特,就可以從當(dāng)前時(shí)刻的某一狀態(tài)開始回溯L時(shí)刻得到對(duì)應(yīng)的最小路徑起始狀態(tài)(如圖4中從S狀態(tài)回溯L時(shí)刻得到初始的P狀態(tài))。實(shí)際上無(wú)論從當(dāng)前的何種狀態(tài)開始回溯,當(dāng)回溯深度L為5~10倍的編碼寄存器數(shù)時(shí),所得到的L時(shí)刻前的初始狀態(tài)都是相同的(當(dāng)采用約束長(zhǎng)度為9的卷積碼,L最少應(yīng)為40)[3]。按照上述的回溯方案對(duì)256狀態(tài)的卷積碼進(jìn)行譯碼時(shí),會(huì)占用大量的資源,在VirtexII系列中的Xc2v3000上綜合時(shí)如果對(duì)ACS模塊也不做任何處理的話甚至?xí)a(chǎn)生資源不夠的情況。除此之外這種回溯要求在一個(gè)時(shí)鐘周期內(nèi)進(jìn)行L步回溯操作,結(jié)果導(dǎo)致速率達(dá)不到30Mb/s的要求。3.2基于XilinxBlockRam的回溯優(yōu)化方案

雖然一個(gè)時(shí)鐘周期回溯L步在30MHz的時(shí)鐘速率下不能完成,但是如果回溯前的開始狀態(tài)已經(jīng)是確定的最小路徑中的狀態(tài),那么每回溯一步就對(duì)應(yīng)一個(gè)譯碼輸出,這樣的輸出速率就能達(dá)到高速率。最后只需對(duì)L步的回溯譯碼輸出做一個(gè)L深度的倒序(LIFO)就能得到正確順序的譯碼輸出。XilinxVirtexII的雙端口BlockRam[2]能夠真正地對(duì)2個(gè)端口進(jìn)行不同的讀寫操作。這種結(jié)構(gòu)能很好的吻合改進(jìn)回溯算法的要求。應(yīng)用這種結(jié)構(gòu)可以存貯ACS送入的幸存比特,同時(shí)通過(guò)控制地址的讀寫來(lái)實(shí)現(xiàn)寫入幸存比特和回溯譯碼讀出同步進(jìn)行?;厮菽K存貯管理原理如圖5所示。回溯模塊的實(shí)現(xiàn)結(jié)構(gòu)如圖6所示。在圖5中,1,2,3分別為3塊位寬為256,深度為64的雙端口BlockRam,實(shí)現(xiàn)中將3塊合為1塊位寬256,深度192的BlockRam。BlockRam的2個(gè)口設(shè)為A口和B口。A口為只讀口,每個(gè)時(shí)鐘到來(lái)時(shí),將地址Tb_add指向的ACS幸存比特讀出,并回溯計(jì)算出前一時(shí)刻的狀態(tài)。B口為讀寫口,且讀操作優(yōu)于寫操作。當(dāng)時(shí)鐘到來(lái)時(shí),先根據(jù)當(dāng)前的狀態(tài)和地址Dec_add所讀出的幸存比特計(jì)算出前一時(shí)刻的狀態(tài)和譯碼輸出,然后在相同的時(shí)鐘周期內(nèi)在同一地址處將ACS新產(chǎn)生的幸存比特寫入。圖5中細(xì)箭頭表示譯碼讀出和ACS幸存比特寫入地址(Dec_add)的起始位置和方向,粗箭頭表示回溯讀出前一時(shí)刻狀態(tài)的讀地址(Tb_add)的起始位置和前進(jìn)方向。每64個(gè)時(shí)鐘開始時(shí),回溯讀出的起始狀態(tài)設(shè)為0,而譯碼讀出的初始狀態(tài)為上一個(gè)64個(gè)時(shí)鐘結(jié)束時(shí)回溯得到的初始狀態(tài)(虛線箭頭所示)。每64個(gè)時(shí)鐘開始的時(shí)候,雙端口BlockRam的2個(gè)讀寫地址的初始值按照?qǐng)D示的規(guī)律循環(huán)右移,且前進(jìn)的方向每64個(gè)時(shí)鐘反向一次。到64×6個(gè)時(shí)鐘后恢復(fù)初始的地址值和方向。由圖5中可以看出,64×3個(gè)時(shí)鐘后,將對(duì)塊2回溯得到的狀態(tài)作為初始狀態(tài)開始對(duì)塊1中的幸存比特進(jìn)行回溯譯碼,這時(shí)才開始真正的譯碼輸出。所以譯碼延時(shí)為192個(gè)時(shí)鐘周期,譯碼的回溯深度為64個(gè)時(shí)鐘周期。4性能分析

本文的優(yōu)化方案在XilinxISE5集成環(huán)境下進(jìn)行Verilog描述以及綜合和布局布線,并使用Modelsim7對(duì)約束長(zhǎng)度為9、回溯深度為64的Viterbi軟譯碼器在信噪比為2.8db的高斯白噪聲信道中進(jìn)行了后仿真,接收誤碼率小于10-7。采用不同約束長(zhǎng)度的譯碼器在ISE5.2環(huán)境下進(jìn)行綜合和布局布線后,速率和面積的比較結(jié)果如表1所示。仿真使用的FPGA為XilinxVirtexII系列中的Xc2v3000[2]。由表1可以得出,當(dāng)采用基于Xilinx雙口Block-Ram

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論