SoC系統(tǒng)中實(shí)時(shí)總線模塊的設(shè)計(jì)理念與應(yīng)用
這看起來是無解的矛盾,我們可以采用DMA(Direct Memory Access,直接存儲讀寫)技術(shù)解決。一般SoC芯片都有外接DDR/SDRAM作為最終的數(shù)據(jù)與程序緩存,TDM模塊可以直接向DRAM傳輸實(shí)時(shí)數(shù)據(jù),而不用頻繁地中斷CPU,實(shí)質(zhì)上是把片內(nèi)緩存的需求轉(zhuǎn)移到了片外(假設(shè)總線帶寬足夠),既降低了隊(duì)列長度又降低了中斷CPU的頻率,從而解決了這一對矛盾。
DMA技術(shù)實(shí)質(zhì)上也是模塊主動掌握總線主動權(quán),要求采用AHB總線主控模式,最終框架結(jié)構(gòu)會變成圖3所示。
延時(shí)與DMA應(yīng)用的矛盾
細(xì)心的讀者會發(fā)現(xiàn)DMA的采用增加了處理延時(shí),這不是與我們的原則矛盾嗎?這里牽涉到對嵌入式CPU中音頻處理算法的理解,大多數(shù)是音頻壓縮算法,一般都要求有一定的音頻片斷長度以保障壓縮率與減少CPU中RTOS的調(diào)度開銷。另外一些音頻處理程序如回響消減DSP算法,經(jīng)常采用64拍有限濾波器處理大于16ms的回響拖尾。另一些高度壓縮算法(如以有限激勵(lì)參數(shù)模型為基礎(chǔ)的算法)要求對更長的音頻片斷做處理。所以從算法的角度,SoC系統(tǒng)的音頻處理延時(shí)理論下限為多算法處理單元的最大值。我們只要保證DMA的傳輸數(shù)據(jù)延時(shí)小于這個(gè)下限就可以了,這樣就充分利用了SoC系統(tǒng)的最小延時(shí),進(jìn)而計(jì)算DMA片斷的長度也有了依據(jù)。
回到隊(duì)列長度的計(jì)算上,我們現(xiàn)在只需要考慮TDM模塊得到AHB總線使用權(quán)之間的間隙與TDM數(shù)據(jù)輸入的速度差的最壞值就可以了。
圖3:最終框架結(jié)構(gòu)圖。
隊(duì)列深度=最長AHB總線獲得間隔×TDM輸入速率
AHB總線輪詢(poll)間隙取決于總線上有幾個(gè)主控模式模塊與仲裁的優(yōu)先級策略。一般建議實(shí)時(shí)模塊享有較高優(yōu)先級,當(dāng)然隨之而來的要求是總線申請的頻度不能太高。平衡這一對矛盾的解決辦法超越本文論述的范疇,讀者可以從“固定權(quán)重加優(yōu)先級競爭”的仲裁機(jī)制入手來設(shè)計(jì)AHB總線仲裁器。
動態(tài)切換時(shí)機(jī)與影子寄存器的使用
在實(shí)際應(yīng)用中,我們常常發(fā)現(xiàn)幀格式中很多時(shí)分信道并沒有音頻數(shù)據(jù),這時(shí)就要采用時(shí)分掩碼來屏蔽這些信道以阻止無效數(shù)據(jù)占用帶寬。問題是時(shí)分信通中是否有數(shù)據(jù)是動態(tài)變化的,動態(tài)變化的數(shù)據(jù)要求時(shí)分掩碼參數(shù)也要?jiǎng)討B(tài)分配。但是怎么切換呢?這里采用“影子寄存器”技術(shù),原理是兩套寄存器,一套參數(shù)應(yīng)用于當(dāng)前幀,另一套應(yīng)用于下一幀。利用幀同步頭的一個(gè)時(shí)鐘周期實(shí)時(shí)切換。而SoC中的CPU只看到一套寄存器地址,同時(shí)配置行為本身放寬了實(shí)時(shí)要求的限制,實(shí)時(shí)切換由TDM模塊完成,具體圖形見圖4。
評論