APP下载

基于MicroBlaze和DM9000A的以太网接口设计

2013-09-17姚振东李运洪

通信技术 2013年2期
关键词:寄存器以太网数据包

薛 昊, 佘 勇, 姚振东, 李运洪

(成都信息工程学院 电子工程学院,四川 成都 610225)

0 引言

FPGA[1]以其高集成度、高灵活性和高可靠性成为近年来发展较为迅速的一种可编程逻辑器件。以太网[2]接口特点是传输速率高,通信质量可靠,使用方便,适合于远近距离通信,是当今最常用的数据接口之一。目前,以太网接口技术在嵌入式设备中的应用越来越广泛,为FPGA配置以太网接口,与外部网络设备实现通信,将有利于FPGA平台的数据传输和功能延伸。系统以Xilinx公司的ISE12.4软件为开发环境,结合 DM9000A以太网控制器,采用FPGA内部MicroBlaze微处理器软核来实现以太网接口设计。

1 总体平台结构

系统采用的硬件平台是以 Virtex-4 XC4VLX60型FPGA作为主要芯片的开发板,其总体框架主要包括:供电模块、模数采集模块、FPGA芯片配置模块以及以太网传输模块。系统总体平台结构连接框图如图1所示。

图1 系统总体平台结构

2 MicroBlaze与DM9000A简介

2.1 MicroBlaze体系结构与开发流程

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]。

2.2 DM9000A主要特性与工作原理

DM9000A是联杰国际推出的一款成本低、引脚数少、功能强大的以太网控制器芯片。DM9000A的基本工作原理为:首先对 DM9000A进行初始化,初始化成功后,DM9000A就进入了数据接收和发送的等待状态;当处理器要向以太网发送数据帧时,先将数据打包成网络数据包,并通过数据总线逐个字节发送到 DM9000A的发送缓存中,然后将数据长度等信息填充到 DM9000A相应寄存器内,随后发送使能命令,DM9000A将缓存的数据和数据帧信息进行物理组帧,并发送出去;当 DM9000A接收到外部网络送来的以太网数据时,首先检测数据帧的合法性,如果帧头标志有误,则将该帧数据丢弃,否则将数据帧存到内部随机存储器,并通过终端标志位通知处理器,处理器收到中断后对 DM9000A接收到的数据进行处理[6]。

3 以太网接口的MicroBlaze实现

3.1 以太网接口的硬件设计

根据处理器情况,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 以太网接口的软件设计

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测试工具对以太网收发数据进行测试,测试结果表明能够正常收发通信。

4 结语

系统采用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.

猜你喜欢

寄存器以太网数据包
二维隐蔽时间信道构建的研究*
STM32和51单片机寄存器映射原理异同分析
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
Lite寄存器模型的设计与实现
C#串口高效可靠的接收方案设计
移位寄存器及算术运算应用
谈实时以太网EtherCAT技术在变电站自动化中的应用
浅谈EPON与工业以太网在贵遵高速公路中的应用
万兆以太网在连徐高速公路通信系统改造中的应用