繼續講解!上堂課給出了例題!讓我們一起來看看解題過程。
請注意結論!
下堂課詳細講解漢明碼。
漢明碼(Hamming Code)是在電信領域的一種線性調試碼,以發明者理查德·衛斯里·漢明的名字命名。漢明碼在傳輸的消息流中插入驗證碼,當計算機存儲或移動數據時,可能會產生數據位錯誤,以偵測并更正單一比特錯誤。由于漢明編碼簡單,它們被廣泛應用于內存(RAM)。通信領域里面也用它哦,比如:Lora里面就用到了。在本公眾號里面有漢明碼的編譯碼程序,歡迎大家前去了解。先了解一下漢明碼的歷史吧。
1940年,漢明在貝爾實驗室(Bell Labs)工作,使用貝爾模型V(Bell Model V)電腦(一個周期時間在幾秒鐘內的機電繼電器機器)。輸入端是依靠打孔卡(Punched Card),這不免有些讀取錯誤。在平日,特殊代碼將發現錯誤并閃燈(flash lights),使得操作者能夠糾正這個錯誤。在周末和下班期間,在沒有操作者的情況下,機器只會簡單地轉移到下一個工作。漢明在周末工作,他對于不可靠的讀卡機發生錯誤后,總是必須重新開始項目變得愈來愈沮喪。在接下來的幾年中,他為了解決調試的問題,開發了功能日益強大的調試算法。在1950年,他發表了今日所稱的漢明碼。現在漢明碼有著廣泛的應用。
再來看看漢明碼如何進行檢錯和糾錯?漢明碼(Hamming Code)是一個可以有多個校驗位,具有檢測并糾正一位錯誤代碼的糾錯碼,所以也僅用于信道特性比較好的環境中,如以太局域網。所以lora通信體制中采用了它。
它的檢錯、糾錯基本思路如下:
(1)將有效信息按某種規律分成若干組,每組安排一個校驗位通過異或運算進行校驗,得出具體的校驗碼;
(2)在接收端同樣通過異或運算看各組校驗結果是否正確,并觀察出錯的校校組,或者多個出錯的校驗組的共同校驗位,得出具體的出錯比特位;
(3)對錯誤位取反來將其糾正;
想看編譯碼程序嗎?公眾號《通信工程師專輯》中可以找到多種編譯碼的仿真程序!
編譯碼代碼可以在本公眾號里面找到!
在一組數的編碼中,若任意兩個相鄰的代碼只有一位二進制數不同,則稱這種編碼為格雷碼(Gray Code),另外由于最大數與最小數之間也僅一位數不同,即“首尾相連”,因此又稱循環碼或反射碼。在數字系統中,常要求代碼按一定順序變化。例如,按自然數遞增計數,若采用8421碼,則數0111變到1000時四位均要變化,而在實際電路中,4位的變化不可能絕對同時發生,則計數中可能出現短暫的其它代碼(1100、1111等)。在特定情況下可能導致電路狀態錯誤或輸入錯誤。使用格雷碼可以避免這種錯誤。格雷碼有多種編碼形式。
格雷碼(Gray Code)曾用過Grey Code、葛萊碼、格萊碼、戈萊碼、循環碼、反射二進制碼、最小差錯碼等名字,它們有的不對,有的易與其它名稱混淆,建議不要再使用這些曾用名。請看清楚這兩個碼的差別,中文名稱一樣的,但英文不一樣哦。注意差別!!!
太常用了!
本公眾號已經給出了相關仿真程序!
調制和編碼相結合!
譯碼難度很大,當年讀研究生的時候花了好長時間來“咀嚼”這方面的知識!大家看完卷積碼的譯碼知識就知道這方面的難度了!維特比譯碼函數如何寫呢?后面會告知。
維特比譯碼是一種最大似然譯碼算法,它不是比較所有可能的2的L次方個發送序列與接收序列之間的距離。考察卷積碼的網絡圖,在穩定狀態時,每個節點都有若干個支路歸入,所以在譯碼過程中,不斷地考察到達每個節點的支路度量值,將該節點上已不可能獲得最大對數似然函數的路徑丟棄,然后在剩下的“幸存”路徑中重新選擇譯碼路徑,一直進行到最后第L級。
由于維特比算法較早地丟棄了那些不可能的路徑,從而大大減小運算量。來看看老師編寫的程序,感受一下這個算法!
管中窺豹!
%%% 卷積碼譯碼函數模塊程序
%%% File: function_trunk_conv_decoder.m %%%
%%% date: 2011-07-06 author: 算法工匠 %%%%%
%%%%%% 函數名 %%%%%%
function decoded_bits = function_trunk_conv_decoder(rx_bits,GenPoly,dect_type,tblen)
%%% 程序說明
% 實現連續方式下軟/硬判決Viterbi譯碼算法。
% 本程序到達回溯深度即開始判決已有比特,
% 輸出比特無延時輸出,加入輸入參量tblen。
% 在確定譯碼深度的情況下,可以選擇輸出比特是否有延時輸出。
% 本函數默認為無延時輸出方式。
% 只針對(2,1,m)方式
%%%% 程序要求
% 軟硬判決時,輸入數據為-1或1 和 [-2^(n-1) 2^(n-1)-1]
% n為量化比特數 形式,即輸入必須為雙極性信號;
寫出網格圖是關鍵!可以在本公眾號的文章里面找到這個程序!同學們慢慢細看和消化!這方面的代碼在網上獨一份,希望大家能夠珍惜!站在我的肩膀上,可以讓你的仿真能力快速提升!
程序在文章里面!
維特比譯碼確實比較復雜,當年花了半年時間才真正的寫好維特比譯碼函數。要考慮的內容比較多,比如什么時候開始進行回溯譯碼比較合適?維特比譯碼的性能相比分組碼等其他編碼的譯碼性能究竟好在哪里,如何來評估?編碼約束度和監督位數量對維特比譯碼的性能是如何產生影響?這里本來想描述一種優雅高效的卷積碼譯碼方法,它避免我們對N個比特序列的2^N種可能的路徑組合做窮舉。該方法由Andrew Viterbi 發明,并以他的名字命名。但內容太多,就以后再聊吧。安德魯·維特比(Andrew J. Viterbi),CDMA之父,IEEE Fellow ,高通公司創始人之一,高通首席科學家。他開發了卷積碼編碼的最大似然算法而享譽全球。現在知道高通為什么能這么牛了吧?華為正在迎頭趕上!無奈經常被掐脖子!通信人要奮起直追啊,我只能喊喊口號了,不過公眾號里面的程序是實實在在的技術支持。
再來看看RS碼!
注意紅色字體!
突發錯和隨機錯的差異!!!
想看譯碼過程嗎?
這里還有級聯碼的知識點!
復雜度增加了,
優秀的本科生可以學習!
還有香農極限碼,它們的代表有Turbo碼(TCC碼)、Turbo乘積碼(TPC碼)、低密度校驗碼(LDPC碼)。在碼長為107時,非正則LDPC碼的性能與香農極限只差0.0045dB,這個性能是目前所有碼字中最好的。這些編譯碼的仿真程序將于2023年在公眾號里面推出,敬請期待!
TPC碼已作為Intelsat新一代衛星通信地球站的標準(IESS-315),并已經出現眾多商用設備。LDPC碼已作為第二代衛星數字廣播系統(DVB-S2)的標準編碼方式。我國通信系統基本上都涉及這些編碼方式了。
作業來了。
解釋編碼增益的概念;編寫BCH碼結合BPSK的仿真程序;編寫卷積碼結合BPSK的仿真程序;上交仿真報告。
建議:現在網上找相關的仿真程序,然后慢慢消化。這是掌握知識的捷徑。未完,后續更精彩!
Lora知識分享
Lora wan網絡結構
終端節點并不與特定的網關連接。由終端發出的數據通常可以被多個網關接收,每個網關再通過TCP/IP網絡(可以是GPRS, WIFI、衛星或以太網)將接收到的數據包發往云網絡服務器,服務器將通過時間表來剔除多個網關發來的重復數據。如果一個終端是移動的,那么此功能可以保證數據的正常收發,并且可以偵測到靜止終端的非正常移動,保證了資產安全,除此之外,服務器還會執行安全檢查和自適應數據速率等,將智能性和復雜性轉移到服務器,使設備得到簡化。
LoRa調制解調器具有兩種數據包模式:顯示模式和隱式模式。
區別在于,顯示數據包模式有一個包含字節數、編碼率以及數據包是否啟用CRC等信息的報頭。如下圖所示的數據包結構圖,主要包含前導碼、可選報頭、數據有效負載和負載的CRC校驗。
前導碼用于保持接收機與接收數據流之間的同步。其長度是一個可通過編程來設置的變量,默認長度為12個符號,設置范圍在6到65536之間。在接收數據量較大的應用中,可通過縮短前導碼的長度,縮短終端接收的占空比。前導碼最小允許長度就可以滿足通信需求,其可變長度主要應用在喚醒設備。這些概念很重要!!!
終端會定期檢測發射機信號的前導碼,接收機只有檢測到前導碼長度等于自身設定的長度時才會開始接收數據,并向CPU發出中斷或者將中斷寄存器置1,以供CPU定時查詢該寄存器,否則保持休眠態。
修訂記錄
20190219 完成初稿;
20230111修訂內容v2;
原文標題:衛星通信v2 第四章 傳輸技術(4)
文章出處:【微信公眾號:通信工程師專輯】歡迎添加關注!文章轉載請注明出處。
-
通信網絡
+關注
關注
21文章
2043瀏覽量
52105
原文標題:衛星通信v2 第四章 傳輸技術(4)
文章出處:【微信號:gh_30373fc74387,微信公眾號:通信工程師專輯】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論