3 以太网接口设计
在ARM系统中,以太网接口是与远程机进行通信及调试的基础,还可以进行内部局域网和互联网间的通信。而基于ARM的系统若没有以太网接口,其应用价值就会大打折扣。因此,就整个嵌入式系统而言,以太网接口电路是必不可少的,但同时也是相对复杂的。
从硬件的角度看,以太网接口电路主要由MAC控制器和物理层接口(PHY)两大部分构成。该设计中所用到的以太网接口芯片RTL8019AS,其内部结构包含这两部分。RTL8019AS是一款高集成度的以太网控制芯片,具有8/16位总线模式,集成了IEEE802.3协议标准的MAC层和PHY层的性能,与NE2000相兼容,支持以太网全双工通信方式;支持UTP,AUI和BNC自动检测,支持16位I/O基本地址选项和额外I/O地址输入/输出完全解码方式;支持存储器瞬时读写,收发可同时达到10 Mb/s的速率,内置16 KB的SRAM,可以方便地与微处理器进行连接。它支持多种嵌入式处理器芯片,内置有FIFO缓存器用于发送和接收数据。
3.1 以太网接口工作原理
使用RTL8019AS作为以太网的物理层接口,它的基本工作原理是:在收到由主机发来的数据包后,侦听网络线路。如果线路忙,它就等到线路空闲为止,否则,立即发送该数据帧。在发送过程中,首先为数据包添加帧头(包括前导字段和帧开始标志),然后生成CRC校验码,最后将此数据帧发送到以太网上。
在接收过程中,它将从以太网收到的数据包在经过解码、去帧头和地址校验等步骤后缓存在片内。在CRC校验通过后,它会根据初始化配置情况,通知RTL8019AS收到了数据包。最后,用某种传输模式(I/O模式、Memory模式、DMA模式)传到ARM系统的存储区中。
3.2 硬件电路设计
用RTL8019AS芯片设计的以太网控制器相关电路,可以通过RJ45连上以太网,在判断网卡芯片是否工作正常时,有两个依据,一是看状态指示LED是否有闪烁;二是用专用网络监听工具软件进行监听。在本设计中用两个LED指示灯表示接收和发送状态,当有网络连接且收发数据包时,LED闪烁。此外,网卡芯片单独不能工作,还必须有一个网络变压器在RJ45接口和网卡芯片中间进行电平转换,该设计中所用的电平转换器是20F001N。另外要特别注意,由于RTL8019AS的复位引脚是高电平有效,而AT91RM9200的NRST引脚是低电平有效,所以不能直接将两个引脚进行连接。该设计所用的解决方法是:在两引脚间加上一个共发射极的三极管,利用它的反相作用,来达到两个复位引脚间的电平匹配。同时,为了提高数据的传输速率,需要将网卡芯片设计成16位的数据通道,这就要求将RTL8019AS的IOCSl6B引脚用电阻上拉来达到设计目的。RTL8019AS与AT91RM9200进行连接还需要以下引脚:NOE,NEW,NCS2,D[O:15],一条中断线IRQ0以及地址线A[O:4](设计RTL8019AS的I/O基地址为300H,所以只需要SA[O:4]接A[O:4],而A[5:19]只需要接地即可)。至此,硬件电路已经设计完毕,整个电路的结构框图如图1所示。
4 软件设计
4.1 以太网口初始化
初始化第一步是复位以太网口。以太网口复位分为硬件复位和软件复位。硬件复位通过给RTL8019AS的RESET引脚发送一个复位脉冲;软件复位通过写端口达到复位,也就是给18~1F之间的任意一个寄存器写入任意一个数,就使得以太网口复位。第二步是设置一些寄存器的初始值,寄存器保存本机的物理地址,只有和寄存器保存的物理地址相同的以太网帧才被接收(RCR寄存器中PRO=O)。
以太网口第一次复位必须是硬件复位,硬件复位以后要经过大约10 ms的等待才能对以太网口操作,特别是发送和接收操作。
4.2 以太网口存储及初始化
RTL8019AS内部RAM地址范围从0x0000~0x7FFFF,其中0x4000~Ox7FFF用作接收和发送缓冲区。缓冲区是按页管理的,256 b为一页,这样接收发送缓冲页面是0x40~0x7F。发送缓冲区的起始页在TPSR寄存器中设置,接收缓冲区的起始页在PSTART寄存器中设置,PSTART实际上也表明了发送缓冲区的结束页。接收缓冲区的结束页是PSTOP。所以发送缓冲区的页从TPSR到PSTART-1,接收缓冲区的页从PSTART到PSTOP-1。一般设置如下:
使发送缓冲区可以容纳下两个最大以太网帧(最大为1 514 B),第一个帧放在SEND_START_PAGEO起始页,第二个帧放在SEND_START_PAGE1起始页,剩下的缓冲区都作为接收缓冲区。
RTL8019AS内部RAM是双口 RAM,因为它要支持两个独立的操作:一个是用户CPU读取RAM中的内容,对这个操作RTL8019AS提供一个读写口,也就是寄存器中的Remote DMA Port;另一个是RTL8019AS内部控制电路把从网络接收的数据写入RAM中,这时RAM称为Local DMA。RTL8019AS通过Local DMA写入RAM是不需要用户干涉的,它通过Remote DMA Port读写RAM。