[心得] 將量測級設備作為 DAC 使用
圖文易讀板
http://chihhanlin.weebly.com/25343373272820432026207362212030070dac29992.html
不曉得各位有沒有在 youtube 上看過一個 Sennheiser Factory Tour 的影片
https://youtu.be/5es8zggYM7A?t=8m35s
大概在8分40秒左右影片中的 HDVD 800 接到架子上中間一台 PXI 儀器進行量測, 從右邊
數來第三片模組就是這篇文章的測試重點: pxi-4461
http://sine.ni.com/nips/cds/view/p/lang/zht/nid/13634
這玩意基本上是美商國家儀器數年前(National Instrument, 文後簡稱為NI) 為了工業
上 sound&vibration 量測推出的24bit, ~200KS/s 資料擷取模組,有兩組類比輸出&輸
入接口. 既然有類比輸出,那自然浮出一個問題:這板子是否可以拿來當成 DAC 玩?答
案當然是肯定的, 不過這種低效益高成本的玩法一般人很難玩起來,正好小弟我工作上玩
到不少 NI 的硬體,於是乎有機會在這樣的平台驗證一些關於 DAC 的猜想,手邊剛好有
硬體的同好也不妨試著玩玩看。
先來簡單介紹一下我用來測試的系統:
http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/4884572_orig.jpg
1. NI PXI 機箱(主要用到一張 pxi-4461 當 DAC, 一張 pxi-4130 ;當 dc 電源, 負載
200mA 的時候漣波峰對峰應該小於 5mV , 拿來試推電供分離的usb DAC 或 DDC 很方便
2.耳擴與耳機:清逸倫 AT-f100 與阿仁 lotus HA-9. 前者用來推 K7XX (massdrop),後
者是 W1000X 專用。
3.usb DAC: 樂之邦的 02 us dragon, MD30, 挑這家的來比主要是原理類似,都用了
FPGA FIFO 來處理 jitter 的問題, 大概都可以不用考慮進 dac前數位訊號 jitter 對
音質的劣化。 MD30 這台網路上討論很少,最近趁著幾乎對砍價格入手新品(本來想拆機
研究,但兜進系統聽起來舒服,用起來方便就捨不得動手了),覺得是台CP值不錯的機子
(建議只用 usb 跟 line out 就好, spdif 輸入雖然架構上一樣過 FPGA FIFO 但是聽起
來就是不討喜,猜想韌體一定有問題 )。
4.類比線材:鐵三角 AT564A (很百搭的線)
http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/2234159_orig.jpg
開始前先讓大家有個概念,02 us dragon 用的 USB 晶片跟 md30 完全相同,不過要輸出
spdif 同軸&光纖數位訊號或者I2S 餵給dac晶片時參照的振盪器精度差很多,md30 用
了 1ps 精度VCXO 但是要焊線從 pcb 拉出訊號才能量測,所以就用 02 us dragon 的同
軸接 AT564A 轉 BNC 直接餵給示波器(500MHz)看眼圖大概了解一下 jitter 的狀況:
http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/5678455_orig.jpg
44.1KHz 16bit PCM, foobar2000 ASIO mode 輸出 spdif 主頻率大概 6MHz 左右
http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/1636337_orig.jpg
眼圖來看 jitter 峰對峰值大概 <1ns, 估計也是高斯分佈,jitter 的rms 值大概
<200ps
受限於老舊的量測設備(取樣率只有 2GS/s, equiv. mode 最高只有 100GS/s)其實也只能
推測 jitter 的 rms 值在 100ps 的級別,我認為已經是很不錯的數字了,當成 DDC 來
用完全對得起它的價格(耳擴功能與dac最好直接無視,評語就是乾癟沒有活力)。樂之邦
的東西難聽是類比調音差(LPF, I/V) , 有能力DIY的話應該都可以改出自己想要的效果。
外接dc電供的部份也很有趣,接上(大概 12V 30mA)後反而會讓電壓雜訊略為增加
(10mV 的程度),但是對 jitter 影響不大。最近其實弄了 1m-10m 的光纖線打算來做
pc->02 US dragon -> MD30 的A/B測試,不過不是本文重點就先
接下來談談 pxi-4461 的架構:
http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/3284416_orig.png
基本上這個模組在類比輸出有一個1024 點的 FIFO 從 pc 端撈資料,再透過 DDS 模組合
成出 DAC 需要的頻率,整個 FIFO 包含一些數位信號處理都是由板子裡幾個 FPGA &
DSP 單元構成。既然都用了FIFO 那麼 pc OS 端造成的 latency 就不是那麼重要(程式方
面我採取的作法是把 wave 檔讀成 24bit 的數值陣列整包放到記憶體去,沒記錯的話
pxi-4461 藉由 DMA 的方式透過主機板直接向記憶體要資料放進自己的FIFO裡,所以只要
考慮自己 DDS 產生的jitter 就好) 整個模組事實上可以放到 real time OS 去做但是完
全沒必要 。當然我也手賤拆了它研究 DAC 部份到底用那家的晶片(撇開製造商不談,我
大概是下游使用者中少數敢拆這玩意)
http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/3065103_orig.jpg
電源與ADC/DAC 部份分離,整個 layout 布局藏了很多 know how,三不五時就會想拿起
來研究
http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/4971_orig.jpg
NI 的儀器用了很多德儀的 IC, pxi-4461 用的 DAC 是 BB 的 PCM1738e
這張卡是五年甚至更早之前推出的產品,採用 PCM1738 大概也不是當時最頂尖的規格(正
好符合 24bit, 200K S/s 的要求),搭配的 OP 幾乎都是TI OPA系列的低雜訊放大器。不
過我認為整個模組最厲害還是它的電源設計,包含整個工業電腦機箱(幾乎一半的體積都
拿來塞電供,什麼CAT+線性電源都是浮雲,真的預算無上限大推 NI 的 PXI 機箱,抗噪
跟穩定度突破天際) 。
http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/8717615_orig.png
類比線路有三組 programmable 的 attenuator (最高 +-10V, 20mA 輸出),音色大致上
受這段影響,可惜幾乎沒辦法做更動(改下去整張卡就廢了,就算二手品還是有三、五萬
台票的價值,心臟沒那麼大)。儀器另外一個好處是規格列的清清楚楚,THD,dynamic
range,Spurious Free Dynamic Range 還有flatness什麼的規格書上都有列 (畢竟是可
以送回原廠校驗的玩意)
http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/6174493_orig.png
總之最後就寫了個簡單的播放程式(用labivew,ni 用來綁硬體的儀器控制程式語言),由
於內部函式庫參數限制一次最多只能塞 2^24 個資料點到記憶體(以 96KHz 取樣率的訊源
來說差不多 150-160秒),等於每150秒就會出現一次 50ms 左右的靜音時間(重新呼叫硬
體配置 FIFO 的時間),雖然不滿意但是作為測試也足夠了。音量調整直接在 PC 端對
16 or 24bit 數值做乘除運算所以幾乎可以保證使用到 DAC 完整的動態範圍(比如說設
定無衰減的時候就把輸出電壓極值放到 +-10V, 20dB 衰減就設為 +-1V)
http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/5175992_orig.png
labview 內建函數只能讀取 wav 檔也是美中不足之處,配合內建的 attenuator 其實蠻
適合用來測試一些耳擴極限狀態的輸出(沒辦法很多時候就是手賤想把音量 VR轉到最大試
試它的能力)。source code 如下圖示,labview coder 參考一下很快就能寫類似的東西(
要弄到硬體比較難)
http://chihhanlin.weebly.com/uploads/8/4/4/0/8440048/8443386_orig.png
最後討論一下聽感,比對下面兩組配置
a. foobar2000 ASIO -> USB -> MD30 -> RCA線 AT564A -> AT-F100 -> K7XX
b. labview -> pxi-4461 -> BNC 轉 RCA -> ->RCA線 AT564A -> AT-F100 -> K7XX
測試曲 96kHz 24bit 的有 The Ultimate Headphone Demonstration Disc,和樂器的八
奏繪卷(豪華絢爛 box USB碟裡頭有高取樣版,八奏版千本櫻有多混很多音軌進來,用這
張專輯聽起來爽不爽,能不能久聽去做系統調音會得到很好玩的結果); Hotel
California "they just can't kill the beast " 那一段不同取樣率的版本; String
Quartet in D, Op.76,No.5 -finale- presto (Hayden); 奇美 Violin Favourites
vol.4; Symphony No.9, in E Minor 很多版本。
a 組合的亮點就是 MD30 1ps precision clock + AD1955 (OP 還沒改),耐聽又不失解析
的聽感(缺點就是不夠通透),能夠充分發揮 K7XX 的舒適感的工作用配置(桃園又很冷,
耳罩保暖效果超好)。相較之下 b 組合會更加凸顯出耳擴+耳機的特性:配 at-f100 就超
熱情,配 HA-9 +w1000x 就多了點輕快與鐵家木殼怪異的音染,String Quartet 聽起來
更對味。整體而言 4461 帶給耳朵的疲勞度較大,人聲相對較難突顯出來,我將其定義為
很乾淨的中性訊源。硬體上 interpolation filter 大概有點效果,44.1KHz, 96 KHz,
192KHz 重現起來的效果並沒有顯著的差異(不過大概是耳朵等級不夠,但是相對其他
DAC 來說差異度相對小)
其實本來是想用這個量測模組兜一個量測平台來量自製擴跟前級放大電路的訊噪比,頻率
響應跟 cross talk 之類的,不過先挑了比較簡單(好玩)的題目來練手,接下來還計畫直
接用 NI的 FPGA 模組(這也是很奢侈的玩具,不過手頭有) 來打造自己的 DAC (用內建的
16-bit R-2R ladder dac 或者輸出 I2S 控制外部 dac),根據我短短的工作經驗,最難
搞的始終都是電源跟類比那一塊(感覺完全是經驗取向的領域了)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.120.61.247
※ 文章網址: https://www.ptt.cc/bbs/Headphone/M.1456399919.A.02B.html
推
02/25 19:41, , 1F
02/25 19:41, 1F
推
02/25 19:41, , 2F
02/25 19:41, 2F
推
02/25 19:42, , 3F
02/25 19:42, 3F
推
02/25 19:43, , 4F
02/25 19:43, 4F
推
02/25 19:44, , 5F
02/25 19:44, 5F
推
02/25 19:50, , 6F
02/25 19:50, 6F
→
02/25 19:50, , 7F
02/25 19:50, 7F
→
02/25 19:52, , 8F
02/25 19:52, 8F
推
02/25 20:37, , 9F
02/25 20:37, 9F
→
02/25 20:42, , 10F
02/25 20:42, 10F
推
02/25 21:10, , 11F
02/25 21:10, 11F
推
02/25 21:13, , 12F
02/25 21:13, 12F
→
02/25 21:14, , 13F
02/25 21:14, 13F
推
02/25 21:37, , 14F
02/25 21:37, 14F
推
02/25 21:41, , 15F
02/25 21:41, 15F
推
02/25 21:42, , 16F
02/25 21:42, 16F
推
02/25 21:47, , 17F
02/25 21:47, 17F
推
02/25 22:43, , 18F
02/25 22:43, 18F
推
02/25 23:54, , 19F
02/25 23:54, 19F
→
02/26 01:14, , 20F
02/26 01:14, 20F
推
02/26 03:12, , 21F
02/26 03:12, 21F
推
02/26 05:11, , 22F
02/26 05:11, 22F
推
02/26 05:17, , 23F
02/26 05:17, 23F
推
02/26 06:44, , 24F
02/26 06:44, 24F
推
02/26 06:45, , 25F
02/26 06:45, 25F
推
02/26 07:08, , 26F
02/26 07:08, 26F
推
02/26 07:13, , 27F
02/26 07:13, 27F
→
02/26 07:24, , 28F
02/26 07:24, 28F
→
02/26 07:24, , 29F
02/26 07:24, 29F
→
02/26 07:24, , 30F
02/26 07:24, 30F
推
02/26 10:02, , 31F
02/26 10:02, 31F
推
02/26 10:14, , 32F
02/26 10:14, 32F
推
02/26 10:27, , 33F
02/26 10:27, 33F
推
02/26 10:51, , 34F
02/26 10:51, 34F
推
02/26 14:42, , 35F
02/26 14:42, 35F
→
02/26 22:59, , 36F
02/26 22:59, 36F
→
02/26 23:00, , 37F
02/26 23:00, 37F
→
02/26 23:15, , 38F
02/26 23:15, 38F
推
02/29 06:16, , 39F
02/29 06:16, 39F
推
02/29 20:04, , 40F
02/29 20:04, 40F
推
11/12 02:44, , 41F
11/12 02:44, 41F