基于dMAX的C6727B并行數(shù)據(jù)傳輸設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
DSP(數(shù)字信號(hào)處理器)和FPGA(現(xiàn)場(chǎng)可編程門(mén)陣列)一直是數(shù)字信號(hào)處理的兩個(gè)核心處理單元。目前的無(wú)線通信、圖像系統(tǒng)、語(yǔ)音系統(tǒng)都是以這兩類芯片為核心,配置必要的外圍電路來(lái)組成整個(gè)系統(tǒng)。DSP的主要優(yōu)點(diǎn)是算法處理能力強(qiáng),而FPGA的主要優(yōu)點(diǎn)則是并行處理。隨著電子技術(shù)和芯片技術(shù)的發(fā)展,DSP和FPGA逐漸融合,目前一般的FPGA芯片都提供數(shù)字算法處理IP核,可以在FPGA上完成FFT、濾波等傳統(tǒng)意義上屬于DSP的工作。這些核的主要缺點(diǎn)是算法固定,只提供成熟的算法,算法處理的靈活性較低。經(jīng)過(guò)長(zhǎng)期的發(fā)展,DSP的片內(nèi)外設(shè)逐漸豐富,但一直很難觸及FPGA的并行處理。
TI公司推出的C6727B芯片其片內(nèi)集成了最新的dMAX(Dual Data Movement Accelerator,雙向數(shù)據(jù)傳輸加速器)模塊,使得并行數(shù)據(jù)傳輸成為可能。其實(shí)現(xiàn)并行數(shù)據(jù)傳輸?shù)谋举|(zhì)就是相當(dāng)于在片內(nèi)集成2個(gè)EDMA(En—hanced Direct Memory Access,增強(qiáng)的直接存儲(chǔ)器訪問(wèn))模塊,實(shí)現(xiàn)數(shù)據(jù)在無(wú)需CPU參與情況下的并行雙路傳輸。本文以HPI和EMIF接口的數(shù)據(jù)傳輸為例,介紹dMAX的結(jié)構(gòu)、配置及其使用方法。
1 dMAX及其結(jié)構(gòu)
C6727B是在C671x基礎(chǔ)上發(fā)展的浮點(diǎn)型DSP,其最高工作頻率達(dá)到350 MHz。單個(gè)指令周期可以執(zhí)行6個(gè)浮點(diǎn)數(shù)據(jù)運(yùn)算,最高達(dá)到2 100MFLOPS;片內(nèi)具有256KB的RAM,片內(nèi)外設(shè)有。EMIF、UHPI、音頻串口、dMAX、定時(shí)器以及I2C、SPI接口等。
dMAx模塊是C672x系列DSP所特有的數(shù)據(jù)傳輸模塊,可以實(shí)現(xiàn)內(nèi)部存儲(chǔ)器、片內(nèi)外設(shè)和外部存儲(chǔ)器兩兩之間的數(shù)據(jù)傳輸。其內(nèi)部結(jié)構(gòu)如圖1所示。
從圖中可以看出,dMAX主要由事件和中斷處理模塊、事件編碼器、事件參數(shù)表、事件的地址生成硬件等組成。事件模塊分成高優(yōu)先級(jí)和低優(yōu)先級(jí)兩個(gè)相互獨(dú)立的模塊,各自有獨(dú)立的事件入口和事件參數(shù)表,和CPU有獨(dú)立的接口,使得dMAX可以同時(shí)處理兩個(gè)不同的事件。當(dāng)訪問(wèn)CPU端口時(shí),MAX0的優(yōu)先級(jí)高,MAXl的優(yōu)先級(jí)低。
dMAX可以使用戶定義的數(shù)據(jù)在內(nèi)部數(shù)據(jù)存儲(chǔ)器與外設(shè)之間移動(dòng),dMAX能夠移動(dòng)數(shù)據(jù)到任意能夠?qū)ぶ返拇鎯?chǔ)器空間,包括內(nèi)部存儲(chǔ)器、外設(shè)存儲(chǔ)器空間、擴(kuò)展內(nèi)存。dMAx能夠同時(shí)處理2個(gè)數(shù)據(jù)轉(zhuǎn)移請(qǐng)求,而且dMAX能夠通過(guò)執(zhí)行先進(jìn)的一維、二維與三維數(shù)據(jù)的存儲(chǔ)器傳輸工作,從而使DSP得以專注于信號(hào)處理任務(wù),顯著提高系統(tǒng)性能,適合圖像的子幀提取或者語(yǔ)音信號(hào)的子信道提取。
為了方便CPU直接控制dMAX,C6727B還有2個(gè)專門(mén)的寄存器負(fù)責(zé)CPU與dMAX的通信,分別為DETR與DESR寄存器,CPU通過(guò)對(duì)這兩個(gè)寄存器的讀寫(xiě)就可以控制dMAX的操作。
2 系統(tǒng)硬件結(jié)構(gòu)
C6727B和其他DSP有一個(gè)較大的區(qū)別就是,C6727B不再提供專門(mén)的外部中斷引腳,而是使用一些GPIO引腳與dMAX配合使用,通過(guò)寄存器的設(shè)置將GPIO引腳配置成外部中斷引腳。為了實(shí)現(xiàn)并行的數(shù)據(jù)傳輸,需要使用2個(gè)外部中斷引腳。為此,使用C6727B的音頻串口的AXR[8]和AXR[9]作為通用I/O引腳,同時(shí)需要將音頻串口的CONFIGMCASP0和CONFIGMCASP1分別配置成Ox0001和0x0002,如圖2所示。此時(shí)音頻串口不能再作為普通的音頻口使用,而是配置成I/0接口。
從圖2可以看出,配置好音頻串口后,一旦AXR[8]和AXR[9]引腳有上升沿到,則McASP0和McASP1激活dMAX的事件26和事件27。這兩個(gè)事件分別連接到dMAX的低優(yōu)先級(jí)和高優(yōu)先級(jí)模塊。即使兩個(gè)中斷同時(shí)發(fā)生,dMAX也可以同時(shí)響應(yīng)事件,并處理相應(yīng)的數(shù)據(jù)傳輸。
[!--empirenews.page--]
為了實(shí)現(xiàn)并行數(shù)據(jù)傳輸,必須將事件26的參數(shù)設(shè)置成與EMIF接口通信,同時(shí)需要將傳輸數(shù)據(jù)的源地址,目的地址,數(shù)據(jù)個(gè)數(shù)和數(shù)據(jù)增加方式(不變、加1、減1等)在初始化時(shí)寫(xiě)入dMAx(Lo)的參數(shù)中。這樣,一旦事件26觸發(fā),dMAX(Lo)將自動(dòng)傳輸數(shù)據(jù);數(shù)據(jù)傳輸結(jié)束后,可以根據(jù)需要將dMAX(Lo)配置為向CPU發(fā)送內(nèi)部中斷14。同樣,對(duì)于事件27,配置dMAX(Hi)的參數(shù)就可以完成對(duì)HPI接口的數(shù)據(jù)傳輸,也可以根據(jù)需要將dMAX(Hi)配置為向CPU發(fā)送內(nèi)部中斷13。
McASP與中斷相關(guān)的寄存器配置是實(shí)現(xiàn)以上方案的重點(diǎn),其中斷配置框圖如圖3所示。從圖中可以看出,使用PFUNC寄存器將其配置成通用I/0引腳;PDIR寄存器控制I/O引腳的方向,若是輸出引腳則由POUT引腳輸出高低電平,若是輸入引腳則由PDIN寄存器讀出該引腳的狀態(tài);此外,可以使用PDCLR和PSET寄存器清除或者設(shè)置輸出引腳的狀態(tài)。
3 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件設(shè)計(jì)主要包括McASP、dMAX、HPI和EMIF的初始化,以及中斷使能等。系統(tǒng)主程序只需要等待中斷進(jìn)行相應(yīng)的處理,主要的數(shù)據(jù)傳輸工作都是由dMAX按照軟件配置自動(dòng)完成,不需要CPU參與。系統(tǒng)軟件流程如圖4所示。圖中,虛線部分表示由dMAX獨(dú)立完成的工作,實(shí)線部分表示由CPU完成的工作。兩者之間通過(guò)內(nèi)部中斷方式實(shí)現(xiàn)狀態(tài)的交流。
當(dāng)有2個(gè)以上傳輸事件發(fā)生,尤其是多個(gè)事件都在同一個(gè)dMAX優(yōu)先級(jí)完成時(shí),事件仲裁就變得很重要。圖5是多個(gè)dMAX事件進(jìn)行數(shù)據(jù)傳輸?shù)睦?。圖中,事件A為dMAX(Hi)數(shù)據(jù)傳輸;事件0~2為dMAX(Lo)數(shù)據(jù)傳輸。在dMAX(Lo)中,設(shè)定事件O優(yōu)先級(jí)最高,事件2優(yōu)先級(jí)最低。
事件A和事件0同時(shí)發(fā)生,將分別觸發(fā)dMAX(Hi)和dMAX(Lo)進(jìn)行數(shù)據(jù)傳輸。在之后的時(shí)鐘周期內(nèi),dMAX(Hi)不再有其他事件發(fā)生,將穩(wěn)定、持續(xù)地進(jìn)行事件A的數(shù)據(jù)傳輸,直到傳輸結(jié)束,如圖5中最后一行所示。
對(duì)于dMAX(Lo),在傳輸了事件0的一個(gè)數(shù)據(jù)后,事件2發(fā)生。雖然事件2的優(yōu)先級(jí)低于事件O,但dMAX(Lo)仍然會(huì)響應(yīng)事件2,并且會(huì)傳輸一個(gè)事件2的數(shù)據(jù),如圖中第5行的E2/QO。此時(shí),dMAX(Lo)就存在2個(gè)激活的事件——事件O和事件2。之后的數(shù)據(jù)傳輸dMAX(Lo)進(jìn)行優(yōu)先級(jí)判斷,將優(yōu)先傳輸事件O的數(shù)據(jù),而將事件2掛起,直到事件O結(jié)束后才開(kāi)始處理事件2的數(shù)據(jù)傳輸。
4 總 結(jié)
dMAX使用2路獨(dú)立的傳輸通道從而實(shí)現(xiàn)并行數(shù)據(jù)傳輸,其本質(zhì)是采用了獨(dú)立的物理通道,這與FPGA實(shí)現(xiàn)并行處理基本一致。本文介紹了基于C6727B的dMAX的基本結(jié)構(gòu)以及軟硬件設(shè)計(jì),使用事件優(yōu)先級(jí)控制區(qū)分多個(gè)事件的數(shù)據(jù)傳輸。由于可以并行傳輸數(shù)據(jù),使得DSP與外部設(shè)備的通信更加方便和快捷,而且不需要CPU的參與,減輕了CPU的負(fù)擔(dān),使CPU可以專注于復(fù)雜的算法處理。