[心得] R2R dac 架構解析-從拆機談起

作者 hiro920463
看板 Headphone - 溫馨耳機板 心得文請多加敘述聽感
時間 2017-01-04 22:36:21
https://www.ptt.cc/bbs/Headphone/M.1483540596.A.202.html
網頁好讀板 http://chihhanlin.weebly.com/2447825286272313552736215.html 先寫結論: 1. 想自己做 R2R 的可以參考一下, 撇開韌體不談其實硬體也有一些 know-how 2. 我發現 soekris OEM 1121 跟 diyjt 初期版 1021 有些電路上的差異 3. 純的 R-2R 其實不多 (通常 MSB 最大位數會做點處理) 4. 好奇買了一台 denafrips R2R 2014, 拆電路來看發現好像規格有出入
其實聽起來也不怎麼樣,別浪費錢 5. 歡迎好心人贊助過保 r2r 機讓我拆來抄電路 XD ------ 本文開始 --------------- 在跟大家分享我的R2R DAC 實驗結果以前, 先來回顧一下市面上有哪些值得參考的離散 R2R 架構. 說到到 R2R, 絕大多數人丟關鍵字(R2R, DAC, circuit)到 google 會找到類 似下圖的玩意 http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/r2rdac_orig.gif
先想像一下 S1 到 S7 全部接地, 只有 S0 接 Vref, 然後從 S7 那端開始 2R跟2R並聯變 成 R, 跟 R 串在一起又變成 2R, 繼續跟 S6 的 R 並聯, 一直做到紅點位置, 你會發現 紅點的電壓就會是 Vref/2 (因為S1前那一坨都會並聯等校成 2R, 紅點位置被兩顆 2R 分 壓自然變成 Vref/2 ). 用戴維寧等校電路從 S7 一路拆過去就會發現 S1 到 S7 的權重 剛好會是2的冪次, Vref/2, Vref/4 ... 等等, 阿如果 S0-S7 輸入一個 8 bit 二進位數 不就剛好可以把它轉換成 0V~ Vref 切成 256 段的電壓值, 古早的數位轉類比(Digital to Analog Converter, DAC)就是這樣子的架構. 至於後面的那顆 OP 要幹嘛, 就是個 buffer, 假如 S0-S7 換成定電流源, 那這顆就是 I/V 轉換. S0 到 S7 這幾個 Switch 採用 digital switch 或 shift registor 來做基本上就是 Soekris DAM1021/1121 的架 構. 不過這個架構很顯然有兩個缺點: 一個是有效位數,線性度被電阻精度綁住, 另一方面則 是會有 glitch. 可以想像一下整個 ladder 如果用 0.01% 精度的電阻, 那也不過相當於 13 到 14 bit 的程度, 想要更高的 precision 就會有誤差(linearity) 問題, 再來 glitch 則是 switch 切換的時候同步誤差的結果, 在 MSB (most significant bit) 側變換的時候比如 01111111 換成 10000000 會形成局部短脈衝, 這個會造成嚴重的高 頻雜訊, 就算 buffer 端加低通濾波也不好搞. 所以 R2R 架構的變體就是 string DAC, 用 ladder 分支數量來降低匹配精度跟 glitch, 具體做法差不多像這樣: http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/7103-kevin-1_orig.png
看起來很簡單, 不過也有一些問題, 比如說要做 8bit 就需要 2^8= 256 段電阻跟那麼多 switch, 假如用定電流的方式也需要大量的電流鏡, 當然現代 IC 製程要做區區 8 bit, 12bit 的 string 並不難, 不過 16 bit 以上該怎麼辦? 所以一般來講都會作成多 段的形式, 要怎麼匹配補償, 同步開關降低 glitch 就憑各家本事 http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/slide-25_orig.jpg
這個要稱做類 R2R 也可以, 用在 audio 上最有名的大概就是 dCS 的 ring DAC, 剛開始 在研究各大廠自製離散DAC的時候還搞不太懂這啥玩意, 想通了以後發現原來就是普通的 string DAC, 對照一下大概可以看到用到 32 顆開關跟電阻, 要做 signed 就要兩倍, 兩個聲道就四倍的數量 http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/20091104135000_orig.jpg
結構上這反倒比R2R 更簡單, 幾乎不用考慮 audio 應用多 bit 下 ladder 變態長的匹配 問題, 從 dCS 上新板電路來看也只是把開關用途的 multiplexer 換成獨立的開關元件, 企圖降低 cross talk. 真正難做的反倒是 PCM 超取樣轉成 5bit 這塊的演算法 (從 DSD 解過去還比較好想像, 要處理好想必用了多 stage 的 multi-rate filter, 應該不 是單純的 dither) . 也許這反而是 DIY 成本比較低的做法 , 比如說使用便宜的工業 8-bit string DAC 來取代離散 R ladder, 不過也許 DSP 運算量大, 要寫好不容易所以 目前仿照這種做法的人少, 又或者說開發者幾乎都選擇直上高 bits 數的 R2R ( 還是會 oversampling 到 2MHz 以上) 既然受限於電阻誤差匹配精度的問題, 合乎成本的 R2R 離散電路(0.1%-0.01% 精度)兜出 來的差不多只有 13-14bit 的精度, 那一堆動不動就宣稱 24bit+ 的產品又是怎麼回事? 原來其中大多用了混合結構, 在 MSB的部分加了 string dac 的概念去儘量避免 MSB 的 誤差掩蓋掉 LSB. http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/hybridr2r_orig.png
上圖是從很常見的 precision DAC 8831 (在 TI 的分類裡取樣率 <10MSPS 的就算 precision, >10MSPS 叫做 High speed ) 挑出來的示意圖, 原則上 16bit 以上 DAC architecure 標示為 R2R 的十有八九都是走這種架構. 分析這個電路可以把 S0 到 S11 接地, 所以從 E1 處的 2R 往地來看等於多並聯一條 2R 的對地電阻, 加上E1 到 E15 總 共有 16 條 2R 電阻. 所以假設 E1到 E5 中有 N 條接到 Vref, 那麼分壓的迴路就是 Vref -> N個並聯的2R -> Vout -> 16-N 個並聯的2R -> GND. 所以 Vout 就是 Vref*(2R/(16-N))/[(2R/(16-N)) +(2R/N)] = (N/16)Vref, 在MSB 這邊的換算跟 string DAC 一樣. 所以在保持原始 12bit R-2R 的精度下透過 MSB 的 2R 串聯可以解 決匹配問題把線性度多提高幾個 bit, 不過每多 N 個有效 bit 就需要多 2^N-1 個高精 度電阻與開關. 世界樹用的那顆 Analog Device 的 AD5791 算是這個架構量產且經得起考驗的極致, 在 MSB 並聯了 63個電阻把 14bit R-2R 提升 6 個 bit 到真 20 bit 的線性度, 短期內很 難看到超越這個 spec 的商用 R2R (用的量少大概沒這市場規模支撐更高規格的產品). http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/ad5791-1_orig.png
AD5791 架構 http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/ad5792-1_orig.png
不同的 ladder 參考端沒有接在一起, 由外部 OP 拉齊電位 (我還不清楚這麼做的理由, 也許是補償電流吧) 在 MSB 改用類 string 結構的另一個好處是可以輸出阻抗是恆定的, 拓展 3bit 等校並 聯 8顆也就是 R/3. 有了這個概念以後回頭分析各家 R2R 產品就簡單了. 先以知名度高 的 soekris DAM 1021 作為範例來講解: http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/dam1021ladder_orig.png
老實講剛看到這塊版子的時候一隻摸不太清楚怎麼得到 28 bit 解析度的(每個 shift registor 只用 7pin, 7*4 的 28 不是剛好, 仔細看電路就會發現並非如此). 如果把靠 近輸出端的頭三個 2R 拉出來當成 2-bit string, 後面算算正好 25-bit R2R, 再加上以 signed 的方式並聯兩組相同的 ladder 會得到額外的 1-bit, 如此計算正好符合 28-bit 規格.早期的板子大概使用 2R-2R 並聯得到 R 的部分, rev3 之後的版本已經捨 棄改成兩排的設計, 多出來的空間正好擺大家喜歡的穩壓用大電容. 精明如 Søren 者會加入MSB-string 結構顯然知道 R-2R 被電阻精度箝制的弱項, 那為 何開出 28-bit 這樣的規格? 除了迎合消費者的胃口外(聽到高 bit 就高潮的一般人不會 去追究真實的等效位數到底是多少 ), 更重要的原因在於數位音量的設計. R-2R 天生的 優勢在於透過 binary code 的平移可以簡單達成, 雖然超過設計精度的 bits (或者說動 態範圍)在無衰減的時候不會表現出來, 不過需要衰減的時候這些 LSB 側多餘的 bit 就 提供了不減損動態範圍, 維持低諧波失真的效果. 大家有興趣可以看一下 Soekris 對於 DAM1021 給出來的 THD 規格, THD @ -1db 跟 THD @ -60db 差距之所以沒有想像中大的 原因應該就在於此. 同樣利用這個技巧就是 MSB 有名的 Select DAC, 應該很多人看過那 張很誇張的間接量測數據 http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/select-90db_orig.jpg
http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/dac-meas_orig.jpg
那個 -60dB Digital Volume 絕對是誇張數據的原因之一(搭上好的 dither 算法). 另外 一個疑點就是 +70B Gain 的 Ultra-Low Noise Preamp, 這個等哪天我借到幾台 SRS 的 preamp 再來實驗一下有沒有辦法灌出相同的系統底噪. 這張圖基本上是我很想重現的一 個量測, 暫且回歸主題略過不談 有了這樣的發現我又回頭檢視 OEM 板的 Soekris DAM1121, 發現了爬遍討論串也沒人提 的小變化(也許漏看了也說不定) http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/dam1121ladder_orig.png
一直覺得靠近輸出端的那顆 shift registor 量了之後果然是 7 段湊成 3-bit string 結構, 另三顆 registor 原先對側預留沒用的第 8pin 拉回來使用正好湊成 8*3=24 bit 的 R2R, 之前的違和感如今獲得解釋. 至於聽感是否有差異我想因人而異, 從官方數據來 看 THD 改變不多, 稍稍提升的 S/N ratio 也許只能稍稍佐證架構微調而不能代表什麼. 另外一個很想拿出來講的就是前幾天剛入手, 匪區 Denafrips 最近很便宜才賣萬把塊的 R2R 入門機, 秉持著研究精神才買一台拆著玩 (居然號稱 20-bit R2R 0.01% 電阻 , 萬 一我開發到一半的 R2R 連大陸初階機都打不過該怎麼辦 ) http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/denafripr2rp_orig.png
剛開殼老實講這個設計蠻對味的, R2R 只保留了 11-bit 代表開發者也很了解R2R天限, 後面豪邁地用了 31段並聯來做 string 結構儼然就是現代 Hybrid R2R IC 的放大版, 後 頭 buffer IC 把字給磨掉顯示是調音密技. 從 layout 跟架構來看實在是勁敵, 不過數 來數去只有 16bit 加對稱線路頂多 17 bit 不免心生懷疑, R ladder 奇特的 47K 選值 想必很難找到 23.5K 所以採用並聯的方式得到 47K/2, 之所以使用如此大的阻值想必是 為了 MSB 端誇張的 32 並聯, 47K/32= 1.5K , 若是考慮對稱線路直接併聯那麼等效小訊 號輸出阻抗 ~700 ohm 倒是合理的數字, 不過用到這麼大的數值想必很難解決glitch跟電 流雜訊的問題, 一量之下果不其然: http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/dena10dglitch_orig.png
衰減到一定振福切換時的 glitch 相當明顯, 居然將近 10mV http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/dglitch-af-lyr_orig.png
後面如果有經過帶寬 100KHz 以下的擴大機其實 glitch 會被吃掉, 但是實際聽感並沒有 讓我驚豔, 我想 glitch 影響不小 http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/dena10dm10db_orig.png
從 THD 看起來諧波抑制得很不錯, 應該是架構效果, 60Hz/120Hz 抑制的也還可以, 至於 10K 以後那令人摸不頭緒的高頻雜訊我猜多半是 dither 算法異常的問題, 整個 noise floor 在高頻處增加顯然是 dither 的效果, 但有點像 quantize error 的 peak 不消反 增問題就大了. 沒用到適當的 deglitch 手段也是敗筆, 起碼我土砲二版的 R2R 就已經 不會出現這樣誇張 glitch (我試驗過同步起碼差到幾個 ns 才有可能如此誇張, 問題是 否出在選用的 CPLD clock 就只有原作才曉得了), 一聽之下倒讓我安心許多, 要超越應 該不難 XD. 至於理想的 R2R 應該要有麼怎麼樣的量測我想用 Soekris DAM 來說是個不 錯的標竿 http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/soekris-dm10db_orig.png
正常來說沒有60Hz 的諧波, 這張測的時候地沒處理好. 不過高頻端的頻譜我想是處理的 重點, 這裡 oversample 包含數位濾波我認為是絕佳透明感的成因之一. 最後再多看幾家 R2R 名廠的電路, 比方說 Rockna http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/rockna26b_orig.png
感覺上像 4bit (16segment) string 混 21-22bit R2R, 對稱電路的接法不是很確定, 除 非有實品可以用電錶來確認, 更高階的 RD-0 基本上就是捨棄 shift registor 改用獨立 switch 來做開關的版本, 核心大概也用了 FT256 封裝的 FPGA 之類來做獨立 I/O. 大 陸的 Holo 泉跟 hibiki 我想也是走類似的布局風格, 其中令人比較好奇的大概就是 Holo 聲稱的硬體直解 DSD 到 R2R 吧. 接著值得一看的便是 MSB 的招牌大金塊 http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/msbgold_orig.png
2000年的版本純 R-2R, 2003的 platium DAC 就改成 MSB(most significant bit) 有 7 segment 3bit 的版本, .有點像星狀接地的布局令人備感興趣. 至於最新的 The Select DAC 大金條改良到何種境界恐怕就不得而知(除非有人肯拆). 同樣的 Metrum 的 DAC One&Two 也是很有趣的東西, 我猜應該是很接近大金塊架構的玩意. 一路堅持純 R-2R 結構的搞不好就是 totalDAC, 土豪般執著於高精度電阻的選料恐怕是 主因 http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/09_orig.jpg
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.120.61.247 ※ 文章網址: https://www.ptt.cc/bbs/Headphone/M.1483540596.A.202.html
1Fjiangee:衰減到一定振"幅"切換時的0..0 應該打錯吧 01/04 22:41
2Flll156k1529:這一切都好專業 等我讀好電子學電路學再來拜讀<(__)> 01/04 22:43
3Fpariah:你講的都是理論實際是這裡是耳機板所以應該聽的都是動漫歌 01/04 22:45
4Fpariah:所以我寧可看你解釋耳機與動漫音樂結合的現象 01/04 22:45
5Fpariah:而不是長篇大論什麼都看不懂直接end 01/04 22:45
6Fm9172250:華大師出現了! 01/04 22:49
7Fluwatercolor:ㄏㄏ好好笑,華華找不到動漫可以酸,反而要叫人寫與 01/04 22:49
8Fluwatercolor:動漫結合的心得來讓他酸www 01/04 22:49
9Frugger5566:專業推 01/04 23:00
10Fmtskyoko: <(_ _)> 01/04 23:01
11FYouShare:感謝整理 01/04 23:02
12FTimoBoll:恩恩跟我想得差不多 正準備發文呢(誤) 01/04 23:03
13FYouShare:看到1021的spec時我也在想為何0.01的誤差可以做到24bit, 01/04 23:04
14FYouShare:,原來如此 01/04 23:04
16FTimoBoll:我想你的勁敵在這裡XD 討論區有詳細說明 加油!! 01/04 23:05
17Fs82223:AUDIOGD新出的DAC模組超生火!體積小、價格不高、R2R,只差 01/04 23:09
18Fs82223:上市了,看能不能超越1021 01/04 23:09
19Fding822003:太猛了吧,AD/DA 之神是你 01/04 23:10
20FTimoBoll:要看digital filter還有buffer 單看DA部分跟1021差不多 01/04 23:10
21Fs82223:buffer就用個dynalo mini?應該超狂 01/04 23:11
22Fs82223:而且4片才1200RMB,就能弄成平衡架構,期待 01/04 23:12
23FTimoBoll:那就變一體機 但是DA這東西五年換一代 以後終究會落伍 01/04 23:12
24FTimoBoll:類比電路很久沒有進步了 大家互相抄抄XDD 01/04 23:13
25FTimoBoll:要做成sign/magitude要八片 不便宜喔 01/04 23:13
26Fs82223:打算弄個4片,成本好像還比一片1021還低 01/04 23:20
27Fjoehpj:沒有低歐XD 你的digital filter/buffer怎辦 都是$$$ 01/04 23:21
28Fs82223:就算弄1021我原本也是打算另外弄個buffer,就差filter而已 01/04 23:23
29Fhiro920463:這種價格買個兩片玩玩都ok 01/04 23:24
30Fkaouleah:我覺得華華邏輯應該不好 01/04 23:29
31Fmondale:解答了我對於R2R怎麼做到24bit這種精度的疑惑 推 \=w=/ 01/04 23:46
32FKowdan:看起來很厲害,總而言之先留言 01/04 23:46
33Fgayday: 這個板.... >_< 好恐怖喔 姆咪~~ 01/04 23:53
34FDaedolon:看不懂先推QQ 01/04 23:59
35Fyys310:audiogd那個超麻煩的吧XD 01/05 00:00
36Fqq03178963:先推以免被人家發現不懂 01/05 00:20
37Fang728:大概只看懂七成QQ 要回去重讀MSIC的東西惹QQ 01/05 00:26
38FCactusFlower:感謝樓主讓我一秒學會速讀 容小的一拜(跪 01/05 01:18
39FAllForUs:就算看不懂..也要用力推這樣優質的技術文章... 01/05 02:24
40Faltria27:看第一段就先下來推! 01/05 03:31
41FKevintsaitsa:快推免得別人以為我看不懂 01/05 07:14
42Fk078787878:理工魂推 01/05 07:28
43Fddik32:都寫中文可是都看不懂 只好跟推 01/05 08:14
44Fandyaries:認真看中... 01/05 09:11
45Fasdfg0612:看不懂 只能先推再說 XD 01/05 09:18
46Fhellscythe:原po很有錢啊,光就量測儀器看來 01/05 12:20
47Fclioneurise:推專業文 01/05 12:24
48Fhiro920463:稍微修正一下 denafrips的評價,後來發現只是 XMOS 那 01/05 12:51
49Fhiro920463:邊沒做好導致 88.1k竄進來(真的難聽), 走同軸跟光纖 01/05 12:53
50Fhiro920463:就正常了, 不過音場不大, 偏暖有點軟弱 01/05 12:54
51FkenApp:希望hiro大的R2R能壓勝denafrips~ 01/05 13:02
52Fkevinmonkey:先推再研究@@ 01/05 13:32
53Fammor:直接end 淚退 01/05 20:03
54Fsxing6326:AD5791哪裡強啊?十幾年前的PCM1704就不輸了吧 01/05 21:08
55Fsxing6326:看規格SPS也沒說多快... 01/05 21:10
56Fvwvwbg:在等audiogd的 01/05 21:19
57Fhiro920463:看 5791 的 DC accuracy ,gain error 的單位是用 ppm 01/05 21:50
58Fhiro920463: FSR 而不是 % FSR 就知道這顆誇張的地方,再看看 INL 01/05 21:51
59Fhiro920463: &DNL, 有效位數就是 20bit 不唬爛,不過代價就是 glit 01/05 21:51
60Fhiro920463:ch 跟 settle time 01/05 21:51
61Ftomyou1234 :專業推 01/06 23:01
62Fasdfg0612 :hiro大有沒有聽過holo audio的spring這台 01/07 23:29
63Fasdfg0612 :對他能解DSD這方面挺感興趣的 沒特別寫還真沒注意到 01/07 23:47
64Fhiro920463 :解dsd不稀奇,但他宣稱用離散元件去解就好玩了,我 01/08 16:56
65Fhiro920463 :自己試還是寫在 FPGA 裡方便,不論如何都還是會變成 01/08 16:56
66Fhiro920463 : multibit 才出FPGA 01/08 16:56
67Fyys310 :推推 01/08 19:40
68Fasdfg0612 :多謝 XD 來去查查看multi-bit 01/08 20:07