郝向新,張星海,王 懿,孫建軍
(內蒙古電力(集團)有限責任公司鄂爾多斯電業局,鄂爾多斯 014399)
超遠距離通信需要傳輸很遠的距離需要支持自適應編碼和調制,可以基于鏈路狀態實時改變編碼速率和調制方式。這個特性極大地提高了有效載荷能力和鏈路利用率。當鏈路的SNR很高,例如天氣比較好時,可以將所有的應用都打開,鏈路進行滿負荷的運作。如果鏈路的SNR下降得比較厲害,例如下大雨,鏈路的載荷能力和利用率就會降低。

圖1 信道容量改變
我們的遠距離無線支持8個不同的MCS,MCS索引(由0至8)由上至下排列每一個MCS包含有許多的特性,包括星座映射,編碼速率,激活的分支,每一個分支的帶寬分配等。系統根據均衡后的符號的MSE值及糾錯碼的誤塊率(BLER),判定采用何種編碼及調制方式,并自動調節兩端通信節點的編碼及調制方式,使系統獲得較高的頻帶利用率和信息傳輸速率。
描述收端ACM控制單元判斷切換條件需要使用的指標。
(1)均衡后一幀數據的全部數據符號都參與計算的MSE的統計。
(2)只有均衡后一幀數據的前導頭符號、控制信令符號及導頻符號參與MSE的統計(PMSE)。
(3)上述兩種MSE計算出來后,取PMSE和MSE中較大值作為ACM模塊輸入,擁有ACM切換。為簡便,將“MSE或PMSE中較大值”稱為MSE。
(4)MSE的變化速率定義為當前幀和前一幀的MSE的比值。MSE的變化速率計算可以按照當前幀的MSE和上一幀的MSE乘上某個門限來比較。
BLE(block error)是指線性分組碼根據自身的校驗仿真計算出來的,指示該編碼塊在一定范圍內是否正確的一個標記。包含LDPC譯碼前BLE,LDPC譯碼后BLE。
(1)LDPC譯碼前的BLE,記為LDPC_BLE_BD。LDPC譯碼器在更新接收到的一個碼塊的LLR之前,根據接收LLR的符號值,進行校驗計算,當的校驗方程sum(H*c)大于等于設定的門限值(門限值配置為0),說明碼塊出錯(需要統計WLB幀內的BLE數值:譯碼前的BLE統計需體現對信道長期穩定性進行統計,因此,建議WLB盡量大一些)。WLB建議配置為1~65536幀。
(2)LDPC譯碼后的BLE,記為LDPC_BLE_AD。LDPC譯碼器通過譯碼過程,更新完一個碼塊的LLR之后,根據更新后的LLR的符號值,進行校驗計算,碼后LDPC碼塊的校驗方程sum(H*c)大于等于設定的門限值,說明碼塊出錯(需要統計WLA幀內的BLER數值:譯碼后的BLER統計需體現對信道變化的快速響應,因此,建議不超過10)。WLA軟件可配,為了硬件實現的簡便,WLA可配置為1幀2幀4幀8幀可選。
系統能夠根據ACM控制單元發出的切換指示自動進行切換,并且約定ACM控制單元可以發出的切換指示類型,以及手動切換功能的描述。
上切,為了保證切換無誤碼,上切的準則是:要保證在信道足夠好時才向上切換。切換時需謹慎一些。上切的方式只能是逐級切換,上切的依據可以配置成下面兩種中一種:一是只根據MSE值;二是同時根據“MSE值及譯碼后的BLE及譯碼前的BLE”。
(1)譯碼后必須無誤碼,即BLE_AD=0;譯碼前的誤塊率要小于一個門限,即BLE_BD<A,表示在一個WLA統計窗之內,錯誤要低于A個碼塊才能保證信號質量足夠好,這時才啟動上切機制;A的位寬為16。
(2)為了保證切換無誤碼,發射端需要收到對端的連續K個“上切”請求,才能上切。K可軟件配置,K值建議在1~16范圍。位寬4比特。
下切,為了保證切換無誤碼,下切的準則是:需要快速響應,并且防患于未然。下切支持逐級下切也支持一步切到最低MCS的切換。
3.2.1 逐級下切
逐級切換:依據可以配置成下面兩種中一種:一是只根據MSE值;二是根據MSE值或者譯碼后的BLE。(這里譯碼后BLE是“一幀內的BLE”,一幀中只要有碼塊出錯就下切一級)。
3.2.2 一步切到最低MCS
一步切到最低MCS可以配置成下面兩種中一種:一是根據MSE的速率,當MSE變化速率(這里是指變差的速率,MSE越大表示鏈路質量越差)大于一個門限值。二是只根據譯碼后的BLE(譯碼后的BLE_AD>B,B可軟件配置(16bits),表示在一個WLB統計窗之內,錯誤高于B個碼塊說明信道質量已經足夠差,此時需要一步切到最低MCS)。
最低MCS是一個可配置的MCS,并不一定配置為MCS0,在存在訓練幀模式下,可以配置為MCS1。
本章主要描述在收端如何根據相關檢測條件發送出切換指示,以及發端的切換流程。

圖2 收端ACM主控制流程
收端系統首先檢測目前是否滿足ACM開啟的條件,在達到ACM開啟的條件之后,首先是T1幀的保護時間是不能進行切換的;T1幀時間過后,進行ACM切換判斷和切換時間保護操作,其中切換時間保護操作主要針對是上切切換時間保護,和保護模式整體切換時間保護;然后系統等待MCS改變,則認為一次切換指示完成;同時為了仿真某次切換指示未被發端收到,而設置保護幀,計數至T2幀本次切換仍沒有完成后認為對端發端未收到切換指示,則再次進行ACM切換判斷。其他說明如下:
(1)N_ACM_on_p該參數表示在ACM啟動之后,要進行T1幀時間保護,T1可配置范圍是0~255幀。參考配置為約20ms左右的時間。
(2)所有計數器清0操作,所有的計數器包含這里的N_ACM_on_p開啟保護時間計數器、Nsp未收到切換指示保護時間計數器、Ndc下切保護時間計數器、MCS_uk連續上切請求計數器、Nuc上切保護時間計數器等。當切換指示不為00的時候,在等待MCS響應之前,各計數器累加功能均不工作。
(3)圖2中判斷條件滿足ACM開啟、ACM_On判斷條件是相同的。
(4)該流程圖中的每個判斷都要每一幀進行一次,幀指示可以由幀同步給出。保護模式下,默認由工作板的幀同步指示給出,如果工作板斷鏈則有保護板的幀同步指示給出。
(5)當收端檢測切換請求在預設的幀數T2之后仍然沒有得到響應,則進行下一次切換判斷。T2可以配置為1~4095幀等,建議配置為16幀。該時間是防止某次切換請求未被對端接收到,從而對端發送端一直認為無切換請求。

圖3 ACM開啟條件判斷
系統的ACM開啟考慮保護模式以及訓練幀模式。在保護模式下,總體原則是有一塊單板的給出開啟指示則認為系統開啟;無論是訓練幀模式下的建鏈還是非訓練幀模式下的建鏈都認為系統建鏈,開啟ACM模塊。
交互過程結構如下:

圖4 AMC Change Path
按照圖4所示步驟分解為:
(1)對于B節點而言,在每次發送新的幀數據之前,判斷AMC引擎的輸出是否需要切換MCS,AMC引擎每隔20ms打開一次,決定切換到相應的next profile(軟件可對其進行配置)。
(2)如果需要切換,則在新的數據幀中添加相應的改變MCS(CHN_REP)信息;否則不予理會。然后關掉AMC引擎。
(3)B節點的ctrl_gen發送攜帶相應的改變MCS(CHN_REP)消息的數據幀;
(4)當A節點的de_frm收到CHN_REP消息后,將CHN_REP消息中的預通知MCS(preferred MCS)傳送給發送方向的ctrl_gen。
(5)A節點的ctrl_gen模塊發現得到的新的MCS與本地MCS不匹配,則啟動本地計數器來計數幀數目;當ctrl_gen模塊看到來自FPGA的新的MAC幀頭(sync信號),則把接受到的MCS送給FPGA,此時FPGA發現來自Modem的MCS與本地不相同,也啟動計數器來技術幀數目。預通知的幀數目是在上電時已經配置。當Modem中ctrl_gen模塊中計數到幀數目時,在發送的幀上會攜帶AMC_CFG消息告訴B節點:下個物理幀會改變被要求的MCS。而FPGA的計數器會比Modem計數器晚一幀,故當FPGA計數到幀數目時,直接改變為新的MCS方式即可。
(6)B節點的解幀模塊(de_frm)解析出此AMC_CFG消息后,通知同步模塊將要在下一幀切換成的swithched MCS,同步模塊根據此消息在下一幀標記導頻的位置。同時,de_frm也會通知FPGA,方法是:將寫入FIFO的數據擴充1bit,表示下一幀的MCS,de_frm將AMC串行寫入這一bit,按照bit0-bit3的順序,在SUF后的若干字節開始寫,持續有效四個字節。
AMC切換流程:

圖5 Frame Consume
B_tx和A_tx分別為A、B兩端的發送端;AMC引擎每隔20ms打開一次檢測是否切換MCS;Modem_cnt和FPGA_cnt分別為Modem和FPGA本地的預通知幀數目計數器。
設定在B節點發送第二幀之前打開AMC引擎發現需要切換MCS,則通過發送端通知A節點切換。
我們在超遠距離通信中使用ACM技術實現了從64QAMBPSK等8種調制方式的切換,使得重要的業務得也在天氣變化的過程中得到更好的傳輸保障。