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