李爾效
(海軍裝備部,甘肅蘭州 730070)
數(shù)字信號處理器(DSP)是專用于信號處理的微處理器,其處理能力強,可以使工程師較好地掌握實時性。因此,雷達系統(tǒng)中廣泛使用多DSP系統(tǒng)來實現(xiàn)對大量信號數(shù)據(jù)的并行處理。ADSP-TS201是美國ADI公司推出的一款高性能DSP。它采用超級哈佛結(jié)構(gòu),最高工作主頻為600 MHz,支持3.6 GFlops峰值浮點運算。
一套多DSP系統(tǒng)啟動后,根據(jù)用戶指令,DSP程序加載文件經(jīng)過網(wǎng)絡(luò)中各結(jié)點的路由轉(zhuǎn)發(fā),最終部署到對應(yīng)的結(jié)點上,這一過程稱為網(wǎng)絡(luò)加載[1]。實時性是多DSP系統(tǒng)網(wǎng)絡(luò)加載的關(guān)鍵指標(biāo)之一,其要求系統(tǒng)在用戶指令發(fā)出后的規(guī)定時間內(nèi),完成對所有結(jié)點的加載,正確地進入工作狀態(tài)。
對多DSP系統(tǒng)程序的網(wǎng)絡(luò)加載通常有兩種思路。其一是通過上位機經(jīng)總線給各DSP加載程序,加載數(shù)據(jù)保存在上位機端。這樣可以通過上位機頻繁地對系統(tǒng)進行復(fù)位、加載、查詢內(nèi)存等操作,這種加載方式的加載時間受制于上位機模塊的性能,無法保證實時性。雷達系統(tǒng)定型后,出于系統(tǒng)簡化和壓縮成本的考慮,通常沒有上位機模塊,因此這種加載方式通常用在系統(tǒng)的調(diào)試階段;其二是把程序存在片外Flash中,系統(tǒng)啟動后,DSP程序從外部Flash加載到DSP上,由DSP來進行相應(yīng)的處理。這種加載方式避免了程序加載的手動操作,一般用在系統(tǒng)的定型生產(chǎn)階段。
文獻[2~3]提出了幾種網(wǎng)絡(luò)加載方案,這些方案存在系統(tǒng)工作時總線負載過大、中繼結(jié)點多、加載路徑復(fù)雜等不足。針對這些局限性,本文基于目前最為高效的RapidIO嵌入式互聯(lián)網(wǎng)絡(luò),設(shè)計實現(xiàn)了一個基于片外FPGA+RapidIO網(wǎng)絡(luò)的多DSP加載模式,達到了降低總線負載、減化加載路徑、保證加載實時性的目的。
ADSP-TS201支持3種引導(dǎo)模式來對其加載程序,分別為Host引導(dǎo),EPROM(Flash)引導(dǎo)和Link口引導(dǎo)[4-5]。3種引導(dǎo)方式均先通過某一DMA通道將引導(dǎo)核放置在DSP內(nèi)存的0x00~0xff地址上,然后在DMA中斷中從0x00開始執(zhí)行引導(dǎo)核程序。引導(dǎo)核程序再啟動一個 DMA將主程序加載,最后啟動一個256words的DMA使引導(dǎo)核自身被程序代碼覆蓋。3種引導(dǎo)方式的不同僅體現(xiàn)在數(shù)據(jù)傳輸?shù)穆窂缴希绫?所示。文獻[4~5]對3種模式下的引導(dǎo)方式做了詳細描述。
表1 不同引導(dǎo)方式下數(shù)據(jù)傳輸路徑
(1)文獻[2]提及一種EPROM+總線的多DSP程序加載方案。其根DSP設(shè)置為EPROM(Flash)引導(dǎo)模式,其余DSP設(shè)置為Host引導(dǎo)模式。根DSP完成加載后,通過多處理器空間向其他DSP的AutoDMA通道寫入引導(dǎo)核。此方案要求所有DSP掛接在同一根總線上,若系統(tǒng)中的DSP數(shù)量較多,那么在系統(tǒng)工作過程中總線負載過大,可能會頻繁出現(xiàn)總線沖突與延遲,不利于保證數(shù)據(jù)交互的正確性和實時性。加載方案如圖1所示。
圖1 加載方案1的連接框圖
(2)文獻[3]介紹了一種Flash+Link通道的多DSP程序加載設(shè)計。其DSP系統(tǒng)中,根DSP與Flash直連,引導(dǎo)方式設(shè)置為EPROM(Flash),直接從Flash實現(xiàn)加載,其余DSP引導(dǎo)方式設(shè)置為link口加載,其加載文件經(jīng)過路由,通過link網(wǎng)絡(luò)實現(xiàn)加載。加載方案如圖2所示。這種方案解決了DSP工作中總線沖突的問題。但此方案仍存在不足:1)根DSP是所有加載數(shù)據(jù)的唯一入口,對DSP數(shù)量較多的網(wǎng)絡(luò)來說,入口唯一會導(dǎo)致DSP網(wǎng)絡(luò)中各DSP加載路徑復(fù)雜,不能靈活配置。2)此方案無法接受外部控制信號,只能加載一套固定的程序。在現(xiàn)代嵌入式實時信號處理系統(tǒng)中,常常要求系統(tǒng)在多種模式下工作,這就要求在系統(tǒng)的Flash中保存多種模式的程序,由系統(tǒng)控制加載某種模式的程序。3)此方案不能適應(yīng)不同封裝的Flash芯片,通用性受限制。
圖2 加載方案2的連接框圖
為克服以上兩種方案的局限性,文中提出了使用FPGA+RapidIO網(wǎng)絡(luò)的高性能網(wǎng)絡(luò)加載方案。在FPGA中,實現(xiàn)了加載控制接口、Flash訪問接口和RapidIO接口。Flash訪問接口與 FPGA連接,實現(xiàn)了 FPGA對Flash芯片中數(shù)據(jù)的讀寫;加載控制接口連接控制信號,可獲取用戶發(fā)出的加載命令和系統(tǒng)模式切換命令;RapidIO網(wǎng)絡(luò)可作為傳輸網(wǎng)絡(luò),將加載程序分發(fā)給各個DSP。加載方案如圖3所示。
圖3 加載方案3的連接框圖
本方案一方面利用了FPGA的可編程性,實現(xiàn)了對多種Flash芯片的支持,另一方面,利用高效RapidIO互聯(lián)網(wǎng)絡(luò)實現(xiàn)了加載程序的高效傳輸,大幅縮短了加載過程中的數(shù)據(jù)傳輸延遲。
(1)DSP與FPGA間的通信協(xié)議。DSP網(wǎng)絡(luò)與Flash的交互通過 FPGA間接實現(xiàn)。DSP網(wǎng)絡(luò)通過RapidIO發(fā)送一定格式的指令給FPGA,F(xiàn)PGA得到指令數(shù)據(jù)后,依照DSP與FPGA的通信協(xié)議對指令數(shù)據(jù)進行解包,并進行相應(yīng)的操作。反之,F(xiàn)PGA也會按照通信協(xié)議通過RapidIO發(fā)送一定格式的命令或數(shù)據(jù)給DSP。這一通信協(xié)議實現(xiàn)了以下功能:1)FPGA從Flash芯片中獲取加載數(shù)據(jù),通過RapidIO口發(fā)送給DSP網(wǎng)絡(luò),實現(xiàn)DSP網(wǎng)絡(luò)中各結(jié)點的加載。2)DSP把需要燒寫進Flash的數(shù)據(jù)通過RapidIO網(wǎng)絡(luò)發(fā)送給FPGA,F(xiàn)PGA獲得數(shù)據(jù)后燒進 Flash。3)DSP要求FPGA讀Flash數(shù)據(jù),F(xiàn)PGA把Flash中指定地址的數(shù)據(jù)通過RapidIO發(fā)送給DSP,用于校驗Flash燒寫正確性。4)根據(jù)DSP的指令,F(xiàn)PGA格式化相應(yīng)區(qū)域的Flash,或是格式化全部Flash。
(2)Flash的在線編程。DSP程序從Flash加載前,要先完成加載數(shù)據(jù)Flash中的燒寫。對Flash的在線編程(in-circuit programming)[6]是指嵌入式處理器運行內(nèi)部程序去改寫Flash的內(nèi)容。通過對Flash的在線編程,可以靈活地安排Flash內(nèi)部的數(shù)據(jù)存放格式,滿足多功能雷達系統(tǒng)的需求。
本方案中,對Flash的在線編程系統(tǒng)由上位機軟件、任意一片與FPGA直連的DSP(文中稱為DSP0)、FPGA、Flash組成。Flash在線編程的路徑如圖 4所示。
圖4 Flash在線編程的路徑
上位機軟件首先把DSP網(wǎng)絡(luò)中各DSP的加載程序打包成燒寫文件,然后通過PCI總線加載DSP0服務(wù)程序,并把待燒寫數(shù)據(jù)發(fā)送給DSP0。
DSP0收到燒寫文件后,解析其中的信息,然后按照DSP與FPGA之間的通信協(xié)議,通過DSP總線把燒寫數(shù)據(jù)發(fā)送給FPGA,最終由FPGA將加載文件數(shù)據(jù)寫進Flash。
(3)DSP網(wǎng)絡(luò)加載過程。系統(tǒng)加載時,所有DSP都設(shè)置成以Host方式引導(dǎo)。FPGA的加載控制接口接收到來自用戶的加載系統(tǒng)或切換模式命令后,從Flash中讀取相應(yīng)的加載數(shù)據(jù),通過RapidIO交換網(wǎng)絡(luò),以廣播方式將加載數(shù)據(jù)發(fā)送到每個DSP節(jié)點上的FPGA中。然后由每個FPGA通過Host加載模式為連接的DSP加載程序。
與前兩種加載方案相比,此方案的優(yōu)勢在于:(1)各DSP可分布于若干條總線上,讓DSP工作時的總線負載降低。(2)可根據(jù)外部命令,識別系統(tǒng)所在的模式狀態(tài),從而選擇加載不同程序。(3)能適應(yīng)不同封裝的Flash芯片,通用性強。(4)基于高效的RapidIO傳輸網(wǎng)絡(luò)進行加載數(shù)據(jù)傳送,大幅提高效率,縮短加載延遲。
信號處理模塊采用cPCI板型,每個模塊板載8片ADSP-TS201處理器。每個模塊可實現(xiàn)28.8 GFlops的處理能力。模塊上的FPGA實現(xiàn)系統(tǒng)PCI總線到局部PCI總線的轉(zhuǎn)換,每個處理節(jié)點內(nèi)部共享局部PCI總線,板卡上每4個DSP連接到一個FPGA上,每個FPGA實例化了一個RapdiIO接口與交換網(wǎng)絡(luò)互聯(lián),板卡架構(gòu)如圖5所示。
圖5 信號處理模塊結(jié)構(gòu)框圖
設(shè)計要求FPGA能夠根據(jù)系統(tǒng)命令對DSP加載不同模式的程序,為使FPGA能夠獲得不同模式下各DSP加載數(shù)據(jù)的在Flash中的首地址和長度,文中在Flash中設(shè)計一個索引表,F(xiàn)PGA在得到加載DSP的命令后,首先查詢索引表,獲取對應(yīng)加載數(shù)據(jù)的地址、長度信息;然后FPGA再從Flash的對應(yīng)地址獲得加載數(shù)據(jù),發(fā)送給DSP網(wǎng)絡(luò)。在索引表之后,再順序排列各套程序,F(xiàn)lash內(nèi)數(shù)據(jù)存放格式如圖6所示。
圖6 Flash內(nèi)數(shù)據(jù)存放格式
在Flash燒寫的過程中,DSP需要按照這一格式對Flash進行在線編程,以保證在程序加載時FPGA能在對應(yīng)的地址獲得正確的數(shù)據(jù)。
系統(tǒng)上電后,系統(tǒng)中的各DSP設(shè)置為Host引導(dǎo)方式。FPGA監(jiān)聽加載控制接口傳來的命令,收到加載或切換模式命令后,F(xiàn)PGA從索引表中查詢對應(yīng)加載數(shù)據(jù)的地址和長度信息,再從Flash芯片中讀取對應(yīng)模式的加載數(shù)據(jù),基于RapidIO口通過廣播模式,將加載數(shù)據(jù)發(fā)送給每個處理節(jié)點的 FPGA,每個處理節(jié)點FPGA接收到加載數(shù)據(jù)后,通過DSP總線將程序加載到與其連接的DSP上,系統(tǒng)中DSP的加載路徑如圖7所示。
圖7 系統(tǒng)中DSP的加載路徑
本文介紹了一套多ADSP-TS201系統(tǒng)的程序加載設(shè)計,設(shè)計的優(yōu)勢在于:(1)摒棄DSP與Flash直連的模式,采用FPGA+RapidIO網(wǎng)絡(luò)形式,以FPGA為中介連接Flash。Flash的燒寫、讀取都交由FPGA來完成,F(xiàn)PGA通過RapidIO口進行通信。同時,F(xiàn)PGA通過加載控制接口接收用戶指令。此方案充分利用了FPGA構(gòu)建系統(tǒng)的靈活性,降低了總線負載,減化了加載路徑,保證了系統(tǒng)加載的實時性,實現(xiàn)了系統(tǒng)多種模式間的靈活切換。(2)若干DSP通過RapidIO從獲取加載數(shù)據(jù),這樣的設(shè)計保證了加載實時性。本設(shè)計已應(yīng)用于工程實踐中。實際應(yīng)用結(jié)果證明,該方案提供了一種使用簡便、安全可靠的基于Flash的多ADSPTS201網(wǎng)絡(luò)加載方案。
[1]衛(wèi)晉,劉峰,龍騰.大規(guī)模多DSP實時網(wǎng)絡(luò)加載系統(tǒng)關(guān)鍵技術(shù)研究[J].計算機工程與應(yīng)用,2007,43(5):236 -241.
[2]潘偉,于寧.TS201S型 DSP引導(dǎo)程序加載方法研究[J].國外電子元器件,2005(12):14-17.
[3]張寧,馮小平.鏈路口耦合的多片ADSP-TS101系統(tǒng)程序加載[J].技術(shù)前沿,2006,8(12):53 -57.
[4]Analog Device Inc.ADSP - TS201 TigerSHARC processor hardware reference revision 1.2[M].USA:Analog Device Inc,2005.
[5]Analog Device Inc.VisualDSP++5.0 loader and utilities manual revision 2.0 [M].Tex USA:Analog Device Inc 2007.
[6]劉峰,衛(wèi)晉,龍騰.多DSP系統(tǒng)獨立加載模塊在線編程軟件設(shè)計[J].計算機工程,2007,33(14):260 -263.
[7]王琤,王燕,龍騰.TS101 DSP Flash引導(dǎo)程序的設(shè)計和實現(xiàn)[J].計算機工程,2006,32(21):270 -272.
[8]劉書明,羅勇江.ADSP TS20XS系列DSP原理與應(yīng)用設(shè)計[M].北京:電子工業(yè)出版社,2007.
[9]高立寧,龍騰.基于TS201與FPGA的信號處理系統(tǒng)[J].微計算機信息,2008,24(32):260-261.