2009-02-11 24 views
2

我的DAC在內部時鐘頻率爲48khz,我需要從同樣是48khz的流中饋入它,但是從不同的時鐘源輸入。從另一個時鐘源的流驅動DAC?

這兩個來源會隨着時間的推移而漂移,其間的任何緩衝將不可避免地會溢出或下溢。

不幸的是,沒有可用的碼率控制機制。

這怎麼能最好的處理?

複製或拋出偶爾的樣本來補償是否可以接受?我估計每個約70k樣本的1個樣本爲30ppm的差異。

回答

2

由於您的時鐘基本上以兩種不同的速度運行,您別無選擇,只能複製或丟棄樣本。

保持已讀取/寫入樣本的數量,並根據當前時間計算您希望讀取/寫入的樣本數量。然後可以通過複製/丟棄樣本來調整差異。

0

這可能聽起來像一個愚蠢的問題,但聽我說:輸出率真的很重要嗎?

考慮這種情況 - 你有一個音頻輸入設備。您正在採樣48Khz的模擬波形輸入。無論如何,任何事情都可能產生波形 - 從麥克風的連續壓力水平測量到8Khz語音編解碼器或更低。事實上,你碰巧知道這個特定的輸出也是在48Khz與你在做什麼沒有關係。

如果輸出設備和輸入之間有完美的傳輸,當您將原始數字波形與您讀取的內容進行比較時,偶爾會看到您重複了一個樣本(如果您的時鐘更快)或錯過了一個(如果你比較慢)。但是這會自動發生,沒有你需要的任何補償。這很容易和你想要什麼時候「重複或拋出偶爾的樣本」一樣準確。

實際上,無論如何,DAC和ADC中的濾波效果和噪聲之間可能都不會有精確的重複。除非你在談論一些編碼的數字音頻格式 - 在這種情況下,忽略我所說的一切。編輯 - 好的,所以它是數字音頻 - S/PDIF?
該信號應攜帶足夠的信息來實現鎖相。理想情況下,在硬件中 - 信號的上升沿定義時鐘速率 - 您可以使用PLL硬件將您的A/D時鐘鎖定到輸入。或過度採樣一段時間,並計數上升沿以確定速率。或者在軟件層面,測量前四個時隙中的幀錯誤率,並調整您的時鐘進行補償。

+0

它是數字音頻文件。我關心的不是保真度問題。我更關心緩衝區溢出/下溢,並且在發生xxxxflow情況時不得不丟棄或組成大塊數據。 – JeffV 2009-02-11 19:41:49

1

如果您擔心保真度,而不是丟棄或複製樣品,請使用採樣率轉換器。首先,使用時間戳來測量源採樣率與DAC採樣率之間的相對頻率比。使用此比率來控制採樣率轉換器。一個體面的質量採樣率轉換器可以給你95分貝S/N比。計算量更大的算法可以使您的信噪比> 120分貝。

參見:

--jdkoftinoff

+0

@jdkoftinoff:我不確定這樣做是否適用於彼此非常接近的採樣率。你將不得不過度抽樣。 ?? – JeffV 2009-02-24 23:16:55

相關問題