摘 要:串行接口总线(Universal Serial Bus,USB)实现了高速、多点的数据传输和数据监控等功能,简化了数控系统的接口设计,提高了数控系统的性能。
关键词:直接数字通信;USB;设计
一、直接数字通信设计中应用USB技术的优势
近几年随着无线技术的快速发展,无线USB接口技术也应运而生。无线USB是基于超宽带无线通信技术(Ultra WideBand,UWB)技术的宽频带、低功率谱密度优点。随着各种类型的USB外设(如USB闪存盘、USB视频头、USB鼠标等)的陆续出现,USB通信的优点越来越广泛的被人们所熟知,将外设连接到计算机时,USB接口成为优先的选择,USB总线主要具有以下优点:
(1)使用方便:设备自动识别,自动安装驱动程序,支持动态接入。
(2)应用范围广:传输速率从几Kb/s至几百Mb/s;同一组总线上可以同时支持同步和异步传输类型;支持对多个设备的同时操作(多连接);支持多达127个物理外设;支持在主机和设备间多个数据和消息流的传输。
(3)灵活性高:可以有很多不同大小的分组,并允许在一定范围内选择设备的缓冲区;通过支持不同的分组缓冲区和时延要求,支持不同数据传输速率的设备。
(4)传输可靠性高:协议中包含错误检测机制。
二、直接数字通信设计
(一)USB控制系统设计
USB接口引擎的芯片仅处理USB标准协议包的通信;具有结构相对简单、灵活性高、设计复杂性低的特点。本文遵照USB协议的定义,参考市场上已有的USB IP核,可以分析出一个USB设备控制器应具有如下主要功能:协议数据翻译、总线上事件检测、事务传输控制。
协议数据翻译:由于USB数据传输采用反向不归零(None-Return to Zero Inverted,NRZI)编码,并有位填充,所以在发送或接收串行数据时需要进行编码与解码。数据在控制器内传输时以字节为单位,因此还需要进行串并转换。USB数据以包为单位在总线上传输,在进行NRZI解码后需要识别数据包开始、结束标志数据校验采用循环冗余校验(Cyclic Redundancy Check,CRC)方法,在接收或发送数据时需要进行相应的CRC校验。
总线上事件检测:对于USB总线事件需要进行检测与确定,完成在各状态之间正确转换。USB事务传输控制:不同类型的USB事务有不同的传输控制机制,需要根据USB协议中所规定的顺序来收发一系列USB包,完成一次事务传输所以,USB设备控制器要做到能够正确识别由主机发来的各种包,并能根据传输机制做出正确处理。
物理层包括收发器和UTMI两部分,其中收发器采用Agere Systems公司的芯片USS2X1A 8-bit,它的主要功能包括包开始(Start of Packet,SOP)和包结束(End of Packet,EOP)信号的检测和产生时钟恢复,即时钟和数据的分离和提取;NAZI编码和解码;填充位的插入和删除;串/并和并/串转换;填充位错误和EOP错误的检测。UTMI模块实现总线上事件检测功能,完成USB设备各状态之间的转换。该部分对USB数据并不进行处理,仅负责收发器和协议层PL模块之间的数据传递。
控制器将转换后的数字量直接存储到FIFO存储区中,也可以读取FIFO存储区中的数据并输出到外部I/O接口。从而在单片FPGA上控制伺服系统所有信号。
USB设备控制器的核心部分是协议层SIE模块,它主要完成USB事务传输控制功能。协议层SIE对于UTMI传递过来的USB包要能进行识别和翻译。
端点控制模块用于端点的选择及端点访问控制,USB核支持多达16个端点,实际使用时端点数目可设置。控制器都必须通过对端点寄存器读写来进行控制。此模块是由端点和状态寄存器构成,存放各种状态信息和事件数据。
每个端点分别定义一套设置和功能相同但地址不同的寄存器,以端点0为例,它包括端点0状态控制寄存器(EP0_CSR),记录了端点状态,包括端点号、端点类型和传输类型等一些状态属性的信息。
USB规范参照网络中的开放系统互联参考模型(Open System Interconnect Reference Model,OSI)采用了分层描述。USB规范把USB系统分为三层,即接口层、设备层和应用层。
(二)物理层面的数字部分设计
USB接口的物理层包括数字和模拟两部分。本文只实现了物理层的数字部分。UTMI模块含有接收状态机、发送状态机、接口状态引擎和速度识别引擎4部分组成。接收/发送状态机分别为接收和发送数据部分的核心控制逻辑,控制着对数据操作的顺序,接口状态引擎用于跟踪接口的各状态信息,它可以控制串行通信芯片的挂起/恢复工作模块,还可以控制芯片的全速/高速通信速率的转换。接口状态引擎子模块采用一个内部状态机保持各状态信息和芯片操作模块转换的信息。这些信息放在状态寄存器中。速度识别引擎用来判断串行数据通信的速率,并处理芯片挂起和复位操作的数据流方向。
(三)串行接口引擎即协议层设计
设备控制器的核心部分是串行接口引擎即协议层模块,它主要完成USB事务传输控制功能。协议层对于UTMI接口传递过来的USB包要能进行识别和翻译。同时该模块判断出当前的传输事务是何种类型,根据USB事务传输机制适时发送正确的USB包,由收发器传递给UTMI模块处理。该模块的结构主要包括:打包模块、解包模块和协议引擎模块。协议层中的打包模块专门负责组装USB包,如果有需要发送的USB包,则送往打包模块组装,先组装包头,插入适当的PID,然后加入数据字段和校验字段。
如果有UTMI模块传递过来的USB包,则送往解包模块拆装,先解码出PID,八位PID的低四位得到PID,通过USB2.0协议的PID类型定义译出PID,再对其后的数据字段进行校验并和包中校验字段比较。
(四)控制设备传输层面设计
应用层不负责具体的传输,它控制设备传输哪些数据,由主机的用户软件和设备的功能单元组成,功能单元是用户软件对USB设备的抽象。设备的功能主要在这一层上实现。功能单元提供每个USB设备所需的特定功能,主机端包括用户软件和设备驱动程序,设备端的功能由功能单元来实现,他们之间的联系看作是逻辑上的数据流。
数控系统的性能一定程度上是由系统参数决定,如何正确传输和设置这些参数是也是实现直接数字通信的关键问题,参数的正确传输与否直接影响机床正常的工作及其性能的发挥。通常一个数控系统都有大量参数,少则几十个,多则上千,这里我们仅选取一个关键参数的传输来说明数据
如何在这一层上进行传输。
在完成以上物理层和协议层的设计后,首先根据系统参数把由一组指令实现的某种功能对应的程序存入存储器中,用一个命令代表这些功能。编写控制程序时只要写出该代表命令,就能实现这些功能。
参数的存储由于数控机床的参数是需要根据机床的状况进行更改的,所以参数都保存在可读写的存储区内。本文设计了16个端点,每个端点的存储区都可以存参数、程序、参数等数据。系统当前的数据可以存放在任何一个区中,也可以从任一区域读数据作为当前使用的数据。
三、结语
本文首先介绍了USB系统的逻辑体系结构,接着讲述了USB协议规定的数据通信机制,数据传输格式,信息包的组成和分类,数据传输的4种方式,本文结合本系统选择中断和控制传输方式,讲述和USB设备控制器设计相关的一些基本概念,描述符的具体设置及通信配置。根据USB协议先对USB设备控制器进行功能模块划分,对各部分进行说明。完成对物理层和协议层的设计,给出了设计生成的状态转换,接口信号,数据传输流程。
参考文献:
Rudolf Usselmann. USB Function IP Core .http:// www. opencores. org