算機(jī)網(wǎng)絡(luò)物理層編碼:從NRZ到曼徹斯特,解析同步與效率的基石)
1. 從信號(hào)到比特編碼是計(jì)算機(jī)網(wǎng)絡(luò)的“通用語(yǔ)言”剛接觸計(jì)算機(jī)網(wǎng)絡(luò)的朋友可能會(huì)被各種協(xié)議、幀結(jié)構(gòu)、路由算法搞得暈頭轉(zhuǎn)向。但無(wú)論上層應(yīng)用多么復(fù)雜數(shù)據(jù)最終都要變成物理線纜上或無(wú)線空間中的一串串電信號(hào)或光信號(hào)進(jìn)行傳輸。這個(gè)將數(shù)字信息0和1轉(zhuǎn)換為適合在特定物理媒介上傳輸?shù)男盘?hào)形式的過(guò)程就是編碼。你可以把它理解為計(jì)算機(jī)世界與物理世界之間的“翻譯官”。沒(méi)有編碼你的微信消息、網(wǎng)頁(yè)內(nèi)容、視頻流都無(wú)法跨越千山萬(wàn)水到達(dá)對(duì)方的設(shè)備。編碼方式的選擇直接關(guān)系到通信的可靠性、效率和成本。一個(gè)糟糕的編碼方案可能導(dǎo)致數(shù)據(jù)在傳輸過(guò)程中大量出錯(cuò)或者需要更寬的帶寬、更復(fù)雜的接收設(shè)備。今天我們就來(lái)深入聊聊幾種在計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)中至關(guān)重要的編碼形式不歸零碼、歸零碼以及曼徹斯特編碼。理解它們不僅是應(yīng)對(duì)考試比如408計(jì)算機(jī)學(xué)科專業(yè)基礎(chǔ)綜合的關(guān)鍵更是你真正看懂網(wǎng)絡(luò)底層如何工作的基石。無(wú)論你是正在備考的學(xué)生還是希望夯實(shí)基礎(chǔ)的開(kāi)發(fā)者這篇文章都將帶你從“為什么需要編碼”開(kāi)始一步步拆解每種編碼的機(jī)制、優(yōu)劣和典型應(yīng)用場(chǎng)景。2. 編碼的核心訴求與評(píng)價(jià)維度在深入具體編碼方式之前我們必須先建立一套評(píng)價(jià)體系。就像挑選工具你得先知道要干什么活才能判斷錘子、螺絲刀哪個(gè)更合適。編碼方案的選擇主要圍繞以下幾個(gè)核心訴求展開(kāi)2.1 時(shí)鐘同步接收方如何知道一個(gè)比特何時(shí)開(kāi)始與結(jié)束這是編碼要解決的首要問(wèn)題。發(fā)送方以固定的速率比如每秒100萬(wàn)個(gè)比特即1Mbps發(fā)送數(shù)據(jù)。接收方必須能以完全相同的節(jié)奏來(lái)采樣信號(hào)才能正確識(shí)別出每一個(gè)比特。如果接收方的“節(jié)拍”快了或慢了就會(huì)導(dǎo)致比特錯(cuò)位整個(gè)數(shù)據(jù)流都會(huì)亂套。編碼方案能否自帶時(shí)鐘信息或者能否讓接收方容易地從數(shù)據(jù)流中提取出時(shí)鐘信號(hào)是衡量其優(yōu)劣的關(guān)鍵指標(biāo)。不具備良好同步能力的編碼需要額外復(fù)雜的時(shí)鐘恢復(fù)電路增加了系統(tǒng)成本和復(fù)雜度。2.2 直流平衡信號(hào)中是否包含長(zhǎng)期的平均分量如果一種編碼產(chǎn)生的信號(hào)長(zhǎng)期來(lái)看高電平如5V和低電平如0V或-5V的時(shí)間不均衡就會(huì)產(chǎn)生一個(gè)直流分量。這個(gè)直流分量對(duì)于變壓器耦合的線路如以太網(wǎng)使用的雙絞線是有害的它會(huì)導(dǎo)致變壓器磁芯飽和使信號(hào)失真。同時(shí)直流分量也意味著能量浪費(fèi)。因此好的編碼應(yīng)盡量使信號(hào)在統(tǒng)計(jì)上保持直流平衡即0和1出現(xiàn)的概率大致相等且高、低電平的持續(xù)時(shí)間對(duì)稱。2.3 帶寬效率用多寬的頻率范圍來(lái)傳輸數(shù)據(jù)帶寬是寶貴的資源。編碼方案將數(shù)字比特流映射為物理信號(hào)時(shí)會(huì)占據(jù)一定的頻率范圍。這個(gè)范圍越窄在同樣的物理媒介上就能容納更多的數(shù)據(jù)通道或者說(shuō)傳輸相同速率的數(shù)據(jù)所需的帶寬越小效率就越高。評(píng)估帶寬效率的一個(gè)粗略方法是看信號(hào)電平變化的頻繁程度。變化越頻繁信號(hào)包含的高頻成分就越多所需帶寬就越寬。2.4 抗干擾與檢錯(cuò)能力信號(hào)受到干擾后能否被識(shí)別實(shí)際的傳輸環(huán)境充滿噪聲。編碼方案需要有一定的魯棒性使得在信號(hào)幅度因噪聲而發(fā)生變化時(shí)接收電路仍能可靠地判決出是0還是1。有些高級(jí)編碼如后面會(huì)提到的曼徹斯特編碼的波形本身具有規(guī)律性一旦被破壞接收方可以察覺(jué)出異常從而具備一定的差錯(cuò)檢測(cè)能力?;谝陨暇S度我們?cè)賮?lái)審視具體的編碼方案就能理解其設(shè)計(jì)初衷和適用場(chǎng)景了。3. 不歸零碼最直觀但問(wèn)題最多的“原始”方案不歸零碼是最簡(jiǎn)單、最直觀的編碼方式。它直接用電平的高低來(lái)代表二進(jìn)制數(shù)字。3.1 NRZ-L與NRZ-I兩種電平定義NRZ-L采用絕對(duì)電平例如高電平如5V代表比特1低電平如0V或-5V代表比特0。接收方只需要在每個(gè)比特周期中點(diǎn)采樣判斷電平高低即可。NRZ-I采用差分相對(duì)電平它用電平是否發(fā)生翻轉(zhuǎn)來(lái)代表信息。通常約定在比特周期開(kāi)始時(shí)電平發(fā)生翻轉(zhuǎn)代表比特1電平保持不變代表比特0。NRZ-I的優(yōu)勢(shì)在于因?yàn)樗歉鶕?jù)“變化”來(lái)判定的所以對(duì)于極性反轉(zhuǎn)比如線路接反了所有5V變成-5V-5V變成5V不敏感接收方依然能正確解碼。這在一些容易發(fā)生極性不確定的場(chǎng)景下很有用。注意我們常說(shuō)的“NRZ”通常指NRZ-L。在討論優(yōu)缺點(diǎn)時(shí)兩者在時(shí)鐘同步和直流平衡問(wèn)題上是相似的。3.2 NRZ的致命缺陷同步與直流平衡難題NRZ編碼雖然簡(jiǎn)單但其缺點(diǎn)在高速或長(zhǎng)距離通信中幾乎是致命的缺乏自同步能力這是NRZ最大的問(wèn)題??紤]一個(gè)長(zhǎng)時(shí)間連續(xù)發(fā)送“0”或“1”的數(shù)據(jù)流。對(duì)于NRZ-L信號(hào)將維持長(zhǎng)時(shí)間不變的電平。接收方無(wú)法從這平坦的信號(hào)中提取出時(shí)鐘邊沿其內(nèi)部時(shí)鐘很容易與發(fā)送方失步導(dǎo)致采樣點(diǎn)漂移最終誤碼。NRZ-I在遇到連續(xù)“0”時(shí)也有同樣的問(wèn)題??赡艽嬖趪?yán)重的直流分量如果傳輸?shù)臄?shù)據(jù)中0和1的數(shù)量不均衡比如一個(gè)文本文件中ASCII字符的分布NRZ信號(hào)就會(huì)有一個(gè)非零的平均電壓直流分量。如前所述這不利于變壓器耦合也會(huì)造成能量浪費(fèi)。檢錯(cuò)能力弱信號(hào)波形本身沒(méi)有內(nèi)在規(guī)律一旦因干擾導(dǎo)致電平輕微變化接收方無(wú)法判斷這是正常的比特還是受到了干擾。實(shí)操心得NRZ編碼因其電路實(shí)現(xiàn)極其簡(jiǎn)單在一些短距離、低速、對(duì)成本極度敏感的內(nèi)部通信中仍有應(yīng)用例如某些單片機(jī)之間的UART串口通信雖然UART協(xié)議本身通過(guò)起始位和停止位解決了部分同步問(wèn)題。但在標(biāo)準(zhǔn)的計(jì)算機(jī)網(wǎng)絡(luò)物理層中幾乎不會(huì)直接使用純NRZ編碼。4. 歸零碼試圖解決同步問(wèn)題的改進(jìn)嘗試為了解決NRZ的同步問(wèn)題歸零碼被提出。RZ編碼規(guī)則是在每個(gè)比特周期內(nèi)信號(hào)都會(huì)“歸零”。4.1 RZ編碼規(guī)則詳解一種典型的RZ編碼規(guī)則是比特1在比特周期的前半段為高電平后半段歸零低電平。比特0在比特周期內(nèi)始終保持為低電平或者另一種規(guī)則是前半段為低電平后半段歸零。這樣無(wú)論傳輸?shù)氖?還是1在每個(gè)比特周期的中間或結(jié)束時(shí)刻信號(hào)都會(huì)產(chǎn)生一個(gè)跳變回到零。這個(gè)固定的跳變?yōu)榻邮辗教峁┝素S富的時(shí)鐘同步信息。4.2 RZ編碼的優(yōu)缺點(diǎn)分析優(yōu)點(diǎn)具備自同步能力每個(gè)比特周期內(nèi)至少有一次固定的電平跳變歸零動(dòng)作接收方可以利用這些跳變來(lái)鎖定時(shí)鐘同步問(wèn)題得到極大改善。波形規(guī)律有一定檢錯(cuò)提示如果該歸零的時(shí)候信號(hào)沒(méi)有歸零接收方可以判斷可能出現(xiàn)了錯(cuò)誤。缺點(diǎn)帶寬需求翻倍為了在一個(gè)比特周期內(nèi)完成“高-零”或“低-零”的變化信號(hào)的變化頻率比NRZ高。這意味著傳輸相同速率的數(shù)據(jù)RZ需要大約兩倍于NRZ的帶寬。帶寬效率低。直流平衡問(wèn)題可能依然存在如果傳輸長(zhǎng)串的0根據(jù)上述規(guī)則0始終為低電平信號(hào)長(zhǎng)期處于低電平直流分量依然存在。功耗相對(duì)較高因?yàn)槊總€(gè)比特周期內(nèi)信號(hào)都要主動(dòng)驅(qū)動(dòng)到零電平增加了電路的開(kāi)關(guān)活動(dòng)。由于帶寬效率低的硬傷純粹的RZ編碼在現(xiàn)代高速網(wǎng)絡(luò)中也較少使用。但它為解決同步問(wèn)題提供了一種清晰的思路即在數(shù)據(jù)流中強(qiáng)制插入跳變。后續(xù)的許多編碼方案都繼承了這一思想精髓。5. 曼徹斯特編碼以太網(wǎng)的經(jīng)典選擇曼徹斯特編碼是局域網(wǎng)尤其是經(jīng)典以太網(wǎng)如10BASE510BASE210BASE-T的物理層標(biāo)準(zhǔn)編碼。它巧妙地解決了同步和直流平衡問(wèn)題。5.1 編碼規(guī)則與時(shí)鐘嵌入曼徹斯特編碼的規(guī)則非常統(tǒng)一每一個(gè)比特周期被分為相等的兩半。從高電平跳到低電平的跳變代表比特0。從低電平跳到高電平的跳變代表比特1。跳變發(fā)生在比特周期的正中間。這個(gè)定義需要仔細(xì)理解它表示的不是電平本身而是周期中間的跳變方向。正因?yàn)槊總€(gè)比特周期的正中間都必然發(fā)生一次電平跳變這個(gè)跳變就成了一個(gè)非常穩(wěn)定、規(guī)律的時(shí)鐘信號(hào)。接收方只需用一個(gè)鎖相環(huán)電路鎖定這個(gè)周期性的中間跳變就能完美地與發(fā)送方時(shí)鐘同步。5.2 曼徹斯特編碼的卓越特性強(qiáng)大的自同步能力這是其最大優(yōu)點(diǎn)。每個(gè)比特自帶時(shí)鐘邊沿徹底消除了長(zhǎng)連0或連1帶來(lái)的同步困擾。良好的直流平衡由于每個(gè)比特周期內(nèi)高電平和低電平各占一半時(shí)間無(wú)論代表0還是1從長(zhǎng)遠(yuǎn)統(tǒng)計(jì)看信號(hào)的平均值為零實(shí)現(xiàn)了完美的直流平衡。這使得它非常適合通過(guò)變壓器進(jìn)行耦合傳輸。簡(jiǎn)單的差錯(cuò)檢測(cè)如果在非比特周期中間的位置出現(xiàn)了意外的跳變或者在周期中間沒(méi)有檢測(cè)到應(yīng)有的跳變接收方可以很容易地判定為傳輸錯(cuò)誤。5.3 代價(jià)帶寬與實(shí)現(xiàn)復(fù)雜度曼徹斯特編碼的缺點(diǎn)同樣明顯帶寬效率低它用兩次電平變化可能是一個(gè)周期內(nèi)也可能是跨周期來(lái)表示一個(gè)比特其信號(hào)基頻是數(shù)據(jù)速率的兩倍。例如以10Mbps速率傳輸數(shù)據(jù)曼徹斯特編碼產(chǎn)生的信號(hào)基頻是10MHz。這意味著它需要NRZ編碼兩倍的帶寬。對(duì)于100Mbps的快速以太網(wǎng)如果使用曼徹斯特編碼就需要200MHz的帶寬這對(duì)當(dāng)時(shí)的技術(shù)和雙絞線性能提出了過(guò)高要求。因此100BASE-TX快速以太網(wǎng)轉(zhuǎn)向了更高效的4B/5BMLT-3編碼方案。電路相對(duì)復(fù)雜編碼和解碼需要精確的定時(shí)控制電路比NRZ復(fù)雜。實(shí)操心得學(xué)習(xí)曼徹斯特編碼時(shí)動(dòng)手畫(huà)波形圖是理解其精髓的最佳方式。找一段二進(jìn)制序列比如“10100110”嚴(yán)格按照規(guī)則畫(huà)出每個(gè)比特周期內(nèi)的跳變。你會(huì)發(fā)現(xiàn)無(wú)論數(shù)據(jù)如何比特中間的跳變永遠(yuǎn)存在。這也是為什么在分析網(wǎng)絡(luò)物理層信號(hào)時(shí)一個(gè)頻率穩(wěn)定、占空比50%的方波很可能就是曼徹斯特編碼的時(shí)鐘特征。6. 差分曼徹斯特編碼抗干擾的進(jìn)一步增強(qiáng)差分曼徹斯特編碼是曼徹斯特編碼的一個(gè)變種用于令牌環(huán)網(wǎng)。它繼承了曼徹斯特編碼每個(gè)比特周期中間必有一次跳變的特性用于同步但比特值的表示方式不同。6.1 編碼規(guī)則解析差分曼徹斯特編碼的規(guī)則是每個(gè)比特周期中間的跳變僅用于提供時(shí)鐘不表示數(shù)據(jù)。比特值由每個(gè)比特周期開(kāi)始時(shí)刻是否有跳變來(lái)決定在比特周期開(kāi)始時(shí)刻有跳變代表比特0。在比特周期開(kāi)始時(shí)刻無(wú)跳變代表比特1。這里的“有跳變”指的是相對(duì)于前一個(gè)比特周期結(jié)束時(shí)的電平狀態(tài)發(fā)生了改變。這種“差分”或“相對(duì)”的判決方式使其具備了與NRZ-I類似的優(yōu)點(diǎn)對(duì)信號(hào)極性不敏感。即使傳輸線對(duì)調(diào)導(dǎo)致信號(hào)整體反相因?yàn)榕袛嗟氖恰白兓倍恰敖^對(duì)電平”解碼結(jié)果依然正確。6.2 與標(biāo)準(zhǔn)曼徹斯特編碼的對(duì)比特性曼徹斯特編碼差分曼徹斯特編碼同步方式比特周期中間的跳變比特周期中間的跳變數(shù)據(jù)表示由中間跳變的方向決定高-低為0低-高為1由比特開(kāi)始處有無(wú)跳變決定有跳變?yōu)?無(wú)跳變?yōu)?抗極性反轉(zhuǎn)敏感因?yàn)橐蕾嚱^對(duì)跳變方向不敏感因?yàn)橐蕾囅鄬?duì)跳變是否存在邏輯復(fù)雜度相對(duì)簡(jiǎn)單相對(duì)復(fù)雜需要記憶前一狀態(tài)主要應(yīng)用經(jīng)典以太網(wǎng)10MbpsIEEE 802.5 令牌環(huán)網(wǎng)常見(jiàn)問(wèn)題排查在解碼差分曼徹斯特編碼時(shí)最常見(jiàn)的錯(cuò)誤是混淆了“周期開(kāi)始跳變”和“周期中間跳變”的功能。務(wù)必牢記中間跳變是“時(shí)鐘滴答聲”是固定的開(kāi)始跳變或沒(méi)有跳變才是“數(shù)據(jù)信息”。在分析信號(hào)時(shí)先利用密集的中間跳變恢復(fù)出穩(wěn)定的時(shí)鐘再用這個(gè)時(shí)鐘去采樣每個(gè)比特開(kāi)始時(shí)刻的狀態(tài)判斷有無(wú)跳變從而得到數(shù)據(jù)。7. 現(xiàn)代網(wǎng)絡(luò)中的高效編碼方案窺探隨著網(wǎng)絡(luò)速率從10Mbps飆升到100Gbps甚至更高曼徹斯特編碼因帶寬效率低下而被淘汰。現(xiàn)代高速網(wǎng)絡(luò)采用了一系列更復(fù)雜的組合編碼技術(shù)其核心思想是在保證同步和直流平衡的前提下盡可能降低信號(hào)的變化頻率。7.1 4B/5B與8B/10B塊編碼的引入這類編碼不按單個(gè)比特處理而是將數(shù)據(jù)分成小塊如4位或8位映射為更長(zhǎng)的碼字如5位或10位。這些長(zhǎng)碼字是精心挑選的它們具有以下特性保證足夠的跳變密度無(wú)論原始數(shù)據(jù)是什么編碼后的碼字都不會(huì)出現(xiàn)超過(guò)連續(xù)3個(gè)或4個(gè)相同的比特從而確保接收方能提取時(shí)鐘。實(shí)現(xiàn)直流平衡精心控制碼字中0和1的數(shù)量使長(zhǎng)期統(tǒng)計(jì)趨于平衡。引入控制字符多余的碼字空間可以用來(lái)表示幀開(kāi)始、結(jié)束、空閑等控制信號(hào)。例如100BASE-TX快速以太網(wǎng)使用的就是4B/5B MLT-3編碼。首先用4B/5B將數(shù)據(jù)塊轉(zhuǎn)換確保跳變密度然后再用MLT-3一種三電平編碼將5位碼字轉(zhuǎn)換為物理信號(hào)MLT-3通過(guò)在三電平V 0 -V之間循環(huán)變化進(jìn)一步將信號(hào)基頻降低到數(shù)據(jù)速率的1/4極大地節(jié)約了帶寬。7.2 擾碼另一種解決長(zhǎng)連0/1的思路除了塊編碼另一種常見(jiàn)技術(shù)是擾碼。在發(fā)送前用一個(gè)偽隨機(jī)序列與原始數(shù)據(jù)流進(jìn)行異或運(yùn)算打亂原始數(shù)據(jù)的模式使其看起來(lái)近似隨機(jī)。隨機(jī)化的數(shù)據(jù)流本身就有豐富的跳變基本解決了同步和直流平衡問(wèn)題。在接收端再用相同的偽隨機(jī)序列進(jìn)行解擾恢復(fù)原始數(shù)據(jù)。千兆以太網(wǎng)1000BASE-T等就采用了擾碼技術(shù)。實(shí)操心得學(xué)習(xí)這些現(xiàn)代編碼關(guān)鍵要理解設(shè)計(jì)者的權(quán)衡藝術(shù)如何在時(shí)鐘同步、直流平衡、帶寬效率、實(shí)現(xiàn)復(fù)雜度、功耗之間取得最佳平衡。從NRZ到曼徹斯特再到4B/5B和擾碼就是一部不斷優(yōu)化這個(gè)平衡點(diǎn)的歷史。當(dāng)你看到一個(gè)新的物理層標(biāo)準(zhǔn)時(shí)試著去查查它用了什么編碼并思考為什么選擇它這對(duì)深入理解網(wǎng)絡(luò)硬件設(shè)計(jì)大有裨益。8. 編碼選擇實(shí)戰(zhàn)場(chǎng)景分析與避坑指南了解了原理我們?nèi)绾卧谔摂M仿真或?qū)嶋H項(xiàng)目中應(yīng)用這些知識(shí)呢以下是一些常見(jiàn)場(chǎng)景和注意事項(xiàng)。8.1 場(chǎng)景一單片機(jī)間低速串口通信典型選擇通常直接使用UART NRZ電平如TTL電平。UART協(xié)議通過(guò)起始位一個(gè)低電平比特和停止位一個(gè)或多個(gè)高電平比特為每個(gè)字節(jié)提供幀同步部分緩解了NRZ的長(zhǎng)連1同步問(wèn)題。通信速率低通常115200bps以下距離短板級(jí)直流分量和帶寬問(wèn)題可忽略。避坑指南確保共地NRZ電平通信必須保證發(fā)送端和接收端有共同的參考地線否則電平判斷會(huì)出錯(cuò)。波特率容差發(fā)送和接收方的波特率設(shè)置必須一致且晶體振蕩器精度要足夠。雖然UART有起始位同步但長(zhǎng)期累積的時(shí)鐘誤差仍會(huì)導(dǎo)致誤碼。通常誤差應(yīng)小于2%。電平匹配注意TTL電平0V/3.3V或5V與RS-232電平3V~15V / -3V~-15V的區(qū)別直接連接會(huì)損壞設(shè)備需用電平轉(zhuǎn)換芯片。8.2 場(chǎng)景二使用網(wǎng)絡(luò)分析儀或示波器觀察信號(hào)操作要點(diǎn)如果你想親眼看看曼徹斯特編碼的波形可以找一臺(tái)老式的10Mbps集線器或網(wǎng)卡用示波器探頭點(diǎn)在雙絞線的一對(duì)線上注意安全和使用差分探頭。觸發(fā)模式設(shè)為邊沿觸發(fā)調(diào)整時(shí)基你應(yīng)該能看到周期規(guī)整、每個(gè)比特中間都有跳變的信號(hào)。避坑指南識(shí)別干擾實(shí)際線路上的信號(hào)可能疊加了噪聲波形毛刺多。需要學(xué)會(huì)使用示波器的平均或高分辨率采集模式來(lái)還原穩(wěn)定波形。理解幅值以太網(wǎng)信號(hào)是差分信號(hào)測(cè)量的是兩條線之間的電壓差典型峰峰值是2V左右。單端測(cè)量會(huì)看到混亂的波形。8.3 場(chǎng)景三在FPGA或嵌入式系統(tǒng)中實(shí)現(xiàn)編碼解碼實(shí)現(xiàn)選擇如果需要自己實(shí)現(xiàn)物理層曼徹斯特編碼因其自同步特性在FPGA中實(shí)現(xiàn)相對(duì)可靠。編碼器就是一個(gè)狀態(tài)機(jī)根據(jù)輸入比特和當(dāng)前電平在比特周期中點(diǎn)輸出對(duì)應(yīng)的跳變。解碼器更復(fù)雜需要一個(gè)數(shù)字鎖相環(huán)來(lái)從數(shù)據(jù)流中恢復(fù)時(shí)鐘并用恢復(fù)的時(shí)鐘在比特中點(diǎn)采樣跳變方向。避坑指南時(shí)鐘精度發(fā)送端的比特時(shí)鐘必須非常精確任何抖動(dòng)都會(huì)在接收端被放大導(dǎo)致解碼錯(cuò)誤。初始同步解碼器上電或開(kāi)始接收時(shí)需要有一個(gè)同步過(guò)程來(lái)鎖定第一個(gè)有效的中間跳變。設(shè)計(jì)時(shí)需要考慮前導(dǎo)碼如經(jīng)典以太網(wǎng)的64位交替的1和0用于同步。亞穩(wěn)態(tài)處理在解碼器中用恢復(fù)的時(shí)鐘去采樣輸入信號(hào)時(shí)極易發(fā)生亞穩(wěn)態(tài)。必須在設(shè)計(jì)中使用同步器兩級(jí)或更多級(jí)寄存器來(lái)穩(wěn)定信號(hào)。編碼是計(jì)算機(jī)網(wǎng)絡(luò)物理層沉默的基石。從簡(jiǎn)單粗暴的NRZ到自帶節(jié)奏的曼徹斯特再到精打細(xì)算的現(xiàn)代塊編碼每一次演進(jìn)都是為了更可靠、更高效地在現(xiàn)實(shí)世界的嘈雜通道中傳遞數(shù)字世界的純凈理想。理解它們不僅能讓你在考試中游刃有余更能讓你在調(diào)試一個(gè)通信不穩(wěn)定的硬件接口時(shí)擁有直指問(wèn)題本質(zhì)的眼光。下次當(dāng)你看到網(wǎng)線中流淌的數(shù)據(jù)時(shí)希望你能想起那不僅僅是0和1更是一首由精心設(shè)計(jì)的編碼規(guī)則所譜寫(xiě)的、關(guān)于同步與效率的協(xié)奏曲。