《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于WCDMA速率適配算法的FPGA設(shè)計(jì)
基于WCDMA速率適配算法的FPGA設(shè)計(jì)
來源:我愛研發(fā)網(wǎng)
摘要: 隨著因特網(wǎng)爆炸性的增長(zhǎng)以及各種無線業(yè)務(wù)需求的增加,傳統(tǒng)的無線通信網(wǎng)已經(jīng)越來越無法適應(yīng)人們的需要,。因此,,以大容量,、高數(shù)據(jù)率和承載多媒體業(yè)務(wù)為目的的第三代移動(dòng)通信系統(tǒng)(IMT-2000)應(yīng)運(yùn)而生。碼分多址(CDMA)由于其良好的抗噪性,、保密性和簡(jiǎn)單性等優(yōu)點(diǎn)而成為第三代移動(dòng)通信的主流,。主要方案包括歐洲標(biāo)準(zhǔn)WCDMA,美國標(biāo)準(zhǔn)CDMA-2000和中國標(biāo)準(zhǔn)TD-SCDMA,。
關(guān)鍵詞: 2.5G|3G FPGA 3GPP WCDMA 多媒體
Abstract:
Key words :

        隨著因特網(wǎng)爆炸性的增長(zhǎng)以及各種無線業(yè)務(wù)需求的增加,,傳統(tǒng)的無線通信網(wǎng)已經(jīng)越來越無法適應(yīng)人們的需要。因此,,以大容量,、高數(shù)據(jù)率和承載多媒體業(yè)務(wù)為目的的第三代移動(dòng)通信系統(tǒng)(IMT-2000)應(yīng)運(yùn)而生。碼分多址(CDMA)由于其良好的抗噪性,、保密性和簡(jiǎn)單性等優(yōu)點(diǎn)而成為第三代移動(dòng)通信的主流,。主要方案包括歐洲標(biāo)準(zhǔn)WCDMA,美國標(biāo)準(zhǔn)CDMA-2000和中國標(biāo)準(zhǔn)TD-SCDMA,。
         和傳統(tǒng)的CDMA系統(tǒng)相比,,第三代移動(dòng)通信的最大特點(diǎn)在于可支持具有不同QoS的變速率的多種業(yè)務(wù),這便要求其具有將各種無線媒體業(yè)務(wù)復(fù)接在一起傳輸?shù)哪芰?。為了達(dá)到這一目標(biāo),,WCDMA采用了一種比較完善的業(yè)務(wù)復(fù)接方案,各種業(yè)務(wù)須經(jīng)過一套復(fù)雜的編碼復(fù)接流程才能進(jìn)行擴(kuò)頻調(diào)制,,占用盡可能少的碼道以恒定的功率發(fā)送,。這樣就最大限度地減少了碼道間串?dāng)_,降低了對(duì)功放線性程度的要求,。圖1所示的是WCDMA下行鏈路編碼復(fù)接方案流程圖,。而速率適配算法是業(yè)務(wù)復(fù)用方案的核心算法,如何設(shè)計(jì)有效的算法實(shí)現(xiàn)方案,,是業(yè)務(wù)復(fù)用方案設(shè)計(jì)的關(guān)鍵環(huán)節(jié),。

                  圖1 下行鏈路編碼復(fù)接方案        
        速率適配算法描述 
        一條傳輸信道上不同的傳輸時(shí)間間隔中的比特?cái)?shù)有可能不一樣,,但是上下行鏈路都對(duì)傳輸?shù)谋忍芈视幸欢ǖ囊螅合滦墟溌分腥绻忍財(cái)?shù)低于最小值的就會(huì)被中斷;上行鏈路中各傳輸時(shí)間間隔的比特?cái)?shù)不同,,但需要保證第二次交織后的總比特率等于所分配的專用物理信道的總比特率,。因此需要重復(fù)或者鑿去傳輸信道上的一些比特。速率適配就是指在傳輸信道上的數(shù)據(jù)比特被鑿孔(Puncturing)或重復(fù)(Repeating),,以便使信道映射時(shí)達(dá)到傳輸格式所要求的比特速率,。“鑿孔”是按照一定的算法鑿去某些位置的比特;“重復(fù)”則按照一定的算法在某些位置插入重復(fù)比特,。 
        速率匹配前的比特記為:xi1,xi2,xi3,k,xixi 其中 i 為 TrCH 號(hào),,速率匹配參數(shù)為Xi, eini, eplus, 和eminus。              
                      eini:初始化誤差,,算法中誤差e的初始值,;       
                      eminus:相減誤差,算法中誤差e的相減值,;       
                      eplus:相加誤差,,算法中誤差e的相加值;       
                      N:數(shù)據(jù)量,,即速率適配前的數(shù)據(jù)量,。       
                      速率匹配的規(guī)則如下:       
                      if 要執(zhí)行“鑿孔”操作       
                      e="eini" 初始化目前的與要求的鑿孔比例之間的偏差       
                      m="1" 當(dāng)前比特索引序號(hào)       
                      do while m <= N       
                      e="e"-eminus 修改誤差      
                      if e <= 0 then 檢查m是否是應(yīng)該鑿掉的比特序號(hào)       
                      鑿掉該比特xi,m       
                      e="e"+eplus 更改誤差       
                      end if       
                      m="m"+1 進(jìn)行下一個(gè)比特的判斷       
                      end do        
                      else       
                      e = eini 初始化目前的與要求的鑿孔比例之間的偏差       
                      m = 1 當(dāng)前比特索引序號(hào)       
                      do while m <= N       
                      e = e - eminus 修改誤差       
                      do while e <= 0 檢查比特m 是否是應(yīng)被重復(fù)的比特序號(hào)       
                      重復(fù)比特 xi,m      
                      e = e + eplus 更改誤差       
                      end do       
                      m = m + 1 進(jìn)行下一個(gè)比特的判斷       
                      end do       
                      end if
        該適配算法對(duì)于上行鏈路和下行鏈路都是適用的。3GPP協(xié)議中規(guī)定了“鑿孔”和“重復(fù)”算法的使用對(duì)象與范圍,。Turbo編碼后的系統(tǒng)比特不允許鑿去,,因此如果對(duì)Turbo編碼后的數(shù)據(jù)進(jìn)行“鑿”操作,則首先應(yīng)將系統(tǒng)比特和校驗(yàn)比特區(qū)分開,,僅對(duì)其中的校驗(yàn)比特進(jìn)行“鑿”操作,;然而Turbo編碼后的數(shù)據(jù)如果進(jìn)行“重復(fù)”以及卷積編碼后數(shù)據(jù)進(jìn)行“鑿”或“重復(fù)”都不區(qū)分系統(tǒng)比特與校驗(yàn)比特。上述情況的速率匹配見圖2及圖3,。

            圖2 下行鏈路Turbo編碼比特鑿孔時(shí)TrCH的速率適配
           圖3 下行未編碼和卷積編碼以及重復(fù)的Turbo編碼的TrCH的速率匹配 
                      
        另外,,協(xié)議給出的確定參數(shù)的算法依編碼方式及鏈路的不同而不同。也就是說,,Turbo編碼與卷積編碼,、下行鏈路與上行鏈路在確定適配參數(shù)的算法上有區(qū)別。具體的確定算法可以參考3G相應(yīng)的協(xié)議,。 
         速率適配的FPGA實(shí)現(xiàn)        
         通過對(duì)編碼復(fù)接的方案研究發(fā)現(xiàn),,直接根據(jù)協(xié)議流程對(duì)數(shù)據(jù)流各個(gè)步驟(一共大約11個(gè)步驟)直接進(jìn)行處理將會(huì)大大增加系統(tǒng)復(fù)雜度,這樣每個(gè)步驟之間都需對(duì)數(shù)據(jù)進(jìn)行緩存,,而移動(dòng)環(huán)境下系統(tǒng)支持的最高速率可達(dá)384Kbps,,對(duì)于TTI=20ms的業(yè)務(wù),平均每步需要的緩存為7.68K,所需要的總存儲(chǔ)量是巨大的,。而且這中間,,數(shù)據(jù)流頻繁的寫入讀出所導(dǎo)致的處理時(shí)延也是難以忍受的。因此,,如果將某些步驟合并起來,就能減少不必要的數(shù)據(jù)存取工作,,從而節(jié)省存儲(chǔ)量,,縮短處理延時(shí)。 
        上行鏈路的速率匹配按10ms數(shù)據(jù)幀為單位進(jìn)行,,而下行鏈路則是以TTI為單位針對(duì)一個(gè)無線幀的數(shù)據(jù)比特進(jìn)行的,。雖然算法上一致,但是考慮到上下行各自的步驟合并情況,,在實(shí)際處理上還是有很大區(qū)別的,。下面以下行144Kb/s速率適配為例介紹一下其FPGA的實(shí)現(xiàn)方法。 
        144Kb/s速率適配過程大致分為兩個(gè)模塊:鑿圖樣產(chǎn)生模塊和保留比特搬移轉(zhuǎn)換模塊,。在實(shí)現(xiàn)過程中,,用到的存儲(chǔ)資源是兩個(gè)RAM—一個(gè)用來存“鑿”圖樣、另一個(gè)用來存原來的數(shù)據(jù),,兩個(gè)DCFIFO(雙時(shí)鐘FIFO)用來存比特收集后的兩幀數(shù)據(jù),。 
         鑿孔圖樣產(chǎn)生模塊
         由于144Kb/s業(yè)務(wù)信道編碼用的是Turbo編碼,鑿孔時(shí)只針對(duì)兩個(gè)分量編碼器輸出的校驗(yàn)比特,,因此需先進(jìn)行比特分離再分塊進(jìn)行鑿孔操作(系統(tǒng)比特塊自動(dòng)保留不進(jìn)行鑿孔操作),。我們采用了一種鑿孔圖樣控制方式,所有待速率適配比特都對(duì)應(yīng)一個(gè)P比特,,P=1表示鑿去,,P=0表示保留,以此種方式產(chǎn)生鑿孔圖樣來控制保留比特的搬移,。具體實(shí)現(xiàn)框圖如圖4所示,。主要硬件結(jié)構(gòu)包括一個(gè)加法器、一個(gè)減法器,、一個(gè)數(shù)值比較器,、一個(gè)計(jì)數(shù)器和一個(gè)選通控制模塊及參數(shù)初始化模塊。
                  圖4 鑿孔圖樣產(chǎn)生  
        該結(jié)構(gòu)工作過程如下:首先,,比特分離和參數(shù)初始化模塊主要完成模塊計(jì)數(shù)和eini,、eminus、eplus等參數(shù)的初始化設(shè)置,。 
         在減法器端,,當(dāng)前誤差值e減去eminus,該數(shù)值同時(shí)送給數(shù)值比較器和選通控制模塊。減法器的輸出結(jié)果和0值作比較,,如果結(jié)果小于零則記P比特為1,;如果結(jié)果大于零則記P比特為0,同時(shí)將減法器的輸出結(jié)構(gòu)作為當(dāng)前加法器的A端輸入值,。P比特則在選通控制模塊產(chǎn)生的讀寫使能,、地址信號(hào)線的驅(qū)動(dòng)下寫入Punc_ram。另外用一個(gè)計(jì)數(shù)器來對(duì)比特?cái)?shù)進(jìn)行記錄,,以控制整個(gè)流程的結(jié)束時(shí)刻,。系統(tǒng)時(shí)鐘為8倍碼片時(shí)鐘,計(jì)數(shù)器和Punc_ram都采用同步控制,,加法器,、減法器及比較器都不采用同步時(shí)鐘延時(shí)。
        保留比特搬移轉(zhuǎn)換模塊       
         鑿圖樣產(chǎn)生以后,,接下來的操作就是保留比特的搬移和轉(zhuǎn)換,,并進(jìn)行第一次交織和無線幀分段。按照3GPP協(xié)議,,對(duì)于TTI=20ms的144Kb/s業(yè)務(wù),,其交織模式是<0,1>,亦即順序輸出,。
                  圖5 保留比特搬移轉(zhuǎn)換 
                      
        實(shí)現(xiàn)的流程圖如圖5,。假定TURBO編碼后待的比特流存在out_ram中,這里進(jìn)行的操作關(guān)鍵是鑿孔圖樣的讀出和out_ram的讀出應(yīng)該是同步一致進(jìn)行(在同一個(gè)時(shí)鐘上升沿開始),,用Punc_ram的輸出來作為積攢比特的使能信號(hào),。用移位寄存器組和計(jì)數(shù)器實(shí)現(xiàn)比特積攢,每等到滿16bit時(shí),,就進(jìn)行串并轉(zhuǎn)換,,同時(shí)產(chǎn)生一個(gè)fifo寫使能脈沖,把一個(gè)字的內(nèi)容寫入fifo,;等到滿一幀(復(fù)接前的數(shù)據(jù)幀)的時(shí)候,,轉(zhuǎn)向?qū)ο乱粋€(gè)fifo進(jìn)行寫操作。到一個(gè)數(shù)據(jù)幀4205bit結(jié)束時(shí),,積攢比特不滿16的補(bǔ)零表示,,串并轉(zhuǎn)換為一個(gè)字寫入fifo。 
        資源使用和時(shí)延分析        
        按照上面的實(shí)現(xiàn)方式,,主要占用的是存儲(chǔ)資源,,現(xiàn)代FPGA中的ESB(嵌入式系統(tǒng)塊)可以很容易地實(shí)現(xiàn)各種類型的存儲(chǔ)模塊,包括雙端口RAM,、ROM,、FIFO及CAM塊,。下面主要進(jìn)行的是時(shí)延分析。 
        按照上面的流程可以大致估算一個(gè)比特從“鑿孔”圖樣產(chǎn)生到比特搬移完成所用的時(shí)間,。所選工作時(shí)鐘速率為8倍碼片速率3.84MHz,,一個(gè)時(shí)鐘周期約為32.4ns。鑿孔圖樣模塊中的加法器,、減法器,、選通控制大概需要3個(gè)時(shí)鐘周期,9516個(gè)鑿孔圖樣的產(chǎn)生需要大致925ns,;保留比特搬移模塊主要是數(shù)據(jù)比特的直接搬移,,對(duì)于最后一個(gè)比特而言,假定它是保留比特,,從搬移開始到最終寫入FIFO,經(jīng)過了大致9516+16=9532個(gè)時(shí)鐘周期,,耗時(shí)大約308ns,。對(duì)整個(gè)流程用MAXPUSII仿真,總共耗時(shí)1.336ms,,考慮到中間的緩沖控制和使能控制延遲,,仿真結(jié)果和計(jì)算值大致吻合。對(duì)于TTI=20ms的業(yè)務(wù),,完全滿足處理要求,。 
        結(jié)語 
        WCDMA系統(tǒng)的電路型數(shù)據(jù)業(yè)務(wù)(64K)和分組型數(shù)據(jù)業(yè)務(wù)(144K、384K)可以實(shí)現(xiàn)對(duì)多媒體業(yè)務(wù)的承載,,但由于基帶數(shù)據(jù)處理量大,、比特搬移操作明顯,編碼復(fù)接中的核心算法之一速率適配算法我們采用了FPGA實(shí)現(xiàn),,并且適當(dāng)合并了前后步驟,,大大縮短了處理時(shí)間,使系統(tǒng)達(dá)到了很高的吞吐量和處理速度,,完全滿足3GPP協(xié)議規(guī)范的要求,。在實(shí)際實(shí)施中被證明是可行的。此外,,文中提出的模塊合并,、產(chǎn)生鑿孔圖樣進(jìn)行比特積攢搬移的思想同樣可以適合未來更復(fù)雜的編碼復(fù)接方案。
此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。