數字門電路本質上是模擬的,因為它們使用的是晶體管。當然,這些晶體管工作在它們的極端導通條件下(這正是它們被稱為“數字”的原因),但在邏輯狀態轉換過程中它們是純模擬的。通過增加一些無源器件,你可以設計出許多種電路,比如電平轉換器、倍頻器、相位檢測器、線路驅動器和脈沖變換器。 就拿形式最簡單的連接門電路的無源器件來說吧。上拉/下拉電阻可以將未用的數字輸入設置為確定的邏輯電平(對于分立型CMOS來說這是絕對必須的)。開路漏極/集電極/發射極輸出也需要上拉/下拉電阻以模擬方式設置數字電平。 但如何將門與無源器件組合在一起用作定時或平均組件讓人更感興趣。最基本的占空比至模擬電平轉換可以用一個簡單的RC濾波器實現,見圖1。 圖1:將RC濾波器增加到一個邏輯門可以產生帶紋波的電壓值輸出。 脈沖寬度調制(PWM)輸出的是模擬直流電壓值,這個電壓值來自施加到RC濾波網絡的連續高低邏輯電平之間的定時比例。從電容上的0V開始,每個連續的高電平都會使電容上的電壓增加一點,直到經過大約5個RC時間常數后達到平衡。在平均過的直流電平上總是存在一個很小的紋波(圖中有點夸張了)。為了得到最好的結果,脈沖頻率要盡可能高,RC時間常數則盡可能長—與要求的穩定時間取得一致。 我們可以在最基本的數字類型的相位檢測器中充分發揮這種效應(圖2)。在鎖相環中可以使用異或功能,因為經過RC濾波器濾波的輸出電壓直接正比于兩個輸入信號間的相位差導致的占空比。 圖2:一個異或門、一個壓控振蕩器和一些無源器件組成了一個倍頻器。 將經過RC濾波器濾波的直流電平反饋到壓控振蕩器(VCO)可以將其頻率鎖定于參考頻率。VCO輸出和參考信號之間的這個相位差取決于VCO運行在與參考信號相同頻率所需的電壓值。 附帶效果是異或相位檢測器的頻率翻倍功能。事實上,相同效應可以用于倍頻器(圖3)。 圖3:利用一個異或門、一個運放、兩個電容、一個電感和一個延時器實現的倍頻器 異或門輸出端的邏輯邊沿使LC振蕩器起振,這個LC振蕩器被調諧為在想要的諧振頻率發生諧振。當異或門輸出端是一個對稱的50%占空比時產生奇數諧振,偶數諧振可以用時延線剔除,這個時延線用于設置合適的異或輸出脈沖占空比,以便最大限度地得到想要的諧振信號。放大器將LC振蕩器的振蕩恢復到數字邏輯電平值。 相位檢測器、線路驅動器和脈沖整形器 如果真的希望參考信號和壓控振蕩器(VCO)之間的相位關系得到嚴格控制,我們可以看一些實例。在這種情況下,圖2所示的XOR相位檢測器并不能完全滿足要求。例如當參考信號是一個隨機的非歸零(NRZ)數據流時,我們想要VCO進入相位鎖定狀態來產生恢復時鐘,以便上升時鐘沿發生在示波器上看到的數據眼圖的正中。 由于接收器中的熱噪聲(及其它原因),弱信號的數據轉換會適時發生“抖動”,因此采樣數據以確定是1還是0的最佳時間是在最遠離轉換的時間點上——也就是模擬調制波形的幅度峰值處的眼中心位置。 圖4:D觸發器和VCO可以讓你將采樣點設在信號眼圖中心。 這里的輸入數據流以時鐘方式驅動D觸發器,并在VCO時鐘高或低的瞬間進行采樣。(只有上升的數據沿進行時鐘驅動。與延時輸入進行異或可以同時實現上升/下降的數據沿時鐘驅動,但沒有必要。)平均后的直流輸出反饋給VCO,直至VCO下降時鐘沿找到數據轉換。這樣,真正采樣數據位的上升時鐘沿就處于它所屬的眼圖中心。這要求50%占空比的時鐘,這樣的時鐘可以通過使用兩倍于目標頻率的VCO再進行二分頻獲得。 當數據流中存在很長的連續1和0時,最好是使用定時的三態泵上或泵下脈沖,除非RC時間常數可以做得與連續比特一樣很長。 這是我所知道的唯一使用數字邏輯容忍D觸發器找出自身亞穩態的一種方法,但不要緊,偶然的亞穩態結果只是在RC濾波器積分上千個脈沖期間的一點小瑕疵。 當然,所選擇的D觸發器的建立/保持時間必須要快,能夠匹配數據比特率,但在整個建立/保持規范中會存在與溫度和電源變化有關的漂移。“無限增益”這個名稱有點不恰當。它的實際意思是,當D觸發器工作在建立/保持時間違例場合,由于數據/時鐘時序違例中有特別小的變化而導致觸發器輸出變高、變低或振蕩。很奇怪,但確實是這樣。 我最近一次使用這種技術是將74AHC74 D觸發器用作相位檢測器。最終的數字輸出結果看起來類似于圖4中的底部波形。如果能夠在設計RC濾波器參數時更仔細些,我也許能夠消除前后的頻率波動,但老板是個急性子,要求我們趕快處理下一個緊急任務。不過對我們來說整個環路已經工作得足夠好了。 用于補充數字輸出的另外一個用例是推挽式(是的,我知道這是很老的術語)變壓器驅動器(圖5)。 圖5:變壓器將邏輯門變成了線路驅動器。 中心抽頭的VCC/2使得在邏輯高側感應到的電壓(由于邏輯低側的下拉)不會因某些邏輯系列被二極管鉗位到VCC 。我曾經用過這種技術,用的是74S系列TTL器件,中心抽頭電壓是VCC,并在原型中僥幸取得了成功,但我不推薦在產品化設計中使用這種技術。千萬不要用74(A)HC來嘗試,只能用ECL和74S TTL。如果是使用具有更強源驅動能力的AHC,中心抽頭可以不要。 目前為止,所有這些無源器件都被應用到門輸出端。下面是可以在門輸入端可以做的一些事情,前提是它們是施密特觸發器門(圖6)。 圖6:使用施密特觸發器XOR、OR或AND門設計脈沖整形器。 讀者可以瀏覽我的EDN設計思路“可配置邏輯門的施密特輸入實現通用單穩態”了解有關這些設計的更多細節。 驅動諧振LC振蕩器電路 現在讓我們看看用邏輯門驅動諧振LC振蕩器電路會發生什么事。圖3已經對此有所涉及。下面讓我們了解一下更多細節。圖7給出了電路圖。 圖7:振蕩器諧振頻率子諧波的一連串邏輯邊沿將使振蕩器起振。 圖8顯示了調諧在156.2kHz的振蕩器對單個上升沿的響應。 圖8:單個藍色邊沿引發類似吉它弦的黃色振蕩。(注意,下面所有圖形都交換了顏色) 圖7中的振蕩器電路使用了一個可調(可調諧鐵氧體塊)的396nH電感并聯一個1nF C0G(也叫NPO)電容,并通過一個68pF的電容松散耦合到TTL源。這個電路并沒有使用鍍銅板或PCB;所有元件放置在一個平臺上,它們的引腳經空中焊接在一起。數據手冊上標明的電感Q值在40MHz時大約為88,因此諧振頻率為8MHz時的Q值(射頻電阻/電抗)稍微有點高。電容比取決于電感Q值(一般來說電容Q值要比電感Q值好得多)、驅動器上升時間、想要的正弦波電平以及后面將正弦波過零點恢復到數字邊沿的放大器增益。 在本例中,基于演示的目的,放大器用示波器表示,邏輯源是端接75Ω電纜和75Ω阻性負載的函數發生器的TTL輸出。由于函數發生器的限制,實際占空比為48%,不是理想中的50%。 8MHz諧振頻率來自公式f = 1/(2π√LC)。但圖9中的示波器顯示器顯示的觸發黃色邊沿信號頻率為1.6MHz—是振蕩器正弦波頻率的五分之一。這個電路可以用作5倍頻器,在實際應用中,到11階或以上的奇數諧波需要根據電感Q獲得(之所以提11階是因為這是我曾經嘗試獲得的最高階數)。 圖9:一連串占空比約為50%的黃色邊沿信號如果時序正確的話可形成連續的藍色振蕩波 在驅動沿和正弦峰值之間還存在其它相位關系。上升沿與正峰值相關,下降沿與負峰值相關。因此偶數諧波不能從50%的方波中剔除—不斷變化的邊沿將抵消相同極性的正弦峰(傅里葉先生是對的!) 不過只要讓邊沿占空比稍作改變,我們就可以在偶數諧波處再次使正弦峰出現,比如圖10中的6倍頻器。 圖10:出于演示的目的,這里用了一個40%占空比、1.333MHz的數字信號產生8MHz的6階諧波,因為我不想重新調諧振蕩器。 圖11和圖12顯示了諧振倍頻因子如何隨占空比變化而變化。振蕩頻率在8MHz處仍然是常數,因為振蕩器元件值沒有改變,但現在矩形波頻率分別位于8MHz的1/7分頻(1.14MHz)和1/8分頻(1MHz)。 圖11:35%占空比起振出1.14MHz矩形波的7階諧波。 圖12:31%占空比起振出1MHz矩形波的8階諧波。 以此類推。只要不斷改變的數字邊沿能夠落在最終正弦波的各個峰值處,振蕩器就能起振。換句話說,交替變化的數字邊沿之間的時間必須等于想要諧波的半周期的整數倍。 驅動脈沖長度 前面我們發現,驅動方波的占空比會影響其上升沿與下降沿和振蕩電路峰值之間的關系(圖7)。不過創建想要的脈沖長度是另外一回事,通常不是以數字方式完成的,它要求使用與我們試圖重建的相同的高頻時鐘。 也許甚高頻時鐘和計數器鏈可以從我們想要倍頻和合成目標脈沖的低頻邊沿觸發。但也有模擬的方法(如前所述),它們使用單穩多諧振蕩器、帶門電路的RC網絡以及使用現成集總LC與邏輯門器件的延時線或用于更高頻的實際端接傳輸線。甚至可能使用一段不端接的傳輸線實現倍頻,并使用反射脈沖的來回時間作為定時單元,但這種方法極富技巧。 下面我們來看一個有趣的例子,其中驅動脈沖是正弦波的半個周期或更短。由于函數發生器的限制,我不得不降低振蕩器的諧振頻率來獲得想要的占空比。用于產生圖13所示波形的振蕩器電路使用了一個1μH的電感(Q值未知,實際上是廢料箱中一個很小的射頻扼流圈)并聯一個100nF的電容,到數字驅動器的耦合電容必須增加到270pF。新振蕩器的諧振頻率大約是500kHz。函數發生器輸出現在是主輸出(非TTL),但上升時間縮短了,因為更快的TTL邊沿引起了寄生振蕩—也許是射頻扼流圈的自諧振。 圖13:50%占空比邊沿與每個正弦波峰值對齊,脈沖邊沿跨在正弦波的過零點。 那么將方波轉換為相同頻率的正弦波意義何在呢?其中之一是你可以消除振蕩器帶寬之外的高頻抖動(Q值越高越好),特別是當從有噪聲的串行位流中恢復位時鐘時: 圖14:在20%占空比時,脈沖邊沿仍然跨正弦波零點。在這種情況下,脈沖寬度本身并不十分關鍵;利用寬松的定時方法(在合理范圍內)創建脈沖寬度是可以接受的。 圖15顯示了一個驅動異或門的方波,它以窄脈沖(如圖14所示)的方式在每個上升和下降沿驅動振蕩器,但它很容易成為密集編碼的串行位流,比如一個位有一個或兩個邊沿的雙相或曼徹斯特位流。每個邊沿觸發振蕩器輸出雙倍的位速率。恢復串行位時鐘只需簡單的除2方法。即使在一個位一個邊沿的最小變換密度下,振蕩器也會起振以填充丟失的邊沿,并保持恢復時鐘輸出正常。我曾對4b5b編碼的250Mbit/s串行數據使用過這種時鐘恢復方法。 圖15:異或史密特觸發器可以很容易地使用簡單的RC網絡形成圖3所示的稀疏脈沖。 這種方法比鎖相環(PLL)加壓控晶體振蕩器(VCXO)要便宜得多,只要你不介意振蕩器最初需要外力觸發才能進入諧振狀態的事實。它的工作量與調整吉它的六分之一相同。 適合數字邏輯振蕩器的其它應用包括可變相移、串行位流采樣時鐘的自動相位校正、頻率變換、分組時鐘的啟動以及將異或門用作混頻器并通過頻率加減法(外差法)實現的時鐘合成。 |