图2 RTL8139AS 内部结构图
PCI 总线信号有3. 3 V 标准和5 V 标准,信号线众多,但并不是所有的PCI 设备都使用全部的PCI 接口信号,实际只使用需要的即可。RTL8139AS 以太网控制器遵循3 V 标准,并且只使用了PCI 总线信号中的以下部分: AD[31: 0]为数据信号复用总线。
FRAME 为帧周期信号,由当前主设备驱动,表示一次访问的开始和持续时间。IRDY 为主设备准备好信号。
TRDY 为从设备准备好信号。C /BE 为总线命令和字节使能复用信号。地址期是总线命令,数据期是字节使能。IDSEL 为初始化设备选择信号。在参数配置读写传输期间,用作片选。对于只有一个PCI 设备的情况,它可以总接高电平。RST 为复位信号。CLK 为系统时钟信号,频率范围DC ~ 33 MHz.以上信号都在CLK 的上升沿有效。INTA 为中断请求信号,RTL8139数据准备好后可以用来向主控制器发出中断。
DEVSEL 为设备选择信号,表明驱动它的设备已成当前访问的设备,由于系统中,RTL8139 是单一的PCI 设备,因此该信号可以不用。
2 网络接口软件结构
RFID 读写器系统网络接口软件主要包括硬件设备驱动程序、TCP /IP 协议栈、应用协议和其他用户应用程序。网络接口软件的流程如图3 所示。
图3 网络接口软件流程图。
其中应用协议和其他用户应用程序将在二次开发时根据RFID 读写器的具体功能要求进行设计,这里主要介绍硬件设备驱动程序、TCP /IP 协议栈的实现方法。
2. 1 硬件设备驱动程序
硬件设备驱动是将PCI 接口当作单片机的外部存储器看待,单片机以读写外部存储器的时序对PCI 接口进行读写,再由PCI 接口将这种读写操作时序转换成PCI 时序对以太网控制器进行操作。主要包括3 个部分,网络初始化,发送控制和接收控制。主要完成对CR,TCR,RCR IMR ISR,RBSTART,MAR 等寄存器操作。
发送控制过程在网络中,帧传输的过程是发送方将待发送的数据按帧格式要求封装成帧,然后同过网卡发送到网络的传输线上。发送程序框图如图4所示。
图4 RTL8139 数据发送流程图。
接收控制过程分成2 步,第1 步是根据哈稀算法判断数据包是否是本地的数据包,如果是则接收放入FIFO,如果FIFO 里的数据包达到了RCR 寄存器预先设定阈值,把数据报放入RX_BUFF.第2 步主机程序将RX_BUFF 里的数据读取到内存进行处理。
2. 2 TCP /IP 协议栈
如图5 所示,以太网控制器提供了逻辑链路层协议,TCP /IP 协议栈则通过底层的硬件设备驱动程序来接收和发送数据,对接收到的以太帧数据进行协议的分析,并给其上层应用提供一些简单、易用的函数。