0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA如何使用RAM分區(qū)循環(huán)移位法實(shí)現(xiàn)解交織器

FPGA設(shè)計(jì)論壇 ? 來(lái)源:電子設(shè)計(jì)應(yīng)用 ? 作者:fengfeng ? 2021-09-28 17:53 ? 次閱讀

本文分析了卷積交織和解交織的基本原理,然后采用AlteraFPGA器件,用RAM分區(qū)循環(huán)移位法來(lái)實(shí)現(xiàn)解交織器。無(wú)論從理論上,還是從計(jì)算機(jī)仿真和綜合結(jié)果上來(lái)分析,都可以看出用這種方法來(lái)實(shí)現(xiàn)DVB-C解交織器能有效地節(jié)省硬件資源。

卷積交織和解交織原理簡(jiǎn)介

在DVB-C系統(tǒng)當(dāng)中,實(shí)際信道中的突發(fā)錯(cuò)誤往往是由脈沖干擾、多徑衰落引起的,在統(tǒng)計(jì)上是相關(guān)的,所以一旦出現(xiàn)不能糾正的錯(cuò)誤時(shí),這種錯(cuò)誤將連續(xù)存在。因此在DVB-C系統(tǒng)里,采用了卷積交織來(lái)解決這種問(wèn)題。它以一定規(guī)律擾亂源符號(hào)數(shù)據(jù)的時(shí)間順序,使其相關(guān)性減弱,然后將其送入信道,解交織器按相反規(guī)律恢復(fù)出源符號(hào)數(shù)據(jù)。

DVB-C的卷積交織和解交織原理為:交織由I=12(I為交織深度)個(gè)分支構(gòu)成。每個(gè)分支的延時(shí)逐漸遞增,遞增的單元數(shù)M=n/I=204/12=17(M為交織基數(shù))。這里的數(shù)據(jù)單位為字節(jié)。0支路無(wú)延時(shí),1支路延時(shí)17個(gè)符號(hào)周期,11支路則延時(shí)l7×11個(gè)符號(hào)周期。輸入端有一開(kāi)關(guān)隨著時(shí)間推移依次連接各個(gè)延時(shí)支路,輸出端有一開(kāi)關(guān)與輸入端一一對(duì)應(yīng),同步連接各延時(shí)支路。

解交織器的實(shí)現(xiàn)

解交織器的FPGA實(shí)現(xiàn)原理

本文采用RAM分區(qū)循環(huán)移位法來(lái)實(shí)現(xiàn),因?yàn)镽AM里面暫存一位數(shù)據(jù),只需要用一個(gè)邏輯門大小的資源,比基本寄存器暫存一位數(shù)據(jù)需要12個(gè)邏輯門大小的資源要優(yōu)化很多。用RAM分區(qū)循環(huán)移位法來(lái)實(shí)現(xiàn)解交織器,就是把RAM分成11個(gè)區(qū)。每個(gè)區(qū)的大小為(單位為字節(jié)):

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

這里i為RAM所分區(qū)的區(qū)號(hào)。

因?yàn)?1支路不需要延時(shí),所以 RAM的11分區(qū)大小即N11為0。本文在RAM前面設(shè)置一個(gè)地址控制器,這是解交織器關(guān)鍵的一步。RAM每區(qū)有一個(gè)首地址和區(qū)內(nèi)偏移地址,分別用一個(gè)寄存器來(lái)存儲(chǔ)。在地址控制器里產(chǎn)生每區(qū)的首地址和區(qū)內(nèi)偏移地址,從而進(jìn)一步產(chǎn)生RAM的讀寫(xiě)地址。

解交織器的FPGA實(shí)現(xiàn)

把解交織器的深度I和基數(shù)M設(shè)成參數(shù),以增強(qiáng)程序的通用性。如果以后設(shè)計(jì)的解交織器的系數(shù)I和M需要改動(dòng),只要把參數(shù)值重新設(shè)置一下就可以了,不需要改動(dòng)程序。由前面的計(jì)算可知,解交織器總共需要延時(shí)的比特?cái)?shù),也就是RAM的大小應(yīng)該為8976比特。

可以用下面一段程序?qū)崿F(xiàn)首地址的初始化:

FirstAddr[0]=0;

for(i=1;i《(i-1);i=i+1)《 span=“”》

FirstAddr[i]=(I-i)*M+FirstAddr[i-1];

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

RAM每區(qū)的字節(jié)數(shù)可以由參數(shù)來(lái)表示,即為(I-i-1)*M,i為分支號(hào)。

每區(qū)內(nèi)偏移地址SectAddr[i]初始化為0,每寫(xiě)入一個(gè)數(shù)據(jù),遞增1并與由參數(shù)表示的每區(qū)的字節(jié)數(shù)進(jìn)行比較,若兩數(shù)相等,則SectAddr[i]重新設(shè)為零,保證區(qū)內(nèi)偏移地址在每區(qū)內(nèi)循環(huán)移動(dòng)。

由上可知,RAM每區(qū)的讀寫(xiě)地址為:FirstAddr[i]+SectAddr[i](i為RAM分區(qū)號(hào))

RAM每區(qū)的讀寫(xiě)地址相同,也就是先讀出給定地址單元的數(shù)據(jù)后,再寫(xiě)入新的數(shù)據(jù)。這里要同時(shí)發(fā)生讀寫(xiě)操作,所以要使用雙口RAM。每隔一個(gè)時(shí)鐘周期,RAM讀寫(xiě)指針就跳到下一個(gè)RAM區(qū),這樣讀寫(xiě)指針在RAM的11個(gè)區(qū)循環(huán)移動(dòng),實(shí)現(xiàn)解交織。

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

從資源利用方面考慮,使用RAM分區(qū)循環(huán)移位法來(lái)實(shí)現(xiàn)DVB-C解交織器比全部用基本寄存器或用配置FIFO的方法來(lái)實(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)行再綜合,選擇同樣的器件類型和型號(hào),結(jié)果說(shuō)明采用雙口RAM設(shè)計(jì)所使用的邏輯單元較少,而且使用的8976比特RAM資源占用了Cyclone器件中的3個(gè)M4K,只有全部存儲(chǔ)資源的3%。

結(jié)語(yǔ)

雖然采用卷積交織會(huì)在剛開(kāi)始傳輸數(shù)據(jù)的時(shí)候輸出一些無(wú)效數(shù)據(jù),在系統(tǒng)中引入一定的延時(shí),但是它能把突發(fā)干擾造成的突發(fā)錯(cuò)誤分散成隨機(jī)錯(cuò)誤,利于RS糾錯(cuò),這樣一權(quán)衡,有延時(shí)也是很值得的。本文利用EDA工具完成解交織器的設(shè)計(jì),并且采用Verilog和原理圖協(xié)同輸入的設(shè)計(jì)方法,大大提高了設(shè)計(jì)效率。這里設(shè)計(jì)的解交織器具有通用性,如果要用不同深度I和基數(shù)M的解交織器,只要重設(shè)程序里的參數(shù)值就可以了,非常方便。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1624

    文章

    21568

    瀏覽量

    600623
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1352

    瀏覽量

    114377
  • 交織器
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    7706

原文標(biāo)題:用RAM分區(qū)循環(huán)移位法來(lái)實(shí)現(xiàn)解交織器

文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    西門子移位指令怎么用在順序控制

    西門子的PLC(可編程邏輯控制)廣泛應(yīng)用于工業(yè)自動(dòng)化領(lǐng)域,其指令集豐富,能夠滿足各種控制需求。在順序控制中,移位指令是一種非常有用的指令,可以實(shí)現(xiàn)數(shù)據(jù)的移動(dòng)和處理。 移位指令概述
    的頭像 發(fā)表于 08-16 17:08 ?456次閱讀

    移位寄存器中使用的儲(chǔ)存單元是什么

    移位寄存器是一種常見(jiàn)的數(shù)字電路組件,用于存儲(chǔ)和傳輸數(shù)字信號(hào)。在移位寄存器中,存儲(chǔ)單元是其核心組成部分,負(fù)責(zé)存儲(chǔ)數(shù)字信號(hào)的每一位。本文將介紹移位寄存器中使用的存儲(chǔ)單元。 移位寄存器概述
    的頭像 發(fā)表于 07-12 10:21 ?325次閱讀

    移位寄存器右移是怎么移位

    移位寄存器是一種在數(shù)字電路和計(jì)算機(jī)科學(xué)中廣泛使用的存儲(chǔ)設(shè)備,它可以用來(lái)存儲(chǔ)和傳輸數(shù)據(jù)。在移位寄存器中,數(shù)據(jù)可以通過(guò)移位操作來(lái)實(shí)現(xiàn)數(shù)據(jù)的傳輸和處理。
    的頭像 發(fā)表于 07-12 10:14 ?643次閱讀

    雙向移位寄存器的工作原理、特點(diǎn)及應(yīng)用

    雙向移位寄存器,作為一種特殊的數(shù)字電路元件,在數(shù)字信號(hào)處理和計(jì)算機(jī)體系結(jié)構(gòu)中扮演著重要的角色。其獨(dú)特之處在于能夠根據(jù)控制信號(hào)實(shí)現(xiàn)數(shù)據(jù)的雙向移位,即既可以向左移位,也可以向右
    的頭像 發(fā)表于 05-24 16:52 ?1771次閱讀

    如何用加載分散將軟件中部分變量從內(nèi)部RAM轉(zhuǎn)移到外部RAM?

    如何用加載分散將軟件中部分變量從內(nèi)部RAM轉(zhuǎn)移到外部RAM, 加載分散法文件怎么設(shè)置?堆和棧需要設(shè)置嗎?
    發(fā)表于 05-10 07:52

    求助,為什么stm8s的spi發(fā)送數(shù)據(jù)循環(huán)移位了2位?

    stm8s003fp3,主模式,軟件管理nss=1.msb先發(fā),發(fā)送到74hc595。發(fā)送數(shù)據(jù)0101,0011,發(fā)現(xiàn)595顯示的數(shù)據(jù)是0100,1101。移位寄存器移位了2位后,數(shù)據(jù)時(shí)鐘才開(kāi)始
    發(fā)表于 05-07 06:50

    fpga雙口ram的使用

    FPGA雙口RAM的使用主要涉及配置和使用雙端口RAM模塊。雙端口RAM的特點(diǎn)是有兩組獨(dú)立的端口,可以對(duì)同一存儲(chǔ)塊進(jìn)行讀寫(xiě)操作,從而實(shí)現(xiàn)并行
    的頭像 發(fā)表于 03-15 13:58 ?843次閱讀

    什么是PLC循環(huán)移位指令 PLC循環(huán)移位的特點(diǎn)

    PLC循環(huán)移位指令包括循環(huán)左移指令和循環(huán)右移指令。在循環(huán)移位過(guò)程中,移出的位并不會(huì)丟失,而是會(huì)放
    的頭像 發(fā)表于 03-07 16:57 ?1826次閱讀
    什么是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)

    移位寄存器的功能是什么 移位寄存器的工作原理

    移位寄存器(Shift Register)是一種在數(shù)字電路中經(jīng)常使用的重要元件,其功能是接受和存儲(chǔ)數(shù)據(jù),并以有序的方式將數(shù)據(jù)位進(jìn)行移位操作。移位寄存器可以用來(lái)完成數(shù)據(jù)的平移、移位、串行
    的頭像 發(fā)表于 02-03 16:43 ?5511次閱讀

    關(guān)于labview控制仿真中怎么實(shí)現(xiàn)移位寄存器的功能

    請(qǐng)問(wèn)在while循環(huán)中要計(jì)算上一次的數(shù)據(jù)可以用移位寄存器,但是控制循環(huán)中設(shè)置不了,那怎么實(shí)現(xiàn)讀上一次的數(shù)據(jù)的功能額,大佬幫幫忙o(╥﹏╥)o
    發(fā)表于 01-19 11:23

    移位寄存器的工作原理 移位寄存器左移和右移怎么算

    移位寄存器是一種用于在數(shù)字電路中實(shí)現(xiàn)數(shù)據(jù)移位操作的基本電路元件。它由多個(gè)觸發(fā)以及相關(guān)控制電路組成,具有存儲(chǔ)、接受和移動(dòng)數(shù)據(jù)的功能。移位寄存器
    的頭像 發(fā)表于 01-18 10:52 ?6564次閱讀

    labview移位寄存器如何清零

    LabVIEW中的移位寄存器(Shift Register)是一種用于存儲(chǔ)和移動(dòng)數(shù)據(jù)的功能性塊。它類似于傳統(tǒng)計(jì)算機(jī)中的寄存,可以用于在循環(huán)中保留變量的狀態(tài)。但與傳統(tǒng)寄存不同的是,
    的頭像 發(fā)表于 01-05 13:49 ?2620次閱讀

    FPGA實(shí)現(xiàn)基于Vivado的BRAM IP核的使用

    定制的RAM資源,有著較大的存儲(chǔ)空間,且在日常的工程中使用較為頻繁。BRAM以陣列的方式排布于FPGA的內(nèi)部,是FPGA實(shí)現(xiàn)各種存儲(chǔ)功能的主要部分,是真正的雙讀/寫(xiě)端口的同步的
    的頭像 發(fā)表于 12-05 15:05 ?1383次閱讀

    FPGA中塊RAM的分布和特性

    在選擇FPGA時(shí),關(guān)注LUT(Look-Up Table)和BRAM(Block RAM)是非常重要的,因?yàn)樗鼈兪?b class='flag-5'>FPGA架構(gòu)中的兩個(gè)核心資源,對(duì)于設(shè)計(jì)的性能和資源利用至關(guān)重要。
    的頭像 發(fā)表于 11-21 15:03 ?1920次閱讀
    <b class='flag-5'>FPGA</b>中塊<b class='flag-5'>RAM</b>的分布和特性

    FPGA電路實(shí)現(xiàn):m序列及應(yīng)用

    據(jù)傳輸加密、拓展頻譜通信等領(lǐng)域使用廣泛。 m序列的工作原理 此處以一個(gè)4級(jí)的m序列生成電路來(lái)介紹m序列的工作原理: 圖1.電路實(shí)現(xiàn) 圖2.移位循環(huán)過(guò)程 在每個(gè)時(shí)鐘周期,移位寄存器所有
    發(fā)表于 11-06 17:03