一種基于以太網(wǎng)加載FPGA和DSP的實現(xiàn)方法
摘 要: 介紹了脫離仿真器直接使用外部計算機通過網(wǎng)口進行程序代碼加載的基本原理, 討論分析了網(wǎng)絡接口、FPGA接口和HPI接口的訪問控制等關鍵技術。詳述了在包含CPU、FPGA和DSP的復雜系統(tǒng)設計方案中基于以太網(wǎng)加載FPGA和DSP的實現(xiàn)。該技術在系統(tǒng)工程化的應用中具有很好的前景。
關鍵詞: CPU;以太網(wǎng);FPGA;DSP;HPI;引導加載
隨著嵌入式技術的發(fā)展,嵌入式系統(tǒng)逐漸演變?yōu)橛晌⑻幚砥?、大?guī)模集成電路、軟件技術和各種具體的行業(yè)應用技術相結(jié)合的結(jié)果。嵌入式設備已經(jīng)在航空航天、通信、電子等行業(yè)得到廣泛應用。在以微處理器為核心的嵌入式應用系統(tǒng)中,對其中的FPGA和DSP的傳統(tǒng)加載都是通過硬件仿真器來完成的。這在產(chǎn)品的初研階段非常適用,然而在實際工程應用中各種產(chǎn)品組裝成一個龐雜的系統(tǒng)時(如需對系統(tǒng)進行軟件更新和維護時),傳統(tǒng)的加載方式就顯得極其不方便,程序代碼的引導加載就需要一種更加靈活、高效的方法來實現(xiàn),而基于以太網(wǎng)加載FPGA和DSP的實現(xiàn)方法能很好地解決這個難題。
本文介紹了基于以太網(wǎng)加載FPGA和DSP的基本原理, 并通過該技術在某嵌入式主控設計中的應用詳述了在包含CPU、FPGA和DSP的復雜系統(tǒng)設計方案中基于以太網(wǎng)加載FPGA和DSP的實現(xiàn), 討論分析了網(wǎng)絡接口、FPGA接口和HPI接口的訪問控制等關鍵技術。
1 基于以太網(wǎng)加載FPGA和DSP的基本原理
基于以太網(wǎng)加載FPGA和DSP的實現(xiàn)過程為: 首先,外部計算機通過網(wǎng)絡接口將代碼傳送給微處理器,并存儲到微處理器的Flash存儲器模塊;然后,由微處理器分別通過FPGA的從串加載模式和DSP的主機引導加載(HPI接口)實現(xiàn)對FPGA和DSP程序代碼的引導加載。
基于TCP/IP協(xié)議的以太網(wǎng)是目前使用最廣泛的網(wǎng)絡。網(wǎng)絡協(xié)議通常分不同層次進行開發(fā),每一層負責不同的通信功能。嵌入式設備通常根據(jù)微處理器的結(jié)構特點和系統(tǒng)需要實現(xiàn)的功能,將TCP/IP協(xié)議嵌入到微處理器中,從而實現(xiàn)嵌入式系統(tǒng)的網(wǎng)絡接口功能[1-2]。
1.1 FPGA加載
FPGA常見的配置文件的加載模式有5種:主串加載模式、從串加載模式、主并加載模式、從并加載模式及JTAG加載模式。其中,JTAG加載模式在開發(fā)調(diào)試階段使用。其余4種加載模式可分為串行加載方式和并行加載方式,而串行加載方式和并行加載方式都有主、從兩種模式。由于主模式的加載同步時鐘(CCLK)由FPGA提供,從模式的加載同步時鐘(CCLK)由外部時鐘源或者外部控制信號提供,為了方便微處理器控制加載過程,一般選擇使用從串模式。
1.2 DSP加載
DSP常見的三種引導加載方式為仿真器引導加載、ROM引導加載、主機引導加載。
(1)仿真器引導主要用于調(diào)試階段,是一種特殊的主機引導加載方式。
(2)ROM引導加載:在DSP外部復位信號被釋放后,芯片處于內(nèi)部復位保持狀態(tài), DSP芯片自動地通過EDMA/QDMA將外部ROM中的1 KB程序搬入地址0處。內(nèi)部復位完成后,DSP開始從地址0處執(zhí)行指令。
(3)主機引導加載:DSP上電復位后, I/O部分將處于激活狀態(tài),可以進行正常的通信,但DSP的內(nèi)核仍處于復位狀態(tài),一直等待主機向HPI控制寄存器中的DSPINT位置1。這樣,主機就可以通過HPI接口訪問DSP的整個存儲空間,對它們進行初始化。完成相關設置后,向DSPINT位寫入1, DSP內(nèi)核結(jié)束復位狀態(tài),執(zhí)行地址0處的指令。
2 嵌入式數(shù)字處理系統(tǒng)設計與實現(xiàn)
2.1 硬件設計
嵌入式數(shù)字處理系統(tǒng)采用微處理器PowerPC作為主控CPU,主要執(zhí)行網(wǎng)絡控制等各種控制任務,其程序代碼相對固定,存儲在Flash中。如圖1所示,選用Xilinx公司的XC3S1000和XC4VSX35這兩種FPGA分別做邏輯和變頻[3-4],選用兩片TI公司的DSP TMS320C6416芯片完成數(shù)據(jù)處理與算法實現(xiàn),這些FPGA和DSP的程序代碼需實時更新[5]。
(1)網(wǎng)絡接口設計
以太網(wǎng)PHY采用Marvell公司PHY協(xié)議層千兆網(wǎng)卡88E1111[6]。88E1111是高性能千兆以太網(wǎng)收發(fā)芯片,可以完成所有PHY(物理層)功能,支持全雙工或半雙工的10/100/1 000 Mb/s三速以太網(wǎng),支持8 bit數(shù)據(jù)總線。CPU和以太網(wǎng)PHY、FPGA及DSP的接口基本電路如圖2所示。CPU的網(wǎng)絡接口引腳和以太網(wǎng)PHY的網(wǎng)絡接口相連接,通過硬件配置模式HWCFG MODE[3:0]來確定88E1111的操作模式,從而確定需要連接的引腳,如圖2所示,該設計選擇了RGMII模式,以太網(wǎng)PHY通過網(wǎng)絡隔離濾波器HX5008與外部以太網(wǎng)接口相連。
(2)FPGA接口設計
在從串模式下進行FPGA程序加載僅需要使用CCLK、PROG_B、INIT_B、DONE、DIN這5個信號引腳,微處理器使用通用IO管腳來配置FPGA。此外還需要設置M[2:0]信號以選擇配置模式,根據(jù)芯片XC3S1000和XC4VSX35的模式設置其從串模式的配置均為M[2:0]=111。
(3)HPI 接口設計
引導配置引腳BEA[19∶18]決定了TMS320C6416的引導加載模式,將DSP的EMIFB接口引腳BEA[19∶18]通過上下拉電阻配置成BEA[19∶18]=01,即選擇DSP為HPI加載方式。HPI接口電路如圖2所示,主控CPU的數(shù)據(jù)總線、地址總線及控制I/O連接到FPGA上,DSP的HPI接口數(shù)據(jù)總線和控制線也連接到FPGA上,通過FPGA的接口邏輯設計將CPU和DSP連接起來。
2.2 軟件設計
2.2.1 網(wǎng)絡接口程序設計
(1)網(wǎng)絡通信協(xié)議設計
網(wǎng)絡通信協(xié)議設計主要是實現(xiàn)TCP/IP 協(xié)議。根據(jù)嵌入式系統(tǒng)結(jié)構特點和系統(tǒng)設計實現(xiàn)的功能需求,在TCP/IP 協(xié)議的基礎上實現(xiàn)系統(tǒng)所需功能。
(2)網(wǎng)絡接口的訪問控制
驅(qū)動程序設計包括以太網(wǎng)PHY芯片的初始化、數(shù)據(jù)包的發(fā)送和接收。Freescale的MPC8377自帶了三速以太網(wǎng)控制器ETSEC,作為以太網(wǎng)接口與外部的PHY芯片相連接[7]。本設計中主控CPU與PHY之間是RGMII模式接口。88E1111可以實現(xiàn)多種數(shù)據(jù)速率和訪問控制模式,通過HWCFG MODE[3:0]確定其操作模式,設定DIS_FC為0,可以自適應地選擇FIBER、COPPER接口。
Linux網(wǎng)絡驅(qū)動程序的實現(xiàn)主要是在Linux內(nèi)核中提供的網(wǎng)絡設備接口及以上層次的代碼基礎上,移植或編寫特定網(wǎng)絡硬件的驅(qū)動程序工作,也就是完成設備驅(qū)動功能層,主要包括數(shù)據(jù)的接收、發(fā)送等控制。
2.2.2 FPGA接口程序設計
FPGA從串模式的配置過程將配置比特流載入到FPGA,有4個主要階段: (1)清除配置內(nèi)存;(2)初始化;(3)載入配置數(shù)據(jù);(4)設備啟動。其配置時序流程圖如圖3所示。