基于DSP EMIF口及FPGA設(shè)計并實(shí)現(xiàn)多DSP嵌入式系統(tǒng)
實(shí)時圖像處理及高速數(shù)據(jù)運(yùn)算處理要求系統(tǒng)設(shè)計具有數(shù)據(jù)處理速度快、數(shù)據(jù)吞吐率高等特點(diǎn),并具有多任務(wù)處理功能。針對這些特點(diǎn),本文設(shè)計并實(shí)現(xiàn)了基于DSP EMIF接口及FPGA的8個DSP(7個TMS320C6416T、1 個 TMS320DM642)通信的嵌入式系統(tǒng)。設(shè)計中利用TMS320DM642進(jìn)行數(shù)字視頻信號捕獲、顯示、保存以及圖像信號的預(yù)處理;利用TMS320C6416做算法運(yùn)算;且每個DSP與FPGA都是無縫連接。設(shè)計中利用了FPGA實(shí)現(xiàn)的軟FIFO進(jìn)行DSP之間的高速數(shù)據(jù)傳輸,以及多任務(wù)調(diào)度處理等。
另外,系統(tǒng)還提供一個高速數(shù)據(jù)通信接口,以使系統(tǒng)能夠方便地對外進(jìn)行高速數(shù)據(jù)傳輸。
1 設(shè)計的系統(tǒng)結(jié)構(gòu)
1.1 系統(tǒng)結(jié)構(gòu)
圖1所示為1個TMS320DM642(720MHz)與7個TMS320C6416T(1GHz)通過FPGA(EP2C70-7)實(shí)現(xiàn)互聯(lián)的多DSP系統(tǒng)結(jié)構(gòu)。所有的DSP通過EMIF(外部存儲器接口)和FPGA無縫相連,DSP之間的數(shù)據(jù)傳輸通過FPGA內(nèi)部互聯(lián)FIFO網(wǎng)絡(luò)和高速數(shù)據(jù)傳輸網(wǎng)絡(luò)實(shí)現(xiàn)。
圖2所示是一種互聯(lián)的FIFO網(wǎng)絡(luò)結(jié)構(gòu)和高速數(shù)據(jù)傳輸網(wǎng)絡(luò)結(jié)構(gòu)。DM642和所有的C6416T通過FIFO互相連接,所有FIFO都是雙向的,F(xiàn)IFO及其讀寫控制邏輯都在FPGA內(nèi)部實(shí)現(xiàn)。
每個DSP的一部分GPIO口也連接到EP2C70,可以作為FIFO讀寫狀態(tài)控制,以及各DSP之間通信前的同步握手信號等。
1.2 系統(tǒng)結(jié)構(gòu)的特點(diǎn)
系統(tǒng)結(jié)構(gòu)具有可重構(gòu)特性。在硬件平臺不變的情況下,只需通過改變FPGA程序代碼就可以完全改變系統(tǒng)結(jié)構(gòu),以適應(yīng)不同的算法結(jié)構(gòu)。若圖2中屏蔽DSP1至DSP7之間的相互通信,就組成主從并行的流水線結(jié)構(gòu);若需要串行的流水線結(jié)構(gòu),只需DSP1至DSP7的其中一個與DSP0通信即可。當(dāng)然,若想設(shè)計更復(fù)雜的串并混合性結(jié)構(gòu),也只需改變FPGA的代碼就能夠很容易的實(shí)現(xiàn)。
系統(tǒng)結(jié)構(gòu)具有一個對外高速通信接口。數(shù)據(jù)寬度64bit(雙向),接口最大時鐘200MHz(針對EP2C70-7),12根信號控制線(用戶按自己需要通過FPGA定義),一個輸出3.3V/1.5A電源。高速通信接口不僅使系統(tǒng)很方便與別的系統(tǒng)進(jìn)行高速數(shù)據(jù)傳輸,還可以使兩個本系統(tǒng)很簡單地對接起來,構(gòu)成更強(qiáng)大的多DSP嵌入式系統(tǒng)結(jié)構(gòu)。
2 TMS320DM642與視頻A/D、視頻D/A接口
2.1 TMS320DM642主器件簡介[1][2]
TMS320DM642是TI公司2002年推出專門用于多媒體處理的高性能DSP。內(nèi)部采用程序總線和數(shù)據(jù)總線分離的哈佛總線結(jié)構(gòu),使得取指令和執(zhí)行指令并行;工作時鐘高達(dá)720MHz,峰值處理能力為5760MIPS(百萬條指令每秒);內(nèi)部采用兩級CACHE;有三個獨(dú)立的可編程視頻接口、一個64bit EMIF接口、16個GPIO等豐富的外部接口;另外,DM642還擁有64個獨(dú)立的EDMA通道,使其具備很強(qiáng)的數(shù)據(jù)搬移能力。
2.2 接口實(shí)現(xiàn)[1-4]
TMS320DM642的三個獨(dú)立視頻接口都支持視頻捕獲/顯示模式,可直接與視頻編解碼芯片無縫連接。在捕獲模式下,器件捕獲速率可達(dá)80MHz;在顯示模式下,其顯示速率為110MHz。系統(tǒng)設(shè)計時將TMS320DM642的VP0接口配置為8bit/10bit或Y/C 16bit/20bit、YUV4:2:2捕獲模式,與視頻解碼芯片TVP5146連接;VP1接口配置為8bit、YUV4:2:2顯示模式,與視頻編碼芯片SAA7121連接。TMS320DM642與視頻編輯解碼芯片接口圖如圖3所示。
VP0配置為單通道視頻輸入,VP0CKL0作為輸入時鐘(Datainclk);VP0CTL0、VP0CTL1和VP1CTL0分別作為輸入視頻HS、VS、FID。
VP1配置為單通道視頻輸出,VP1CKL1作為視頻輸出時鐘(Dataoutclk),VP1CKL0作為輸入時鐘,VP1CTL0、VP1CTL1和VP1CTL2分別作為輸出視頻HS、VS、FID。
另外,DM642上集成I2C總線,其數(shù)據(jù)傳輸速率最高可達(dá)400kb/s,分別與編解碼芯片相連。設(shè)計時采用100kb/s數(shù)據(jù)傳輸速率對TVP5146和SAA7121的工作參數(shù)進(jìn)行配置。
3 基于DSP EMIFA與FPGA實(shí)現(xiàn)軟FIFO接口
3.1 DSP的EMIFA接口[1][2][5]
TMS320DM642和 TMS320C6416T都可以通過外部存儲器接口(EMIFA)訪問片外存儲器。EMIFA由64bit數(shù)據(jù)線D[63:0]、20bit地址線A[22:03]、8bit字節(jié)使能線BE[7:0]、4bit地址區(qū)域片選線和各類存儲器的讀/寫控制信號組成。
TMS320DM642和TMS320C6416T的每個/CEx空間都有256MB尋址空間,并且可配置為與SRAM、SDRAM、ZBTSRAM、Flash、FIFO等各類存儲器接口。
EMIFA讀/寫各類存儲器的時鐘可由軟件配置為EMIF的AECLKIN,或CPU/4、CPU/6。本設(shè)計配置為EMIF的AECLKIN,且為133MHz。
3.2 FPGA主器件及其實(shí)現(xiàn)FIFO[6]
FPGA采用Atera的CycloneII EP2C70-896C7。EP2C70具有68 416個邏輯單元(LE);嵌入250個RAM存儲塊,總?cè)萘?.152Mbit;150個專用18×18乘法器;4個鎖相環(huán)(PLL);最高工作頻率250MHz。
采用FPGA實(shí)現(xiàn)多時鐘電路系統(tǒng)時,需要處理不同時鐘域之間的速率匹配,可利用FPGA內(nèi)部生成的異步FIFO來處理。異步FIFO主要有雙端口RAM、寫地址產(chǎn)生模塊、讀地址產(chǎn)生模塊、滿空標(biāo)志產(chǎn)生模塊組成。雙端口RAM可以由FPGA的Block RAM塊構(gòu)成,EP2C70-896C7的Block RAM讀寫時鐘頻率可以達(dá)到216.73MHz,因此選用Block RAM作為存儲體,不僅速度快,而且設(shè)計簡單。設(shè)計時,一個端口配置成寫端口,另一端口配置成讀端口,然后把Block RAM的管腳與相對應(yīng)的控制信號相接即可。讀寫地址通過FPGA芯片內(nèi)部的二進(jìn)制進(jìn)位邏輯產(chǎn)生,以對應(yīng)Read_En/Write_En作為使能信號在讀/寫時鐘的控制下進(jìn)行計數(shù)??栈驖M標(biāo)志可以由讀或?qū)懙刂返南鄬ξ恢脕慝@得。
3.3 EMIF與軟FIFO接口實(shí)現(xiàn)[7]
DSP之間通過EMIF口與FPGA實(shí)現(xiàn)的異步FIFO進(jìn)行通信。EMIF異步接口的每個讀/寫周期分為三個階段:SETUP(建立時間)、STROBE(觸發(fā)時間)、HOLD(保持時間)。每個階段時間可編程設(shè)置,以適應(yīng)不同的讀寫速度。圖4是DSP寫異步FIFO的時序圖[7]。圖5是DSP讀異步FIFO的時序圖[7]。DSP讀寫FIFO控制信號由FPGA產(chǎn)生,其邏輯關(guān)系如下:
讀FIFO信號:rdclk=AECLKOUT
rdreq=!(/CE+/AARE)
寫FIFO信號:wdclk= AECLKOUT
wdreq=!(/CE+/AAWE)
另外,寫FIFO的DSP要相應(yīng)滿狀態(tài)標(biāo)志,讀FIFO的DSP則相應(yīng)半滿狀態(tài)標(biāo)志。
4 系統(tǒng)的DSP間數(shù)據(jù)通信
不同的算法代碼在平臺上對應(yīng)不同的算法調(diào)度方法,但DSP之間數(shù)據(jù)通信分兩個步驟,一是數(shù)據(jù)通信協(xié)議,另一個是數(shù)據(jù)通信。數(shù)據(jù)通信協(xié)議格式如表1(x表示0、1、…7)。
Send/Receive:MDSPx通過FPGA請求DSPx接收(D0=1)或發(fā)送。
MDSPx:向FPGA發(fā)出請求的DSP。
DSPx:MDSPx向FPGA提出要求響應(yīng)的DSP。
Data_leng:MDSPx請求DSPx接收或發(fā)送的數(shù)據(jù)長度。
Data_Unit:1表示接收或發(fā)送為Data_leng K(1K= 1024bit),0表示接收或發(fā)送Data_leng。
Data_Block:表示MDSPx請求DSPx接收或發(fā)送Data_Block個Data_leng K或Data_leng。
Data _Character:MDSPx請求DSPx接收或發(fā)送的算法代碼中間運(yùn)行結(jié)果或最終結(jié)果。
Interr_Priority:中斷優(yōu)先權(quán)。
Odd_Check:奇偶校驗(yàn)位。
設(shè)SUM,若為奇數(shù),則Odd_Check=1,否則為0。
Over_Lable:結(jié)束標(biāo)志位,用戶可自己定義。
數(shù)據(jù)通信的實(shí)現(xiàn)過程:若FPGA接收到MDSPx發(fā)來的請求信號,先根據(jù)D[0:37]計算出校驗(yàn)數(shù)據(jù),然后與Odd_Check比較。若不等,F(xiàn)PGA向MDSPx發(fā)出重發(fā)請求信號的請求;若相等,且DSPx空閑時,F(xiàn)PGA再由Send/Receive通知DSPx接收或發(fā)送數(shù)據(jù),并將接收到的數(shù)據(jù)傳輸給DSPx,同時使對應(yīng)的FIFO數(shù)據(jù)通道使能。DSPx根據(jù)收到的數(shù)據(jù)信息,同樣計算出校驗(yàn)數(shù)據(jù),若與Odd_Check相等,則根據(jù)Send/Receive標(biāo)志位,采用EDMA方式向EMIF口接收或發(fā)送Data_Block*Data_leng(或Data_Block*Data_leng K)數(shù)據(jù)。
如果FPGA同時接收到兩個或兩個以上的MDSPx發(fā)來的請求信號,還要由Interr_Priority判其執(zhí)行的先后。
5 系統(tǒng)的性能分析
多DSP嵌入式處理系統(tǒng)中,DSP間的數(shù)據(jù)通信性能是影響系統(tǒng)性能的重要因素,而數(shù)據(jù)通信帶寬和數(shù)據(jù)傳輸延遲是衡量數(shù)據(jù)通信性能的主要指標(biāo)。
若系統(tǒng)中DSP讀寫FIFO的帶寬為B(單位時間內(nèi)DSP間的數(shù)據(jù)通信量),則:
其中,f是DSP讀寫FIFO的時鐘,w是FIFO數(shù)據(jù)總線寬度。本設(shè)計配置Nsetup=Nstrobe=1,Nhold=0,w=32 bit,f=133MHz,因此B理論值266MB/s。
但DSP間數(shù)據(jù)通信的實(shí)際帶寬Bf主要受握手時間τhandshake、寫FIFO到半滿時間τfifo_hf、響應(yīng)GPIO口中斷啟動讀操作時間τgpio_int err、接收數(shù)據(jù)時間τdata_receive四個延遲時間影響。其中τhandshake、τgpio_int err、τdata_receive是傳輸數(shù)據(jù)必需的固定時間,而τfifo_hf是由于使用FIFO緩存數(shù)據(jù)引入的額外時間。顯然,F(xiàn)IFO的深度越長,τfifo_hf越大,額外時間就越長,則實(shí)際帶寬Bf就越小,反之則越大。
為了保證DSP間正確的數(shù)據(jù)通信,要求DSPx開始從FIFO讀取數(shù)據(jù)時,MDSPx還沒有寫滿FIFO,即:
表2是DSP0分別與DSP1~DSP7傳輸不同大小數(shù)據(jù)時測得的平均延遲時間。圖6是根據(jù)測試數(shù)據(jù)繪出的實(shí)際帶寬Bf曲線。可以看出,隨著傳輸?shù)臄?shù)據(jù)增大,Bf逐漸逼近B。因此,利用FPGA實(shí)現(xiàn)多DSP間的互相數(shù)據(jù)通信,既獲得了較大的持續(xù)帶寬,又降低了數(shù)據(jù)傳輸延遲。
本文設(shè)計的多DSP嵌入式系統(tǒng)可重構(gòu)性靈活,實(shí)現(xiàn)容易,性能穩(wěn)定,數(shù)據(jù)吞吐量大,處理數(shù)據(jù)能力強(qiáng)。該嵌入式系統(tǒng)已經(jīng)成功應(yīng)用到某公司的超聲圖像智能識別產(chǎn)品中。該產(chǎn)品利用系統(tǒng)中TMS320DM642對B超圖像進(jìn)行采集、保存、圖像預(yù)處理、顯示;利用7個TMS320C6416T對超聲圖像做相關(guān)算法處理。經(jīng)測試,算法代碼在單DSP(DM642 720MHz)平臺處理時間小于0.4s,而在此平臺處理時間小于40ms,滿足實(shí)時要求。
另外,該系統(tǒng)還可以廣泛適用于圖像處理、電子對抗、雷達(dá)信號處理等各個領(lǐng)域。
評論