王 甜,熊興中
(四川理工學院 自動化與信息工程學院,四川 自貢 643000)
碼分多址CDMA(Code Division Multiple Access)作為一種正交多址接入技術,由于其接入用戶數(shù)與正交資源成正比,因此不能滿足5G大容量、海量連接、低延時接入等需求[1],非正交多址接入NOMA(Non-Orthogonal Multiple Access)技術就成為當下5G多址接入的研究重點[2-4]。以稀疏碼多址接入SCMA(Sparse Code Multiple Access)為代表的碼域非正交多址接入技術將多個用戶的數(shù)據(jù)進行碼域擴頻和非正交疊加后,在相同的時域、頻域以及空間資源里發(fā)送,接收端通過線性解擴和干擾消除操作解調出各個用戶的信息。由華為公司和電子科技大學提出的SCMA[5-6]就是應5G需求設計產生的一種NOMA技術[7]。SCMA技術不僅是一種頻譜效率接近最優(yōu)化的NOMA技術,并且適用于海量連接的場景。SCMA技術的基礎是CDMA,它利用CDMA的一種擴頻序列LDS[8-9]的稀疏性,即低密度擴頻碼,同時將CDMA比特流的調制映射模塊和擴頻模塊結合在一起,直接將比特流映射到SCMA多維碼字上,并由此獲得成形增益,這也是用戶容量大幅度提升的主要來源。這種稀疏特性的優(yōu)點主要是可以使接收端采用復雜度較低的消息傳遞算法 MPA(Message Passing Algorithm)[10-11]和多用戶聯(lián)合迭代法,從而實現(xiàn)近似多用戶最大似然解碼。
相比4G的正交頻分多址接入OFDMA(Orthogonal Frequency-Division Multiple Access)技術,SCMA可以實現(xiàn)在同等資源數(shù)量條件下,同時服務更多用戶,從而有效提升系統(tǒng)整體容量。SCMA與OFDMA相比能同時服務更多用戶的原因是:OFDMA每個用戶占用一個不同的子載波,解調時用不同的子載波區(qū)分不同的用戶。而SCMA中每個子載波上可以疊加兩個用戶的數(shù)據(jù),但同時每個用戶又不止占用一個子載波。其實SCMA區(qū)分不同用戶的主要方法是用碼本,即每個用戶分配一個碼本,碼本包括用戶占用的子載波以及在每個子載波上的調制方式。
綜上所述,SCMA技術的優(yōu)勢在于:提高了用戶連接數(shù)目,提高了鏈路性能;適合海量連接場景;低復雜度最大似然譯碼;和現(xiàn)有技術的兼容性。
圖1是一個用戶進行SCMA編碼的情形,其他用戶與之類似。經(jīng)過編碼后的信息比特直接通過SCMA多維碼本的編碼就實現(xiàn)了調制和擴頻雙過程。所以SCMA編碼器相當于兼顧了調制和擴頻。SCMA編碼器的關鍵部分是SCMA碼本[12],從大量參考文獻可知,碼本的設計涉及多維星座圖的設計,而多維星座圖的設計又是個很復雜的問題,所以本文并未進行碼本設計部分的研究。華為在2015年亞洲創(chuàng)新設計大賽5G專題競賽中公開了一個SCMA碼本[13]。這就是本文后續(xù)仿真中所要用到的碼本。本文討論的是6個用戶和4個子載波的情形,當6個用戶都編碼結束后,每個用戶輸出的碼字會進行疊加,然后映射到對應的物理層上。疊加的方式如圖2所示。
圖1 SCMA編碼器原理圖Fig.1 Schematic diagram of SCMA encoder
本文設計的系統(tǒng)結構如圖3所示,設計采用的譯碼算法是改進過的MPA,即最大值的對數(shù)域消息傳遞算法(Max-log-MPA)[14]。譯碼器的工作流程是:當接收到帶有高斯噪聲的信號r后,首先通過f(?)函數(shù)計算條件概率進行初始化,然后功能節(jié)點FN與變量節(jié)點VN沿著相連的邊進行信息迭代更新,滿足最大迭代次數(shù)后,變量節(jié)點輸出信息比特的似然比,SCMA譯碼完成。整個過程主要由以下幾部分完成[15]。
圖2 SCMA碼字疊加圖Fig.2 Diagram of SCMA codon overlay
圖3 SCMA譯碼器結構Fig.3 Structure of SCMA decoder
給出用戶k在資源n的信道增益h_n=1,變量節(jié)點k在資源節(jié)點n上發(fā)送碼字m_k的符號CB(k,n)(mk),噪聲功率Nn可以用fn(?)函數(shù)計算包含各種可能性的殘余信號。其中,M=4,F(xiàn)=4。令fn(?)=fn(rn,m1,m2,m3,Nn,hn,k),則:
采用Jacobi算法將考察變量都轉換到對數(shù)域,去掉指數(shù)運算,即Max-log-MPA的SCMA譯碼,則式(1)變成:
認為先驗概率相等,發(fā)送每個碼字的概率相等,則有:
FNU不僅具有完成功能節(jié)點更新的功能,同時具有完成數(shù)據(jù)輸入輸出的功能。初始化階段,中間信息存儲器Message RAM中存儲的數(shù)據(jù)為Ivg的初始值1M。功能節(jié)點通過其相鄰的變量節(jié)點傳遞的外信息更新應用式(2),如圖4所示,以一個功能節(jié)點g為例,F(xiàn)NU的表達式為:
依次類推,可知Igv2和Igv3的表達式為:
一個功能節(jié)點連接3個變量節(jié)點。每做一次FNU運算,需要輸入3個用戶的碼本以及接收信號用來計算殘留信號f,殘留信號f與相連的變量節(jié)點傳來的外信息Ivg求和進行FNU,在Max-log-MPA下,找到輸出的最大值作為一次FNU結束,輸出的Igv輸入到Message RAM進行存儲,并作為VNU的一個輸入。
VNU具有完成變量節(jié)點的更新功能,把數(shù)據(jù)輸出到Message RAM中,并從Message RAM輸入由功能節(jié)點傳送來的消息。變量節(jié)點通過其相鄰的功能節(jié)點傳遞的外信息進行更新,這里一個變量節(jié)點連接2個功能節(jié)點,所以可以看作在變量節(jié)點上信息的交換。應用式(2),如圖4所示,以一個變量節(jié)點v為例,VNU的表達式為:
式中:normalize使每個變量節(jié)點發(fā)送各個碼字的概率和為1;apv(m)為先驗概率。
VNU模塊進行信息交換輸出完成一次變量節(jié)點更新,輸出的值Ivg輸入到Message RAM進行存儲,并作為FNU下一次迭代的輸入。
圖4 FNU與VNU消息傳遞圖Fig.4 Message transitive diagram between FNU and VNU
應用式(2),一定的迭代次數(shù)之后變量v處LLR輸出的表達式如下:
這樣可以得到每個比特的對數(shù)似然比LLR,即可得到譯碼結果。
應用式(2)實現(xiàn)簡化的SCMA系統(tǒng),進行Max-log-MPA仿真。Matlab仿真條件為:6個用戶,每個用戶發(fā)送幀數(shù)為10幀,每幀1 024 bit,SCMA譯碼迭代次數(shù)為5次,turbo譯碼迭代次數(shù)為5次,碼率為1 2。得到的SCMA在兩種不同譯碼算法條件下的BER-SNR性能仿真曲線如圖5所示。
圖5 SCMA不同譯碼算法的誤碼率性能曲線Fig.5 Performance curves of BER of different decoding algorithms for SCMA
從圖5可以看出,MPA與Max-log-MPA相比,性能要更好些,在信噪比比較小時,兩者的誤碼率相差不大,但隨著信噪比的增加越來越明顯,然而都控制在1 dB以內??紤]到硬件實現(xiàn)條件、運行時間和算法復雜度的問題,綜合考慮選擇Max-log-MPA算法。
圖6為SCMA系統(tǒng)發(fā)送端仿真波形。圖中的輸出相對于輸入有一個周期的延遲,并且硬件語言Verilog語言無法識別負小數(shù),所以本文將原始數(shù)據(jù)擴大128倍后取整進行運算。從圖中可以看出:輸入r分別有00,01,10,11,根據(jù)這4個值,用戶結合自己的碼本選擇輸出碼字,6個用戶非正交疊加輸出信號y在4個信道上。其中00對應的輸出為 18+30i,95-40i,95-40i,18+30i;01對應的輸出為-8-117i,-48-138i,-48-138i,-8-117i;10對應的輸出為 8+117i,48+138i,48+138i,8+117i;11對應的輸出為-18-30i,-95+40i,-95+40i,-18-30i。
圖6 SCMA系統(tǒng)發(fā)送端仿真波形Fig.6 Simulation waveforms of SCMA system sending end
從前面對SCMA譯碼器設計原理的介紹可知,首先進行功能節(jié)點更新輸出Igv,輸出的Igv作為VNU的輸入。第一次迭代時,功能節(jié)點進行更新,從中間寄存器讀取的Ivg是初始化的值,即1 4,和前面一樣擴大128倍后就成了32。從源數(shù)據(jù)存儲單元Src_Mem讀取接收信號,由前面的編碼器可知,這里的接收信號有4種情形,下面的仿真都只選取了第三種情形,用讀取的接收信號和相關用戶的碼本計算相應的殘留信號f,f再與從中間寄存器讀取的Ivg一起根據(jù)Max-log-MPA的原則計算出Igv,并輸入到中間寄存器Message RAM,以便VNU計算時從中間寄存器讀取。注意到以下FNU模塊仿真圖中的數(shù)值都是擴大了128倍的結果,而最后譯碼結果的輸出值因為是經(jīng)過對數(shù)似然比后的輸出,擴大的128倍會被約去,所以得到的是原始值。
FNU計算出來的值Igv供下一次VNU迭代使用,VNU計算出來的值Ivg再次給FNU迭代使用。這樣反復進行5次之后,即前面所述最大迭代次數(shù)為5,將最后一次FNU輸出的值Igv輸入到LLR單元。在LLR單元中會計算出最終的譯碼結果,并將譯碼結果out輸入到運算結果存儲單元Result_Mem中。其中迭代次數(shù)以及FNU和VNU的工作順序由控制單元Control控制。其中FNU第5次迭代的輸出仿真圖如圖7所示,最后譯碼結果的輸入就是來自于此圖中的Igv。
其中I_g1v2_0表示功能節(jié)點g1到變量節(jié)點v2的信息,因為每次傳遞時有4個值,所以此處用0~3表示,后面的0表示第一個值。
最后SCMA譯碼器的輸出結果應與編碼器的輸入一致。但是由于噪聲和誤差的影響,會有一定的失真。選取5作為迭代次數(shù)進行驗證。圖8~圖10分別是迭代1次、3次和5次后FNU輸出的值Igv輸入到LLR單元后,計算出的最終譯碼結果。從圖8中明顯可以看出,只經(jīng)過1次迭代的輸出失真非常嚴重。而第3次和第5次失真情況相當,而且失真是在允許的范圍內。每多做1次迭代運算,消耗的硬件資源就會相應增多。因此綜合考慮,只進行5次迭代運算就輸出譯碼結果。
圖 8~圖 10 中的 out1=data_Rx_bin[1][0],out2=data_Rx_bin[1][1],即表示用戶1的兩個比特的信息,依次類推,out3~out12表示用戶2~6相應的比特信息。因為SCMA編碼器部分,每個用戶就是輸入的兩個比特的信息。在圖8中可以看到,out1~out12分別為010100010110,而根據(jù)給出的輸入信號,對應著編碼器部分的輸入為10的輸出,所以最后的譯碼結果理論值應為010101010101。由此可以算出只經(jīng)過1次迭代就輸出譯碼結果的誤碼率為0.007 8。依次類推,可以算出迭代3次和5次后的輸出誤碼率。從它們各自的仿真圖9和圖10可以得出,迭代3次和5次的輸出結果分別為010110010101和010100010101,計算出的誤碼率分別為0.005 2和0.002 6,這些誤碼率都在允許的范圍內。
圖7 SCMA譯碼器的FNU單元第5次迭代的輸出仿真圖Fig.7 Output simulation diagram of the fifth iteration in FNU unit of SCMA decoder
圖8 SCMA譯碼器經(jīng)過1次迭代的譯碼結果仿真圖Fig.8 Simulation diagram of decoding result of SCMA decoder after one iteration
圖9 SCMA譯碼器經(jīng)過3次迭代的譯碼結果仿真圖Fig.9 Simulation diagram of decoding results of SCMA decoder after three iterations
圖10 SCMA譯碼器經(jīng)過5次迭代的譯碼結果仿真圖Fig.10 Simulation diagram of decoding results of SCMA decoder after five iterations
本文對SCMA系統(tǒng)進行仿真設計,與CDMA相比,SCMA同樣是碼域應用的非正交多址接入技術,不同的是它采用的擴頻碼是一種可以使接收端復雜度降低的消息傳遞算法和多用戶聯(lián)合迭代法的稀疏碼。同時SCMA還輔以F-OFDM時頻資源分配的自適應方式,可以靈活地調整時頻承載資源單元的大小,不僅可以適應系統(tǒng)空口接入眾多業(yè)務中的各種需求,還能夠在一定程度上提高系統(tǒng)的頻譜容量和多址接入效率。從仿真驗證結果來看,基于Verilog的SCMA系統(tǒng)的編碼器和譯碼器實現(xiàn)功能完備,滿足設計要求,系統(tǒng)性能在實際應用中是可以接受的。