脈衝編碼調變

脈衝編碼調變（Pulse-code modulation，縮寫：PCM）是一種類比訊號的數位化方法。PCM將訊號的強度依照同樣的間距分成數段，然後用獨特的數位記號（通常是二進位）來量化。PCM常用於數位電信系統上，也是電腦和紅皮書中的標準形式。在數位視訊中它也是標準，例如使用 ITU-R BT.601。但是PCM並不流行於諸如DVD或DVR的消費性商品上，因為它需要相當大的位元率（DVD格式雖然支援PCM，不過很少使用）；與之相較，壓縮過的音訊較符合效率。不過，許多藍光光碟使用PCM作音訊編碼。非常頻繁地，PCM編碼以一種序列通訊的形式，使數位傳訊由一點至下一點變得更容易——不論在已給定的系統內，或物理位置。

## 調製

在圖示中，一個正弦波（紅色曲線）取樣和量化為PCM。正弦波在每段固定時間內得到取一次樣，即x軸的刻度。而每一個樣本則依照某種運算法（在這個例子中是ceiling function），選定它們在y軸上的位置。這樣便產生完全離散的輸入訊號的替代物，很容易編碼成為數位資料，以作保存或操縱。以右圖為例，很清楚看出樣本為8、9、11、12、13、14、15、15、15、14...等，將它們以二進位編碼，就得到一組一組的數字：1000、1001、1011、1100、1101、1110、1111、1111、1111、1110...等，這些數位資料之後就可以由特定用途的DSP或者一般的CPU所處理。有一些PCM資料流可以和較大的聚合資料流作多工傳輸（multiplex），通常在物理層傳輸資料時都會這麼做。這個技術稱作 「時分多路復用（Time-Division Multiplexing，TDM）」 （或 「分時多工」，「時分復用」），非常廣泛地使用，例如現代的公共電話系統。

有許多方法可以內置一個處理調變的真實裝置。在真實系統中，這種裝置一般獲放在單一個晶片中，並搭配一個振盪器，稱作「類比至數位轉換器（analog-to-digital converter，ADC）」。這些裝置透過振盪器觸動輸入訊號的接受，並且輸出數位化的訊號至某種處理器。

## 解調

從數位訊號回製成類比訊號的過程，就如同把調變的過程逆轉一樣，稱作解調變（demodulation）。在理想的系統上，每經過取樣的固定時間而讀取新的資料時，輸出會即時改變到該強度。經過這樣的即時轉換，離散的訊號本質上會有大量的高頻率能量，出現與取樣頻率的倍數相關的諧波（見方波）。要消滅這些諧波並使訊號流暢，訊號必須通過一些類比濾波器，壓制任何在預期頻域外的能量（例如大於$\frac{1}{2} f_s$的頻域，這是理論上最高的解析度）。有些系統使用數位濾波器來移除最低和最高的諧波，而在有些系統中不使用任何外部的濾波器，因為不可能有系統重製出無限大的頻寬，系統本身的不足補足了訊號重製上的瑕疵，或者該系統根本就不要求準確度。取樣原理說明，任何一種PCM裝置，只要提供相對於輸入訊號足夠大的取樣頻率，在期望頻域中就不會有顯著的失真因素。

從離散的資料重製回類比訊號所使用的電子學，與從類比至數位是相似的。這些裝置稱作「數位至模擬轉換器（digital-to-analog converters, DAC）」，與ADC的運作相似。它們依照輸入的數位訊號，輸出電壓或電流（看情況則種類不同），這個輸出然後經過濾波器和放大器，達成回放。

## 限制

可注意的是，在任何PCM系統中，本質上有兩種損害的來源：

- 在量化時，取樣必須迫於選擇接近哪一個整數值（即量化誤差）。
- 在樣本與樣本之間沒有任何資料，根據取樣原理，這代表任何頻率大於或等於$\frac{1}{2} f_s$（fs即取樣頻率）的訊號，會產生失真，或者完全消失（aliasing error）。這又稱作奈奎斯特頻率（Nyquist frequency）。

由於所有樣本都依據時間取樣，重製時至關重要的便是一個準確的振盪器。如果編碼或解碼時，任何一方的振盪器不穩定，頻率漂移就會使輸出裝置的品質降低。如果兩方的頻率具有些微的差異，穩定的誤差對於品質而言並非巨大的問題。但一旦振盪器並非穩定的（即脈動的間距不相等），不論是音訊或者視訊上，都將造成巨大的失真。

## 數位化

在一般的PCM中，類比訊號在數位化之前會經過一些處理（如振幅壓縮）。一旦經數位化，PCM訊號通常會再進一步處理（如數位資料壓縮）。

有些形式的PCM把訊號處理結合在編碼過程中。老一點的系統會把訊號的處理放在類比迴路中，當作類比至數位轉換（A/D）的一部分，新的系統則放在數位迴路中。不過由於現代基礎於轉換的音訊壓縮技術，這些簡單的技術大部分已被認為過時。

- Differential（差異）或Delta PCM（DPCM）紀錄的是目前的值與前一個值的差異值。與相等的PCM比較，這種編碼只需要25%的位元數。
- Adaptive DPCM（ADPCM）是DPCM的變形，給定一個噪訊比，以節省量化密度的方式，允許更大程度的節省頻寬。

在電話學中，電話的聲音訊號編碼標準是每秒8000個類比樣本，每個樣本8位元，總共每秒64 kbit的數位訊號，即DS0。DS0預設的訊號壓縮法若非μ-law (mu-law) PCM（美國和日本），就是a-law PCM（歐洲和世界剩餘地方），這些對數壓縮系統能將12或13位元的線性PCM轉換成8位元的值。這個系統獲描述於國際標準G.711中。另外，曾有使用浮點數的企圖，以5位元的尾數搭配3位元的基數，不過已經放棄。

當電路的成本過高、或者可接受損失音質的情況下，將聲音訊號更進一步壓縮將會較有效率。有一種ADPCM運算法是用來把8位元的PCM訊號轉換成4位元的ADPCM訊號，這樣電線的頻寬將能倍增。這個技術詳細地描述於G.726標準中。

稍後又發現可能進一步壓縮，並開發新一代的標準格式。在這些描述新系統或新概念的國際標準當中，有些屬於私人的專利技術，要使用它們必須付費。

有些ADPCM技術用於Voice over IP通訊當中。

## 傳輸的編碼

PCM的紀錄方式可以是「歸零式（return-to-zero, RZ）」的，也可以是「非歸零式（non-return-to-zero, NRZ）」的。若要使用頻寬內的資訊讓一個NRZ系統達到同步，則必定不能有長串的相同符號出現，例如連續的1或連續的0。對於二進位PCM系統來說，「1」符號的密度稱作「ones-density」。

ones-density可以透過諸如Run Length Limited的預編碼方式控制，編碼後的PCM代碼會稍微長一些，這樣可以保證在寫入音軌之前，ones-density在一定閾值以下。在另一些情況中，會寫入額外的「framing」位元，來保證在一段時間內，1或0至少會改變一次。

另外一個控制ones-density的方法是使用「scrambler」多項式，通過函式運算讓原本的資料變成看起來如偽亂數般的排列，而要回覆原本的資料只需要倒轉該多項式的效果就可以。在這種技巧中，一連串的1或0仍然可能發生在輸出中，但在一般的工程容忍度上，已經不太可能發生錯誤。

另外，訊號的直流輸出的穩定性十分重要，因為逐漸累積的直流輸出誤差（offset）會導致偵測迴路的運作超出範圍。在這種情況下，必須作特殊的測量來計算直流輸出的累積誤差，並且在必要時改變電壓大小來讓誤差永遠趨向零。

許多的這些代碼都是兩極的，脈衝要不是正就是負，或者完全沒有。在典型的alternate mark inversion代碼中，非0脈衝在正和負之間轉變。不過這些規則有可能因為必須置入「framing」或者其他特殊用途的代碼而遭到違反。

- 見 T-carrier

## PCM的歷史

評價上，PCM就像其他偉大的發明一樣簡單而明瞭。在電子通訊的歷史中，採用訊號取樣的最早理由，是為了使不同的電報系統能夠使用同一條電纜線互通有無。電報分時多工TDM（time-division multiplexing）的概念在1853年首次由美國發明家 M.B. Farmer 提出。在1903年，電技師 W.M. Miner 使用一種電力驅動的機械交換器真正達成分時多工 (TDM)，讓一條線負載許多電報訊號，並將其應用於電話機上。他並使用以 3500 至 4300 赫茲頻率取樣的話機，發表一段清晰的談話：「below this was unsatisfactory.」（指取樣頻率）。但這只是TDM，使用的編碼是脈衝振幅調變（pulse-amplitude modulation, PAM）而非 PCM。

1920年Bartlane電纜圖像傳輸系統首次利用模擬信號橫跨大西洋傳送了一張5級灰度圖片。西方電子（Western Electric，後來成為 AT&T）的 Paul M. Rainey，在 1926 年註冊了一台傳真機的專利，它使用了光學機械ADC。但這台機器並未量產。英國工程師 Alec Reeves 並不知道這項發明，相反地，1937 年他在為法國的 ITT（International Telephone and Telegraph）工作時，發現了 PCM 在聲音傳訊上的用處。他寫出了它的理論以及優點，但並未付諸實現。在 1938 年他為此申請了專利，而美國的專利則在 1943 年批准。

第一次的數位音訊傳輸發生於二次大戰間的 1943 年，使用了 SIGSALY 聲音編碼設備。它獲盟軍用來傳輸高音質的訊息。

在 1943 未過一半以前，設計 SIGSALY 系統的貝爾實驗室同樣發現了 Alec Reeves 所發現的 PCM 的那種妙用。

在 1950 年代，PCM 必須使用陰極射線管加上一個有孔的極板網柵。如同在示波器上見到的那樣，電波以取樣頻率水平地掃過，而垂直偏向則由輸入的類比訊號來控制，最終讓電波通過在極板上高低不一的孔。極板截斷了電波，產生二進位代碼形式的電流。與真正的二進位數不同，這個極板設計成可以產生格雷碼（Gray code），避免兩極轉換時出現干擾。

## PCM的命名

「脈衝」一詞用在「脈衝編碼調變」中似乎顯得令人困惑，因為除了在電線中的電力以外，並沒有任何明顯可見的「脈衝」。但由於這項技術發展自另外兩個類比技術，脈衝寬度調變和脈衝位置調變，這樣的結果則顯得自然。在這兩項技術中，資訊實際上就是依照離散訊號脈衝的不同寬度或位置來作編碼的。由這點來說，PCM、PWM 和 PPM 除了三者都能用於 TDM 上，以及 PCM 的確將它的代碼表回脈衝以外，PCM 和它的前輩們確實很不相像。在電話的電路中，用於編碼和解碼功能的裝置稱作codec(Coder+Decoder 的合稱)。

## 參見

- CDDA：紅皮書所規定的音訊CD使用16-bit PCM
- 麗音廣播:使用14-bit PCM
- Equivalent pulse code modulation noise
- G.711：ITU-T用於音訊companding的標準，最主要用於電話上
- 線性PCM
- Nyquist–Shannon 取樣定理
- 脈衝寬度調製
- 量化 (訊號處理)
- 取樣 (訊號處理)
- SQNR：偵測量化失誤的方法之一

## 外部連結

- Ralph Miller and Bob Badgley invented multi-level PCM independently in their work at Bell Labs on SIGSALY: : N-ary Pulse Code Modulation.
- According to the Inventors Hall of Fame, B.M Oliver and Claude Shannon are the inventors of PCM as described in 'Communication System Employing Pulse Code Modulation,' filed in 1946 and 1952, granted in 1956.
- Information about PCM : A description of PCM with links to information about subtypes of this format (for example Linear Pulse Code Modulation), and references to their specifications.