當前,,SoC" title="SoC">SoC 向著面積更小,速度更高的方向發(fā)展,,百兆網(wǎng)通信已不能滿足人們的生產(chǎn)和工作需要,,用千兆網(wǎng)通信成為工作中迫切的要求,,用FPGA" title="FPGA">FPGA實現(xiàn)千兆網(wǎng)的通信,有二種模式可以選擇,,其一,,編寫一個IP軟核,其二,,用FPGA內(nèi)嵌的MAC內(nèi)核,。方法一的靈活性大,但要實現(xiàn)并不容易,,因此,,賽靈公司將其歸為收費IP;方法二中的MAC的三態(tài)可配置特性為我們實現(xiàn)千兆網(wǎng)通信提供了可能,本文就是基于此內(nèi)嵌的Ethernet MAC模塊,,在VxWorks" title="VxWorks">VxWorks操作系統(tǒng)下成功實現(xiàn)了千兆網(wǎng)的通信,。
1 Virtex4 FX系列FPGA中內(nèi)嵌的千兆通信硬核架構(gòu)
Virtex4 FX 系列FPGA中內(nèi)嵌了多個用于千兆通信的硬核,以XC4VFX20為例,,它通過一個主機接口連接了二個EMAC核,。二個EMAC可以一起使用,也可以只使用其中的一個,。
Virtex4中嵌入的Ethernet MAC硬核主要有以下特點:
支持半雙工和/或全雙工操作
設(shè)計符合IEEE 802.3-2002標準
支持3種不同的操作模式:1 Gbps,、100 Mbps、10Mbp
支持MII,,GMII,,RGMII,SGMII通信方式
為不限長度的VLAN幀和JUMBO幀提供技術(shù)支持
提供了可選的網(wǎng)絡(luò)管理特性,,包括基于每個分組的統(tǒng)計數(shù)據(jù)矢量和流程控制
可以通過一個與處理器無關(guān)的接口對TEMAC核進行配置和監(jiān)控,,其為用戶選擇適合其應(yīng)用的理想處理器提供了附加的靈活性。
在1Gigabit模式下,,TEMAC支持千兆位級媒體獨立接口(GMII)和降低千兆位級媒體獨立接口(RGMII),。 GMII是一個運行速率為125 MHz的字節(jié)寬并行SDR接口,而RGMII是一個運行速率為25 MHz的半位元組款并行DDR接口,,可以提供的總帶寬為1 Gbps,。 而且,在100和10 Mbps模式下,,TEMAC均支持MII接口,。 MII接口是4-bit寬,在100MBps模式下其工作速率為25 MHz,。 在10MBps模式下,,MII接口的工作速率為2.5MHz。
由于Virtex4中嵌入了Ethernet MAC硬核,同時,,F(xiàn)X系列還嵌入了PowerPC,這樣,,就可以用PowerPC控制Ethernet MAC實現(xiàn)千兆網(wǎng)的通信,。
2 VxWorks下BSP的移植
VxWorks操作系統(tǒng)是美國WindRiver公司于1983年設(shè)計開發(fā)的一種嵌入式實時操作系統(tǒng)(RTOS),它采用微內(nèi)核的結(jié)構(gòu),,具有支持多種處理器,,豐富的網(wǎng)絡(luò)協(xié)議,良好的兼容性和裁減性等特點,,同時具有程序動態(tài)鏈接和下載的功能,。自從80年代問世以來,以其不斷推出的升級版本,,高性能內(nèi)核以及友好的用戶開發(fā)環(huán)境,,在嵌入式實時操作系統(tǒng)領(lǐng)域逐漸占據(jù)一席之地,尤其以成功應(yīng)用于火星探測車和愛國者導(dǎo)彈等高科技產(chǎn)品而聲名鵲起,。VxWorks的板級支持包BSP(Board Support Package)是介于底層硬件和上層軟件之間的底層軟件開發(fā)包,,它主要功能是為屏蔽硬件,提供操作系統(tǒng)的驅(qū)動,,具體功能包括:
1)單板硬件初始化,,主要是CPU的初始化,為整個軟件系統(tǒng)提供底層硬件支持,;
2)為操作系統(tǒng)提供設(shè)備驅(qū)動程序和系統(tǒng)中斷服務(wù)程序,;
3)定制操作系統(tǒng)的功能,為軟件系統(tǒng)提供一個實時多任務(wù)的運行環(huán)境,;
4)初始化操作系統(tǒng),,為操作系統(tǒng)的正常運行做好準備。
而在嵌入式系統(tǒng)設(shè)計中,,BSP的開發(fā)是一項非常復(fù)雜而繁瑣的工作 ,,Xilinx公司提供的EDK套件,可以在很大程度上減輕開發(fā)者的工作,。EDK中的BSP生成器(BSPgen)可以根據(jù)不同的微處理器,、外設(shè)和RTOS組合自動產(chǎn)生用戶可裁剪的BSP。它包含了系統(tǒng)所必需的支持軟件,,包括Boot代碼,、設(shè)備驅(qū)動和RTOS的初始化。利用BSPgen可以把Xilinx器件驅(qū)動打包到BSP的子目錄下,,并且把Xilinx器件驅(qū)動與VxWorks及其Tornado集成開發(fā)環(huán)境無縫集成,,充分減少開發(fā)周期。
但是,BSPgen生成的BSP只是一個固定的BSP模板,,并不能正確的反應(yīng)RAM/ROM的存儲器映射,,不支持用戶通過BSPgen流程自定義的核/驅(qū)動等。因此還需要對BSPgen產(chǎn)生的BSP進行修改裁剪,。
對于BSP開發(fā)人員來講,,借助EDK的BSPgen,還必要做以下幾項工作:
1)修改config.h 和Makefile中的RAM,,ROM地址及串口速率
2)修改sysSerial.c,,對串口進行正確的設(shè)置
3)增加不能與VxWorks無縫集成的器件的驅(qū)動文件
4)配置sysNet.c中的以太網(wǎng)參數(shù),設(shè)置MAC地址
5)根據(jù)EDK中的配置,,禁止或使能Cache
6)修改sysLib.c,,以顯示正確的信息
7)設(shè)置主機IP地址
經(jīng)過以上修改之后,將新的BSP放在Tornado的安裝目錄Tornado_roottargetconfig下,,根據(jù)這個BSP,,在Tornado集成環(huán)境下生成一個新的VxWorks工程,然后就可以進行一般的嵌入式操作系統(tǒng)開發(fā)了,。
EDK中RAM和ROM的地址映射如下表所示:
表一 RAM/ROM地址映射
根據(jù)表一修改 makefile 和config.h里的地址,。sysNet.c 中通過以下語句定義了網(wǎng)絡(luò)的MAC地址,必須根據(jù)真實的MAC地址進行修改,,如本文的MAC地址:00:0A:35:01:88:25
static char XEmacMacAddr0[6] = { 0x6, 0x5, 0x4, 0x3, 0x2, 0x1 }; //修改前
static char XEmacMacAddr0[6] = { 0x00, 0x0A, 0x35, 0x01, 0x88, 0x25 }; //修改后
sysSerial.c對串口進行初始化,,因經(jīng)要正確的指定串口ID,sysLib.c中可以顯示vxWorks鏡像的信息,,因此也要進行相應(yīng)的修改,。
通過對EDK下生成的BSP的修改,并在Tornado集成環(huán)境下生成正確的VxWorks鏡像后,,可以將其下載到FPGA中,。觀察串口的輸出是否正確,可以進行相應(yīng)的調(diào)試工作,,以確定BSP的移植是正確的,。