摘 要: 在VOIP和ModemPool等許多新的應(yīng)用發(fā)展的今天,多通道處理技術(shù)越來越受到重視,它不僅表現(xiàn)在算法研究上,而且也表現(xiàn)在系統(tǒng)實現(xiàn)上。結(jié)合在Smart Gateway方面的工作,提出了一個基于TMS320C6201的多通道信號處理平臺的結(jié)構(gòu),并詳細闡述了軟硬件的組成。
關(guān)鍵詞: 多通道信號處理 TMS320C6201 處理平臺
隨著因特網(wǎng)的發(fā)展,產(chǎn)生了Voice Over IP、Fax OverIP和Modem Pool等許多新的應(yīng)用,它們都強調(diào)多通道的數(shù)據(jù)處理。傳統(tǒng)意義上的多通道處理是將多路的單通道處理并行安排?,F(xiàn)在的DSP芯片的運算速度越來越快,以時鐘為100MHz的TMS320C549為例,如果用它完成G.729A的編解碼,一片可以支持5~6路。因此,假如我們采用高速DSP芯片來充當信號處理的核心的話,一片高速芯片可以替代以前的幾路,使得原有的多通道處理系統(tǒng)可以大大地簡化,在硬件上的開銷減小。
1 TMS320C6201的結(jié)構(gòu)和性能
由美國TI公司生產(chǎn)的TMS320C6201處理器[1]硬件資源豐富,主要由三大部分組成:CPU、外圍設(shè)備和存儲器。
C6201的地址總線為32位,所以尋址范圍達到4GB,其存儲器空間可分為四部分:片內(nèi)程序空間(可以用作Cache)、片內(nèi)數(shù)據(jù)空間、外部存儲空間和內(nèi)部外圍設(shè)備空間。可通過對五個BOOTMODE引腳的設(shè)置靈活設(shè)定各空間的地址范圍。片內(nèi)數(shù)據(jù)RAM包括四個8K×16的塊,這些塊交織在一起,使得CPU可同時訪問數(shù)據(jù)RAM的兩個不同塊而不會發(fā)生沖突,提高了數(shù)據(jù)并行讀寫的能力。對于較大的程序,片內(nèi)程序RAM可當做Cache來存儲經(jīng)常使用的代碼,減少對片外訪問次數(shù),從而提高程序運行速度。
與常見的芯片不同,C6201有八個功能單元,分為兩組,每組包括一個乘法器(Mn)和三個算術(shù)邏輯運算單元(Dn,Sn,Ln)。它們分別進行乘法運算、加減運算、線性和環(huán)形地址計算以及算術(shù)邏輯運算。因為輸入輸出端口相互獨立,所以8個運算單元可實現(xiàn)并行處理。每組運算單元對應(yīng)一條數(shù)據(jù)路徑,可以用作環(huán)形地址計算。
TMS320C6201的外圍設(shè)備包括DMA控制器、主機接口(HPI)、中斷選擇等。DMA控制器允許數(shù)據(jù)傳輸在CPU操作的后臺進行,因此C6201可與外部的低速設(shè)備接口而不降低CPU的吞吐量。C6201的DMA控制器有四個獨立的可編程通道,可以進行四個不同的DMA操作,每個通道可根據(jù)需要傳輸8位、16位或32位的數(shù)據(jù)。此外,還有一個輔助通道用于響應(yīng)HPI的服務(wù)請求。主機接口使得主機設(shè)備能夠直接地訪問CPU的存儲空間。TMS320C6201可通過引腳BOOTMODE[4:0]設(shè)置多種BOOT方式,例如直接執(zhí)行方式,或從外部EPROM、主機等設(shè)備裝載程序。C6201允許14個中斷,包括Reset、不可屏蔽中斷、串行口中斷、定時器中斷和外部中斷。CPU通過監(jiān)測IACK引腳判斷中斷請求,引腳INUM0~INUM3標識應(yīng)該服務(wù)的中斷矢量位置。
TMS320C6xx的兩個多通道帶緩存的串行口,與TI公司生產(chǎn)的其他DSP C2x,C2xx,C5x,C54x相同,具有支持全雙工通信,雙緩存數(shù)據(jù)寄存器結(jié)構(gòu)支持連續(xù)數(shù)據(jù)發(fā)送,收發(fā)時鐘獨立等特點。除此之外,它還有支持多種數(shù)據(jù)格式(8bit、12bit、16bit、20bit、24bit、32bit)的傳輸,A律和μ律壓擴,時鐘或幀同步的編程設(shè)置和極性控制,接口方便等優(yōu)點。C62xx有兩個32位的定時器,主要用于時鐘中斷、DMA控制器同步、事件計數(shù)等,它可由外部或內(nèi)部提供時鐘。
2 平臺的硬件構(gòu)成
由于TMS320C6201具備很強的運算能力,因而我們可以以它作為運算核心建立一個基于PCI總線的多通道信號處理的平臺,其硬件結(jié)構(gòu)如圖1所示。它包括輸入/輸出接口、并行的C6201芯片組、SDRAM、PCI總線控制和主機等五部分,每一片C6201可看作一個多通道處理子系統(tǒng)。輸入/輸出接口負責多路數(shù)據(jù)的A/D和D/A,并且有一定的復(fù)用和解復(fù)用能力;C6201用于信號處理和數(shù)據(jù)的接收/發(fā)送(至輸入/輸出接口);SDRAM存放接收/輸出的數(shù)據(jù)和通道上下文相關(guān)數(shù)據(jù);PCI總線控制主機與C6201芯片組的通信;主機負責獲取處理后的數(shù)據(jù)以及發(fā)送其本身采集的數(shù)據(jù)。
當處理程序目標代碼小時,可選用Boot方式將程序全部裝入片內(nèi);而當代碼太長時,可選用cache模式,將片內(nèi)程序空間設(shè)為cache,程序放在片外的SDRAM或其它外設(shè)中。運行時程序根據(jù)CPU需要部分裝入。在使用cache工作方式時,CPU的工作效率約為90%。
輸入的數(shù)據(jù)先經(jīng)解復(fù)用,然后分別發(fā)給C6201。C6201通過DMA通道自動接收數(shù)據(jù),并且將數(shù)據(jù)存放在SDRAM中。在接收的同時DMA也將數(shù)據(jù)輸出到輸入/輸出接口。當一幀數(shù)據(jù)接收完畢,外部緩存DMA產(chǎn)生一個中斷信號,通知C6201、C6201在接收到中斷信號后,更新其設(shè)置,即切換輸入數(shù)據(jù)的目標地址和輸出數(shù)據(jù)的源地址。與此同時,C6201也啟動信號處理模塊,對接收的數(shù)據(jù)通道逐個地進行處理。當然,在處理前需將該通道上下文相關(guān)數(shù)據(jù)從片外SDRAM搬移進片內(nèi),處理完后再將其搬移出去。在處理當前通道時,DMA還將同時將下一通道的上下文相關(guān)數(shù)據(jù)搬移進來。如此循環(huán),直至所有通道都處理完畢。
SDRAM存放接收和發(fā)送數(shù)據(jù)至少需要分配兩個段,一個段用于當前外部緩存DMA使用,一個段用于內(nèi)部搬移DMA使用。
主機通過PCI總線對C6201芯片組的HPI進行訪問,其訪問方式設(shè)為DMA方式。之所以采用PCI總線是為了保證高速的數(shù)據(jù)傳輸。作為PCI總線和HPI橋梁的總線控制器可以有很多選擇,以S5933為例,由于S5933與串行EEPROM可無縫連接,所以其初始化可在上電時由EEPROM自動載入。它有五個基址寄存器,它們可分別服務(wù)于PCI控制器的寄存器、JTAG測試總線控制器、平臺的控制和狀態(tài)寄存器以及C6201的HPI。PCI總線上的數(shù)據(jù)可通過S5933的mailbox寄存器、FIFO或直通數(shù)據(jù)通道等多種方式靈活地與平臺實現(xiàn)數(shù)據(jù)的交換,為基于主機的調(diào)試提供了良好的硬件基礎(chǔ)。
通過對整個系統(tǒng)的工作原理的描述中可以看出,在信號處理算法的運算速度得到保證后,整個系統(tǒng)的瓶頸將是C6201的DMA資源。在硬件開銷允許的情況下,使用快速的外設(shè)會提高系統(tǒng)的性能。
3 平臺的軟件設(shè)計
根據(jù)上面介紹的硬件結(jié)構(gòu),可以根據(jù)不同的需要設(shè)計相應(yīng)的系統(tǒng)軟件,以下僅介紹一種可靠性較高的軟件結(jié)構(gòu)。
鑒于TMS320C6201的高速運算能力,所以在每塊芯片內(nèi)部均采用線性結(jié)構(gòu),依照某種順序依次處理各通道的信號。芯片內(nèi)部的數(shù)據(jù)RAM分割出兩塊空間當作處理信號緩存,即用作ping-pong緩存,一塊用作當前處理,一塊用于后臺數(shù)據(jù)搬移。處理后的數(shù)據(jù)可視占用RAM的大小,適當?shù)匕才旁谄瑑?nèi)或片外,便于HPI訪問。
整個軟件采用中斷同步式控制,利用輸入信號所產(chǎn)生的中斷來觸發(fā)信號處理模塊的運行,中斷信號可以是一幀信號的結(jié)束(或開始)。其結(jié)構(gòu)如圖2,系統(tǒng)在進行完初始化后,立即進入同步信號等待。當檢測到中斷信號后,表明一幀信號接收的結(jié)束,首先關(guān)閉中斷,隨后進行外部存儲的DMA通道設(shè)置的更新,切換輸入信號的緩存。然后,檢測控制內(nèi)部數(shù)據(jù)搬進的DMA狀態(tài),如果搬移完成,更新DMA設(shè)置,即切換處理信號的ping-pong緩存,通知存儲器接口控制單元開始搬移下一路信號的數(shù)據(jù)。如果當前處理的是最后一個通道,則內(nèi)部數(shù)據(jù)搬進DMA設(shè)置為下一幀第一通道。接著進行信號處理模塊,在當前通道信號處理完成后,首先設(shè)置內(nèi)部數(shù)據(jù)搬出DMA,將當前通道的上下文相關(guān)數(shù)據(jù)搬移到外部存儲器中保存,然后再檢測是否所有通道處理結(jié)束。若沒有,則跳回內(nèi)部數(shù)據(jù)DMA狀態(tài)檢測;若結(jié)束,則進行系統(tǒng)狀態(tài)的更新。系統(tǒng)狀態(tài)更新完成后,打開中斷,進入中斷信號等待。
這樣的結(jié)構(gòu)看來不夠靈活,而且僅用到了一個中斷資源,似乎是大材小用了,為什么不增加DSP對外界的響應(yīng)且一直打開中斷呢?實際上這是有一定道理的。之所以將HPI的訪問方式設(shè)置為DMA方式,而只使用一個外部中斷。完全是為了讓DSP將主要時間花在信號處理上,且盡可能地減少DSP被頻繁的數(shù)據(jù)輸入輸出打斷。其原因有四點:第一,為加快信號處理算法的速度,盡可能地對循環(huán)進行流水線規(guī)劃,CPU運行至下次時,由于跳轉(zhuǎn)指令的頻繁出現(xiàn),根本無法相應(yīng)中斷;當循環(huán)次數(shù)較大時,無法保證中斷的及時響應(yīng)。第二,如果將循環(huán)改為可中斷式的,勢必造成寄存器資源使用過大,代碼的效率也將大幅度下降。第三,匯編語言編寫的程序大多都在不同程度對CPU的流水線時序有要求,即寄存器對流水線時序敏感。若任意時間均要響應(yīng)中斷的話,必將造成軟件產(chǎn)生不可預(yù)測的錯誤,出現(xiàn)混亂。第四,由于匯編語言編寫的程序代碼效率一般比優(yōu)化后的C語言高50%,所以為提高運算速度,核心算法都用匯編語言編寫,一些寄存器的值都與C語言模塊中的不同[2],如B14(DP)、A15(FP);而高層調(diào)用和中斷服務(wù)程序一般都用C語言編寫,如果在任意時刻響應(yīng)中斷,很容易造成C語言中斷服務(wù)程序的變量無法正確訪問,出現(xiàn)致命錯誤。綜上所述,中斷同步式結(jié)構(gòu)穩(wěn)健性更強。
多通道處理中還應(yīng)注意一個問題,即全局指針的重定向[3]。因為高層調(diào)用用C編寫,以及通道數(shù)不確定等因素,一般情況下,很難保證同一通道的上下文相關(guān)數(shù)據(jù)每次均被放在同樣的內(nèi)存位置上,因而上一幀時保存的全局指針變量的數(shù)值對當前幀不一定適用,所以對全局指針的重定向是必要的。
以上分析了C6201芯片組的工作方式,而主機與它們的通信是通過HPI對C6201存儲器訪問來完成的。在C6201片內(nèi)RAM開出一段數(shù)據(jù)空間作為系統(tǒng)信息區(qū),當C6201完成了一次多通道處理后,便在系統(tǒng)信息區(qū)中設(shè)置幀處理結(jié)束標志,并將處理后數(shù)據(jù)的存放地址和主機下載數(shù)據(jù)的存放地址寫入系統(tǒng)信息區(qū)的相應(yīng)位置。主機通過對各個C6201系統(tǒng)信息區(qū)的訪問了解其工作狀況,當發(fā)現(xiàn)某一塊DSP一幀處理完成后,立即清除幀處理結(jié)束標志,并從系統(tǒng)信息區(qū)中給出的處理后數(shù)據(jù)的存放地址讀取數(shù)據(jù)到硬盤(或其他設(shè)備)進行存儲(或處理),而且將待處理的數(shù)據(jù)搬移至主機下載數(shù)據(jù)的存放地址,以便C6201下一幀處理使用。當然,主機除了數(shù)據(jù)搬移和控制功能外,還可根據(jù)實際的運算能力和工作負荷,再增添一些功能。
4 展望
Radysis、Bluewave等公司基于C6000系列的多通道處理設(shè)備采用了與上述平臺相似的結(jié)構(gòu)。以VOIP的網(wǎng)關(guān)為例,本地電話的語音信號先傳送到交換局,局內(nèi)的復(fù)用設(shè)備(對應(yīng)平臺的輸入/輸出接口)根據(jù)C6201的處理能力分配相應(yīng)的話路。C6201對原始語音信號進行壓縮,壓縮后的數(shù)據(jù)通過主機讀取到網(wǎng)絡(luò)處理區(qū),交給網(wǎng)絡(luò)處理設(shè)備進行打包處理,最后以IP方式傳送到目的端。另一方面,網(wǎng)絡(luò)處理設(shè)備拆包后的壓縮碼流通過主機傳送到C6201控制的局部存儲區(qū)中,經(jīng)解壓后由DMA發(fā)送至復(fù)用設(shè)備,最終由交換局送至本地電話。
除了VOIP的智能網(wǎng)關(guān)和Modem Pool外,多通道處理的概念還可以延伸至雷達處理、多路數(shù)據(jù)采集、多路圖象監(jiān)控[4]等更為廣泛的領(lǐng)域中。在多媒體和因特網(wǎng)技術(shù)日新月異的今天,基于相同類型信號的多通道處理可進一步拓展為基于不同類型信號的多通道處理,因而研究多通道信號處理平臺有著很大的實際意義,它將成為新一代智能化多媒體終端的雛形。
參考文獻
1 TMS320C62x/67x CPU and Instruction Set.Texas Instruments
2 TMS320C6x Optimizing C Compiler.Texas Instruments
3 DSP Target-Side Design of a Multichannel/ Algorithm System on the TMS320C6000.Texas Instruments
4 徐 盛,陳 健.TMS320C6201在圖像處理中的應(yīng)用.電子技術(shù)應(yīng)用,1999;25(1)