薛 昊, 佘 勇, 姚振東, 李運洪
(成都信息工程學院 電子工程學院,四川 成都 610225)
FPGA[1]以其高集成度、高靈活性和高可靠性成為近年來發展較為迅速的一種可編程邏輯器件。以太網[2]接口特點是傳輸速率高,通信質量可靠,使用方便,適合于遠近距離通信,是當今最常用的數據接口之一。目前,以太網接口技術在嵌入式設備中的應用越來越廣泛,為FPGA配置以太網接口,與外部網絡設備實現通信,將有利于FPGA平臺的數據傳輸和功能延伸。系統以Xilinx公司的ISE12.4軟件為開發環境,結合 DM9000A以太網控制器,采用FPGA內部MicroBlaze微處理器軟核來實現以太網接口設計。
系統采用的硬件平臺是以 Virtex-4 XC4VLX60型FPGA作為主要芯片的開發板,其總體框架主要包括:供電模塊、模數采集模塊、FPGA芯片配置模塊以及以太網傳輸模塊。系統總體平臺結構連接框圖如圖1所示。

圖1 系統總體平臺結構
MicroBlaze是針對Xilinx公司FPGA器件提出的嵌入式微處理器軟核,它可以與其配置的外設IP核一起完成嵌入式設計。MicroBlaze是利用嵌入式開發套件(EDK,Embedded Development Kit)來進行開發的,其主要組成包括:Xilinx平臺工作室(XPS,Xlinx Platform Studio)、軟件開發套件(SDK,Software Development Kit)以及一些內嵌調試工具[3]。MicroBlaze開發流程主要包括以下幾個步驟:首先通過XPS的板級開發包向導快速創建一個硬件平臺;接著添加用戶所需的IP核;然后生成相應的仿真文件,并通過仿真文件測試硬件系統;再生成硬件網表和比特流文件;針對軟件需求編寫硬件代碼,開發軟件系統,編譯生成elf格式的可執行代碼;合并軟、硬件比特流;最后下載和在線調試[4-5]。
DM9000A是聯杰國際推出的一款成本低、引腳數少、功能強大的以太網控制器芯片。DM9000A的基本工作原理為:首先對 DM9000A進行初始化,初始化成功后,DM9000A就進入了數據接收和發送的等待狀態;當處理器要向以太網發送數據幀時,先將數據打包成網絡數據包,并通過數據總線逐個字節發送到 DM9000A的發送緩存中,然后將數據長度等信息填充到 DM9000A相應寄存器內,隨后發送使能命令,DM9000A將緩存的數據和數據幀信息進行物理組幀,并發送出去;當 DM9000A接收到外部網絡送來的以太網數據時,首先檢測數據幀的合法性,如果幀頭標志有誤,則將該幀數據丟棄,否則將數據幀存到內部隨機存儲器,并通過終端標志位通知處理器,處理器收到中斷后對 DM9000A接收到的數據進行處理[6]。
根據處理器情況,DM9000A芯片可以提供8bit或16 bit兩種不同的連接方式。DM9000A芯片擁有與處理器通用的接口端,從而使與FPGA的硬件接口實現得到了簡化,同時在MicroBlaze中,可利用EDK中的外設控制器核來對DM9000A進行控制,該核的時序完全滿足 DM9000A的要求,相應的控制信號可由EDK中的Utility Vector Logic和Utility Bus Split兩個核來完成,也可在外部運用硬件描述語言單獨實現,DM9000A控制器芯片與FPGA的整體硬件連接結構如圖2所示[7]。

圖2 DM9000A與FPGA接口
其主要引腳的功能如下:IOR為讀命令;IOW為寫命令;CS#為片選信號;SD0~SD15為16位數據總線;CMD為訪問類型控制信號,低電平時為讀寫地址端口,高電平時為讀寫數據端口。
3.2.1 初始化模塊
以太網接口的軟件設計通過EDK內嵌的SDK進行編寫,SDK工具可以方便的進行在線調試,節省開發時間。在定義好相應的頭文件后,首先編寫DM9000A的初始化模塊。具體的操作過程如下:
1)當對DM9000A芯片上電時,其默認狀態是GPR(1FH)寄存器的bit[0]=1,即GHYPD位狀態為1,代表power down PHY;所以要將GPR(1FH)寄存器的bit[0]位設置為0,來打開DM9000A芯片的PHY,即power up PHY。
2)為了使DM9000A正常工作,根據設計需求,要對芯片進行兩次軟件復位,軟件復位是設置NCR(00H)網絡控制寄存器。
3)設置PHY的操作模式。
4)設置 NSR(REG_01)網絡狀態寄存器,清除其發送狀態標志位。
5)設置 IMR(REG_FF)中斷屏蔽寄存器中的bit[0](PRI)和 bit[1](PTI)兩個標志位,使能數據包接收和發送中斷。
6)設置 RCR(REG_05)接收控制寄存器來使能Rx。接收控制寄存器是接收任務所要用到的最重要的寄存器,Rx功能函數的使能是設置接收控制寄存器RCR的bit[0]_RXEN標志位為1。
在完成以上幾個操作過程以后,DM9000A芯片就可以正常工作了。當由于異常或其他情況而引發芯片重新啟動時,就要再次進行上述操作來使DM9000A芯片恢復到正常工作狀態。
3.2.2 數據發送模塊
在執行數據發送模塊前,首先要確認是否有可用的發送緩存,如果存在可用的發送緩存,則設置相應的寄存器,將要發送的數據包存入相應的發送數據緩存區,最后設置相應的發送標志進行數據的發送。其具體發送流程如圖3所示。

圖3 數據包發送流程
3.2.3 數據接收模塊
在執行數據接收模塊后,DM9000A會將經過內部校驗接收得到的數據存放在接收緩存中,其具體接收流程如圖4所示。

圖4 數據包接收流程
當 DM9000A接收到一個數據包后,會在相應數據包前面添加4Byte的頭,第一個字節為接收數據標志位,可以判斷是否有數據到達;第二個字節是狀態位,用來判斷所接收的數據包是否正常;第三、第四個字節用來存儲接收到的數據包長度。從第五個字節開始定義了由第三、第四字節確定了長度的數據,同時可以通過MRCMDX和MRCMD兩個寄存器來讀取接收到所有數據包的信息[7-8]。
3.2.4 系統測試
搭建好系統軟硬件平臺,上電啟動工作,設置系統平臺和計算機的IP地址,并保證兩者IP地址在同一網段內。計算機采用ping命令對以太網連接狀況進行測試,測試結果表明兩者連接成功。再通過 TCP&UDP測試工具對以太網收發數據進行測試,測試結果表明能夠正常收發通信。
系統采用Xilinx公司FPGA的MicroBlaze微處理器軟核和 DM9000A以太網控制器實現了以太網接口設計,完成了系統平臺與計算機之間的網絡通信。與“外部控制器+FPGA”實現以太網通信的方法相比,設計引入了FPGA自帶的微處理器軟核,使整個系統功耗更低、體積更小、開發周期更短、設計靈活便捷、運行穩定可靠,拓寬了FPGA在嵌入式網絡設計方面的應用范圍。
[1] 梁中英,蘇濤,武榮偉,等.基于 FPGA和 W5100的以太網通信系統設計[J].通信技術,2010,43(11):95-97.
[2] 徐功偉,戴學豐,劉樹東,等.嵌入式以太網控制器設計[J].通信技術,2009,42(05):183-187.
[3] 高一沅,黃春暉.基于 MicroBlaze的以太網通信系統平臺設計的研究[J].現代電子技術,2007(17):29-31.
[4] 王爾申,張淑芳,張芝賢.基于 Xilinx Microblaze的嵌入式 GPS接收機研究[J].通信技術,2010,43(10):28-30.
[5] Xilinx .MicroBlaze Processor Reference Guide[EB/OL].(2010-11-15)[2012-03-07].http://china.x ilinx.com.
[6] 施勇,溫陽東.基于DM9000A的嵌入式以太網接口設計與實現[J].合肥工業大學學報,2011,34(04):19-24.
[7] 田耘,胡彬,徐文波.Xilinx ISE Design Suite 10.x FPGA開發指南[M].北京:人民郵電出版社,2008.
[8] Davicom Semiconductor.DM9000A DataSheet[EB/OL].(2005-04-21)[2012-07-07].http://www.davicom.com.tw.