《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > DVB-C解交織器的FPGA實現
DVB-C解交織器的FPGA實現
摘要: 本文分析了卷積交織和解交織的基本原理,然后采用Altera 的FPGA器件,用RAM分區循環移位法來實現解交織器。無論從理論上,還是從計算機仿真和綜合結果上來分析,都可以看出用這種方法來實現DVB-C解交織器能有效地節省硬件資源。
關鍵詞: FPGA DVB 解交織器
Abstract:
Key words :

  卷積交織和解交織原理簡介
   
       在DVB-C系統當中,實際信道中的突發錯誤往往是由脈沖干擾、多徑衰落引起的,在統計上是相關的,所以一旦出現不能糾正的錯誤時,這種錯誤將連續存在。因此在DVB-C系統里,采用了卷積交織來解決這種問題。它以一定規律擾亂源符號數據的時間順序,使其相關性減弱,然后將其送入信道,解交織器按相反規律恢復出源符號數據。 

  DVB-C的卷積交織和解交織原理為:交織由I=12(I為交織深度)個分支構成。每個分支的延時逐漸遞增,遞增的單元數M=n/I=204/12=17(M為交織基數)。這里的數據單位為字節。0支路無延時,1支路延時17個符號周期,11支路則延時l7×11個符號周期。輸入端有一開關隨著時間推移依次連接各個延時支路,輸出端有一開關與輸入端一一對應,同步連接各延時支路。
解交織器的實現框圖

  圖1 解交織器的實現框圖
解交織器的Modelsim仿真圖

  圖2 解交織器的Modelsim仿真圖

  解交織器的實現

  解交織器的FPGA實現原理

  本文采用RAM分區循環移位

 

法來實現,因為RAM里面暫存一位數據,只需要用一個邏輯門大小的資源,比基本寄存器暫存一位數據需要12個邏輯門大小的資源要優化很多。用RAM分區循環移位法來實現解交織器,就是把RAM分成11個區。每個區的大小為(單位為字節):

 

  Ni=M*(I-i-1)(i=0,1,2, …,(I-1))

  這里i為RAM所分區的區號。

  因為11支路不需要延時,所以 RAM的11分區大小即N11為0。本文在RAM前面設置一個地址控制器,這是解交織器關鍵的一步。RAM每區有一個首地址和區內偏移地址,分別用一個寄存器來存儲。在地址控制器里產生每區的首地址和區內偏移地址,從而進一步產生RAM的讀寫地址。

  解交織器的FPGA實現

  把解交織器的深度I和基數M設成參數,以增強程序的通用性。如果以后設計的解交織器的系數I和M需要改動,只要把參數值重新設置一下就可以了,不需要改動程序。由前面的計算可知,解交織器總共需要延時的比特數,也就是RAM的大小應該為8976比特。

  可以用下面一段程序實現首地址的初始化:
    
        FirstAddr[0]=0;
   
       for(i=1;i<(I-1);i=i+1)
   
       FirstAddr[i]=(I-i)*M+FirstAddr[i-1];

  也就是說0~11支路的首地址在RAM中分別為0,187,357,510,646,765,867,952,1020,1071,1105。

  RAM每區的字節數可以由參數來表示,即為(I-i-1)*M,i為分支號。

  每區內偏移地址SectAddr[i]初始化為0,每寫入一個數據,遞增1并與由參數表示的每區的字節數進行比較,若兩數相等,則SectAddr[i]重新設為零,保證區內偏移地址在每區內循環移動。

  由上可知,RAM每區的讀寫地址為:FirstAddr[i]+SectAddr[i](i為RAM分區號)

  圖1所示的就是由Altera MegaWizard工具配置的雙口RAM。RAM每區的讀寫地址相同,也就是先讀出給定地址單元的數據后,再寫入新的數據。這里要同時發生讀寫操作,所以要使用雙口RAM。每隔一個時鐘周期,RAM讀寫指針就跳到下一個RAM區,這樣讀寫指針在RAM的11個區循環移動,實現解交織。

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

 

  從資源利用方面考慮,使用RAM分區循環移位法來實現DVB-C解交織器比全部用基本寄存器或用配置FIFO的方法來實現要優化得多。

  為了更好地驗證,本文把設計在synopsys 公司的synplify pro軟件環境下進行綜合,選用Altera公司的Cyclone EP1C12Q240C8器件。因為使用了軟核IP,所以再把生成的*.vqm文件導入synopsys公司的QuartusII 軟件進行再綜合,選擇同樣的器件類型和型號,結果說明采用雙口RAM設計所使用的邏輯單元較少,而且使用的8976比特RAM資源占用了Cyclone器件中的3個M4K,只有全部存儲資源的3%。

  結語

  雖然采用卷積交織會在剛開始傳輸數據的時候輸出一些無效數據,在系統中引入一定的延時,但是它能把突發干擾造成的突發錯誤分散成隨機錯誤,利于RS糾錯,這樣一權衡,有延時也是很值得的。本文利用EDA工具完成解交織器的設計,并且采用Verilog和原理圖協同輸入的設計方法,大大提高了設計效率。這里設計的解交織器具有通用性,如果要用不同深度I和基數M的解交織器,只要重設程序里的參數值就可以

 

了,非常方便。

 

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 中文字幕无码精品三级在线电影| 国产视频一区二区在线观看| 亚洲色婷婷一区二区三区| 被按摩的人妻中文字幕| 国产明星xxxx视频| 91九色蝌蚪porny| 天天综合天天操| 两个小姨子韩国| 日日干夜夜操s8| 久久精品国产精品亚洲精品| 欧美国产亚洲精品高清不卡| 亚洲精品在线免费观看| 窝窝人体色www| 同人本里番h本子全彩本子| 裙子底下真空h揉搓小雪| 国产成人无码区免费内射一片色欲| 2018天天干天天操| 国内精品卡1卡2卡区别| fuqer2018| 婷婷久久五月天| 中文字幕.com| 无码一区二区三区中文字幕| 久久成人午夜电影mp4| 月夜影视在线观看免费完整| 亚洲午夜无码久久久久小说| 欧美最猛黑人xxxx黑人猛交| 亚洲精品国产国语| 狠狠色综合网久久久久久| 免费一级毛片在线观看| 精品久久久久久无码人妻热| 咪咪色在线视频| 老公和他朋友一块上我可以吗| 国产一在线精品一区在线观看| 豪妇荡乳1一5白玉兰免费下载 | 久久综合国产乱子伦精品免费 | 中文字幕在线亚洲精品| 日产国产欧美韩国在线| 久久久久人妻一区精品色欧美| 日韩av片无码一区二区不卡电影| 久久高清内射无套| 日韩精品无码免费专区午夜不卡|