1 硬件设计
DSP与网卡的硬件接口电路图如图1所示.
DSP的数据总线低16位接ISA网卡的16位数据线,ISA网卡的IOCS16线接高电平,设置网卡为16位的模式.
网卡共有20根地址线.将A7~A8、A10~A19接地,A0~A6和A9分别接DSP的A0~A7,用到的网卡地址为0240H~025FH,映射到DSP的Page3空间,地址映射为C000C0H~C000DFH.
DSP的Reset信号用于复位网卡,由于DSP的Reset信号低有效,而网卡的Reset信号高有效,故中间应接非门.
DSP的Page3和R/W信号用于选能网卡的读写信号IOR、IOW,实现的逻辑关系如图2所示.
IORQ是网卡的中断9,通过非门后接DSP的INT1引脚.
RTL8019网卡有三种工作方式:
第一种为跳线方式,网卡的I/O和中断由跳线决定;
第二种为即插即用方式,由软件进行自动配置plug and play;
第三种为免跳线方式,网卡的I/O和中断由外接的93C46里的内容决定.
上述所有的译码逻辑都在EPM7129中实现.
74ALVC16425是总线驱动芯片,可实现3.3V到5V的电平转换.由于TMS320VC33和EPM7128是3.3V的器件,而ISA总线是5V的,所以信号线不能直接连接,需要通过74ALVC164245进行电平转换和隔离.[page]
2 软件设计
网卡驱动程序主要包括以下几部分:
(1)NIC的初始化
(2)中断服务程序
(3)帧发送程序
在网络中,帧传输的过程是:发送方将待发送的数据按帧格式要求封装成帧,然后通过网卡将帧发送到网络的传输线上;接收方根据接收到的帧的目的地址研究是否将该帧提交给上层应用程序.帧的发送是指将待发送的数据以帧的形式发送到网络传输线上,因此,帧 的发送过程应该包括以下几个步骤:
①装帧;
②将帧送入NIC的发送缓冲区;
③初始化发送控制寄存器;
④启动NIC将该帧发送到网络传输线上.
(4)帧接收程序
帧接收是指将网络上的数据帧接收并缓存于网卡的接收缓冲环中,然后由主机程序将缓存于接收缓冲环的帧读走并存入内存中以备程序使用.从中可以看出,帧的接收过程分成两卡;
①第一步由NIC通过本地DMA将帧存入接收缓冲环;
2.2 TCP/IP协议的实现
2.2.1 DSP中与PC机中实现TCP/IP协议不同
TCP/IP协议最先是在UNIX系统中实现的,后来在LINUX、DOS和WINDOWS系统中也实现了TCP/IP.但是,在UNIX上实现的TCP/IP协议的源代码并不能直接移植到DSP上来,这是因为PC机和DSP存在着巨大的差异.
PC机中TCP/IP协议都是分层次实现的,相互之间都是通过参数传递进行联系,这样有利于提高程序的模块化和独立性.而在DSP中,由于参数传递会占用过多的程序空间,且降低DSP的执行速度,所以应尽量减少参数传递,转而使用全局变量和外部变量等来达到值的传递,因此各程序间的依赖程度大,往往会共享某一些变量和数据.
PC机上实现了比较完整的TCP/IP协议.而在DSP中,由于运算速度和内存的限制,不可能支持所有的协议,一般只实现需要的部分,不需要的协议一概都不支持;而且即使需要的协议也不用像在PC机上实现那么复杂,可以根据硬件的具体情况和实现的需求进行必要的简化.
2.2.2 TCP/IP协议的具体实现
TCP/IP协议是一个协议簇,包含了很多协议,在DSP上实现的所有协议如图3所示,通常可分为四层(不包括物理层).
根据DSP的结构特点和所需要实现的功能,在DSP中实现了ARP(地址解析协议)、IP(网际协议)、ICMP(Internet控制报文协议)、UDP(用户数据报协议)和TCP(传输控制协议),并对它们进行了简化.
2.2.2 TCP/IP协议的具体实现
TCP/IP协议是一个协议簇,包含了很多协议,在DSP上实现的所有协议如图3所示,通常可分为四层(不包括物理层).
根据DSP的结构特点和所需要实现的功能,在DSP中实现了ARP(地址解析协议)、IP(网络协议)、ICMP(Internet控制报文协议)、UDP(用户数据报协议)和TCP(传输控制协议),并对它们进行了简化.
在链路层中实现了ARP.每种网络都有自己的寻址机制,以太网通过以太网地址即通常所说的网卡硬件地址MAX进行寻址的,每个网卡出厂时都有一个唯一的MAC地址.IP地址则仅仅是对于TCP/IP簇有意义的地址,是一种虚拟地址.当赋予IP地址的IP包要在以太网中传播时,必须将IP地址转化为以太网地址才能进行正确的传输.ARP协议就是将32位的IP地址动态地映射为48位的以太网地址,从而保证网络的正确传输.ARP协议由两个文件arpin.c和arpout.c实现.arpin.c负责接收网络上广播的arp包,判断arp包的类型是网络上其它机子的请求包还是返回本机的响应包,判断其合法性并进行相应的处理;arpout.c负责主机向网络发送数据报时发送arp请求包以及被arpin.c调用响应收到的arp请求包.
数据长度、目的地址、检验和是否正确,再根据IP首部的协议类型字段的值交给相应的上层协议处理;ipout.c负责发送IP数据包,接收上层协议传递下来的数据,加上20字节的IP首部,正确设置源IP地址和目的IP地址、协议类型,计算检验和,交给下面的链路层发送.PC机上的IP数据包,当它的长度超过网络的MTU时,允许对它分段;在DSP中,则不支持IP数据包分段,也不支持IP选项字段.ICMP协议负责传递差错报文以及其它需要注意的信息,且由ICMP首部8位的类型字段和8位的代码字段决定信息的种类.在DSP中只实现了对回显请求(类型代码为80)报文的处理,从IP层收到ICMP包后,判断其类型代码段是否为80.如果是,将这两个字段设置为00(回显应答),计算检验和,再交给IP层发送;如果不是,则予以丢弃.从而实现了对ping功能的支持.
[page]
在运输层实现了UDP和TCP.
上一篇:基于ADSP21161的比相测距雷达跟踪控制
下一篇:TMS320LF2407A在混合电压系统中的设计
推荐阅读最新更新时间:2024-05-02 20:45