呂衛(wèi)國,沈發(fā)江,徐 偉
(江蘇自動(dòng)化研究所,江蘇 連云港 222006)
隨著數(shù)字化時(shí)代的來臨,DSP的應(yīng)用幾乎遍及整個(gè)電子領(lǐng)域,在很多需要實(shí)時(shí)數(shù)據(jù)處理的場合,即使采用目前最先進(jìn)的DSP芯片,單片處理器也無法滿足大量數(shù)據(jù)實(shí)時(shí)處理的需求,往往需要多只DSP并行工作才能完成任務(wù)。例如在某水聲信號處理系統(tǒng)中,由于前端有48通道的模擬信號采集數(shù)據(jù),要完成信號的頻率檢測及方位計(jì)算,單片DSP是無法實(shí)現(xiàn)的。根據(jù)估算,單片DSP(TMS320C6713)只能實(shí)時(shí)計(jì)算6路信號的頻率檢測(FFT),那么48路信號做頻率檢測至少就需要8片DSP,再加上其他的一些運(yùn)算,必須構(gòu)建多于8片DSP的處理系統(tǒng)才能完成系統(tǒng)的需求,針對以上需求,本文建立了具有11片DSP的多DSP并行處理系統(tǒng)。
TMS320C6713作為一款高性能的 32-位浮點(diǎn)DSP,具有較強(qiáng)的數(shù)據(jù)處理能力,并具有低功耗、低成本的優(yōu)點(diǎn),適用于精度要求較高且成本控制較嚴(yán)的信號處理場合。其主頻可達(dá)300MHz,指令周期3.3ns。為了加快處理速度,其內(nèi)核采用4KB的一級程序緩存(Cache)、4KB的一級數(shù)據(jù)緩存、256KB的內(nèi)部存儲(chǔ)器,可動(dòng)態(tài)分配64KB作為程序和數(shù)據(jù)共享的二級緩存。憑借二級高速緩存及VLIW架構(gòu),最高運(yùn)算速度可達(dá) 2400MIPS/1800MFLOPS。同時(shí),其內(nèi)部的 2個(gè)同步緩沖串口(McBsp)作為芯片對外接口,能夠配合芯片內(nèi)部的EDMA通道,大大提高其數(shù)據(jù)處理的吞吐速度。雖然該芯片具有以上的優(yōu)點(diǎn),但也存在著外設(shè)端口單一,多芯片之間通信方式不夠靈活等缺點(diǎn),這樣不利于多 DSP系統(tǒng)建立后數(shù)據(jù)處理任務(wù)的分配和協(xié)作。為了解決這一問題,就必須研究多DSP并行數(shù)據(jù)處理過程中數(shù)據(jù)在不同DSP之間的交換技術(shù),以便實(shí)現(xiàn)多DSP并行處理系統(tǒng)中的運(yùn)算負(fù)載平衡,進(jìn)一步提高效率。
在本文討論的多DSP系統(tǒng)中,由于需要對外部輸入的數(shù)據(jù)進(jìn)行并行處理,并且處理的流程也不固定。因此,各處理器之間必然會(huì)存在較多的數(shù)據(jù)交換,這就需要處理器之間具有較靈活的數(shù)據(jù)交換能力。TI公司的 TMS320C6713對外的數(shù)據(jù)接口主要有外部存儲(chǔ)器接口(EMIF)以及多通道同步串行接口(McBSP)。使用EMIF接口擴(kuò)展存儲(chǔ)器來實(shí)現(xiàn)多DSP之間數(shù)據(jù)交換是一個(gè)比較普遍的思路,但是這只適用于DSP數(shù)量較少的情況,當(dāng)DSP數(shù)量增加時(shí),一方面會(huì)占用FPGA較多的RAM資源,提高了系統(tǒng)成本,另一方面由于并行高速數(shù)據(jù)傳輸,抗干擾能力較差,傳輸?shù)目煽啃越档?。因此,在?shù)據(jù)交換帶寬滿足系統(tǒng)要求的情況下,合理利用同步串行接口進(jìn)行內(nèi)部數(shù)據(jù)交換具有占用FPGA資源少,數(shù)據(jù)傳輸穩(wěn)定可靠、控制較簡單等優(yōu)點(diǎn)?;诰W(wǎng)絡(luò)交換機(jī)的設(shè)計(jì)思想,文中設(shè)計(jì)了基于FPGA的串口數(shù)據(jù)交換機(jī),將多片DSP均通過各自的McBSP連接到串口交換機(jī),從而實(shí)現(xiàn)各只DSP之間數(shù)據(jù)的靈活交換。
圖1是通用多DSP并行處理系統(tǒng)的結(jié)構(gòu)框圖,由大規(guī)??删幊唐骷﨔PGA、多只DSP及外掛SDRAM存儲(chǔ)器、FPGA程序FLASH、DSP程序FLASH、千兆以太網(wǎng)口、調(diào)試串口、數(shù)據(jù)輸入及數(shù)據(jù)輸出接口等組成。FPGA作為系統(tǒng)的控制核心,內(nèi)嵌了 CPU(Microblaze),用來管理系統(tǒng)的外部設(shè)備,多只DSP作為從設(shè)備,主要完成信號處理的任務(wù)。各只DSP的主機(jī)口都映射到CPU的空間中,作為CPU的從設(shè)備。CPU可以通過主機(jī)口來訪問各只 DSP的存儲(chǔ)空間和資源。以太網(wǎng)口主要實(shí)現(xiàn)與外部設(shè)備的通信。
圖1 通用信號處理模塊系統(tǒng)結(jié)構(gòu)框圖
上述數(shù)據(jù)處理系統(tǒng)設(shè)計(jì)的核心是如何實(shí)現(xiàn)多只DSP之間的通信控制及數(shù)據(jù)交換,即如何建立起多DSP之間的數(shù)據(jù)通信通道,這也是本文討論的重點(diǎn)。數(shù)據(jù)交換的性能、數(shù)據(jù)交換的靈活性以及可靠性是決定數(shù)據(jù)處理性能至關(guān)重要的因素。
隨著 DSP器件技術(shù)的發(fā)展,同步串行接口(SPORT)作為標(biāo)準(zhǔn)外設(shè)出現(xiàn)在各種型號的DSP中,為DSP之間的通信提供了方便。每個(gè)同步串行接口均由發(fā)送器和接收器構(gòu)成,一般有6根信號線組成,分別為發(fā)送數(shù)據(jù)(DT)、接收數(shù)據(jù)(DR)、發(fā)送時(shí)鐘(TCLK)、接收時(shí)鐘(RCLK)、發(fā)送幀同步(TFS)和接收幀同步(RFS)。
圖2 系統(tǒng)同步串行接口交換的連接框圖
使用時(shí),在FPGA內(nèi)部通過開關(guān)將不同DSP的同步串行接口的相應(yīng)信號互聯(lián),配置相關(guān)寄存器以確保收發(fā)時(shí)鐘、同步信號和數(shù)據(jù)幀長度的正確合理,便可以實(shí)現(xiàn)同步串行接口的數(shù)據(jù)通信。
本系統(tǒng)FPGA選用Xilinx 公司的XC2V3000,是Virtex-II家族的成員之一,具有64*56個(gè)邏輯陣列,1728Kbit的塊RAM、18*18的嵌入式乘法器、4個(gè)時(shí)鐘管理器,最大達(dá)720個(gè)I/O口。
圖2所示為系統(tǒng)同步串行接口交換的連接框圖,串口交換機(jī)采用VHDL語言編寫,核心是一種狀態(tài)機(jī),是系統(tǒng)多只DSP數(shù)據(jù)交換的核心部件。外部各片DSP都通過自己的同步串行接口連接到一個(gè)接口轉(zhuǎn)換模塊上,接口轉(zhuǎn)換模塊再鏈接到串口交換機(jī)上。接口轉(zhuǎn)換模塊主要完成同步串行接口數(shù)據(jù)的串并轉(zhuǎn)換或者并串轉(zhuǎn)換,以便和串口交換機(jī)內(nèi)部進(jìn)行數(shù)據(jù)通信。
圖3 串口交換機(jī)工作流程圖
串口交換機(jī)內(nèi)部主要包括三個(gè)功能模塊:數(shù)據(jù)接收模塊、數(shù)據(jù)檢測和搬移模塊(串口交換機(jī)核心),以及數(shù)據(jù)發(fā)送模塊。數(shù)據(jù)接收模塊完成串行端口數(shù)據(jù)的串并轉(zhuǎn)換并將數(shù)據(jù)寫入到雙端口的緩存中;數(shù)據(jù)檢測及搬移模塊完成數(shù)據(jù)包幀頭的解析以及數(shù)據(jù)在不同串行端口緩存之間的數(shù)據(jù)搬移;數(shù)據(jù)發(fā)送模塊完成數(shù)據(jù)從雙端口緩存的讀取及數(shù)據(jù)的并串轉(zhuǎn)換,并發(fā)送到相應(yīng)的串行端口。
圖4給出了串口交換機(jī)內(nèi)部結(jié)構(gòu)示意圖。由于所有 TMS320C6713共有兩個(gè)高速串行端口,其中串行端口0的發(fā)送和接收端都經(jīng)過雙端口RAM掛接在交換機(jī)上,而串口1的發(fā)送幀標(biāo)志管腳和發(fā)送數(shù)據(jù)管腳設(shè)置為通用的GPIO管腳,作為交換機(jī)的控制和狀態(tài)信號。其中,串口1的發(fā)送幀標(biāo)志管腳作為DSP數(shù)據(jù)交換時(shí)的請求信號;串口1的發(fā)送數(shù)據(jù)管腳作為當(dāng)前該片DSP串口0狀態(tài)指示信號。從圖4中可以看出,當(dāng)DSP1要發(fā)送數(shù)據(jù)給DSP2時(shí),DSP1先檢測其DX1的狀態(tài),當(dāng)DX1允許時(shí),則通過FSX1向串口交換機(jī)發(fā)出數(shù)據(jù)交換請求,串口交換機(jī)接收到數(shù)據(jù)請求后,查詢DSP2的DX1狀態(tài),當(dāng)其DX1允許時(shí),則開始把DSP1串行端口0的接收緩存(DPRAM1)的數(shù)據(jù)搬移到DSP2串行端口0的發(fā)送緩存(DPRAM4)中,通過串行端口發(fā)送到DSP2中,完成本次數(shù)據(jù)通信;以此類推,其他DSP之間進(jìn)行數(shù)據(jù)交換時(shí)也采取類似的過程。
圖4 串口交換機(jī)內(nèi)部結(jié)構(gòu)示意圖
本設(shè)計(jì)中的軟件基于TI公司CCS開發(fā)環(huán)境,開發(fā)環(huán)境提供了DSP芯片支持庫CSL,縮短了軟件的開發(fā)周期。具體配置和收發(fā)程序如下。
串口交換機(jī)的數(shù)據(jù)包格式為:
其中,0x5555555D為發(fā)送數(shù)據(jù)幀頭。DST是目的節(jié)點(diǎn)號,SRC是源節(jié)點(diǎn)號,CNT為發(fā)送數(shù)據(jù)長度,中間四個(gè)32位字為保留字,最后是數(shù)據(jù)區(qū)。
串口交換機(jī)初始化:
串口交換機(jī)使用串口0作為數(shù)據(jù)交換的通道,大部分參數(shù)配置都參考默認(rèn)配置,需要注意的兩個(gè)地方是:在對串口0的配置中將PCR(串口控制寄存器)寄存器的 FSXM 位設(shè)置為 0(MCBSP_PCR_FSXM_EXTERNAL),即發(fā)送由外部提供幀信號;在對串口1的配置中,將 PCR寄存器的 RIOEN為設(shè)置為 1(MCBSP_PCR_RIOEN_GPIO),即將FSR和CLKR管腳作為GPIO使用,用于觸發(fā)串口0的數(shù)據(jù)發(fā)送。初始化代碼見函數(shù)McbspHubInit。
串口交換機(jī)數(shù)據(jù)接收采用雙緩沖EDMA傳輸鏈結(jié)構(gòu)。EDMA控制器提供了一種靈活的傳輸機(jī)制,稱為“連接”(linking),可以將不同EDMA傳輸參數(shù)組連接起來,組成一個(gè)傳輸鏈,為同一個(gè)通道服務(wù)。在傳輸鏈中,一個(gè)傳輸?shù)慕Y(jié)束會(huì)導(dǎo)致自動(dòng)從參數(shù)RAM中裝載下一次傳輸需要的事件參數(shù)。在EDMA鏈接收完數(shù)據(jù)后,會(huì)相應(yīng)的置上接收標(biāo)志,當(dāng)用戶程序需要接受相應(yīng)節(jié)點(diǎn)的數(shù)據(jù)時(shí),只需判斷相應(yīng)節(jié)點(diǎn)的數(shù)據(jù)標(biāo)志位,如果標(biāo)志位準(zhǔn)備好,則應(yīng)用程序可以在相應(yīng)的緩沖區(qū)讀取數(shù)據(jù),否則,等待數(shù)據(jù)接收好標(biāo)志,直到標(biāo)志已好,接收數(shù)據(jù)。接收函數(shù)代碼見函數(shù)McbspHubRecv。
基于串口進(jìn)行數(shù)據(jù)交換的多DSP并行綜合處理平臺作為一種通用的數(shù)據(jù)處理平臺,在提供高性能的信號處理能力的同時(shí),可實(shí)現(xiàn)多片DSP之間的較為有效的數(shù)據(jù)交互,實(shí)現(xiàn)過程簡單、易行,具有連線簡單、通信速度快、可靠性高等特點(diǎn),是一種解決多片DSP并行處理與信息交互的有效方法。該方法在某型信號處理機(jī)中得到應(yīng)用。實(shí)際應(yīng)用證明該方法簡單、可靠,滿足了系統(tǒng)的數(shù)據(jù)實(shí)時(shí)交換要求。
[1]TMS320C6713BGDP300 data sheet [M].Texas Instrument,2005.
[2]Virtex-II Platform FPGAs complete data sheet[M].Xilinx,2007.
[3]黃飛,喬純捷,王躍科.網(wǎng)絡(luò)互聯(lián)型多DSP并行處理系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)工程,2007,23(33):230-232.
[4]夏軍營,喬純捷,王剛.基于以太網(wǎng)接口的多DSP監(jiān)控技術(shù)研究[J].計(jì)算機(jī)測量與控制,2007,15(7):913-915.
[5]李方慧,王飛,何佩琨,等.TMS320C6000系列 DSP原理與應(yīng)用 [M].2版.北京:機(jī)械工業(yè)出版社,2000.