通過將單個脈沖寬度調制器(PWM)與模擬低通濾波器串接,以實現簡單的數模轉換器(DAC),這并不是什么新鮮事了。將最最高有效位2NPWM輸出與最低有效位2N PWM輸出相加后,再輸入濾波器以得到復合22N位DAC的做法也不是新概念。然而,要設計一個具備簡單、無需調整我們的拓撲結構且能提供合理精準、可重復的性能特性的DAC,并非易事。圖1展示了一個例子,將從輸出端往輸入端逐步解析這個電路。

圖1:PWM驅動的16位DAC。C1、C2與C3為NPO/COG陶瓷電容。
運算放大器
本設計使用OPA383,這是一款具“軌對軌”(rail-to-rail)輸入與輸出的運算放大器(OP Amp)。這類組件的特性通常是輸出電壓不會完全擺到軌上。仔細查看規格可發現,V+與V-供電需至少比輸出信號范圍高或低±155mV,且兩端電壓差不得超過5.5V。輸入偏置電壓在25℃時最大為±5μV,但遺憾的是,規格中并未提供溫度范圍內的限制。不過,對5個測試組件的圖形顯示,它對溫度的敏感度有限。因此,我們可以假設三倍的5μV,即溫度范圍內最大約為15μV。
偏置電流在-40℃到+85℃之間最大為±76pA。我希望將設計中各個獨立誤差來源控制在半個PWM計數以內(在此例中,即全量程的2-17以下)。考慮到運算放大器輸入端所見的電阻小于100k?,全量程DAC電壓超過2.0V時,由于偏置電流與偏置電壓引起的誤差將小于半個計數。
該運算放大器的直流增益最小為118dB,其增益帶寬積(GBW)典型值為2.5MHz。缺乏其他信息時,我將假設最小GBW為1MHz并以此進行設計。
PWM濾波器
濾波器由U2、Ra、Rb1、Rb2、R1、R2、R3、C1、C2與C3組成。控制這些無源組件的容差至關重要,以確保結果可重復。一般陶瓷電容如Y5V與X7R,其電容值對溫度與直流電壓極為敏感,因此不建議用于需要穩定性的濾波器。相比之下,薄膜電容以及陶瓷COG/NPO類型的電容對溫度與電壓的敏感度低得多。NPO/COG電容與示意圖中所示阻值及容差的電阻,在1000件數量下價格遠低于0.10美元。
所示濾波器為三階濾波器(由三個電容可看出階數)。一般而言,三階濾波器在穩定時間與紋波衰減系數乘積上通常比二階濾波器(兩個電容)表現更佳。三階濾波器的設計輔助數據較少,因此我使用了我近15年前在EDN發表的設計。此濾波器不依賴相反相位大信號的抵消,因此無需調整電位器來補償零容差組件不足帶來的影響。
濾波器的工作是抑制PWM信號的交流紋波,當輸出為全量程50%時紋波最嚴重。同時,也需要關注最小化穩定時間。為了評估組件容差造成的影響,圖2與圖3顯示了100次蒙特卡羅(Monte Carlo)模擬,分別測試了從零到全量程的轉換穩定時間以及紋波衰減。

圖2:100次蒙特卡羅模擬,從0到全量程(0到65535計數)的轉換。小于半計數的穩定時間低于2毫秒。

圖3:100次蒙特卡羅模擬的PWM紋波,全量程為65535計數。紋波峰值小于半個PWM計數,峰峰值小于1計數。PWM頻率為78kHz。
求和網絡
本設計使用兩個8位PWM。為了產生16位的信號,最高有效位PWM(MSB)的貢獻需加權,使其幅度約為最低有效位PWM(LSB)的256倍。通過Ra與Rb1 + Rb2組成的求和網絡,即可實現此加權效果。(需注意,其他濾波器組件對此求和網絡的直流影響可忽略。)
濾波驅動器(邏輯反相器)
用于驅動求和網絡的邏輯反相器具有有限的輸出電阻,這會與Ra與Rb1的電阻疊加。不幸的是,邏輯反相器并非線性組件,也未以線性特性標示其參數。判定最大輸出電阻的最佳方法,是先從數據表中找到最接近(且不大于)設計所用供電電壓的指定值,再將最大輸出電壓降除以規定負載電流。
通常應先計算高側輸出,因為其電阻通常高于低側。例如,對于3.3V供電的TI SN74AC04,可使用數據表中對應3V、12mA負載的最小2.46V值來計算,其最大電阻約為45?。若將五個柵極并聯,該電阻將降至9?以下。實際值未知,因為各個反相器共享芯片內及封裝鍵合線的公共電阻,因此最多可在Ra上疊加9?,而Rb上最多疊加45?,影響相對可忽略。
然而,此時我們偏離了原先將誤差源限制在半個LSB的目標——最大差分非線性誤差現在接近1個計數。幸運的是,即使存在此誤差,輸出電壓仍會隨著計數單調上升。如果為了性能提升而接受成本,可通過以下方式將誤差控制在半個LSB以下:
將反相器替換為低阻抗雙通道TS5A22362DRCR模擬開關
將R1a 1%電阻替換為0.05%精度
將30.1k?的R1b改為28.7k? 1%電阻串聯5% 510?電阻
驅動電源
然而,我們仍需放棄將誤差控制在半LSB以下的目標。TI REF35 IC在25℃的額定誤差為±0.05%,相當于33個LSB!即便利用校準與額外硬件調整反相器或模擬開關的供電電壓,其12ppm/℃的溫度變化仍會帶來誤差。換言之,我們仍需接受部分誤差。
在這種情況下,參考電壓的直流電阻為0.2?左右(以3.3V、1mA計算,最大60ppm),與求和網絡Ra與Rb所見的直流電阻相比可忽略。然而,反相器的瞬時電流仍需注意,必須對這些器件進行充分的去耦。
此外,由R1、Ra、Rb與C1組合而成的交流阻抗約為Zsum = 16.5k?,會出現在反相器輸出端以及其供電端。幸運的是,這些阻抗出現的頻率不低于PWM頻率(下一節將提供該數值)。圖示中的電容可將此頻率下的阻抗維持在Zsum的0.1%以下,在實際應用中,其阻抗可視同Zsum。
PWM信號源
PWM信號源很可能是微處理器。現今大多數微處理器頻率頻率可達20MHz以上,因此可產生至少20MHz / 256 ≈ 78kHz的8位PWM信號。濾波器即為此頻率或更高的頻率設計。
那么,為什么不直接使用微處理器GPIO的PWM輸出作為驅動呢?
首先,GPIO輸出通常具有較高的輸出阻抗。此外,如果仔細觀察微處理器數字輸出電壓,可能會發現其離地或供電端有幾毫伏甚至幾十毫伏的電壓差。這是因為處理器除了生成PWM信號外,還執行其他功能,會消耗額外電流,造成芯片內部與封裝鍵合線的電壓降。相比之下,SN74AC74不執行其他功能,其電壓降完全在前述電壓降規格范圍內。
調整與修改
想要降低紋波幅度?提高PWM頻率即可。想要縮短穩定時間?Ra與Rb所見的等效電阻Rab = 4009?,可將R3、R2與R1—Rab按某個比例減小,或C1、C2、C3按相同或不同比例調整。PWM頻率也需至少按這些比例增加,并可進一步提升,以同時改善穩定時間與紋波。
總結
本文介紹了一個簡單的PWM驅動16位DAC設計。其峰值紋波小于半個LSB,電路可在2毫秒內穩定到此水平。蒙特卡羅分析顯示,即使考慮無源組件與運算放大器GBW容差,這些參數依然可以達成。以1000件數量計算,電壓參考約1美元,運算放大器小于0.75美元,而濾波器無源組件每個均低于0.10美元。
電路中各部分的誤差來源已被識別,并盡可能地將其限制于不超過半個LSB的范圍內。對于其他較大的誤差,也提出了額外硬件與校準的建議,但電壓參考的溫度敏感性仍是限制因素。
