本文分析了卷積交織和解交織的基本原理,然后采用Altera 的FPGA器件,用RAM分區(qū)循環(huán)移位法來實(shí)現(xiàn)解交織器。無論從理論上,還是從計(jì)算機(jī)仿真和綜合結(jié)果上來分析,都可以看出用這種方法來實(shí)現(xiàn)DVB-C解交織器能有效地節(jié)省硬件資源。
卷積交織和解交織原理簡介
在DVB-C系統(tǒng)當(dāng)中,實(shí)際信道中的突發(fā)錯誤往往是由脈沖干擾、多徑衰落引起的,在統(tǒng)計(jì)上是相關(guān)的,所以一旦出現(xiàn)不能糾正的錯誤時,這種錯誤將連續(xù)存在。因此在DVB-C系統(tǒng)里,采用了卷積交織來解決這種問題。它以一定規(guī)律擾亂源符號數(shù)據(jù)的時間順序,使其相關(guān)性減弱,然后將其送入信道,解交織器按相反規(guī)律恢復(fù)出源符號數(shù)據(jù)。
DVB-C的卷積交織和解交織原理為:交織由I=12(I為交織深度)個分支構(gòu)成。每個分支的延時逐漸遞增,遞增的單元數(shù)M=n/I=204/12=17(M為交織基數(shù))。這里的數(shù)據(jù)單位為字節(jié)。0支路無延時,1支路延時17個符號周期,11支路則延時l7×11個符號周期。輸入端有一開關(guān)隨著時間推移依次連接各個延時支路,輸出端有一開關(guān)與輸入端一一對應(yīng),同步連接各延時支路。
解交織器的實(shí)現(xiàn)
解交織器的FPGA實(shí)現(xiàn)原理
本文采用RAM分區(qū)循環(huán)移位法來實(shí)現(xiàn),因?yàn)镽AM里面暫存一位數(shù)據(jù),只需要用一個邏輯門大小的資源,比基本寄存器暫存一位數(shù)據(jù)需要12個邏輯門大小的資源要優(yōu)化很多。用RAM分區(qū)循環(huán)移位法來實(shí)現(xiàn)解交織器,就是把RAM分成11個區(qū)。每個區(qū)的大小為(單位為字節(jié)):
Ni=M*(I-i-1)(i=0,1,2, …,(I-1))
這里i為RAM所分區(qū)的區(qū)號。
因?yàn)?1支路不需要延時,所以 RAM的11分區(qū)大小即N11為0。本文在RAM前面設(shè)置一個地址控制器,這是解交織器關(guān)鍵的一步。RAM每區(qū)有一個首地址和區(qū)內(nèi)偏移地址,分別用一個寄存器來存儲。在地址控制器里產(chǎn)生每區(qū)的首地址和區(qū)內(nèi)偏移地址,從而進(jìn)一步產(chǎn)生RAM的讀寫地址。
解交織器的FPGA實(shí)現(xiàn)
把解交織器的深度I和基數(shù)M設(shè)成參數(shù),以增強(qiáng)程序的通用性。如果以后設(shè)計(jì)的解交織器的系數(shù)I和M需要改動,只要把參數(shù)值重新設(shè)置一下就可以了,不需要改動程序。由前面的計(jì)算可知,解交織器總共需要延時的比特?cái)?shù),也就是RAM的大小應(yīng)該為8976比特。
可以用下面一段程序?qū)崿F(xiàn)首地址的初始化:
for(i=1;i《(i-1);i=i+1)《 span=“”》
FirstAddr[i]=(I-i)*M+FirstAddr[i-1];
也就是說0~11支路的首地址在RAM中分別為0,187,357,510,646,765,867,952,1020,1071,1105。
RAM每區(qū)的字節(jié)數(shù)可以由參數(shù)來表示,即為(I-i-1)*M,i為分支號。
每區(qū)內(nèi)偏移地址SectAddr[i]初始化為0,每寫入一個數(shù)據(jù),遞增1并與由參數(shù)表示的每區(qū)的字節(jié)數(shù)進(jìn)行比較,若兩數(shù)相等,則SectAddr[i]重新設(shè)為零,保證區(qū)內(nèi)偏移地址在每區(qū)內(nèi)循環(huán)移動。
由上可知,RAM每區(qū)的讀寫地址為:FirstAddr[i]+SectAddr[i](i為RAM分區(qū)號)
RAM每區(qū)的讀寫地址相同,也就是先讀出給定地址單元的數(shù)據(jù)后,再寫入新的數(shù)據(jù)。這里要同時發(fā)生讀寫操作,所以要使用雙口RAM。每隔一個時鐘周期,RAM讀寫指針就跳到下一個RAM區(qū),這樣讀寫指針在RAM的11個區(qū)循環(huán)移動,實(shí)現(xiàn)解交織。
Clk為時鐘信號,Reset為異步復(fù)位信號,ClkEn為時鐘使能信號,高電平有效,F(xiàn)rameFirstIn為幀同步信號,高電平有效。DeinterleaverIn為輸入數(shù)據(jù)。設(shè)計(jì)時要注意數(shù)據(jù)同步問題,要不然會造成數(shù)據(jù)錯位,導(dǎo)致設(shè)計(jì)的失敗。DeinterleaverIn為了在selector模塊輸入時和RAM的輸出數(shù)據(jù)q保持同步,要作相應(yīng)的延時,同步延時后DataIn4,同理,對應(yīng)地RAM的輸入數(shù)據(jù)DataIn1,selector模塊的使能信號ClkEn4等也是經(jīng)過同步處理得到。Flag為selector模塊的選擇控制信號,當(dāng)Flag信號為0~10時,選擇RAM的輸出數(shù)據(jù)q作為輸出,而當(dāng)Flag=11時,則選擇DeinterleaverIn經(jīng)過同步處理后的數(shù)據(jù)DataIn4作為輸出,從而保證在解交織器的11支路實(shí)現(xiàn)無延時輸出。在解交織器的最前面輸出的字節(jié)有些是無效的,加一個DataEffect模塊是為了等全部字節(jié)都有效時,才把FrameFirstOut信號置高,告訴后面的模塊數(shù)據(jù)開始全部有效。
從資源利用方面考慮,使用RAM分區(qū)循環(huán)移位法來實(shí)現(xiàn)DVB-C解交織器比全部用基本寄存器或用配置FIFO的方法來實(shí)現(xiàn)要優(yōu)化得多。
為了更好地驗(yàn)證,本文把設(shè)計(jì)在synopsys 公司的synplify pro軟件環(huán)境下進(jìn)行綜合,選用Altera公司的Cyclone EP1C12Q240C8器件。因?yàn)槭褂昧塑浐薎P,所以再把生成的*.vqm文件導(dǎo)入synopsys公司的QuartusII 軟件進(jìn)行再綜合,選擇同樣的器件類型和型號,結(jié)果說明采用雙口RAM設(shè)計(jì)所使用的邏輯單元較少,而且使用的8976比特RAM資源占用了Cyclone器件中的3個M4K,只有全部存儲資源的3%。
結(jié)語
雖然采用卷積交織會在剛開始傳輸數(shù)據(jù)的時候輸出一些無效數(shù)據(jù),在系統(tǒng)中引入一定的延時,但是它能把突發(fā)干擾造成的突發(fā)錯誤分散成隨機(jī)錯誤,利于RS糾錯,這樣一權(quán)衡,有延時也是很值得的。本文利用EDA工具完成解交織器的設(shè)計(jì),并且采用Verilog和原理圖協(xié)同輸入的設(shè)計(jì)方法,大大提高了設(shè)計(jì)效率。這里設(shè)計(jì)的解交織器具有通用性,如果要用不同深度I和基數(shù)M的解交織器,只要重設(shè)程序里的參數(shù)值就可以了,非常方便。
責(zé)任編輯:haq
-
FPGA
+關(guān)注
關(guān)注
1630文章
21797瀏覽量
606018 -
RAM
+關(guān)注
關(guān)注
8文章
1369瀏覽量
115010 -
交織器
+關(guān)注
關(guān)注
0文章
5瀏覽量
7756
原文標(biāo)題:用RAM分區(qū)循環(huán)移位法來實(shí)現(xiàn)解交織器
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
XILINX FPGA CLB單元之移位寄存器
![XILINX <b class='flag-5'>FPGA</b> CLB單元之<b class='flag-5'>移位寄存器</b>](https://file1.elecfans.com/web3/M00/06/48/wKgZO2eI1gCAEFwbAAAroaCYpFQ525.png)
TVP5158采集四路圖像,解交織后圖像錯誤,為什么?
循環(huán)伏安法(CV)基礎(chǔ)知識
![<b class='flag-5'>循環(huán)</b>伏安<b class='flag-5'>法</b>(CV)基礎(chǔ)知識](https://file1.elecfans.com/web3/M00/01/8D/wKgZO2dWTJmAeYCTAAA4ayyP0Vk216.png)
什么是RAM內(nèi)存 RAM內(nèi)存對電腦性能的影響
利用位反轉(zhuǎn)尋址實(shí)現(xiàn)循環(huán)緩沖器
![利用位反轉(zhuǎn)尋址<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>循環(huán)</b>緩沖<b class='flag-5'>器</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
西門子移位指令怎么用在順序控制
移位寄存器中使用的儲存單元是什么
移位寄存器中Dsr有什么用
移位寄存器右移是怎么移位的
雙向移位寄存器的工作原理、特點(diǎn)及應(yīng)用
如何用加載分散法將軟件中部分變量從內(nèi)部RAM轉(zhuǎn)移到外部RAM?
求助,為什么stm8s的spi發(fā)送數(shù)據(jù)循環(huán)移位了2位?
fpga雙口ram的使用
什么是PLC循環(huán)移位指令 PLC循環(huán)移位的特點(diǎn)
![什么是PLC<b class='flag-5'>循環(huán)</b><b class='flag-5'>移位</b>指令 PLC<b class='flag-5'>循環(huán)</b><b class='flag-5'>移位</b>的特點(diǎn)](https://file1.elecfans.com/web2/M00/C3/1A/wKgZomXpggOAINsyAARQ_T6F4PU232.png)
評論