原创 基于AX88796B的网络接口设计与实现

2014-5-12 17:06 1526 21 21 分类: 通信

  0 引言

  在网络技术应用日益普及的今天,许多数字设备需要网络接口来进行网络通信。本设计是以TI公司的TMS320C6722为核心的信息处理系统,为满足大量数据的实时网络交换,用ASIX公司的AX88796B扩展了网络接口。在此主要论述了该网络接口的设计与实现。

  1 前言

  美国TI公司的TMS320C6722是一款主要面向嵌入式应用的高性能32位DSP,它数据运算处理能力可达2 000 MIPS和1 500 FLOPS,具有丰富的片上资源,目前已经被广泛应用在各种数字应用中。AX88796B是由台湾ASIX公司推出的一款与NE2000兼容的快速以太网控制器,其内部集成10/100M自适应的介质访问层MAC和物理层收发器PHY以及8K×16b的SRAM,SK支持8位、16位的通用CPU总线类型,执行基于IEEE802.3/IE-EE80.3u局域网标准的以太网控制功能,并且提供发送队列功能来增强标准NE2000的发送性能。该控制器采用64LQFP封装,仅占用9 mm×9mm的印制板面积,分析其性能可以满足系统需要。

  2 系统硬件设计

  (1)AX88796B的硬件结构。AX88796B芯片内部集成了8/16位CPU接口、串行E2PROM接口、8 K×16 b的SRAM、包缓存管理、MAC、PHY、以及电源和时钟等部件。DSP通过读写NE2000寄存器来控制AX88796B的工作状态,通过DMA方式与AX88796B的内部缓存SRAM进行数据交换。芯片自动在SRAM与MAC核之间进行数据发送接收,再经由内部的PHY层发送至RJ45接口。串行 E2PROM接口可以用来连接串行EEPROM,用于存储MAC地址,供AX88796B每次初始化时读取。AX88796B芯片的内部结构如图1所示。

AX88796B芯片的内部结构

  (2)系统硬件连接。主控制单元TMS320C6722B与网络芯片AX88796B的连接方式如图2所示。TMS320C6722B内部为32 b的总线结构,对外扩展EMIF为16 b的宽度,采用异步总线方式可以直接与网络芯片无缝连接。片选的连接,用EM_CS2连接到网络的CS,使AX88796B工作在186_l-ike模式,在配置引脚EECK接上拉电阻。本设计没有连接EEPROM,所有对AX88796B的配置均由TMS320C6722B在初始化时写入。

主控制单元TMS320C6722B与网络芯片AX88796B的连接方式

  3 系统的软件设计

  AX88796B的网络驱动程序是TMS320C6722和AX88796B硬件的接口,因此编写网络驱动程序模块应满足的主要功能有:AX88796B的初始化、报文的接收、报文的发送;

  (1)初始化。在AX88796B的初始化过程中除了完成对相关寄存器的定义与赋值外,还要完成对接收缓冲环的构造。对TMS320C6722B,要完成对应EMIF的设置和中断的初始化。与网卡有关的初始化如下:

与网卡有关的初始化

与网卡有关的初始化

  (2)报文的接收。判断AX88796B是否接收到新的数据包有2种方式:轮循和中断。单片机用轮循方式较多。由于TMS320C6722在此还要进行其他处理,为了提高DSP性能和实时性要求,这里采用中断方式。当网卡接收到新数据包时进入中断,首先判断cpr是否等于bnry,若相等,则表示接收缓冲区已被存满,则停止接收数据包,而不会覆盖旧的数据;若不等,则将接收缓冲区中待读取的数据包的起始地址写入rsar[0,1]寄存器,数据包的开始4字节写入rbcr[O,1]寄存器,并启动远端DMA读命令,通过读取4个信息字节得到待读取数据包的长度、接收状态和下一个将被读的页的指针信息。然后通过远端DMA读命令,将数据包从网卡sram中读入TMS320C6722内存中,并更新读页指针寄存器bnr-y,DSP每从网卡内存中读走一页数据,bnry便加一,这需要通过程序实现。网卡通过cpr将接收到的数据包写入接收缓冲区,每写完一页,cpr将自动加一,当加到最后的空页(这里是 pstop="0x80")时,cpr将自动恢复为接收缓冲区的首页(pstart=Ox4c)。网卡接收关键性代码如下:

 网卡接收关键性代码

网卡接收关键性代码

  (3)报文的发送。报文的发送过程就是调用写网卡函数,将报文发送到网卡的内存中去。然后将AX88796B的控制寄存器(CR)的发送位 TXP(transmit packet)位置1,即将报文发送。dsp通过远端dma通道将网卡发送缓冲区的起始地址和要发送的字节数分别写入rsar[O,1]和 rbcr[0,1],然后启动远端dma写命令即可将数据包写入网卡内存,此后将字节数写入tber[O,1]寄存器,启动发送命令就可将数据包发送到网络上。网卡发送的关键代码如下:

网卡发送的关键代码

网卡发送的关键代码

  4 结语

  在如上所述的底层硬件和软件设计基础上,完成了UDP和TCP/IP协议栈的软件,系统主要使用这2个协议进行网络数据传输。长期的系统在线验证证明,在 TMS320C6722上扩展的网络接口AX88796B,传输可靠,性能稳定,在100 Mb/s的速度,负荷超过90%的情况下,没有丢包和错包出现。可见,对这种只有异步总线,又需要网络大数据量传输的应用,该设计是可行的。

文章评论0条评论)

登录后参与讨论
我要评论
0
21
关闭 站长推荐上一条 /2 下一条