<progress id="ndt1d"><progress id="ndt1d"></progress></progress>

    <form id="ndt1d"></form>
    
    

    
    

      <address id="ndt1d"></address>

      <progress id="ndt1d"><mark id="ndt1d"></mark></progress><p id="ndt1d"><th id="ndt1d"><address id="ndt1d"></address></th></p>
        <thead id="ndt1d"><cite id="ndt1d"><mark id="ndt1d"></mark></cite></thead>

        <th id="ndt1d"></th>

              <span id="ndt1d"></span>

              <meter id="ndt1d"></meter>

              燒機好主力 數字端口輸入輸出試驗板制作

              來源:bbs.hifidiy.net 發布者:ljpwed 版權:原創

              筆者平時經常測試各種DAC和數字端口,需要在各種板、機之間換來換去,感覺很麻煩,就決定做一款全功能的測試平臺!帶USB輸入、FPGA內部帶SPDIF接收器、IIS接收器及正弦波發生器...

              筆者平時經常測試各種DAC和數字端口,需要在各種板、機之間換來換去,感覺很麻煩,就決定做一款全功能的測試平臺!

              因為是實驗板,整個PCB做得比較簡單,后面會做個更完美的PCB!

              實驗板

              實驗板

              帶USB輸入

              USB輸入用的是意大利模塊的ARM部分,而CDLP部分則用FPGA自己編寫!IIS輸出方面和官方模塊完全一樣,另外為了實驗方便,還有一個SPDIF輸出,SPDIF和IIS是同步輸出,并支持DSD DOP同步輸出,也就是說即使播放DSD,IIS和SPDIF也可以同時輸出,非常方便! 

              IIS支持的采樣:PCM,44.1k-384K,DSD為DSD64-DSD512,而SPDIF PCM輸出最大可達到384K(實際上可以實現768K和1536K輸出,但是一方面是當前這么高的碼率基本用不上,再者要輸出1536K的話還要用到FPGA的PLL),DSD DOP則可以最大輸出DSD128。為什么要輸出384K呢,后面會說到!

              用別人的東西雖然并不是我的風格,但是如果自己開發一個USB 解碼并不是容易的事,硬件開發并不難,但是windows 驅動并不是我的在行的,在者國內驅動開發的資料少得要死,那些從入門到精通都他么的在扯蛋!
              FPGA內部帶有一個自行設計的SPDIF接收器。

              SPDIF最高可以接收PCM 384K,既然可以接收384K那么DSD128 DOP接收就不是問題了! SPDIP解碼設計最重要的技術是CDR(時鐘數據恢復),比如說在數據傳輸方面的光纖通信,硬盤SATA接口,USB接口等都是要用到這個技術。

              傳輸速度的難道先不說,以個人觀點SPDIF解碼應該是比較其它的要難!原因在于SPDIF是一種變碼率的信號,而且還有兩種晶振模式(44.1 48),這樣就把解碼器變得更復雜! 板上用的是一片ALTEAR EP4的FPGA,其內部邏輯速度可以達到400M左右(在簡單邏輯上是可以實現的),時序也是能很好的滿足的,如果放在復雜的邏輯運算中,那基本不太可能!

              SPDIF接收器基本上是一種復雜的邏輯,本板的SPDIF接收器主時鐘運行在250MHZ左右!這個頻率在FPGA復雜的運算中可以說是非常高了(以和EP4 相同種類的FPGA來說),為了滿足時序要求,我也是花了不少心思做時序優化!用FPGA做SPDIF解碼難度大,原因在于FPGA的速度問題,如果要像AK4118等這樣的芯片那樣接收,那么FPGA的邏輯速度至少也要GHZ以上的,但那種FPGA成本太高了,雖然EP4的PLL輸出可以達到1.3GHZ,不過邏輯速度就差遠了,所以要樣解碼SPDIF那么就要雙晶振模式,使用雙晶振模式相對AK4118這種單晶振模式(IIS輸出是用內部高速PLL分頻)輸出的IIS精度要高一些(其實也差不了多少,如果用示波器看的話還是很明顯的),當然了AK4118鎖定速度要比 FPGA SPDIF解碼的要快幾個采樣!

              別一方面,由于FPGA單口IO輸出電壓要3.3v,那么就要有電壓轉換器,板上有一個LMV7219作為整形! 這款板子的SPDIF接收穩定性上是完全沒有問題,為了測試穩定性我也是找來了很多SPDIF輸出的源:

              spdif輸出板

              底下是一臺PS3主機,主機上最左的是一片很久以前做的一個意大利模塊,CDLP部分用的是ALTEAR MAX II (還是自己搞的)同樣支持SPDIF PCM384K DSD128 DOP輸出,后面的板子,我想大家都知道是什么,年后,還會找一兩臺老的CD機做測試! 實際上只要SPDIF輸出的碼率誤差不小于3%-5%(主要看輸出采樣是多少),就可以完美接收!

              FPGA內置了一個IIS接收器!

              以前,做IIS接收器的時候都是使用的被動接收,這種接收方式容易受IIS源時鐘的干擾,會產生很大的失真,為了解決這個問題,我便采用一個類似SPDIF的接收方式——IIS解碼同樣有一個CDR,產生同步接收的BCLK,這樣MCLK、LRCK、BCLK就是主動式的,IIS的MCLK就完全不用了,即使BCLK在短時內產生大的抖動,也不會影響FPGA的數據接收!

              IIS接收器制作起來要簡單一樣,原因是BCLK的脈沖長度是相同的!IIS解碼還帶一個SPDIF輸出,原理和功能上和意大利一樣。

              FPGA內置一個正弦波發生器。

              正弦波發生器可以輸出PCM 44.1k-1536k的采樣(1536k的我并沒有測試),輸出頻率1Hz~35KHz,IIS輸出32bit!! 正弦波發生器采用的是CORDIC算法,Quartus是帶有這個IP核,很省事,雖然省事但這個IP并不好用,這個IP都是浮點輸入和輸出,還是弧度角,這樣計算角速度的時候就寫一大堆代碼,還要用到浮點加減乘,這樣FPGA用掉的資源就差不多是7500個邏輯了......好在上面三個解碼器只用到1500多個邏輯,還是有余量的!

              整個正弦IP可以運行在100MHZ左右(時序是滿足的),而整個計算會有差不多50個時鐘,這樣就可以產生2MHZ的采樣率(輸出1536k的采樣不是問題)!后面我會自己做一個整數類型的CORDIC,只為了減少FPGA的資源使用量。年底PCB產廠都過年了,不好打樣!年后會做一個帶DAC的板子實際測試評評!

              DAC實驗板

              關注【HIFI音響】公眾平臺

                ID:HIFI中國音響網 ID:hifidiy_2016
              国产免费av吧_女人与拘猛交高清播放免费_欧美特大毛茸茸bbm视视_国产私人尤物无码不卡