DSP与以太网卡的接口技术研究
2009-05-18
作者:刘国福 张 屺 廖 巍
摘 要: 通过分析NE2000网卡与微机ISA总线的接口电路,用DSP芯片TMS320F206结合外围电路模拟ISA时序,实现了DSP与NE2000网卡的软、硬件接口,从而使ISA总线型网卡脱离了PC机环境的制约。
关键词: 网卡 ISA总线 DSP
以太网是当今最受欢迎的局域网之一,它包括了OSI七层模型的物理层和数据链路层的全部内容[1]。在以太网中,网卡用于实现802.3规程,其代表是NOVELL公司的NE2000和3COM公司的3C503、3C508、3C509等网卡。对网卡直接编程就可以实现局域网内任意站点之间的通信而完全抛开了网络操作系统,这就启发我们能否在脱离PC环境的条件下实现网卡与其它微处理器之间的接口,从而建立基于非PC机平台的局域网络。对ISA总线型网卡,要实现这一设想,关键在于怎样利用微处理器及外围辅助电路模拟ISA时序。本文作者根据所做课题需要,通过分析NE2000网卡与微机ISA总线的接口电路,用DSP芯片TMS320F206结合外围电路模拟ISA时序,解决了DSP与NE2000网卡的软、硬件接口问题,初步实现了网卡在非PC机环境下的应用。
1 NE2000网卡与微机ISA总线接口电路分析
NE2000网卡是NOVELL公司生产的16位ISA总线的网卡,利用NE2000网卡可以组成总线结构的以太计算机局域网。该网卡遵循的标准与协议为IEEE802.3。其硬件结构如图1所示,按功能可将其划分为接口电路、缓冲RAM、站地址PROM、自举ROM、状态设置跳线器、连接器、DP8390、DP8391以及DP8392九部分[2]。
接口电路主要实现两种功能:一是与计算机ISA总线相连,包括数据总线读写、地址总线驱动、中断控制信号的产生、存储器读写信号以及I/O端口读写信号的引入等;二是对网卡内部的操作,包括对缓冲RAM的读写、对DP8390的控制、读站地址PROM以及读自举ROM等。表1列出了NE2000网卡接口电路所使用的ISA总线信号(不考虑电源线和地线)。从表1可以看出,网卡接口电路仅使用了50根ISA信号线。通过对网卡工作原理的分析,我们还可以将网卡与DSP之间的接口信号线减至最少。
(1)网卡自举ROM中固化了远程自举程序,使得用户工作站能够远程自举DOS系统,并从服务器上装载程序。这个功能很少用到,而且在基于DSP平台的局域网中也不存在DOS系统,故一般情况下都是通过跳线器屏蔽掉此功能。因而,/SMEMR和SA10~SA19这11根信号线可以不用。
(2)AEN信号只有当DMA控制器是总线占有者时,它才产生作用[3]。由于网卡并不使用DMA操作,故可将该信号线始终保持在低电平,使网卡I/O译码操作一直有效。
(3)80X86系列微机为了兼容的需要,设置了/IOCS16信号线。由于我们使用的是16位DSP,不进行8/16位数据读写的转换,故不需要此信号。
(4)DSP只需要一根中断线,因而可在上述7根线中任选一根即可,其余6根中断线悬空即可。
(5)网卡与ISA总线交换数据是通过I/O端口实现的,微机采用PIO方式,从网卡缓冲RAM中读入数据,或将主机内存中的数据送至网卡RAM缓冲区。根据这一分析,DSP及其外围辅助电路应能完成模拟ISA总线I/O读写的功能。
通过上面对网卡接口信号线的详细分析,可以看到DSP与网卡之间只需正确连接32根信号线,从而使DSP的外围接口电路大大简化。
2 DSP与NE2000网卡接口硬件电路
TMS320F206[4]是一种低价格、高性能的16位定点DSP,它的性价比极高,目前已成为高档单片机的理想替代品,在通信、语音/语言、军事、仪器仪表、图像处理、工业控制等领域得到了广泛的应用。本文所设计的就是该DSP与NE2000网卡的软、硬件接口,从而展开对基于DSP平台的局域网的研究。
根据上面对网卡与微机ISA总线接口电路的分析,表2列出了F206与网卡接口所需的引脚信号。
从表1和表2可以看出,NE2000网卡接口电路所需的信号线与F206的引脚之间有明确的对应关系。但是,它们之间能否通过简单的组合逻辑进行相连还需分析微机ISA总线I/O读写时序与F206的I/O读写时序是否一致。以读时序为例,图2给出了微机ISA总线I/O读时序过程,图3给出了F206的I/O读时序。从这两个时序图可以看出:微机采用数据和地址总线复用的总线传送方式,当地址锁存后,数据再送上总线;DSP采用独立的数据和地址总线传送方式,地址在一个I/O周期之间保持有效,数据在/RD信号有效后,在I/O周期内保持有效。因此,DSP可以按下述应用模仿微机时序对网卡进行操作。
(1)数据线、地址线可以直接相连。网卡仅使用F206的A0~A9这10根地址线。
(2)/IOR、/IOW信号线可通过/IS、/STRB、/RD、/WE这4根信号线译码得到,下式给出了生成/IOW、/IOR的译码逻辑关系:
/IOR=/IS+/STRB+/RD
/IOW=/IS+/STRB+WE
另外,XF引脚信号经驱动可直接连至RESETDRV,READY引脚经上拉电阻连接IOCHRDY,/INT2反向后与IRQ5相连。图4给出了F206与网卡连接时的硬件框图,GAL16V8来完成译码及驱动的工作。
3 DSP对NE2000网卡的编程
DSP对NE2000网卡的编程就是DSP对网络接口控制器(NIC)DP8390中各种寄存器进行编程控制,完成数据分组的正确发送和接收。网络通信过程可分为网卡初始化、接收控制和发送控制等三部分。限于篇幅,有关DP8390页面寄存器的详细说明和微机环境下的编程技术请参阅文献[5],DSP的完整汇编程序请有兴趣的读者和作者联系。下面只给出DSP读取NE2000网卡物理地址的一段程序,实际中是用来验证上述硬件连接是否正确而编制的。我们购买的网卡物理地址为0040056388E7,在PC机上已经得到验证。实验证明,通过下面的程序运行读到了正确的物理地址,从而表明我们所做的设想和实际结果是完全一致的。
SPLK #0021H,60H ;选择“0”页寄存器,后续操作为复位操作
OUT 60H,CR
SPLK #0049H,60H ;选择16位传输方式
OUT 60H,DCR
SPLK #0000H,60H ;清DMA远程字节寄存器
OUT 60H,RBCR0
OUT 60H,RBCR1
SPLK #001FH,60H ;初始化接收状态配置寄存器
OUT 60H,RCR
SPLK #0002H,60H ;初始化发送状态配置寄存器
OUT 60H,TCR
SPLK #004CH,60H ;设置接收缓冲环起始页面地址寄存器
OUT 60H,PSTART
SPLK #0080H,60H ;设置接收缓冲环终止页面地址寄存器
OUT 60H,PSTOP
SPLK #004CH,60H ;设置边界指针寄存器
OUT 60H,BNRY
SPLK #00FFH,60H ;清网卡中断状态
OUT 60H,ISR
SPLK #00FFH,60H ;设置中断屏蔽寄存器
OUT 60H,IMR
SPLK #0000H,60H ;设置远程DMA起始地址为0000H
OUT 60H,RSAR0
OUT 60H,RSAR1
OUT 60H,RBCR1
SPLK #0006H,60H ;网卡地址长度为6个字节
OUT 60H,RBCR0
SPLK #000AH,60H ;启动远程DMA读
OUT 60H,CR
NOP
IN 61H,DATA_PORT ;61H中存放网卡首字节地址“00H”
IN 62H,DATA_PORT ;62H存放网卡第二字节地址“40H”
IN 63H,DATA_PORT ;63H中存放网卡第三字节地址“05H”
IN 64H,DATA_PORT ;64H中存放网卡第四字节地址“63H”
IN 65H,DATA_PORT ;65H中存放网卡第五字节地址“88H”
IN 66H,DATA_PORT ;66H中存放网卡第六字节地址“E7H”
网卡在DSP中的应用解决了DSP与DSP之间、DSP与PC之间的准确、高速地通信问题。由于网卡中包含了OSI七层模型中物理层和数据链路层的全部内容,用户不必再为这两层的具体连接和实现操心,可把精力和时间用在要解决的实际问题中去,这必将给用户带来极大的方便。
参考文献
1 何 诚.局部网络软件、硬件及其协议.成都:四川科学技术出版社,1992年
2 李 鹏.计算机通信技术及其程序设计.西安:西安电子科技大学出版社,1998年
3 阎 凯主编.386微型计算机硬件设计原理分析与维修(下).北京:科学出版社,1994年
4 武汉力源电子股份有限公司.TMS320C2XX数字信号处理器用户指南.1998年
5 刘彦明,李 鹏.实用网络编程技术.西安:西安电子科技大学出版社,1998年