摘要:在讨论通用串行总线(USB)基本原理的基础上,介绍如何将USB技术应用到分组无线网中。讲述分组无线网络控制单元的USB接口设计,并实现了分组无线网络控制单元与计算机之间的高速通信。
关键词:通用串行总线(USB) 分组无线网(PRN) 分组无线网络控制单元(PRU)
分组无线网(PRN)是一种新型的无线通信网络,是利用分组交换技术共享无线信道的数字通信网络。它采用先进的网络通信协议、动态的网络拓扑组织,使网络具有信道利用率高、组建方便和多跳转换覆盖面广等特点。分组无线网与一般计算机通信网、广域分级无线网和传统的局域网相比,具有机动灵活、组网迅速和抗毁能力强等特点。分组无线网络控制单元(PRU)是分组无线网中的核心设备,它与计算机(数据终端)相连接,进行收发数据交换。计算机可以向PRU发送网络控制命令,也可以设置或查看设备与网络的状态。传统的方法是采用RS-232口进行通信,传输速度十分有限,难以对高速、批量的数据进行快速响应,这使分组无线网的发展受到了限制。随着通用串行总线(Universal Serial Bus)技术的不断完善,使得在计算机与PRU之间建立高速且通畅的通信线路成为可能。采用USB接口来替换RS-232接口,从而使上述问题得以有效解决,并为以后PRN与IP网互联时的大量数据 高速传送奠定了基础。
1 USB接口的特点
USB(Universal Serial Bus)即“通用串行总线”,是一种应用在PC领域的表型总线接口技术,由Intel、Microsoft、NEC等公司共同提出。这是一种新规格的外接串联口,提出该规格的厂商希望用USB来取代现有的外接设备接口,它还具备连接单一化、软件自动侦测以及热插拔的功能,即插即用。它具有以下特点:
(1)使用方便。使用USB接口可以连接多个不同的设备,所以外设都在机箱外连接,允许外设热插拔。USB智能能识别USB链上外围设备的接入或拆卸。在软件方面,为USB设备的驱动程序可以自启动,无需用户干预,USB设备能真正做到“即插即用”。
(2)速度更快。USB接口的数据传输速度有全速(12Mbps)和低速(1.5Mbps)两种,在最新版本的标准USB2.0中定义的接口传输速率已达480Mbps。
(3)独立供电。USB接口提供了内置电源,采用总线供电的USB设备可获得5V电压和最大500mA的电流。这对一些耗电较小的设备非常有利,可以省去相对庞大的电源系统。
基于以上特点,尤其是速度方面的显著优势,USB得到了越来越广泛的应用。现在,大多数新PC都装备有两个USB端口,并且已经在PC机的多种外设上得到应用。
2 USB工作原理
2.1 USB通信模块分层结构
USB通信模块的基本流图如图1所示。
从图1中可以看出,主机到设备的连接由多层链接组成。USB总线接口层提供了主机与设备之间物理/信令/包的连接;系统软件基于USB设备层来完成对设备的一般操作;功能层通过相应的客户软件向主机提供一些附加功能。USB设备层和功能层各自的内部通信是逻辑上的,它们实际的物理通信都是通过USB总线接口层完成的。
2.2 数据传输方式
数据通过USB在主机与设备之间传送。USB规范极据不同数据的特点规定了USB支持的四种数据传输方式:
(1)控制传输方式。该方式用来进行外设与主机之间的控制、状态、配置等信息的传输,为外设与主机之间提供一个控制通道。每种外设都支持控制传输类型,这样主机PC与外设之间就可以传送配置和命令/状态信息。
(2)等时传输方式。该方式用来连接需要连续传输的数据,且对数据的正确性要求不高而对时间极为敏感的外部设备,如麦克风、电话等。以固定的传输速率,连续不断地在主机与USB之间传输数据。在传送数据发生错误时,USB并不处理这些错误,而是继续传送新的数据。
(3)中断传输方式。该方式传送的数据数量很小,但这些数据需要及时算是,以达到实时效果。此方式主要用在键盘、鼠标以及操纵杆等设备上。
(4)批传输方式。该方式用于传输要求正确无误但无带宽和时间要求的数据。通常打印机、扫描仪和数字相机以这种方式与主机联接。
USB设备的各个端点可以在设备开发时根据需要设置为相应的传输方式。分组无线网络控制单元(PRU)与计算机之间的通信要求大量数据的无差错传输,对时间间隔没有严格要求,所以选用批传输方式。
3 USB接口技术在分组无线网络控制单元(PRU)上的应用
为了将PRU与计算机通过USB连接,需要为PRU添加一个USB接口。目前可选用的USB接口产品有两种:一种是集成了USB接口的单片机,采用它开发成本较高;另一种是不带单片机的USB接口芯片。笔者选用National Semiconductor公司的USB接口芯片USBN9602,结合PRU本身的8051单片机,采用8051的编程语言编写接口程序,成功而又方便地实现了PRU的USB接口。
3.1 接口芯片USBN9602
USBN9602是一个集成的USB节点控制器,它支持USB标准的1.0和1.1版本。在这个芯片上集成了带有3.3V电压调节器的USB收发器、串行接口引擎(SIE)、USB端点FIFO、多功能8位并行接口、MICROWIRE/PLUS接口和一个可编程的时钟发生器。共有7个FIFO寄存器支持不同的USB消息:一个双向的FIFO(8字节)支持命令控制端点EP0,其余六个单向的FIFO支持中断、等时和批方式的数据传输。8位并行接口支持复用和非复用方式的CPU数据/地址总线。可编程中断输出设置允许设备根据不同中断信号的需要进行配置。串行接口引擎包含了物理层接口(PHY)和媒体接入控制器(MAC)。其中物理层接口包括了一个EOP(包结尾)检测电路,它可以根据总线通信协议判断出一个包的结束;媒体接放控制器用来完成包格式化、CRC校验码的生成和检测、端点地址检测等功能,而且还为发送NAK、ACK、STALL等握手包提供必要的控制。
同时National Semiconductor公司还提供了USBN9603和USBN9604两种芯片可供选择。这两种芯片除了时钟产生电路的复位机制有所不同外,其他部分完全相同。而这个区别使得它们分别适用于不同的供电方式:自供电(self-powered)和总线供电(bus-powered)。USBN9603/4比USBN9602在功能方面更加完善,它们的主要区别有两点:①USBN9603/4的晶体振荡频率为24MHz,USBN9602为48MHz;②USBN9603/4的6个单向FIFO均为64字节,USBN9602的6个单向FIFO分别为4个32字节和2个64字节。
3.2 PRU和USB接口设计
USB接口电路图如图2所示。
图2中USBN9602上的引脚D+通过上拉电阻接在3.3V电压上,这样就选定为全速(12Mbps)设备。如果D-被上拉,则设置为低速(1.5Mbps)设备。
单片机可以通过8位并行接口AD[7:0]或MICROWIRE接口与USBN9602连接。对于并行接口,有两种模式可供选择:复用方式和非复用方式。这两种方式的选择通过设置MODE0和MODE1两引脚的电平高低来实现。这里使用复用方式连接USBN9602和8051单片机。选择该方式时,MODE0和MODE1分别接高电平和低电平。该方式下的数据传输用到了USBN9602上的控制引脚RD、WR、片选信号CS、地址锁存使能信号ALE和双向的地址/数据总线AD[7:0]。引脚RD、WR和ALE分别与8051上相应的引脚相连,片片信号CS由8051输出的高8位地址经过解码器产生。当ALE为高电平时,AD[7:0]上的地址信号被锁存到USBN9602内的地址寄存器中,再当RD或WR有效时,数据被读出或者写入。通过这种方式,USBN9602中的任何一个寄存器都可以被直接访问。由于这种读写时序与8051读写外部数据寄存器的时序相同,因此可以把USBN9602中需要读写的寄存器当作普通的外部数据寄存器来对待,在接口程序中直接用MOVX指令来进行操作。
另外USBN9602还提供了一个中断输出,它用来引起单片机的中断。中断方式可以通过编程设置,将这个中断输出引脚直接与8051单片机上的外部中断引脚INT1相连。由于8051的餐部中断输入为低有效,所以USBN9602的中断输出也应通过编程设置为低有效。
USB接口的程序包括三个基本的部分:①初始化,这部分程序用来对单片机和所有外围电路进行初始化;②主循环,它可以被中断;③中断句柄,对中断进行处理,并且对时间敏感。这几部分均是嵌入在PRU的网络控制程序中的。
初始化程序中包含对USBN9602的初始化。①进行软件复位,它不影响时钟输出,相当于一个硬件复位;②设置中断方式,这一步骤确定了中断输出是高有效还是低有效;③设置缺省地址,这是由于USB规范规定设备在总线为其分配地址之间要以0作为缺省地址;④设置中断屏蔽,在USBN9602中各个端点的发送数据、接收数据和发送NAK握手包等事件可能产生中断;设置中断屏蔽这个步骤确定了哪一个端点的哪一种事件能够产生中断。
单片机通过中断的方式来处理USB接口上的各个事件,处理过程是在中断句柄中完成的。当某个端点接收到数据,并且在初始化中该事件被允许中断,则USBN9602就会向单片机发出中断信号,单片机会在中断句柄中处理这些数据。中断句柄中处理了端点0对以控制方式传输的命令的接收与响应和各个端点数据的发送与接收等事件,其中那些以控制方式传输的命令包括清除特征(CLEAR-FEATURE)、设置特征(SET-FEA-TURE)、读取配置(GET-CONFIGURATION)、设置配置(SET-CONFIGURATION)、读取描述符(GET-DESCRIP-TOR)、读取状态(GET-STATUS)和设置地址(SET-AD-DRESS)。通过这些命令主机可以了解或改变设备的工作状态。描述符包括设备描述符和配置描述符,USB规范给出了它们的格式工,想要计算机正确识别设备并安装驱动程序,这些描述符必须根据具体设备的情况填写。
以上各步骤中USBN9602与单片机的通信是通过单片机在USBN9602的寄存器中进行读和写来完成的,因此对USBN9602的读和写是单片机执行最频繁也是最重要的操作。在程序中这两个操作表现为子函数read_usb和write_usb。USBN9602共有64个可读或可写的寄存器,它们同时拥有一个高8位地址,又各自拥有一个低8位地址(00~3F)。由于前面所提到可以把USBN9602中需要读写的寄存器当作普通的外部数据寄存器来对待,所以只需给定高8位地址和要读写的寄存器对应的低8位地址,就可以直接用MOVX指令来完成这两项操作。
这时的PRU已经成为一个USB设备,能够被计算机正确识别。要使这个USB设备正常工作,实现它与计算机的通信,还要为该设备编写驱动程序。USB的驱动程序属于WDM型。WDM(Windows Driver Model),即Windows驱动程序模型,是Microsoft力推的全新驱动程序模式,旨在通过提供一种灵活的方式来简化驱动程序的开发,在实际对新硬件支持的基础上减少并降低所必须开发的驱动程序的数据数量和复杂性。开发工具可以选择DDK(Driver Development Kits)。
上一篇:基于VDSL的以太网的设计与实现
下一篇:感应通信的应用研究