系統(tǒng)在進(jìn)行完初始化后,立即進(jìn)入同步信號(hào)等待。當(dāng)檢測(cè)到中斷信號(hào)后,表明一幀信號(hào)接收的結(jié)束,首先關(guān)閉中斷,隨后進(jìn)行外部存儲(chǔ)的DMA通道設(shè)置的更新,切換輸入信號(hào)的緩存。然后,檢測(cè)控制內(nèi)部數(shù)據(jù)搬進(jìn)的DMA狀態(tài),如果搬移完成,更新DMA設(shè)置,即切換處理信號(hào)的ping-pong緩存,通知存儲(chǔ)器接口控制單元開始搬移下一路信號(hào)的數(shù)據(jù)。如果當(dāng)前處理的是最后一個(gè)通道,則內(nèi)部數(shù)據(jù)搬進(jìn)DMA設(shè)置為下一幀第一通道。接著進(jìn)行信號(hào)處理模塊,在當(dāng)前通道信號(hào)處理完成后,首先設(shè)置內(nèi)部數(shù)據(jù)搬出DMA,將當(dāng)前通道的上下文相關(guān)數(shù)據(jù)搬移到外部存儲(chǔ)器中保存,然后再檢測(cè)是否所有通道處理結(jié)束。若沒有,則跳回內(nèi)部數(shù)據(jù)DMA狀態(tài)檢測(cè);若結(jié)束,則進(jìn)行系統(tǒng)狀態(tài)的更新。系統(tǒng)狀態(tài)更新完成后,打開中斷,進(jìn)入中斷信號(hào)等待。 這樣的結(jié)構(gòu)看來不夠靈活,而且僅用到了一個(gè)中斷資源,似乎是大材小用了,為什么不增加DSP對(duì)外界的響應(yīng)且一直打開中斷呢?實(shí)際上這是有一定道理的。之所以將HPI的訪問方式設(shè)置為DMA方式,而只使用一個(gè)外部中斷。完全是為了讓DSP將主要時(shí)間花在信號(hào)處理上,且盡可能地減少DSP被頻繁的數(shù)據(jù)輸入輸出打斷。其原因有四點(diǎn):第一,為加快信號(hào)處理算法的速度,盡可能地對(duì)循環(huán)進(jìn)行流水線規(guī)劃,CPU運(yùn)行至下次時(shí),由于跳轉(zhuǎn)指令的頻繁出現(xiàn),根本無法相應(yīng)中斷;當(dāng)循環(huán)次數(shù)較大時(shí),無法保證中斷的及時(shí)響應(yīng)。第二,如果將循環(huán)改為可中斷式的,勢(shì)必造成寄存器資源使用過大,代碼的效率也將大幅度下降。第三,匯編語言編寫的程序大多都在不同程度對(duì)CPU的流水線時(shí)序有要求,即寄存器對(duì)流水線時(shí)序敏感。若任意時(shí)間均要響應(yīng)中斷的話,必將造成軟件產(chǎn)生不可預(yù)測(cè)的錯(cuò)誤,出現(xiàn)混亂。第四,由于匯編語言編寫的程序代碼效率一般比優(yōu)化后的C語言高50%,所以為提高運(yùn)算速度,核心算法都用匯編語言編寫,一些寄存器的值都與C語言模塊中的不同[2],如B14(DP)、A15(FP);而高層調(diào)用和中斷服務(wù)程序一般都用C語言編寫,如果在任意時(shí)刻響應(yīng)中斷,很容易造成C語言中斷服務(wù)程序的變量無法正確訪問,出現(xiàn)致命錯(cuò)誤。綜上所述,中斷同步式結(jié)構(gòu)穩(wěn)健性更強(qiáng)。
在多通道處理中還應(yīng)注意一個(gè)問題,即全局指針的重定向3。因?yàn)楦邔诱{(diào)用用C編寫,以及通道數(shù)不確定等因素,一般情況下,很難保證同一通道的上下文相關(guān)數(shù)據(jù)每次均被放在同樣的內(nèi)存位置上,因而上一幀時(shí)保存的全局指針變量的數(shù)值對(duì)當(dāng)前幀不一定適用,所以對(duì)全局指針的重定向是必要的。
以上分析了C6201芯片組的工作方式,而主機(jī)與它們的通信是通過HPI對(duì)C6201存儲(chǔ)器訪問來完成的。在C6201片內(nèi)RAM開出一段數(shù)據(jù)空間作為系統(tǒng)信息區(qū),當(dāng)C6201完成了一次多通道處理后,便在系統(tǒng)信息區(qū)中設(shè)置幀處理結(jié)束標(biāo)志,并將處理后數(shù)據(jù)的存放地址和主機(jī)下載數(shù)據(jù)的存放地址寫入系統(tǒng)信息區(qū)的相應(yīng)位置。主機(jī)通過對(duì)各個(gè)C6201系統(tǒng)信息區(qū)的訪問了解其工作狀況,當(dāng)發(fā)現(xiàn)某一塊DSP一幀處理完成后,立即清除幀處理結(jié)束標(biāo)志,并從系統(tǒng)信息區(qū)中給出的處理后數(shù)據(jù)的存放地址讀取數(shù)據(jù)到硬盤(或其他設(shè)備)進(jìn)行存儲(chǔ)(或處理),而且將待處理的數(shù)據(jù)搬移至主機(jī)下載數(shù)據(jù)的存放地址,以便C6201下一幀處理使用。當(dāng)然,主機(jī)除了數(shù)據(jù)搬移和控制功能外,還可根據(jù)實(shí)際的運(yùn)算能力和工作負(fù)荷,再增添一些功能。
4 展望
Radysis、Bluewave等公司基于C6000系列的多通道處理設(shè)備采用了與上述平臺(tái)相似的結(jié)構(gòu)。以VOIP的網(wǎng)關(guān)為例,本地電話的語音信號(hào)先傳送到交換局,局內(nèi)的復(fù)用設(shè)備(對(duì)應(yīng)平臺(tái)的輸入/輸出接口)根據(jù)C6201的處理能力分配相應(yīng)的話路。C6201對(duì)原始語音信號(hào)進(jìn)行壓縮,壓縮后的數(shù)據(jù)通過主機(jī)讀取到網(wǎng)絡(luò)處理區(qū),交給網(wǎng)絡(luò)處理設(shè)備進(jìn)行打包處理,最后以IP方式傳送到目的端。另一方面,網(wǎng)絡(luò)處理設(shè)備拆包后的壓縮碼流通過主機(jī)傳送到C6201控制的局部存儲(chǔ)區(qū)中,經(jīng)解壓后由DMA發(fā)送至復(fù)用設(shè)備,最終由交換局送至本地電話。
除了VOIP的智能網(wǎng)關(guān)和Modem Pool外,多通道處理的概念還可以延伸至雷達(dá)處理、多路數(shù)據(jù)采集、多路圖象監(jiān)控4等更為廣泛的領(lǐng)域中。在多媒體和因特網(wǎng)技術(shù)日新月異的今天,基于相同類型信號(hào)的多通道處理可進(jìn)一步拓展為基于不同類型信號(hào)的多通道處理,因而研究多通道信號(hào)處理平臺(tái)有著很大的實(shí)際意義,它將成為新一代智能化多媒體終端的雛形。





