基于DSP的网络化数据采集卡设计
本文作者:admin
点击:
2006-06-08 00:00
前言:
为了实现远程数据采集和传输,本文提出了一种基于DSP的网络化数据采集卡的设计。介绍了DSP与A/D转换模块的接口设计和DSP与以太网控制器的接口设计。实现了基于DSP的TCP/IP协议栈的嵌入。
现代数据采集领域中,越来越多地现场采集设备需要扩展网络功能以实现远程控制和数据传输。以太网以其低成本,易于网络集成,传输距离远的优势使其得到了广泛应用,采用以太网进行数据的采集和传输的优势在于从底层采集到上层管理,都可以通过 TCP/IP协议进行数据传输,而无需进行协议转换,易于使用和维护。TMS320VC5402(以下统称C54)是TI公司的一款低功耗、高性能的DSP芯片,具有很高的操作灵活性,运算速度可达100MIPS。本文介绍的就是基于TI公司的DSP芯片的以太网数据采集卡设计,内容主要包括两个部分:A/D转换电路与DSP的接口设计和DSP与以太网控制器RTL8019AS的接口设计。
A/D转换电路与DSP的接口设计
C54提供到了两个高速、双向、多通道带缓冲的串行接口(McBSP),它可以与其他的DSP器件、编码器或其它串行接口器件通信。McBSP包括数据通路和控制通路两部分,并通过7个引脚与外部器件进行通信。McBSP与外设的数据交换是通过DX和RX引脚来完成,通信时钟与帧信号分别由CLKX, CLKR, FSX和FSR引脚控制。
CS5376是一款用在高精度地震数据采集领域的数字滤波器芯片,接在A/D转换芯片之后,对数字信号进行特定滤波处理。下面以CS5376为例来说明利用C54的McBSP与采集单元的硬件连接。
数据的接收和发送过程
数据发送过程为:首先写数据发送寄存器DXR[1,2],然后通过发送移位寄存器XSR[1,2]将数据经引脚DX移出发送,也可以选择按A律或μ律压缩传输。类似地,数据接收过程为:通过引脚DR接收数据后移入移位寄存器RSR[1,2],并将这些数据拷贝到接收缓冲寄存器RBR[1,2],然后再拷贝到DRR[1,2],最后由CPU或DMA控制器读出。如果接收到的是压缩数据,可以直接解压缩。
McBSP串口初始化(DMA方式)的部分源代码如下:
STM SPCR10,SPSA0 SPCR10初始化
STM #K_SPCR10_RESET, SPSD0
STM SPCR20,SPSA0 SPCR20初始化
STM #K_SPCR20_RESET, SPSD0
STM PCR0,SPSA0 引脚控制器PCR0初始化
STM #K_PCR0_RESET, SPSD0
DSP与以太网控制器RTL8019AS
接口设计
RTL8019AS是一款与8位或16位NE2000兼容的10Mbps ISA 总线接口的以太网控制器芯片,具有极高的性价比。目前已广泛用于计算机网络接口器件以及嵌入式网络产品之中。
RTL8019AS支持即插即用自动检测模式,跳线和无跳线模式。本设计将采用跳线模式与DSP进行接口设计。此时RTL8019AS的I/O和中断由跳线决定,并且不使用外部MAU。硬件连接的框图如下:
上图中的EPM7032AE是LATTICE 公司的一款CPLD芯片,完成DSP与RTL8019AS之间的电平变换,逻辑控制等功能。
为了实现数据的网络化采集,关键在于在DSP芯片上实现TCP/IP协议栈的嵌入。本文涉及的TCP/IP协议是面向数据采集和传输的,所以只需实现IP协议、ARP协议、UDP协议或者是TCP协议即可。本文完成的是IP协议、ARP协议和UDP协议,这样既能实现DSP的以太网接入,又能满足嵌入式系统对DSP的资源要求。
下面本文将分层讨论DSP上嵌入式TCP/IP协议栈的设计。
●物理层:实现媒介访问控制MAC。主要完成RTL8019AS的复位及其寄存器的初始化,并设置RTL8019AS的工作方式、DMA通道接收缓冲区的地址设置等。部分源代码如下:
WRITE 0x21, CR /*设置命令寄存器,选中第0页,停止数据 发送或接收 */
WRITE 0x40, PSTART /*设定接收缓冲区起始页地址*/
WRITE 0x7F,PSTOP /*设定接收缓冲区终止页地址*/
WRITE 0x40,BNRY ……
上面的WRITE为DSP汇编语言中的宏指令,定义为:
WRITE .macro data, reg
ST data, *(rtl_reg)
PORTW *(rtl_reg), reg
RPT #20
NOP
●数据链路层:ARP协议和RARP协议(逆地址解析协议)使得网络设备的物理地址和IP地址可以对应起来,完成IP地址和链路层地址即MAC的动态转换。在本文涉及中,链路层的操作是这样的:当DSP接收到来自以太网的数据包时,调用check_packet函数处理,如果是ARP请求,则发送应答。这个ARP应答包含该网络接口的IP地址和物理地址,于是,这样就实现了IP地址和物理地址的一一对应。如果是ARP应答,则将对方的IP地址和物理地址放入ARP缓存。Check_packet函数里关于ARP的部分源代码如下所示:
CMPM *(databuffer.ethernetpkt.protocol),#0x0806;判断协议类型
CALL arp_process ; 调用ARP处理模块
arp_process:接收ARP请求后,封装好ARP数据报,调用send_packet函数完成发送。
●网络层:主要实现IP协议。IP协议是网络数据传输的基础,它提供了一种高效,无连接不可靠的传输方式。IP负责在TCP/IP主机之间提供数据包服务,进行数据封装,产生协议头。此部分主要通过两个进程实现:(1)发送进程。将待发送数据封装在一个IP包中,再查看目的主机与本机是否在同一子网中。若在,则直接发送IP数据包到目的主机,否则把数据包发到默认路由器上。(2)接收进程。得到IP包后,检验IP头部的版本、目的地址、校验和正确后,解析出协议类型字段,由此交给高层的协议处理。
●传输层:实现UDP协议。UDP即用户数据报协议,它属于“面向无连接,不可靠传输”的类型。与ARP协议的处理过程类似,在接收IP数据包后,先判断协议 ,如果是UDP协议,则调用函数udp_process来处理UDP数据报,否则丢弃该数据报。UDP适用于无须应答并且通常一次只传送少量数据的应用软件。
●应用层:提供用户程序接口,负责处理实际的应用程序细节。应用程序通过这一层访问网络。本设计中应用层主要实现将采集数据打包存入缓冲区,等待网络层传输。
本文结合DSP芯片C54的硬件结构特点完成了A/D转换电路与DSP的接口设计以及采用以太网控制芯片RTL8019AS实现了数据采集卡的以太网接口设计,并详细描述了基于DSP的TCP/IP协议栈的实现。