DVB-C解交織器的FPGA實(shí)現

發(fā)布時(shí)間:2010-7-15 21:43    發(fā)布者:conniede
關(guān)鍵詞: DVB-C , FPGA , 解交織器
卷積交織和解交織原理簡(jiǎn)介   

在DVB-C系統當中,實(shí)際信道中的突發(fā)錯誤往往是由脈沖干擾、多徑衰落引起的,在統計上是相關(guān)的,所以一旦出現不能糾正的錯誤時(shí),這種錯誤將連續存在。因此在DVB-C系統里,采用了卷積交織來(lái)解決這種問(wèn)題。它以一定規律擾亂源符號數據的時(shí)間順序,使其相關(guān)性減弱,然后將其送入信道,解交織器按相反規律恢復出源符號數據。
  
DVB-C的卷積交織和解交織原理為:交織由I=12(I為交織深度)個(gè)分支構成。每個(gè)分支的延時(shí)逐漸遞增,遞增的單元數M=n/I=204/12=17(M為交織基數)。這里的數據單位為字節。0支路無(wú)延時(shí),1支路延時(shí)17個(gè)符號周期,11支路則延時(shí)l7×11個(gè)符號周期。輸入端有一開(kāi)關(guān)隨著(zhù)時(shí)間推移依次連接各個(gè)延時(shí)支路,輸出端有一開(kāi)關(guān)與輸入端一一對應,同步連接各延時(shí)支路。
  
解交織器的實(shí)現
  
解交織器的FPGA實(shí)現原理
  
本文采用RAM分區循環(huán)移位法來(lái)實(shí)現,因為RAM里面暫存一位數據,只需要用一個(gè)邏輯門(mén)大小的資源,比基本寄存器暫存一位數據需要12個(gè)邏輯門(mén)大小的資源要優(yōu)化很多。用RAM分區循環(huán)移位法來(lái)實(shí)現解交織器,就是把RAM分成11個(gè)區。
每個(gè)區的大小為(單位為字節):
  
Ni=M*(I-i-1)(i=0,1,2, …,(I-1))
  
這里i為RAM所分區的區號。
  
因為11支路不需要延時(shí),所以 RAM的11分區大小即N11為0。本文在RAM前面設置一個(gè)地址控制器,這是解交織器關(guān)鍵的一步。RAM每區有一個(gè)首地址和區內偏移地址,分別用一個(gè)寄存器來(lái)存儲。在地址控制器里產(chǎn)生每區的首地址和區內偏移地址,從而進(jìn)一步產(chǎn)生RAM的讀寫(xiě)地址。
  
解交織器的FPGA實(shí)現
  
把解交織器的深度I和基數M設成參數,以增強程序的通用性。如果以后設計的解交織器的系數I和M需要改動(dòng),只要把參數值重新設置一下就可以了,不需要改動(dòng)程序。由前面的計算可知,解交織器總共需要延時(shí)的比特數,也就是RAM的大小應該為8976比特。
  
可以用下面一段程序實(shí)現首地址的初始化:
  FirstAddr[0]=0;
  for(i=1;i<(I-1);i=i+1)
  FirstAddr=(I-i)*M+FirstAddr[i-1];
  
也就是說(shuō)0~11支路的首地址在RAM中分別為0,187,357,510,646,765,867,952,1020,1071,1105。
  
RAM每區的字節數可以由參數來(lái)表示,即為(I-i-1)*M,i為分支號。
  
每區內偏移地址SectAddr初始化為0,每寫(xiě)入一個(gè)數據,遞增1并與由參數表示的每區的字節數進(jìn)行比較,若兩數相等,則SectAddr重新設為零,保證區內偏移地址在每區內循環(huán)移動(dòng)。
  
由上可知,RAM每區的讀寫(xiě)地址為:FirstAddr+SectAddr(i為RAM分區號)
  
圖1所示的就是由Altera MegaWizard工具配置的雙口RAM。RAM每區的讀寫(xiě)地址相同,也就是先讀出給定地址單元的數據后,再寫(xiě)入新的數據。這里要同時(shí)發(fā)生讀寫(xiě)操作,所以要使用雙口RAM。每隔一個(gè)時(shí)鐘周期,RAM讀寫(xiě)指針就跳到下一個(gè)RAM區,這樣讀寫(xiě)指針在RAM的11個(gè)區循環(huán)移動(dòng),實(shí)現解交織。

圖1 解交織器的實(shí)現框圖
  
圖2為解交織器在Mentor公司的Modelsim SE環(huán)境下的邏輯仿真圖。Clk為時(shí)鐘信號,Reset為異步復位信號,ClkEn為時(shí)鐘使能信號,高電平有效,FrameFirstIn為幀同步信號,高電平有效。DeinterleaverIn為輸入數據。設計時(shí)要注意數據同步問(wèn)題,要不然會(huì )造成數據錯位,導致設計的失敗。DeinterleaverIn為了在selector模塊輸入時(shí)和RAM的輸出數據q保持同步,要作相應的延時(shí),同步延時(shí)后DataIn4,同理,對應地RAM的輸入數據DataIn1,selector模塊的使能信號ClkEn4等也是經(jīng)過(guò)同步處理得到。Flag為selector模塊的選擇控制信號,當Flag信號為0~10時(shí),選擇RAM的輸出數據q作為輸出,而當Flag=11時(shí),則選擇DeinterleaverIn經(jīng)過(guò)同步處理后的數據DataIn4作為輸出,從而保證在解交織器的11支路實(shí)現無(wú)延時(shí)輸出。在解交織器的最前面輸出的字節有些是無(wú)效的,加一個(gè)DataEffect模塊是為了等全部字節都有效時(shí),才把FrameFirstOut信號置高,告訴后面的模塊數據開(kāi)始全部有效。

圖2 解交織器的Modelsim仿真圖
  
從資源利用方面考慮,使用RAM分區循環(huán)移位法來(lái)實(shí)現DVB-C解交織器比全部用基本寄存器或用配置FIFO的方法來(lái)實(shí)現要優(yōu)化得多。
  
為了更好地驗證,本文把設計在synopsys 公司的synplifypro軟件環(huán)境下進(jìn)行綜合,選用Altera公司的Cyclone EP1C12Q240C8器件。因為使用了軟核IP,所以再把生成的*.vqm文件導入synopsys公司的QuartusII 軟件進(jìn)行再綜合,選擇同樣的器件類(lèi)型和型號,結果說(shuō)明采用雙口RAM設計所使用的邏輯單元較少,而且使用的8976比特RAM資源占用了Cyclone器件中的3個(gè)M4K,只有全部存儲資源的3%。

  
結語(yǔ)
  
雖然采用卷積交織會(huì )在剛開(kāi)始傳輸數據的時(shí)候輸出一些無(wú)效數據,在系統中引入一定的延時(shí),但是它能把突發(fā)干擾造成的突發(fā)錯誤分散成隨機錯誤,利于RS糾錯,這樣一權衡,有延時(shí)也是很值得的。本文利用EDA工具完成解交織器的設計,并且采用Verilog和原理圖協(xié)同輸入的設計方法,大大提高了設計效率。這里設計的解交織器具有通用性,如果要用不同深度I和基數M的解交織器,只要重設程序里的參數值就可以了,非常方便。
本文地址:http://selenalain.com/thread-15351-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页