當《電子技術設計(EDN)》忠實讀者和設計實例(Design idea)欄目的投稿人Jim Brannan提出要寫一篇關於三進位制DAC設計的文章時,我感到非常高興。像Charlieplexing(一種採用較少接腳驅動多工顯示的技術)一樣,他的想法是利用三進位輸出以便從一個接腳上獲取更多資訊,而不僅僅是「0」和「1」。

例如,對於一個三進位制的4位元DAC,理論上能夠產生81(34)種輸出值,而不是通常(兩進位)的16(24)種。而三進位制的5位元DAC(35=243)本質上與常規的兩進位8位元(28=256)性能相近,儘管精確的三進位制DAC實現可能要比普通的二進位DAC更困難,特別是解析度的提高帶來更大的困難。

一如既往,我先Google是否有類似的創意想法。果然,找到了兩頁描述類似設計的文獻。Jim也看了,覺得他沒什麼內容可補充,所以,設計實例的文章也就擱淺了,但我覺得這個創意無論如何都值得說一下。另外,Jim的方法確也有獨到之處。

20180427TA01P1 圖1 採用帶中間電源參考的加法放大器實現三進位制DAC。

在開始之前,或許該花點時間想像一下你自己會如何構思一個三進位制DAC。在下面的想法佔領你的大腦前,也許你會另闢蹊徑,想出一種新方法。




























好吧,這是我自己的實現思路。

實際上,我最初的想法是將放大器的(+)輸入設置為-VDD,但後來我意識到浮動輸出會被拉向負電源,可能會鉗位在-0.7V,且通常無法工作。VDD/2參考表示0、1、2狀態,對應於0、Z、1輸出值(「Z」表示高阻抗和/或輸入模式)。

20180427TA01P2 圖2 Josh Bowman的被動三進位制DAC。

另一個硬體問題是,當輸入處於中間電壓軌時,某些微控制器(MCU)可能會吸收過多的供電電流,因此要確認這不會出問題。要禁用數位輸入模式,或使用可設置為模擬輸入的接腳。

驅動三進位制DAC需要一個查閱資料表,或從二進位到三進位制的轉換程式。在大多數情況下,除非在一個寫週期內設置好接腳模式和值,否則DAC輸出將在其設置發生改變時產生毛刺現象。

被Jim放棄的設計想法使用被動「R-2R」類型的DAC,他寫了用於搜索許多阻值組合的軟體。意識到無法創建一款完美的線性DAC,他的方案是使用查閱資料表,DAC的表現有些不平衡也就只好接受。

在Josh Bowman的部落格中,他描述了自己對三進位制DAC的構想。它採用一種類R-2R結構,用較低值的電阻將電源分壓以產生中間電平的「Z」值。

正如你在圖3看到的,設計中有冗餘的值,可用來進行校準。

20180427TA01P3 圖3 原始和校準過的積分非線性(INL)性能。

在Arduino論壇上也有幾個關於三進位制DAC設計的討論,感興趣可以去看看。

如果你對三進位制DAC設計實現有自己的想法,請告訴我們你的經驗,我們很樂意傾聽你的分享。請記住,與所有這些簡單的DAC設計一樣,三進位制DAC電源雜訊也會傳遞到輸出端。

(參考原文: Ternary DAC: Greater resolution, less bits,by Michael Dunn)