一种用TMS320F206 DSP控制RTL8019AS实现的以太网接口设计
摘要:本文介绍了一种用TMS320F206 DSP控制RTL8019AS实现的以太网接口设计,给出了以太网接口的硬件电路的设计,分网卡初始化、接收控制和发送控制三部分介绍了网络接口驱动程序的设计。实践表明,该接口稳定实现了上位机与下位机的网络通信。
关键词: TMS320F206 RTL8019AS 以太网接口
1 引言
本文中实现的以太网接口是某型导弹飞控组件测试系统主测试板的一部分。该系统硬件的整体框图如图1。
其中上位机为工控计算机,测试人员通过人机界面完成所有测试。下位机主要由TMS320F206组成,控制整个测试项目的时序和流程,负责与被测系统进行各种数据交换和与上位机的实时通讯。由于被测系统与上位机有一定距离而且被测信号频率较高,如果采用传统的主测试板通过PCI方式集成于工控机的方式,将会出现数据线信号的衰减和信号延时问题有可能使信号时序错位,而不能完成系统测试的要求。为此将主测试板独立出来,移至被测系统附近,通过比较短的线缆与设备相连,这样就可以避免出现上述问题。现在就需要选择一种适合的通信方式完成上位机和下位机的数据交互,综合考虑到测试系统实时性和可靠性的要求我们选择以太网作为该系统的通信方式。本文以TMS320F206为控制平台,应用RTL8019AS以太网控制器具体实现了DSP系统接入以太网的功能。
2 以太网接口的硬件设计
本设计选用RTL8019AS作为以太网控制器。RTL8019AS芯片广泛用于10M的ISA总线接口的集成以太网控制芯片。它与NE2000标准相兼容,支持即插即用方式,具有16位的数据线接口和20位的地址线接口。RTL8019AS在其典型应用中,可以在发送的物理帧上自动添加帧头、帧起始定界符和校验和,可以与很少的外围电路一起完成效据的发送和接收功能。
2.1 RTL8019AS与TMS320F206的连接
RTL8019AS的接口模式有三种,即跳线模式、PnP模式和RT模式。在此系统内采用跳线模式,所有RTL8019AS的配置都由DSP编程控制。为了简化DSP网络接口的软、硬件设计,不使用远程自举加载功能,将JP腿直接接高电平设置位跳线模式,IOS0~IOS3接底电平设置I/O基地址为300H,这样既省去了93C46,又避免了跳线器更改变资源配置的麻烦。RTL8019AS的总线接口是与ISA总线兼容的,因此可以和DSP直接相连,F206与RTL8019AS的接口如图2所示。
1. 地址总线 RTL8019AS的20根地址线主要是为了读/写自举ROM,对于I/O端口寻址来说只要16根地址线就足够了,因此将DSP的地址总线A0~A15与RTL8019AS的地址总线SA0~SA15相连,而SA16~SA19全部接地。由于DSP系统无DMA控制器,因此将RTL8019AS的AEN引脚也接地。
2. 数据总线 RTL8019AS的IOCS16引脚接高电平,选择16位数据总线方式。
3. 读/写控制 F206的I/O口控制信号IS、IOSTRB、R/W等信号经过FPGA变换后与RTL8019AS的IOR、IOW连接。由于F206的I/O口读/写速度很快,因此将RTL8019AS的IOCHRDY信号与F206的外设准备好信号READY相连。另外,将SMEMR和SMEMW引脚接高电平,屏蔽了远程自举加载功能。
4. 初始化配置 为了简化电路和编程,本系统直接将IOS0~IOS3接地,设置RTL8019AS的I/O口基地址为300H,IRQ0~IRQ3接地,选择IOSC16接高电平,选择16为数据传输方式。用DSP一个IO信号作为RTL8019AS的复位信号。RTL8019AS复位结束时采样这些配置引脚,并根据引脚状态自动初始化其内部的配置寄存器。
2.2 RTL8019AS与网络介质间的连接
如图3所示,RTL8019AS与网络介质之间的连接由滤波器20F001完成。20F001是网络发送\接收滤波器,主要用于与以太网接口,以提高网络通信的抗干扰能力。图中TPOUT+,TPOUT-,TPIN+,TPIN- 是RTL8019芯片输出信号的四个引脚,滤波器右边是以太网RJ45接口,通过标准RJ45插头的双绞线接入以太网,在本系统中该插头直接通过网线接至上位机。
3 RTL8019AS的驱动程序设计
RTL8019AS硬件驱动实现就是对其内部寄存器进行编程控制,完成数据的正确发送和接收。网络通信过程可分为网卡初始化、接收控制和发送控制三部分,下面一一介绍。
3.1 网卡初始化过程
在接收和发送数据以前要进行必需的检测和初始化,对网卡的初始化就是对相关寄存器进行初始化,建立网络接口收发的条件。本段程序如下:
void Init_NIC()
{
CR=0x0021;
/*设置页0为当前页*/
DCR=0x00c9;
/*初始化数据配置寄存器DCR*/
RBCR0=0x0000;
/*初始化远程字节计数寄存器*/
RBCR1=0x0000;
/*初始化远程字节计数寄存器*/
RSAR0=0x0000;
/*初始化远程字节地址寄存器*/
RSAR1=0x0000;
/*初始化远程字节地址寄存器*/
RCR=0x00cc;
/*初始化接收配置寄存器*/
TCR=0x00f0;
/*初始化发送配置寄存器*/
PSTART=0x004c;
/*初始化页起始地址寄存器*/
PSTOP=0x004f;
/*初始化页终止地址寄存器*/
BNRY=0x004c;
/*界限指针寄存器BNRY的值为0x4c,即BNRY=PSTART*/
IMR=0x00ff;
/*设置中断屏蔽寄存器IMR的值为0xff,以便允许产生中断*/
ISR=0x00ff;
/*设置中断状态寄存器ISR的值为0xff,以便清除ISR*/
CR=0x0061;
/*将页1设置为当前页*/
PAR0=Local_MAC[0];
PAR1=Local_MAC[1];
PAR2=Local_MAC[2];
PAR3=Local_MAC[3];
PAR4=Local_MAC[4];
PAR5=Local_MAC[5];
/*设置物理地址寄存器PAR0~PAR5的值*/
CURR=0x004d;
/*设置当前页地址寄存器CURR的值为0x4d,即CURR=PSTART+1*/
next_pkt=0x004d;
/*将当前页地址寄存器CURR的值保存在next_pkt中。*/
CR=0x0022;
/*将NIC置于开始工作模式。*/
}
3.2 以太网帧接收过程
对RTL8019AS接收数据操作,有查询和中断两种方式。在中断方式下,控制器每收到一个完整的以太网数据包后,向CPU发出中断请求,CPU响应RTL8019AS的中断申请后,进人中断服务程序并开始接收数据。在查询方式下,通过查询CURR和BNRY两个寄存器的值来判断是否收到一帧数据。当BNRY+l与CURR不等时,说明接收缓冲区接收到了新的数据帧。若收到新数据帧,则先读取前2个字的数据,这2字的数据代表此次传输的数据帧的基本状态:第一个字的低字节表示接收状态,与ISR寄存器相对应; 第一个字的高字节为下一个包的开始地址指针;第二个字节为本数据包的长度(以字节为单位计算)。本课题采用中断和查询组合的方式接收数据包,具体软件实现流程如图4所示:
图4 以太网帧接收过程
3.3 以太网帧发送过程
数据发送过程应包含三个步骤:数据包的封装通过远程DMA;将数据包送入RTL8019AS的数据发送缓冲区;通过RTL8019AS的本地DMA将数据送入FIFO进行发送。本部分软件实现流程如图5所示。
4 结束语
本文介绍了一种DSP系统应用RTL8019AS接入以太网的具体实现方法。应用本文实现的以太网接口的测试系统现已交付使用,实践表明,该接口在稳定性、实时性、速率方面都有良好的表现。
|