USB音頻設(shè)備類的音頻信號同步解決方案
(1)基本性能
關(guān)閉軟件鎖相環(huán),系統(tǒng)在緩存中存放240個sample開始播放。而每次當(dāng)程序播放約45 s時,由于緩存消耗殆盡,語音會自動中斷,無法播放。
開啟軟件鎖相環(huán),程序可以無時間限制運行,達到設(shè)計目的。
(2)緩存需求測試
在播放至少10 min穩(wěn)定以后,利用變量rangel和range2跟蹤緩存內(nèi)數(shù)據(jù)數(shù)量波動范圍,記錄最大值和最小值,分12次測試,如圖4所示。
可見,在啟動軟件鎖相環(huán)以后,緩存中數(shù)據(jù)量最大浮動范圍在192~250 sample之間。因此,為保證數(shù)據(jù)不溢出,只需要約60字節(jié)空間作為緩存就能維持設(shè)備正常工作。
(3)估算時鐘偏差測試
在不同電腦上運行10 min以上,提取插入/丟棄數(shù)據(jù)間隔,取倒數(shù)可以得到穩(wěn)定后設(shè)備和USB時鐘偏差率。由圖5可見,總體偏差在0.001~0.003以內(nèi),基本符合預(yù)期。
(4)穩(wěn)定性測試
運行10 min以后,讀取當(dāng)前設(shè)備緩存內(nèi)數(shù)據(jù)量。由于每次寫入/讀取8個sample,而終止程序進行數(shù)據(jù)提取是隨機的,無法確定緩存剛才由USB寫入還是由 ML2308讀取,因此在240上下8個sample以內(nèi)都是完全符合預(yù)期的。由圖6可見,程序能準(zhǔn)確地將緩存中數(shù)據(jù)量控制在240個sample左右,完全達到設(shè)計目標(biāo)。
結(jié) 語
基于插值算法的自適應(yīng)軟件鎖相環(huán),適用于針對USB_Audio_Class_Device的時鐘同步需求。它在達到設(shè)計要求的前提下,對嵌入式系統(tǒng)內(nèi)存和MIPS占用極低,非常適合在利用USB總線作為音頻數(shù)據(jù)傳輸,或通信雙方存在一定的不確定速率的誤差且需要設(shè)備自主完成數(shù)據(jù)同步的設(shè)備中使用。
評論