RTL8019AS 网卡芯片在以太网通信中的应用

  仪器网 ·  2012-07-15 08:57  ·  39158 次点击
随着互联网日益普及,日常生产生活也与网络息息相关。目前主要通过PC机进行网络间的数据传输。但是在某些实际应用中这种传统方法成本较高,容易造成资源的浪费。所以在避免使用PC机或高档单片机的情况下接入互联网是十分必要的。本文正是基于上述的需求采用80C52单片机和RTL8019AS以太网控制器芯片实现与以太网的互联。
1RTL8019AS芯片
RTL8019AS芯片是由台湾Realtek公司生产的高度集成的全双工的以太网接口控制芯片。它支持UTP、AUI和BNC自动检测;支持对10BaseT拓扑结构的自动极性修正;并具有4个诊断LED引脚编程输出以及100脚的PQFP封装,从而缩小PCB尺寸等优点。所以它以优良的性能和低廉的价格在网卡市场中占有相当的比例。
RTL8019AS支持16k,32k和64k字节BROM和闪存接口。它提供页面模式功能,这种功能支持在16k字节内存系统空间下的4M字节的BROM。RTL8019AS内置16k字节SRAM,用于收发缓冲,这种设计不仅提供更多友好的功能,而且还节省系统的存储资源。
此外,RTL8019AS还具有出色的低功耗特性,并且其全双工特性可以实现在双绞线连接线路中同时收发。这种特性不仅将信道带宽从10Mbps增加到20Mbps,而且降低由以太网的CSMA/CD协议引起的信道内竞争。同时它的即插即用功能可以使用户不用在设计时关心如I/O等资源的配置,对于在非即插即用的场合也提供跳线配置方式。另外RTL8019AS内部带有10M/100Mbps的以太网物理层接口(PHY),可以直接与以太网隔离变压器连接后接RJ45接口。RTL8019AS内部结构(见图1)。
2硬件接口电路的设计
[attach]50723[/attach]
基于RTL8019AS的整个系统的简图(见图2)
[attach]50724[/attach]
由框图2可以看出本系统主要由RTL8019AS,80C52,62256,RJ-45组成。80C52是主控芯片,62256是外部RAM,RJ-45是网络接口。RTL8019AS的接口电路(见图3)。
由图3可以看出RTL8019AS有20条地址线SA0~SA19。其中0~4地址线对应接单片机的地址总线ADDR0~ADDR4;5~7、10~19地址线接地;8,9地址线接电源VDD。
第29脚IORB是RTL8019AS芯片的读信号,它接单片机的写信号引脚(P3.6);第30脚IOWB是芯片的写信号,它接单片机的读信号引脚(P3.7);33脚RSTDRV是芯片的重置信号,它接单片机的T0脚(P3.4);第34脚AEN是地址有效信号,它接地;第36~43脚SD0~SD7是芯片的8位数据总线,它们分别接单片机P0口的相应位。
为表示芯片网络工作状态,61~63(LED0~LED2)引脚可以各接1个发光二极管。LED0灯亮表示网络通讯有冲突;LED1灯亮表示正在接收网络上数据包;LED2灯亮表示正在向网络上发送数据包。
[attach]50725[/attach]
在网卡接口中使用20F001N芯片,20F001N是双绞线驱动/接收芯片,内部有2个传输变压器。它是连接RTL8019AS和RJ-45的芯片。它的TPOUT+、TPOUT-、TPIN+和TPIN-引脚分别对应接RTL8019AS的TPOUT+、TPOUT-、TPIN+和TPIN-引脚;它的TPRX+、TPRX-、TPTX+和TPTX-引脚分别与RJ-45接口的RX+-、TX+-端相连。仅靠单片机内部的RAM是无法完成数据的接收和发送的,因为80C52单片机内部的RAM只有256个字节,所以需要外部的RAM的协助,但是如果用RTL8019AS内部的SRAM和ROM则会影响单片机数据传输速度,这就需要外接一个RAM。外接的RAM不但能提高单片机数据传输速度而且还能实现复杂的通讯功能;同时外部RAM也可用做串行口的输入输出缓冲,使单片机可以高速的吞吐数据,减少网卡编程控制的复杂性。这里采用62256RAM来实现数据的存储操作。62256的D0-D7接单片机的P0口,/OE接单片机的读信号脚,/CE接单片机的写信号脚。62256的A0-A7接锁存器74HC373的Q0-Q7,A8-A14接单片机的P2.0-P2.6。74HC373的D0-D7接单片机的P0口,/OE接地,LE接单片机的ALE。
3软件设计
网络数据传输装置采用TCP/IP协议,任何能上网的计数机都采用这一协议。如果要远程传输数据,可以利用现成的Windows的SOCKET函数或Linux下的网络函数直接编程。实现PC机到网络数据传输装置之间的数据传输。在介绍软件设计之前,首先介绍与DMA有关的寄存器。与本地DMA有关的寄存器:发送开始页面寄存器(TPSR)、发送字节计数器(TBCR0和TBCR1)、开始页面寄存器(PSTART)、结束页面寄存器(PSTOP)、当前页面寄存器(CURRY)和边界寄存器(BNDRY)等;与远程DMA有关的寄存器有:远程起始地址寄存器(RSAR0和RSAR1)等。
3.1RTL8019AS的检测和初始化
设网卡的基本地址为BIOA,其初始化过程如下:(1)从地址为(BIOA+01FH)的端口读入数据,然后将该数据重新写回(BIOA+01FH)以启动网卡工作。(2)向CR(BIOA+01FH)命令储存器写入21H,选择寄存器的页面为第0页,并执行软件复位。(3)设置数据结构寄存器DCR,确定内部FIFO门限、远程传输方式选择和字节传输选择。(4)设置方式状态配置寄存器TCR(BIOA+01FH)为内环路自检方式。(5)读出网卡EEPROM中的物理地址。(6)检验缓冲区RAM。(7)重复(1)~(3)并清除远程DMA字节计数器RBCR0和RBCR1。(8)设置接收状态寄存器。(9)划分缓冲区为发送和接收缓冲区,并建立接收缓冲环。(10)送0FFH给中断状态寄存器ISR以清除中断状态寄存器。(11)设置中断屏蔽寄存器IMR为1BH,允许写缓冲溢出中断、包发送出错中断、包发送中断和包接收中断。(12)送61H给命令寄存器CR,选择页面1。(13)设置网卡地址寄存器。(14)设置当前页面寄存器。(15)设置命令寄存器。(16)设置发送结构寄存器。
3.2数据的接收过程
数据的接收过程可以分为两步:第一步是由本地DMA将数据存入接收缓冲环中,然后再由远程DMA将数据读入内存RAM;第二步由主处理器从内存中读取数据。由于数据的接收工作是由网卡自动完成的,所以只需对相关的寄存器如PSTART、PSTOP、CURRY和BNDRY进行适当的初始化即可。初始化设置如下:
BNDRY=PSTART
CURRY=PSTART+1
CURRY同时也是RTL8019AS写内存的指针,指向当前正在写的页的下一页,当CURRY=BNDRY+1时表明芯片正在接收数据;当CURRY=BNDRY时,表示缓冲区空,芯片停止接收数据。当缓冲区中有数据被取走时,就要更新BNDRY的值,每读走一页数据,要将BNDRY加一。具体操作是:设置PSTART=0x4c、PSTOP=0x80、CURRY=0x4d。每经过一页CURRY就加上1,即CURRY=0x4d+1=0x4e。数据读到结束页面PSTOP时,CURRY被重置成PSTART。当初始化接收配置寄存器和接收缓冲相关寄存器后,网卡便能自动进行数据的接收。
3.3数据的发送过程
发送数据的基本过程是主处理器通过远程DMA将要发送的数据写入芯片RAM,之后再启动本地DMA,将数据发送到网上。要说明的是:在这个过程中将待发的数据按帧格式封装并送到RTL8019AS中的发送缓冲区是通过远程的DMA通道完成的。RTL8019AS无法将整个数据包通过DMA通道一次存入FIFO,则在构造一个新的数据包之前必须先等待前一数据包发送完成。封装形式如下:目的地址6个字节、源地址6个字节、长度类型2个字节、数据段(不小于64个字节)。
数据发送时同样也要设置与DMA相关的寄存器(TPSR、TBCR),即设置发送缓冲区首地址和数据包的长度,启动发送命令(CR=0x26)就可以实现RTL8019AS的发送功能,RTL8019AS会自动按以太网协议完成数据的发送并将结果写进状态寄存器。设置本地DMA程序如下:
Outportb(TBCR0,(unsignedchar)nSize);
nSize=(nLength+14);
Outportb(TBCR1,nSize>>8);
Outportb(TPSR,0x40);
总结数据发送流程为:首先将数据从RAM装入网卡发送缓冲区;看数据包是否封装完毕,若封装完毕定时器开始计时并发送数据包,反之数据则重新装入发送缓冲区直到数据发完为止;在数据发送完毕时看定时器是否超时,若没有超时则确认收到信号准备下一轮数据的发送,反之则定时器重新计时同时数据包重新发送。
4结论
本文对RTL8019AS芯片的性能和特点做研究,确定整个系统的实现方案。基于RTL8019AS芯片及单片机的网络数据传输装置,其接口简单并能进行简单的数据通信。由于此网卡芯片可通过单片机来控制,从而摆脱计算机环境的限制,因此在小型应用场合有非常广阔的应用前景。
来源:《现代仪器》,转载请注明出处-仪器信息网(www.cncal.com)

0 条回复

暂无讨论,说说你的看法吧!

 回复

你需要  登录  或  注册  后参与讨论!