不歸零 曼徹斯特 差分曼徹斯特編碼的c 實現

2021-10-03 04:43:23 字數 1565 閱讀 8487

1)不歸零編碼

訊號電平由0、1表示,並且在表示完乙個碼元後,電壓不需回到0

數碼訊號可以直接採用基帶傳輸(未對載波訊號稱為基帶訊號,也就是不許需要搬移基帶訊號頻譜的傳輸方式,近距離的區域網常採用這種方式)

對於不歸零編碼的缺點

1.很難說清訊號的開始和結束

2.傳送和接受必須要時鐘同步

3.多個連續的數字可能會出現累計誤差

4.容易發生傳播錯誤

由於nzr不具有自同步的特性,需要先傳送乙個同步頭,比如0101010的方波訊號,讓接收者通過這個同步頭計算出傳送者的頻率,然後再用這個頻率來取樣之後的資料訊號

2)曼徹斯特編碼

每一位的中間有一跳變,位中間的跳變既作時鐘訊號,又作資料訊號;從高到低跳變表示「1」,從低到高跳變表示「0」。

優點:克服了nrz編碼的缺點;用作時鐘的自同步

缺點:增加了通道頻率頻寬的要求,同時高頻率的噪音增加,容易受到噪音的干擾

二義性3)差分曼徹斯特編碼

每位中間的跳變僅提供時鐘定時,而用每位開始時有無跳變表示「0」或「1」,有跳變為「0」,無跳變為「1」。

對於他們的c++實現,可以依據定義來進行輸出

**如下

#include

#include

#include

#include

using

namespace std;

void

nrz(

const

char

* num)

;void

mcoding

(const

char

* num)

;void

cmcoding

(const

char

* num)

;int

changenum

(int num)

;int

main()

void

nrz(

const

char

*num)

cout << endl;

}void

mcoding

(const

char

* num)

else

} cout<

}void

cmcoding

(const

char

* num)

else

}for

(int i =

0; i < length; i++

) cout << endl;

}int

changenum

(int num)

執行結果如下圖

第二個為曼徹斯特編碼

第三個為差分曼徹斯特編碼

歸零碼與不歸零碼

基帶傳輸時,需要解決數字資料的數碼訊號表示以及收發兩端之間的訊號同步問題。對於傳輸數碼訊號來說,最簡單最常用的方法是用不同的電壓電平來表示兩個二進位制數字,也即數碼訊號由矩形脈衝組成。按數字編碼方式,可以劃分為單極性碼和雙極性碼,單極性碼使用正 或負 的電壓表示資料 雙極性碼是三進製碼,1為反轉,0...

有關不歸零碼 NRZ 的理解

按數字編碼方式,可以劃分為單極性碼和雙極性碼,單極性碼使用正 或負 的電壓表示資料 雙極性碼是三進製碼,1為反轉,0為保持零電平。根據訊號是否歸零,還可以劃分為歸零碼和非歸零碼,歸零碼碼元中間的訊號回歸到0電平,而非歸零碼遇1電平翻轉,零時不變。常見的幾種基本的數碼訊號脈衝編碼方案如下 單極性不歸零...

Matlab實現單 雙 極性 不 歸零碼

首先需要確定單個碼元訊號,以一秒為乙個碼元週期,每次取樣128個點得到兩個碼元訊號,分別是rz訊號和nrz訊號 生成單個碼元 ts 1 碼元週期 n sample 128 單個碼元抽樣點數 dt ts n sample 抽樣時間間隔 n 100 碼元數 t 0 dt n n sample 1 dt ...