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