图1所示是W3150A+芯片的结构框图。由图1可见,W3150A+主要由4部分组成。其中部分是MCU接口。W3150A+提供有直接总线接口、间接总线接口和SPI总线接口。既适合与类似8051单片机的总线连接,也非常适合与只有IO口而没有总线接口的控制器连接;第二部分是TCP /IP协议栈。W3150A+已经完全固化了从MAC层、网络层到传输层所需要的协议,因此,用户无需了解这些协议的具体实现方法和实现代码;第三部分是接收和发送缓冲区,通过以太网进行通信的数据就是通过这些缓冲区来交换的;第四部分是以太网物理层接口(MII接口)。W3150A +可以与物理层芯片RTL8201无缝连接,从而实现10/100BaseT以太网物理接口。
W3150A+内部的寄存器分为两个存储器和两类寄存器。两个存储器分别用于数据传输的输入和输出,两类寄存器分别是通用寄存器和端口寄存器,每类寄存器都含有大量的状态字控制寄存器。下面简要介绍比较重要的状态字控制寄存器。
Sn_MR:端口n模式寄存器,该寄存器用于设置端口的选项或协议类型;
Sn_CR:端口n命令寄存器,该寄存器用来设置端口的初始化、关闭、建立连接、断开连接、数据传输以及命令接受等;
Sn_IR:端口n中断寄存器,该寄存器用于显示建立和中止连接、接收数据、发送完成以及时间溢出等信息;
Sn_PORT:端口n的端口号寄存器,该寄存器可在TCP或UDP模式下设定对应的端口号;
S_TX_FSR:端口n发送存储器剩余空间寄存器,该寄存器用于指示用户可以使用的发送数据空间的大小,在发送数据前,用户必须先检查剩余空间的大小,然后控制发送数据的字节数;
Sn_TX_RR:端口n发送存储器读指针寄存器,该寄存器用于指示端口在发送过程完成后发送存储器的当前位置。当端口n的命令寄存器收
到SEND命令后,可随即从当前Sn_TX_RR到Sn_TX_WR的数据中发送出去,发送完成后,Sn_TX_RR的值自动改变;
Sn_TX_WR:端口n传输写指针寄存器,该寄存器可指示向TX存储器写入数据时的地址;
Sn_RX_RSR:端口n接收数据字节数寄存器,该寄存器只是端口接收数据缓冲区接收数据的字节数,通常可由Sn_TX_RR到Sn_TX_WR的值计
算得出,向端口n命令寄存器写入RECV命令后,寄存器的值将自动改变,并可以接收远程对端的数据;
Sn_RX_RD:端口n接收缓冲区读指针寄存器,该寄存器只是端口接收过程完成后的读地址信息。
W3150A+内部有4个独立的端口(Socket),它们的状态、控制分别映射在第二到第五寄存器区。主要用于实现端口工作模式的控制(TCP服
务器、TCP客户端、UDP或PPPOE等)、设置该端口的端口号,设置该端口目的主机IP地址和端口号,以及端口接收和发送数据控制等。
2 以太网接口的硬件设计
本接口的硬件设计主要包括FPGA与W3150A+的接口设计,物理层芯片RTL8201与W3150A+的接口设计以及时钟模块和电源模块的设计。其硬件设计框图如图2所示。
2.1 W3150A+与FPGA的接口设计
随着半导体技术的飞速发展,FPGA(Field Programmable Gate Array)的计算能力、容量以及可靠性有了很大的提高。它正以高度灵活的用户现场编程功能、反复可改写功能、高可靠性等优点,成为数字电路、数字信号处理等领域的新宠。
考虑到成本、实用性以及功耗,本设计选用的FPGA芯片是Altera公司MAXII系列的EPM570GT100C4。MAXII系列器件是一种非易失性CPLD,采用0.18μm的制造工艺,并包含有240到2210个逻辑单元和8Kbits非易失性存储器,它相对于其他的CPLD可以提供快速、稳定、数量更多的I/O管脚。
W3150A+与微处理器芯片的接口方式有三种:直接总线接口模式、间接总线接口模式和SPI模式。其中直接总线接口模式适用于大数据量传输的情况;SPI模式的接口连线较少,适用于数据量不大,传输速率相对较低的情况;间接总线接口模式下的数据传输性能则介于它们两者之间。本系统采用直接总线接口模式,以便限度地提高数据的传输速率。其具体的接口电路如图3所示。
2.2 物理层芯片与W3150A+的接口设计
RTL8201BL是一个单端口的物理层收发器,它只有一个MII/SNI(媒体独立接口/串行网络接口)接口。可用于实现全部的10/100M以太网物理层功能,包括物理层编码子层(PCS)、物理层介质连接设备(PMA)、双绞线物理媒介相关子层(TP~PMD)、10Base-Tx编解码和双绞线媒介访问单元(TPMAU)。PECL接口可支持连接一个外部的100Base-FX光纤收发器。这款芯片使用先进的CMOS工艺制作,可以满足低压低功耗的需求。
RTL8201BL与W3150A+可通过标准MII接口相连,其中引脚RX_CLK、RXDV、RXD[0:3]以及COL用于数据的接收,而TX_CLK、TXE、TXD[0:3]用于数据的发送。其具体的电路图如图4所示。
3 数据传输的实现过程
通过控制器对寄存器进行读写访问操作,W3150A+就可以进行网络连接。下面介绍具体的操作过程。
首先应进行初始化。初始化设置包括基本设置、网络信息设置,端口存储器信息设置等,设置完后就可进行数据传输。数据传输可以采用TCP、UDP、IP_RAW和MAC_RAW模式进行,并可在端口n模式寄存器(Sn_MR)的协议类型中选择通信模式。其中,基本设置包括模式寄存器(MR)、中断屏蔽寄存器(SIMR)、重发时间寄存器(RTR)、重发计数寄存器(RGR)等;设置网络信息包括设定网关(GAR)、设定源硬件地址(SHAR)、设定子网掩码(SUBR)、设定源IP地址(SIPR)等;而设置端口存储器信息则主要是设定发送缓冲区和接收缓冲区的大小分配,具体可通过设置RMSR、TMSR寄存器实现。
本系统在FPGA芯片EPM570GT100C4的基础上可利用软件Quartus II来开发逻辑控制功能,从而实现对W3150A+的控制。其主要端口如下:
nrst:复位输入键,低电平有效;
clk:时钟输入;
nwrst:复位输出,可复位W3150A+和RTL8201;
nwr:对W3150A+写使能信号,低电平有效;
nrd:对W3150A+读使能信号,低电平有效;
ncs:W3150A+片选信号,低电平有效;
address:15位地址信号;
data:8位数据信号;
本接口通信设计采用的是UDP通信方式,其通信流程图如图5所示。
基于FPGA与W3150A+的以太网接口设计
端口初始化主要是对端口进行初始化,包括设置UDP模式、设置端口号,设置OPEN命令;通过Sn_RX_RSR寄存器的值可检测是否收到数据,若非零,即进入数据接收处理;接收处理时,首先读取Sn_RX_RSR寄存器的值,即接收数据字节数,然后计算偏址和实际物理地址,再根据物理地址读取数据。在读取数据过程中,如果物理地址到达该端口设定的高限地址,则先读高限地址的数据,然后将物理地址改为基地址,然后再从基地址继续读取剩余的数据。读完所有的数据后,可将Sn_RX_RR的值加上读取的数据长度,然后写入sn_RX_BASE,再向端口n的指令寄存器写入RECV命令。
发送数据?/发送处理的实现过程是首先读取S_TX_FSR寄存器的值以便能使用发送数据空间的大小来计算偏址和实际物理地址,然后再从物理地址写入要发送的数据。在发送数据过程中,如果物理地址已到达该端口设定的高限地址,则先将数据写入高限地址,然后再将物理地址改为基地址,接着从基地址继续写入数据。写完所有的数据后,再将Sn_TX_WR的值加上发送的数据长度,然后写入Sn_TX_BASE,向端口n的指令寄存器写入SEND命令。发送完成的确定可在发送(SEND)命令后,通过检测Sn_CR的值来判断数据是否全部发送完成。
当远程对端不存在或数据传输不正常时,将产生超时错误。此次可以通过对Sn_IR(TIMEOUT bit)检测来判断是否超时。当操作全部完成时,应关闭窗口,即将Sn_CR寄存器置为CLOSE。
4 结束语
本文介绍了以太网接口的设计及其数据传输的实现过程。利用本文的方法可以使以太网接口正常运行,故可为后续的虚拟仪器开发奠定基础。事实上,本方法已经过多次试验证明:完全满足工程需要。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。