一種無線傳輸中抗干擾的自適應(yīng)編解碼方法
【專利摘要】本發(fā)明公開一種無線傳輸中抗干擾的自適應(yīng)編解碼方法,步驟為:數(shù)據(jù)發(fā)送節(jié)點(diǎn)發(fā)送原始數(shù)據(jù)并且設(shè)置超時的時間;數(shù)據(jù)接收節(jié)點(diǎn)在接收數(shù)據(jù)的同時對RSSI值進(jìn)行采樣;數(shù)據(jù)接收節(jié)點(diǎn)檢查收到的包是否正確,根據(jù)結(jié)果產(chǎn)生并發(fā)送相應(yīng)的反饋包給數(shù)據(jù)發(fā)送節(jié)點(diǎn);數(shù)據(jù)發(fā)送節(jié)點(diǎn)接收反饋包,根據(jù)反饋包的類型決定下一步動作;數(shù)據(jù)接收節(jié)點(diǎn)接收編碼數(shù)據(jù),檢查數(shù)據(jù)正確性,結(jié)合之前收到的原始數(shù)據(jù)進(jìn)行相應(yīng)的解碼操作,向數(shù)據(jù)發(fā)送節(jié)點(diǎn)發(fā)送反饋;數(shù)據(jù)發(fā)送節(jié)點(diǎn)根據(jù)反饋?zhàn)龀鱿鄳?yīng)動作。
【專利說明】
-種無線傳輸中抗干擾的自適應(yīng)編解碼方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明屬于無線通信領(lǐng)域,設(shè)及一種無線傳輸中抗干擾的自適應(yīng)編解碼方法。
【背景技術(shù)】
[0002] 無線低功耗網(wǎng)絡(luò)通常由許多低功耗的通信節(jié)點(diǎn)組成,在通信過程中容易受到干 擾、噪聲的影響,降低了通信的可靠性。抵抗干擾影響,提高通信可靠性的方法典型的有自 動重傳機(jī)制。但是自動重傳機(jī)制開銷很大。如果包中發(fā)生的錯誤很少,重傳整個包就會將接 收者正確接收到的部分?jǐn)?shù)據(jù)也進(jìn)行傳輸;如果鏈路質(zhì)量很差,那么就需要很多輪的重傳來 保證接收者正確接收到包。
[0003] 前向糾錯碼技術(shù)在發(fā)送的包中添加一定量冗余數(shù)據(jù),能夠在接收包發(fā)生一定程度 W下的錯誤時將其糾正,有利于減少重傳開銷。但是決定冗余量是個關(guān)鍵問題。如果冗余量 過少,在包錯誤率高的情況下無法將其恢復(fù)出來;如果冗余量過多,在包錯誤率低的情況下 會引入過多的額外開銷。
[0004] -種新的技術(shù)結(jié)合了自動重傳機(jī)制與前向糾錯碼的優(yōu)點(diǎn)。它在重傳時僅發(fā)送冗余 數(shù)據(jù)而非全部數(shù)據(jù)。當(dāng)沒有錯誤時,只需要發(fā)送完整的原始數(shù)據(jù);在錯誤率比較高時,可W 結(jié)合前一次接收錯誤的數(shù)據(jù)與重發(fā)的冗余數(shù)據(jù),在一定程度上恢復(fù)出原始數(shù)據(jù),減少重傳 的輪次。
[0005] 但是,在上述方法中,如何決定冗余量依然是個關(guān)鍵問題。在無線網(wǎng)絡(luò)中,目前的 方法并沒有根據(jù)網(wǎng)絡(luò)中干擾的嚴(yán)重程度來調(diào)整編碼的冗余度,不能在鏈路質(zhì)量很好或很壞 的情況下都W很小的額外代價達(dá)到高吞吐量。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明要克服現(xiàn)有技術(shù)的上述缺點(diǎn),提供一種減少無線低功耗網(wǎng)絡(luò)中干擾影響的 自適應(yīng)編解碼方法。
[0007] 本發(fā)明采用自適應(yīng)編解碼的方法來降低節(jié)點(diǎn)收發(fā)數(shù)據(jù)過程中干擾的影響,其具體 步驟包括:
[000引(1)數(shù)據(jù)發(fā)送節(jié)點(diǎn)發(fā)送原始數(shù)據(jù)并且設(shè)置超時的時間。
[0009] (2)數(shù)據(jù)接收節(jié)點(diǎn)在接收數(shù)據(jù)的同時對RSSI(Receive signal strength indicator,接收信號強(qiáng)度)值進(jìn)行采樣,包括:
[0010] 21)在開始收包的同時,節(jié)點(diǎn)W-定頻率開始對RSSI值進(jìn)行采樣;
[0011] 22)在收包結(jié)束的同時,RSSI采樣結(jié)束,得到收包過程中的RSSI序列。
[0012] (3)數(shù)據(jù)接收節(jié)點(diǎn)檢查收到的包是否正確,根據(jù)結(jié)果產(chǎn)生并發(fā)送相應(yīng)的反饋包給 數(shù)據(jù)發(fā)送節(jié)點(diǎn),包括:
[OOK] 31)如果收到的包正確,向數(shù)據(jù)發(fā)送節(jié)點(diǎn)發(fā)送ACK包;
[0014] 32)如果收到的包錯誤,數(shù)據(jù)接收節(jié)點(diǎn)由步驟2)得到的RSSI序列估算出該包發(fā)生 錯誤的嚴(yán)重程度,并將該值記錄在NAK包中發(fā)送給數(shù)據(jù)發(fā)送節(jié)點(diǎn)。
[0015] (4)數(shù)據(jù)發(fā)送節(jié)點(diǎn)接收反饋包,根據(jù)反饋包的類型決定下一步動作,包括:
[0016] 41)如果收到ACK包,一次通信過程結(jié)束;
[0017] 42)如果收到NAK包,使用一種系統(tǒng)可逆碼將原始數(shù)據(jù)進(jìn)行編碼,得到編碼數(shù)據(jù),將 編碼數(shù)據(jù)向接收節(jié)點(diǎn)發(fā)出。其中該系統(tǒng)可逆碼的參數(shù)根據(jù)NAK包中的信息決定;
[0018] 43)如果在超時時間內(nèi)沒有接收到反饋包,使用一種系統(tǒng)可逆碼將原始數(shù)據(jù)進(jìn)行 編碼,得到編碼數(shù)據(jù),將編碼數(shù)據(jù)向接收節(jié)點(diǎn)發(fā)出。其中該系統(tǒng)可逆碼的參數(shù)為一默認(rèn)值。
[0019] (5)數(shù)據(jù)接收節(jié)點(diǎn)接收編碼數(shù)據(jù),檢查數(shù)據(jù)正確性。結(jié)合之前收到的原始數(shù)據(jù)進(jìn)行 相應(yīng)的解碼操作,向數(shù)據(jù)發(fā)送節(jié)點(diǎn)發(fā)送反饋,數(shù)據(jù)發(fā)送節(jié)點(diǎn)根據(jù)反饋?zhàn)龀鱿鄳?yīng)動作:
[0020] 51)如果解碼成功,發(fā)送ACK包,數(shù)據(jù)發(fā)送節(jié)點(diǎn)收到之后一次通信結(jié)束;
[0021] 52)如果解碼失敗,發(fā)送NAK包,數(shù)據(jù)發(fā)送節(jié)點(diǎn)收到之后重新從步驟1)開始。
[0022] 進(jìn)一步地,本發(fā)明在所述接收反饋包的步驟2)中,使用一種系統(tǒng)可逆碼編碼對原 始數(shù)據(jù)編碼并發(fā)送的過程按W下步驟進(jìn)行:
[0023] a)檢查收到的NAK包中攜帶的錯誤嚴(yán)重程度信息,W保證通信可靠性的前提下盡 量使得編碼出來的包盡可能小的原則選擇合適的編碼參數(shù);
[0024] b)使用步驟a)中選擇的編碼參數(shù)對原始數(shù)據(jù)進(jìn)行編碼,得到相應(yīng)的編碼數(shù)據(jù)包;
[0025] C)在步驟b)中產(chǎn)生的編碼數(shù)據(jù)包包頭加入步驟a)中選擇的編碼參數(shù);
[0026] d)數(shù)據(jù)發(fā)送節(jié)點(diǎn)發(fā)送該編碼數(shù)據(jù)包,設(shè)置超時時間,等待接收節(jié)點(diǎn)的反饋。
[0027] 本發(fā)明與【背景技術(shù)】相比,具有的有益效果是:通過在收包時候的進(jìn)行RSSI的采樣, 估計(jì)出在鏈路收到干擾時接收到的包的錯誤嚴(yán)重程度,進(jìn)而使得發(fā)送方在選擇編碼參數(shù)的 時候能夠在確保收包的高可靠性的同時降低發(fā)送編碼數(shù)據(jù)的數(shù)據(jù)量。
【附圖說明】
[0028] 圖1是本發(fā)明自適應(yīng)編解碼的執(zhí)行流程圖。
【具體實(shí)施方式】
[00巧]W下針對TelosB平臺,TinyOS系統(tǒng),并采用系統(tǒng)可逆碼類別中的一種,RS(Reed Solomon,里德所羅口)編碼,為例進(jìn)一步說明本發(fā)明:
[0030] (1)數(shù)據(jù)發(fā)送節(jié)點(diǎn)發(fā)送原始數(shù)據(jù)并且設(shè)置超時的時間。
[0031] (2)數(shù)據(jù)接收節(jié)點(diǎn)在接收數(shù)據(jù)的同時對RSSI(Receive signal strength indicator,接收信號強(qiáng)度)值進(jìn)行采樣,修改TinyOS的串口驅(qū)動之后使采樣率達(dá)到每個樣 本對應(yīng)IB^e。采樣步驟包括:
[0032] (2.1)在表示開始收包的SFD中斷觸發(fā)的時候,開始采集RSSI值;
[0033] (2.2)在表示停止收包的SFD中斷觸發(fā)的時候,結(jié)束RSSI值得采集。得到數(shù)據(jù)包W 及相應(yīng)的RSSI序列。
[0034] (3)數(shù)據(jù)接收節(jié)點(diǎn)通過CRC校驗(yàn)檢查接收的數(shù)據(jù)包是否正確:
[0(X3日](3.1)如果數(shù)據(jù)包正確,產(chǎn)生ACK包;
[0036] (3.2)如果數(shù)據(jù)包不正確,根據(jù)步驟(2)得到的RSSI序列估計(jì)錯誤嚴(yán)重程度的量化 值,并將該值置入NAK包中,包括=個階段:
[0037] (3.2.1)捜索RSSI序列中的最小值RSSLbase;
[003引 (3.2.2)將3551序列中的值分到^個范圍區(qū)間(1?551_6日36,1?551_6日36+2.5), (RSSI_base+2.5,RSSI_base+4.5),(RSSI_base+4.5,+W)。落在區(qū)間 1 中的RSSI值認(rèn)為其對 應(yīng)的Byte值沒有錯誤。落在區(qū)間3中的RSSI值認(rèn)為其對應(yīng)的Byte值是錯誤的,錯誤計(jì)數(shù)增 加。落在區(qū)間2中的RSSI值W(RSSI-RSSI_base-2.5)/(4.5-2.5)的概率認(rèn)為其對應(yīng)的Byte 值是錯誤的,相應(yīng)增加錯誤計(jì)數(shù);
[0039] (3.2.3)將步驟(3.2.2)中得到的錯誤計(jì)數(shù)除W收到包的總Byte數(shù),即得到錯誤程 度的度量值化;
[0040] (3.2.4)將化值置入NAK包的相應(yīng)字段中,向數(shù)據(jù)發(fā)送節(jié)點(diǎn)發(fā)送該NAK包。
[0041] (4)數(shù)據(jù)發(fā)送節(jié)點(diǎn)接收反饋包,根據(jù)反饋包的類型決定下一步動作,包括:
[0042] (4.1)如果收到ACK包,一次通信過程結(jié)束;
[0043] (4.2)如果收到NAK包,使用一種RS碼進(jìn)行編碼,得到編碼數(shù)據(jù),將編碼數(shù)據(jù)向接收 節(jié)點(diǎn)發(fā)出。編碼參數(shù)的選擇包括W下步驟:
[0044] (4.2.1)從NAK包中提取化值;
[0045] (4.2.2)由化的值決定RS編碼中每個block的大小NW及每個block中信息位的大 小K,具體計(jì)算由公式(1)決定:
[0046] 公式(1)
[0047] (4.2.3)在得到RS編碼的參數(shù)N與K之后,節(jié)點(diǎn)使用RS(N,K)碼將原始數(shù)據(jù)編碼得到 編碼數(shù)據(jù),生成必要的頭部信息,并在頭部加上N與K的值之后,將該編碼數(shù)據(jù)包發(fā)出。
[004引(4.3)如果在超時時間內(nèi)未收到反饋包,則選擇RS的編碼參數(shù)N= 14,K = 7,其余步 驟與(4.2)-致。
[0049] (5)數(shù)據(jù)接收節(jié)點(diǎn)接收編碼數(shù)據(jù),進(jìn)行解碼W及反饋操作;
[0050] (5.1)如果編碼數(shù)據(jù)沒有發(fā)生錯誤,而且編碼數(shù)據(jù)包中取出的N=14,K = 7,由RS碼 的性質(zhì),可W不需解碼,直接由該編碼數(shù)據(jù)得到原始數(shù)據(jù),
[0051 ] (5.2)在其余情況下,進(jìn)行解碼操作,具體步驟如下:
[0052 ] (5.2.1)從編碼數(shù)據(jù)包包頭中取出N與K的值;
[0053] (5.2.2)使用RS(N,K)碼,將步驟(2)中得到的數(shù)據(jù)包W及步驟(5)中得到的編碼數(shù) 據(jù)包合并起來進(jìn)行解碼;
[0054] (5.2.3)解碼成功,得到原始數(shù)據(jù)包,發(fā)送ACK包;
[0化5] (5.2.4)解碼失敗,發(fā)送NAK包。
[0056] (6)數(shù)據(jù)發(fā)送節(jié)點(diǎn)接收反饋包:
[0057] (6.1)如果收到ACK包,一次通信結(jié)束;
[005引(6.2)如果收到NAK包,則返回步驟(1)重新發(fā)送原始數(shù)據(jù)。
【主權(quán)項(xiàng)】
1. 一種無線傳輸中抗干擾的自適應(yīng)編解碼方法,其特征是包括如下步驟: (1) 數(shù)據(jù)發(fā)送節(jié)點(diǎn)發(fā)送原始數(shù)據(jù)并且設(shè)置超時的時間; (2) 數(shù)據(jù)接收節(jié)點(diǎn)在接收數(shù)據(jù)的同時對接收信號強(qiáng)度RSSI值進(jìn)行采樣,包括: 21) 在開始收包的同時,節(jié)點(diǎn)以一定頻率開始對RSSI值進(jìn)行采樣; 22) 在收包結(jié)束的同時,RSSI采樣結(jié)束,得到收包過程中的RSSI序列; (3) 數(shù)據(jù)接收節(jié)點(diǎn)檢查收到的包是否正確,根據(jù)結(jié)果產(chǎn)生并發(fā)送相應(yīng)的反饋包給數(shù)據(jù) 發(fā)送節(jié)點(diǎn),包括: 31) 如果收到的包正確,向數(shù)據(jù)發(fā)送節(jié)點(diǎn)發(fā)送ACK包; 32) 如果收到的包錯誤,數(shù)據(jù)接收節(jié)點(diǎn)由步驟2)得到的RSSI序列估算出該包發(fā)生錯誤 的嚴(yán)重程度,并將該值記錄在NAK包中發(fā)送給數(shù)據(jù)發(fā)送節(jié)點(diǎn); (4) 數(shù)據(jù)發(fā)送節(jié)點(diǎn)接收反饋包,根據(jù)反饋包的類型決定下一步動作,包括: 41) 如果收到ACK包,一次通信過程結(jié)束; 42) 如果收到NAK包,使用一種系統(tǒng)可逆碼將原始數(shù)據(jù)進(jìn)行編碼,得到編碼數(shù)據(jù),將編碼 數(shù)據(jù)向接收節(jié)點(diǎn)發(fā)出;其中該系統(tǒng)可逆碼的參數(shù)根據(jù)NAK包中的信息決定; 43) 如果在超時時間內(nèi)沒有接收到反饋包,使用一種系統(tǒng)可逆碼將原始數(shù)據(jù)進(jìn)行編碼, 得到編碼數(shù)據(jù),將編碼數(shù)據(jù)向接收節(jié)點(diǎn)發(fā)出。其中該系統(tǒng)可逆碼的參數(shù)為一默認(rèn)值; (5) 數(shù)據(jù)接收節(jié)點(diǎn)接收編碼數(shù)據(jù),檢查數(shù)據(jù)正確性,結(jié)合之前收到的原始數(shù)據(jù)進(jìn)行相應(yīng) 的解碼操作,向數(shù)據(jù)發(fā)送節(jié)點(diǎn)發(fā)送反饋,數(shù)據(jù)發(fā)送節(jié)點(diǎn)根據(jù)反饋?zhàn)龀鱿鄳?yīng)動作: 51) 如果解碼成功,發(fā)送ACK包,數(shù)據(jù)發(fā)送節(jié)點(diǎn)收到之后一次通信結(jié)束; 52) 如果解碼失敗,發(fā)送NAK包,數(shù)據(jù)發(fā)送節(jié)點(diǎn)收到之后重新從步驟1)開始。2. 根據(jù)權(quán)利要求1所述的一種無線傳輸中抗干擾的自適應(yīng)編解碼方法,其特征在于在 所述接收反饋包的步驟(2)中,使用一種系統(tǒng)可逆碼編碼對原始數(shù)據(jù)編碼并發(fā)送的過程按 以下步驟進(jìn)行: a) 檢查收到的NAK包中攜帶的錯誤嚴(yán)重程度信息,以保證通信可靠性的前提下盡量使 得編碼出來的包盡可能小的原則選擇合適的編碼參數(shù); b) 使用步驟a)中選擇的編碼參數(shù)對原始數(shù)據(jù)進(jìn)行編碼,得到相應(yīng)的編碼數(shù)據(jù)包; c) 在步驟b)中產(chǎn)生的編碼數(shù)據(jù)包包頭加入步驟a)中選擇的編碼參數(shù); d) 數(shù)據(jù)發(fā)送節(jié)點(diǎn)發(fā)送該編碼數(shù)據(jù)包,設(shè)置超時時間,等待接收節(jié)點(diǎn)的反饋。
【文檔編號】H04L1/16GK105846971SQ201610157656
【公開日】2016年8月10日
【申請日】2016年3月21日
【發(fā)明人】董瑋, 陳純, 卜佳俊, 俞杰, 傅凱博
【申請人】浙江大學(xué)