<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于TMS320C6201的多通道信號處理平臺(tái)

          基于TMS320C6201的多通道信號處理平臺(tái)

          作者: 時(shí)間:2006-05-07 來源:網(wǎng)絡(luò) 收藏

          摘要:在VOIP和ModemPool等許多新的應(yīng)用發(fā)展的今天,多通道處理技術(shù)越來越受到重視,它不僅表現(xiàn)在算法研究上,而且也表現(xiàn)在系統(tǒng)實(shí)現(xiàn)上。結(jié)合在Smart Gateway方面的工作,提出了一個(gè)基于TMS320C6201的多通道信號處理平臺(tái)的結(jié)構(gòu),并詳細(xì)闡述了軟硬件的組成。

          本文引用地址:http://www.ex-cimer.com/article/242347.htm

          關(guān)鍵詞:多通道信號處理 TMS320C6201 處理平臺(tái)

          隨著因特網(wǎng)的發(fā)展,產(chǎn)生了Voice Over IP、Fax OverIP和Modem Pool等許多新的應(yīng)用,它們都強(qiáng)調(diào)多通道的數(shù)據(jù)處理。傳統(tǒng)意義上的多通道處理是將多路的單通道處理并行安排。現(xiàn)在的DSP芯片的運(yùn)算速度越來越快,以時(shí)鐘為100MHz的TMS320C549為例,如果用它完成G.729A的編解碼,一片可以支持5~6路。因此,假如我們采用高速DSP芯片來充當(dāng)信號處理的核心的話,一片高速芯片可以替代以前的幾路,使得原有的多通道處理系統(tǒng)可以大大地簡化,在硬件上的開銷減小。

          1 TMS320C6201的結(jié)構(gòu)和性能

          由美國TI公司生產(chǎn)的TMS320C6201處理器[1]硬件資源豐富,主要由三大部分組成:CPU、外圍設(shè)備和存儲(chǔ)器。

          C6201的地址總線為32位,所以尋址范圍達(dá)到4GB,其存儲(chǔ)器空間可分為四部分:片內(nèi)程序空間可以用作Cache、片內(nèi)數(shù)據(jù)空間、外部存儲(chǔ)空間和內(nèi)部外圍設(shè)備空間??赏ㄟ^對五個(gè)BOOTMODE引腳的設(shè)置靈活設(shè)定各空間的地址范圍。片內(nèi)數(shù)據(jù)RAM包括四個(gè)8K×16的塊,這些塊交織在一起,使得CPU可同時(shí)訪問數(shù)據(jù)RAM的兩個(gè)不同塊而不會(huì)發(fā)生沖突,提高了數(shù)據(jù)并行讀寫的能力。對于較大的程序,片內(nèi)程序RAM可當(dāng)做Cache來存儲(chǔ)經(jīng)常使用的代碼,減少對片外訪問次數(shù),從而提高程序運(yùn)行速度。

          與常見的芯片不同,C6201有八個(gè)功能單元,分為兩組,每組包括一個(gè)乘法器Mn和三個(gè)算術(shù)邏輯運(yùn)算單元DnSnLn。它們分別進(jìn)行乘法運(yùn)算、加減運(yùn)算、線性和環(huán)形地址計(jì)算以及算術(shù)邏輯運(yùn)算。因?yàn)檩斎胼敵龆丝谙嗷オ?dú)立,所以8個(gè)運(yùn)算單元可實(shí)現(xiàn)并行處理。每組運(yùn)算單元對應(yīng)一條數(shù)據(jù)路徑,可以用作環(huán)形地址計(jì)算。

          TMS320C6201的外圍設(shè)備包括DMA控制器、主機(jī)接口HPI、中斷選擇等。DMA控制器允許數(shù)據(jù)傳輸在CPU操作的后臺(tái)進(jìn)行,因此C6201可與外部的低速設(shè)備接口而不降低CPU的吞吐量。C6201的DMA控制器有四個(gè)獨(dú)立的可編程通道,可以進(jìn)行四個(gè)不同的DMA操作,每個(gè)通道可根據(jù)需要傳輸8位、16位或32位的數(shù)據(jù)。此外,還有一個(gè)輔助通道用于響應(yīng)HPI的服務(wù)請求。主機(jī)接口使得主機(jī)設(shè)備能夠直接地訪問CPU的存儲(chǔ)空間。TMS320C6201可通過引腳BOOTMODE40設(shè)置多種BOOT方式,例如直接執(zhí)行方式,或從外部EPROM、主機(jī)等設(shè)備裝載程序。C6201允許14個(gè)中斷,包括Reset、不可屏蔽中斷、串行口中斷、定時(shí)器中斷和外部中斷。CPU通過監(jiān)測IACK引腳判斷中斷請求,引腳INUM0~INUM3標(biāo)識應(yīng)該服務(wù)的中斷矢量位置。

          TMS320C6xx的兩個(gè)多通道帶緩存的串行口,與TI公司生產(chǎn)的其他DSP C2xC2xxC5xC54x相同,具有支持全雙工通信,雙緩存數(shù)據(jù)寄存器結(jié)構(gòu)支持連續(xù)數(shù)據(jù)發(fā)送,收發(fā)時(shí)鐘獨(dú)立等特點(diǎn)。除此之外,它還有支持多種數(shù)據(jù)格式8bit、12bit、16bit、20bit、24bit、32bit的傳輸,A律和μ律壓擴(kuò),時(shí)鐘或幀同步的編程設(shè)置和極性控制,接口方便等優(yōu)點(diǎn)。C62xx有兩個(gè)32位的定時(shí)器,主要用于時(shí)鐘中斷、DMA控制器同步、事件計(jì)數(shù)等,它可由外部或內(nèi)部提供時(shí)鐘。

          2 平臺(tái)的硬件構(gòu)成

          由于TMS320C6201具備很強(qiáng)的運(yùn)算能力,因而我們可以以它作為運(yùn)算核心建立一個(gè)基于PCI總線的多通道信號處理的平臺(tái),其硬件結(jié)構(gòu)如圖1所示。它包括輸入/輸出接口、并行的C6201芯片組、SDRAM、PCI總線控制和主機(jī)等五部分,每一片C6201可看作一個(gè)多通道處理子系統(tǒng)。輸入/輸出接口負(fù)責(zé)多路數(shù)據(jù)的A/D和D/A,并且有一定的復(fù)用和解復(fù)用能力;C6201用于信號處理和數(shù)據(jù)的接收/發(fā)送(至輸入/輸出接口);SDRAM存放接收/輸出的數(shù)據(jù)和通道上下文相關(guān)數(shù)據(jù);PCI總線控制主機(jī)與C6201芯片組的通信;主機(jī)負(fù)責(zé)獲取處理后的數(shù)據(jù)以及發(fā)送其本身采集的數(shù)據(jù)。

          當(dāng)處理程序目標(biāo)代碼小時(shí),可選用Boot方式將程序全部裝入片內(nèi);而當(dāng)代碼太長時(shí),可選用cache模式,將片內(nèi)程序空間設(shè)為cache,程序放在片外的SDRAM或其它外設(shè)中。運(yùn)行時(shí)程序根據(jù)CPU需要部分裝入。在使用cache工作方式時(shí),CPU的工作效率約為90%。

          輸入的數(shù)據(jù)先經(jīng)解復(fù)用,然后分別發(fā)給C6201。C6201通過DMA通道自動(dòng)接收數(shù)據(jù),并且將數(shù)據(jù)存放在SDRAM中。在接收的同時(shí)DMA也將數(shù)據(jù)輸出到輸入/輸出接口。當(dāng)一幀數(shù)據(jù)接收完畢,外部緩存DMA產(chǎn)生一個(gè)中斷信號,通知C6201、C6201在接收到中斷信號后,更新其設(shè)置,即切換輸入數(shù)據(jù)的目標(biāo)地址和輸出數(shù)據(jù)的源地址。與此同時(shí),C6201也啟動(dòng)信號處理模塊,對接收的數(shù)據(jù)通道逐個(gè)地進(jìn)行處理。當(dāng)然,在處理前需將該通道上下文相關(guān)數(shù)據(jù)從片外SDRAM搬移進(jìn)片內(nèi),處理完后再將其搬移出去。在處理當(dāng)前通道時(shí),DMA還將同時(shí)將下一通道的上下文相關(guān)數(shù)據(jù)搬移進(jìn)來。如此循環(huán),直至所有通道都處理完畢。

          SDRAM存放接收和發(fā)送數(shù)據(jù)至少需要分配兩個(gè)段,一個(gè)段用于當(dāng)前外部緩存DMA使用,一個(gè)段用于內(nèi)部搬移DMA使用。

          主機(jī)通過PCI總線對C6201芯片組的HPI進(jìn)行訪問,其訪問方式設(shè)為DMA方式。之所以采用PCI總線是為了保證高速的數(shù)據(jù)傳輸。作為PCI總線和HPI橋梁的總線控制器可以有很多選擇,以S5933為例,由于S5933與串行EEPROM可無縫連接,所以其初始化可在上電時(shí)由EEPROM自動(dòng)載入。它有五個(gè)基址寄存器,它們可分別服務(wù)于PCI控制器的寄存器、JTAG測試總線控制器、平臺(tái)的控制和狀態(tài)寄存器以及C6201的HPI。PCI總線上的數(shù)據(jù)可通過S5933的mailbox寄存器、FIFO或直通數(shù)據(jù)通道等多種方式靈活地與平臺(tái)實(shí)現(xiàn)數(shù)據(jù)的交換,為基于主機(jī)的調(diào)試提供了良好的硬件基礎(chǔ)。

          通過對整個(gè)系統(tǒng)的工作原理的描述中可以看出,在信號處理算法的運(yùn)算速度得到保證后,整個(gè)系統(tǒng)的瓶頸將是C6201的DMA資源。在硬件開銷允許的情況下,使用快速的外設(shè)會(huì)提高系統(tǒng)的性能。

          3 平臺(tái)的軟件設(shè)計(jì)

          根據(jù)上面介紹的硬件結(jié)構(gòu),可以根據(jù)不同的需要設(shè)計(jì)相應(yīng)的系統(tǒng)軟件,以下僅介紹一種可靠性較高的軟件結(jié)構(gòu)。

          鑒于TMS320C6201的高速運(yùn)算能力,所以在每塊芯片內(nèi)部均采用線性結(jié)構(gòu),依照某種順序依次處理各通道的信號。芯片內(nèi)部的數(shù)據(jù)RAM分割出兩塊空間當(dāng)作處理信號緩存,即用作ping-pong緩存,一塊用作當(dāng)前處理,一塊用于后臺(tái)數(shù)據(jù)搬移。處理后的數(shù)據(jù)可視占用RAM的大小,適當(dāng)?shù)匕才旁谄瑑?nèi)或片外,便于HPI訪問。

          整個(gè)軟件采用中斷同步式控制,利用輸入信號所產(chǎn)生的中斷來觸發(fā)信號處理模塊的運(yùn)行,中斷信號可以是一幀信號的結(jié)束(或開始)。其結(jié)構(gòu)如圖2,系統(tǒng)在進(jìn)行完初始化后,立即進(jìn)入同步信號等待。當(dāng)檢測到中斷信號后,表明一幀信號接收的結(jié)束,首先關(guān)閉中斷,隨后進(jìn)行外部存儲(chǔ)的DMA通道設(shè)置的更新,切換輸入信號的緩存。然后,檢測控制內(nèi)部數(shù)據(jù)搬進(jìn)的DMA狀態(tài),如果搬移完成,更新DMA設(shè)置,即切換處理信號的ping-pong緩存,通知存儲(chǔ)器接口控制單元開始搬移下一路信號的數(shù)據(jù)。如果當(dāng)前處理的是最后一個(gè)通道,則內(nèi)部數(shù)據(jù)搬進(jìn)DMA設(shè)置為下一幀第一通道。接著進(jìn)行信號處理模塊,在當(dāng)前通道信號處理完成后,首先設(shè)置內(nèi)部數(shù)據(jù)搬出DMA,將當(dāng)前通道的上下文相關(guān)數(shù)據(jù)搬移到外部存儲(chǔ)器中保存,然后再檢測是否所有通道處理結(jié)束。若沒有,則跳回內(nèi)部數(shù)據(jù)DMA狀態(tài)檢測;若結(jié)束,則進(jìn)行系統(tǒng)狀態(tài)的更新。系統(tǒng)狀態(tài)更新完成后,打開中斷,進(jìn)入中斷信號等待。

          這樣的結(jié)構(gòu)看來不夠靈活,而且僅用到了一個(gè)中斷資源,似乎是大材小用了,為什么不增加DSP對外界的響應(yīng)且一直打開中斷呢?實(shí)際上這是有一定道理的。之所以將HPI的訪問方式設(shè)置為DMA方式,而只使用一個(gè)外部中斷。完全是為了讓DSP將主要時(shí)間花在信號處理上,且盡可能地減少DSP被頻繁的數(shù)據(jù)輸入輸出打斷。其原因有四點(diǎn):第一,為加快信號處理算法的速度,盡可能地對循環(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)改為可中斷式的,勢必造成寄存器資源使用過大,代碼的效率也將大幅度下降。第三,匯編語言編寫的程序大多都在不同程度對CPU的流水線時(shí)序有要求,即寄存器對流水線時(shí)序敏感。若任意時(shí)間均要響應(yīng)中斷的話,必將造成軟件產(chǎn)生不可預(yù)測的錯(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ù)值對當(dāng)前幀不一定適用,所以對全局指針的重定向是必要的。

          以上分析了C6201芯片組的工作方式,而主機(jī)與它們的通信是通過HPI對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ī)通過對各個(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)為例,本地電話的語音信號先傳送到交換局,局內(nèi)的復(fù)用設(shè)備(對應(yīng)平臺(tái)的輸入/輸出接口)根據(jù)C6201的處理能力分配相應(yīng)的話路。C6201對原始語音信號進(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ù)日新月異的今天,基于相同類型信號的多通道處理可進(jìn)一步拓展為基于不同類型信號的多通道處理,因而研究多通道信號處理平臺(tái)有著很大的實(shí)際意義,它將成為新一代智能化多媒體終端的雛形。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();