本設計實例利用一個八電阻陣列和三個接腳,將底部的2R從連接到地改為連接到PWM輸出,對R-2R梯形DAC進行了重構(圖1)。

20171228TA01P1 圖1 混合式PWM/R-2R DAC。

在梯形結構中,VCC分為8段,每個級(0% PWM)到相鄰更高級(100% PWM)的空隙由PWM填充。這種方法可以將波紋縮小到1/8,同時解析度也會增加額外3個高階bit。或者也可以從原始PWM工作週期值的頂端拿走這3個bit,然後將其時脈速率乘以8。這樣仍能實現8:1的波紋減少,但時脈速率的增加會將PWM雜訊進一步壓到濾波器的底部,得到更大的衰減。

模擬

我對這種混合方法進行了模擬。要與傳統的簡單低通濾波器(圖2)進行比較,應記得R-2R梯形結構的輸出電阻是R,因為建議將陣列中的兩個電阻並聯起來形成R(單個電阻是2R),一個10kΩ的陣列產生5kΩ的輸出電阻。這就是我在傳統方法中使用的電路,其中的1μF電容是相同,我將PWM設為50%的工作週期,因為這時會產生最差的波紋。模擬結果(圖3)顯示傳統方法有約4mV的波紋,而第一種方法(在原8bit基礎上增加3個新的bit)生成的波紋是493μV,相當於傳統方法的1/8。第二種方法(將PWM時脈提高8倍,總bit數仍然是8)產生的波紋僅61μV,大約是原始波紋的1/65。

20171228TA01P2 圖2 比較/模擬電路。

20171228TA01P3 圖3 模擬結果。

圖4a(PWM+低通)和圖4b(11位元混合)是將電壓從0V緩慢地一步步調整到5V的複雜模擬結果。濾波器中的電容特意選用了很小的值,以便能看清這種情況下的波紋。在正常的R-2R梯形中增加一個階梯狀圖形(圖4b中的紅色),以便顯示PWM是如何從一級移動到下一級,甚至越過R-2R梯形頂部直到5V。

20171228TA01P4 圖4 模擬得到的基本PWM DAC(圖4a上)和混合DAC(圖4b下)的波紋。

用數值控制振盪器(NCO)技術代替PWM也一樣可行。數值控制振盪器(增加一個值到累加器並輸出進位)比PWM更有優勢,因為它可以縮減50%設置點附近的波紋(透過增加轉換頻率),這是簡單PWM表現最差的地方。

用任何其他的DAC也行得通:只需將PWM/NCO/任何訊號連接到最低有效位元。

測試

以下是一些測試結果:我本來打算使用容差為±2%的電阻陣列,±1%甚至±1/2%的電阻陣列也找得到,不過我手邊沒有,所以就用單個精準度為1%的電阻。我將運行於16MHz的ATmega328處理器的計時器timer1設定為給8位元PWM使用,並使用10位元ADC開展測量。由於PWM、R-2R和ADC參考的都是VCC,可以忽略這個因素,針對8級中的每一級只檢查從ADC讀取的值,PWM則設為0%和100%。理想情況下,第一步的100%輸入對下一步應該沒有任何影響。

表1的值看起來非常合理。然後我使用了一種技術,借助ATmega328的功能,使用與生成PWM相同的計時器來設定類比數位轉換,我把這種技術稱之為「Slow-scilloscope」。這樣就可以測量給定PWM週期內的波紋。圖5是帶低通濾波器的傳統PWM(綠色)和混合(黑色+紅色)的合成圖,這兩種方案都使用了非常小的電容,以便能看清波紋。

20171228TA01P5 圖5 測量得到的PWM和混合式DAC的波紋。

20171228TA01P5-1 表1 自ADC讀取的值。

圖6顯示了在每種混合設置下的非同步類比數位轉換的曲線,允許結果中的波紋作出(或多或少)隨機的變化。這次使用了一個較大的電容以便獲得更加真實的結果。

20171228TA01P6 圖6 測量得到的混合數模轉換器波紋,電容為最終值。

總之,我們已經看到,PWM可以填充R-2R DAC階躍之間的空隙,R-2R梯形結構可以顯著縮減通常由PWM加上低通濾波器產生的波紋,或者兩者兼有。

(參考原文: Hybrid PWM/R2R DAC improves on both,by Jim Brannan)