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