改進曼徹斯特對光信號編碼

文章鋪墊

我為什么要編碼

  • 開發(fā)的產(chǎn)品有一個功能妓忍,需要用模擬信號對數(shù)字信息進行編碼處理磷账,編碼完成后缝裁,通過模擬量傳遞到另一個設備,然后另一個設備該信號進行解碼 治拿。這里面就有兩步轉(zhuǎn)換和兩步逆轉(zhuǎn)換:
  • 發(fā)射端:將數(shù)字信息轉(zhuǎn)化數(shù)字二進制編碼信號摩泪,將數(shù)字編碼信號轉(zhuǎn)化為模擬信號。
  • 接收端:模擬信號轉(zhuǎn)化為數(shù)字編碼信號劫谅,將數(shù)字編碼信號解碼為數(shù)字信息见坑。
  • 對數(shù)字信號編碼模擬信號是如何轉(zhuǎn)化為數(shù)字信號的問題嚷掠,在此文章中不提及。

正文

常用的編碼方式

  • 本來是不需要介紹這一小節(jié)鳄梅,不過筆者在網(wǎng)上查找該編碼的詳細介紹時叠国,感覺講的都不是很清楚,要么就是不夠簡練戴尸,廢話一堆粟焊,要么就是太簡練,到了看不懂的程度孙蒙,筆者有時候都在懷疑作者自己有沒有搞明白项棠。
  1. 文字敘述:時鐘源之間如果是上升沿挎峦,則表示0香追,下降沿則表示1。當然坦胶,你也可以反過來透典。
  2. 規(guī)律:看兩個虛線之間,如果是下降顿苇,對應的數(shù)字信號欄就是1峭咒,反之為0。

曼徹斯特編碼

圖片來自網(wǎng)絡纪岁,點擊可看來源

  • 差分曼徹斯特編碼
  1. 時鐘源開始信號為標準凑队,如果在虛線處保持電平,則表示為1幔翰,如果在虛線處發(fā)生了翻轉(zhuǎn)漩氨,則表示為0。
  2. 規(guī)律:數(shù)字信號欄遗增,第一個數(shù)字為1叫惊,左側(cè)虛線對應的差分編碼電平?jīng)]有反轉(zhuǎn),第二個數(shù)字是0做修,左側(cè)虛線信號發(fā)生了反轉(zhuǎn)霍狰,如此進行。

差分曼徹斯特編碼缓待,紫色圈部分

圖片來自上上圖統(tǒng)一網(wǎng)絡蚓耽,筆者做了些粗暴的編輯

使用差分曼徹斯特編碼的好處

  • 在無法提供準確渠牲,且穩(wěn)定的系統(tǒng)時鐘的情況下旋炒,采用該編碼,只需要區(qū)分1倍時鐘長度和2倍時鐘長度签杈。
  • 延續(xù)上一項瘫镇,設備的發(fā)射端和接收端不再需要協(xié)商一個標準的傳輸速率(比如通信里面常用的波特率)鼎兽,發(fā)射端只需要在數(shù)據(jù)的開頭,隨意發(fā)射一段相對固定頻率的信號铣除,作為1倍時鐘長度谚咬,接收端則可以計算出2倍時鐘長度

算法優(yōu)化

  • 上文說道,曼徹斯特編碼只需要1倍時鐘長度和2倍時鐘長度的區(qū)分尚粘,就可以對數(shù)據(jù)進行編碼择卦,這種說法是有前提的,不知道細心的讀者發(fā)現(xiàn)了沒有郎嫁。差分曼徹斯特編碼秉继,沒有反轉(zhuǎn)的情況用0表示,有反轉(zhuǎn)的情況用1表示泽铛。那么如果出現(xiàn)連續(xù)多個0的情況尚辑,電平可能一直不會發(fā)生反轉(zhuǎn),這時候還需要區(qū)分3倍時鐘長度盔腔,4倍杠茬,甚至更多......
  • 于是還是要引出IBM公司于1983年發(fā)明的8B/10B方式。應用該方法弛随,大大彌補了連續(xù)多個0出現(xiàn)的情況瓢喉,數(shù)據(jù)的傳輸速率和準確性都有了比較大的提高。
  • 8B/10B編碼枚舉量太撵幽,下圖給出4B/5B的編碼灯荧,感受一下即可:
4B/5B編碼

圖片來自百度百科

附上C語言代碼

  • 編碼
    說明:該編碼的代碼是項目里面的源代碼片段,有一些別的算法影子夾雜在里面盐杂,主要是有8B/10B的編碼算法和容差處理逗载,強烈建議看看就行了,不要copy链烈。
/*曼徹斯特差分編碼
輸入:  str0:原始二進制數(shù)據(jù)
no_flip_len:無翻轉(zhuǎn)的數(shù)據(jù)長度
輸出: str1:二進制流數(shù)據(jù)
    bit_len:二進制數(shù)據(jù)長度
*/
void Dif_Manchester1(u8* str0, u8* str1,u16 no_flip_len,u8* bit_len)
{
    u16 avg=0;
    u16 count=1;
    u16 count_0=0;
    u16 j=0;
    avg = averge_range(str0);
    while(count<no_flip_len)
    {
        if(!(*str0^*(++str0)))
        {
            count++;
        }else
        {
            if((count%avg)>(avg*2/3))//此處做了容差處理
            {
                count_0 = (count / avg)+1;
            }else
            {
                count_0 = (count / avg);
            }
            if(count_0 >= 2)//此處做了8B/10B編碼處理
            {
                str1[j] = 0;
                j += 1;
            }
            str1[j] = 1;
            j += 1;
            count = 1;
        }
    }
    *bit_len = j - 1;
} 
  • 解碼就不寫了厉斟,理解了算法,代碼只是體力活

CrekerLi强衡,2017年9月2日修改以前的筆記擦秽。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市漩勤,隨后出現(xiàn)的幾起案子感挥,更是在濱河造成了極大的恐慌,老刑警劉巖越败,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件触幼,死亡現(xiàn)場離奇詭異,居然都是意外死亡究飞,警方通過查閱死者的電腦和手機置谦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門堂鲤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人媒峡,你說我怎么就攤上這事瘟栖。” “怎么了谅阿?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵半哟,是天一觀的道長。 經(jīng)常有香客問我签餐,道長镜沽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任贱田,我火速辦了婚禮缅茉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘男摧。我一直安慰自己蔬墩,他們只是感情好,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布耗拓。 她就那樣靜靜地躺著拇颅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪乔询。 梳的紋絲不亂的頭發(fā)上樟插,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音竿刁,去河邊找鬼黄锤。 笑死,一個胖子當著我的面吹牛食拜,可吹牛的內(nèi)容都是我干的鸵熟。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼负甸,長吁一口氣:“原來是場噩夢啊……” “哼流强!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起呻待,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤打月,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蚕捉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奏篙,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年鱼冀,在試婚紗的時候發(fā)現(xiàn)自己被綠了报破。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡千绪,死狀恐怖充易,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情荸型,我是刑警寧澤盹靴,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站瑞妇,受9級特大地震影響稿静,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜辕狰,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一改备、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蔓倍,春花似錦悬钳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至聚谁,卻和暖如春母剥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背形导。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工环疼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人朵耕。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓秦爆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親憔披。 傳聞我的和親對象是個殘疾皇子等限,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容