USB音頻設備類(lèi)的音頻信號同步解決方案
之前采用簡(jiǎn)單的緩存門(mén)限控制方法判斷是否需要插值,即當緩存高于某門(mén)限時(shí),丟棄一個(gè)PCM樣點(diǎn)。而當低于某一門(mén)限時(shí),插入一個(gè)PCM樣點(diǎn),由于時(shí)鐘速度差異的長(cháng)期固有性,在插入/丟棄一個(gè)PCM樣點(diǎn)后,緩存數量仍然可能繼續減少或增加,從而造成程序無(wú)規律的爆發(fā)式的插入或丟棄數據操作,產(chǎn)生不可接受的噪音。
因而在算法設計時(shí),重點(diǎn)考慮以下幾點(diǎn)。
操作的穩定性:不能有對數據突發(fā)性的操作。
操作的分散性:要盡量平均的控制信號,把插入/丟棄產(chǎn)生的失真平均化。
資源消耗量?。阂m應嵌入式系統成本低廉、片上存儲、運算資源不是很富裕的客觀(guān)條件。
音頻的實(shí)時(shí)性:聲音對實(shí)時(shí)性要求較高,不能出現停頓、明顯延遲等情況。
因此,采用一種插入/丟棄樣本間隔平均化的自適應模糊控制算法進(jìn)行設計。
針對兩次插值/丟棄操作之間的樣點(diǎn)數進(jìn)行控制,而非對樣點(diǎn)本身,在每次插值/丟棄操作后進(jìn)行速率匹配判斷,修改插值/丟棄間隔。由于通常這種時(shí)鐘差異在千分之一量級,插入/丟棄操作間隔也在千樣點(diǎn)量級,大大減少了頻繁的判斷操作。算法結構如圖3所示。

5 算法實(shí)現
由于每臺電腦以及每塊開(kāi)發(fā)板的時(shí)鐘都有誤差,所以每次連接設備都需要檢查兩者時(shí)鐘速率關(guān)系,實(shí)現該功能的關(guān)鍵代碼如下:


評論