数据包预处理方法及其中的总线接口和数据处理单元的制作方法

文档序号:3210768阅读:121来源:国知局

专利名称::数据包预处理方法及其中的总线接口和数据处理单元的制作方法
技术领域
:本发明涉及用于在总线接口单元中对经由通信总线接收的数据包进行预处理的方法,和在这种方法中所用的总线接口单元,以及在这种方法中所用的应用数据处理单元。一种高度复杂的通信总线是IEEE1394总线,它是低成比,高性能的串行总线。它具有读/写存储器结构和高度完备的通信协议。100、200或400M位/秒的数据速率能接近于实时地被发送。同时,数据能被双向发送。被传输的地址值的第一组十位涉及上至1023个可能的IEEE1394总线的群集之一。被发送的地址值的随后六位,涉及专用群集内上至63个节点之一,相应的应用或设备被指派到这个节点。节点之间的数据可以交换而不与控制器交互作用。设备可随时与网络连接或断开,有即插即用的性能。通信协议有三层物理层,数据链路层,和事务层。一般地说,事务层利用固件实现,这表示通过总线终端的应用数据处理单元或控制处理器中的软件来实现,而其他层则在总线接口单元中利用芯片组来实现。物理层包含模拟收发机和数字状态机。它处理总线自动配置和热插拔。它重复计时,重复产生和重复所有数据包,并将所有数据包转送至本地数据链路层。它执行包外成帧,例如速度代码,前缀和包尾的组合。它对来自本地链路层的数据包进行判断和发送。可买到的IC型号有如得克萨斯仪器(公司)的TSB11C01,TSB11LV01,TSB21LV03和TSB41LV03,富士通(公司)的M86611,和IBM的21S750。数据链路层完成向它的目的地分配数据包的全部步骤。它通过地址识别,来识别编址至节点的数据包,并对包头解码。它将数据包输送至更高层,并按更高层产生数据包。它的工作方式既可以是用于AV数据的同步方式,也可以是用于控制数据的异步方式。在同步方式中,所建立的信道具有被保证的带宽。有确定的执行时间。传输是以125μs的时段或周期来实现的。这种方式比异步数据传送方式有较高的优选级。异步方式在时间上不是苛刻的,但是安全可靠。它的动作是涉及占线和项目协议的确认服务。用的是固定地址。在总线空闲时进行传输。异步方式处理读请求/响应,写请求/响应,和锁定请求/响应。它完成循环控制,CRC(循环冗余码)产生和确认。可以买到的数据链路层IC的型号有如得克萨斯仪器TSB12C01A,TSB12LV21,TSB12LV31和TSB12LV41,和飞利浦(公司)的PDI1394L11。事务层实现异步总线事务-读请求/读响应-写请求/写响应-锁定请求/锁定响应。上述这些可通过微控制器上的软件运行而实现,这种微控制器例如SparcLite的i960。另外,也可以是执行装置控制、连接管理、时间压缩和信息包规格化的AV(音频视频)层。在IEEE1394体系,数据链路层的作为外部应用设备和IEEE1394总线之间的接口(经过物理层)。外部应用设备可以例如是一台用户电子装置,如电视机顶盒或VCR或DVD播放机,它输送/接收延迟时间苛刻的同步数据,和无严格延迟时间的异步数据。这里,异步数据包被用于控制操作或寄存器读/写/锁定操作。同步数据包包含如视频/音频数据这样的信息项。外部应用设备也可以是涉及诸如硬盘驱动器这样的个人计算机,它只输送和接收异步数据包。这里,异步数据包可以是包括音频/视频数据在内的所有种类的数据。在IEEE1394总线总线标准中,规定数据包被安排成四部段的形式(每个四部段由相应于32位的四个字节组成)。在这个标准中,还规定总线接口单元本身必须是大端(bigendian)类型的,这就是说,四部段内的字节顺序是这样的,即最高有效字节被存储在最低位地址,等等。这种表达的更详细定义将在说明书的后面表述。在计算机技术中已知有两种字节顺序方案。一种是大端类型,另一种是小端类型。在小端类型微处理机中,多字节数据字的字节从小端开始被存储,也就是最低有效字节被存储在最低位地址,等等。大端类型或小端类型的微控制器或微处理机都可以买到。当用IEEE1394总线接口设计总线终端时,按照目的微控制器的字节顺序安排异步数据包极头的四部段字顺序的问题就产生了,因为这个报头数据要在目的微控制器中被估算,这是属于事务的数据估算。一种解决办法是在从总线接口单元读出数据以后,在目的微控制器中利用软件对字重新排序。但这种解决办法的缺点是目的微控制器如果是小端类型,它就得包含字节重新排序的任务,这在目的的微控制器方面来说,会导致性能的降低。在认识这种缺点以后,本发明的第一个设想就是根据用来表明应用数据处理单元是大端类型还是小端类型的信息项,在数据链路层内通过硬件,使异步数据包的报头四部段的字节顺序变更。如果数据链路层有一个带若干寄存器的寄存器堆,这些寄存器有多字节数据字项目,则这种解决方法的缺点是如果控制处理器与链路层单元的类型不同,当在控制处理器中解释时,在这些寄存器中的项目字节也还是需要重新排序。所以本发明的还有第二个设想用有效载荷数据字段的字节顺序变更,代替报头数据字段的字节顺序变更。这样做,用于字节重新排序的多路复用装置可以很简单,因为多路复用器的控制,不必像寄存器堆项目那样要考虑其它数据成分。两种解决方法都有优点,即应用数据处理单元的处理能力不需要用在字节重排上。还有,应用数据处理单元的软件被简化。从优势方面选择,发明方法附加的实施例,被揭示在各项有关的权利要求中。例如,这样是有利的,即在进行有效载荷数据字段的字节重新排序步骤时,伴随以报头数据字段和有效载荷数据字段中字节的进一步重新排序,如权利要求2中的要求。这可以用另一个多路复用装置来完成,或者,很简单地在将数据包从接口单元20传送至应用数据处理单元30的存储器33的数据总线内,做成固定的电路交叉连接。根据权利要求4,在初始化过程中将信息项写进总线单元,这个信息项表明应用数据处理单元是大端类型还是小端类型,这是一个优选实施例,因为在初始化过程中总是有大量参数要在总线接口单元内被设计,项目在以后的操作中不需要被改变。根据权利要求5,在外部报头内提供字节顺序检测位,就可能在估算和试验过程中,容易地在应用数据处理单元中修正字节顺序。这是完全自动地将所述信息项传送至总线接口单元的基础。这样的软件能用在大端和小端机器上。这就使软件在应用数据处理单元中的适应性变得单纯。软件只需要被编译,随时可在大端类型或小端类型机器上运行。本发明也有根据权利要求1至6的方法所使用的总线接口单元的优选实施例,和根据权利要求1至6的方法中使用的应用数据处理单元的优选实施例。对本发明的实施例的描述将参考附图,它们表示图1是用于说明在大端机器中字节顺序转换的示图,该大端机器被连接于另一大端机器;图2是用于说明在小端机器中字节顺序转换的示图,该小端机器被连接到大端机器;图3是IEEE1394总线的异步包结构;图4是带IEEE1394接口的硬盘驱动方块图;图5是用于说明在IEEE1394总线接口的数据链路层IC的字节顺序变更过程;图6是在IEEE1394总线接口的数据链路层IC内进行字节顺序变更的硬件单元方块图;图7是用于说明本发明的第二实施例。首先,解释两个词大端和小端的意思。大端和小端是两个术语,它们描述被存储在计算机存储器中的字节序列的顺序。大端是这样的顺序,即其中的“大端”(序列中的最高有效字节数值)被首先存储(最低位存储地址)。小端是这样的顺序,即其中的“小端”(序列中的最低有效字节数值)被首先存储。例如在大端计算机中,十六进制数0x4F52,所需求的两个字节,在存储器中被存储为0x4F52(例如0x4F)被存储于地址1000,0x52则将被存储为0x524F(0x52在地址1000,0x4F在地址1001)。如上面在前言中已说过的,在电子装置中经常存在多字节数据字。由4字节或相应的32位组成的四部段数据字是一个例子。例如,IEEE1394总线以多个四部段构成,这将在下面作更详细的解释。计算机的存储器空间很经常地是以8位存储器字长构成,这表明四部段就得被存储在4个存储单元/地址。机器的存储器空间即使以32位字长(四部段)构成,这些机器的处理方式/处理机命令,也很经常地做成8位存储器存取。注意,对这里所解释的实施例来说,假设存储器以8位字长构成。小端和大端方式的原理用图1和2来说明,以32位字和8位存储器存取为例。两个四部段被在表示图1中。第一个四部段被存储在大端型源系统的8位组成的存储器中。第二个四部段被存储在也是大端型目标系统的8位组成的存储器中。小端系统的字节顺序被表示在图2中,也是以32位字长和8位存储器存取为例。所示的是小端机器从与大端机器相反的侧边开始,对四部段进行汇编。小端机器假设存储器中的四部段的最高有效字节,处在四部段被存储的4个地址中的最低位地址,依此类推。因此,最后判读的四部段是错误的字节顺序,如图2中所示。在IEEE1394标准中,参考的高性能串行总线IEEE标准即标准IEEE1394-1995,纽约1996年8月30日,确定通信协议,它越来越多地用在计算机技术和用户电子产品中。通信协议可以用于同步和异步数据包的传送。这个数据包的结构在IEEE1394中被规定。同步数据包被提供用于音频/视频数据的传送,因为这种数据在有规律的时间间隔内出现,在源装置中有相对稳定的间隔量。典型的应用是从电视机顶盒向录象机这样的记录设备传送已编码的音频和视频数据,或者从卫星接收机向小型光盘播放机只传送音频数据,等等。对于用MPEG2(数字影视压缩标准-2)编码的、以同步数据包传送的音频和视频数据,有一个单独的标准,它被称作IEC国际标准61883-1,用户音频/视频设备一数字界面,1998-02第一版。在这里,规定了同步数据包的结构以及如何用报头数据、时间标记等等填充这些包的规则。这种包内的报头(1394报头和CIP报头)是在IEEE1394接口的数据链路层内被估算的。这意味着报头数据不需要被传送至总线接口外部的微控制器或CPU。同步包的有效载荷数据与位流数据有关,位流数据一般不被解释为多字节数据形式。数据字节被从数据链路层IC中的存储器,以直接存储器存取的方式,移位至应用数据处理单元。相应的DMA(直接存储器存取)单元被提供在这些装置中。DMA单元被设计用于读出数据,其顺序与这些数据被写入接口单元存储器的顺序相同,并以相同的顺序把它们写入应用数据处理单元的存储器。这表明对同步数据包来说,在向应用数据处理单元传送数据时,不存在字节排序问题。异步数据包的情形则不同。与MPEG2编码的音频和视频数据种类不同的每一种数据,都用异步数据包传送。在与典型的用户电子设备不同的应用中,可能发生同样地被编码的音频和视频数据,也不得不作为异步数据包传送的情形。下面将举出一个例子。根据大多数IEEE1394接口设计,属于事务层的异步数据包报头,不是在数据链路层IC做的。它们是在应用数据处理单元被估算的,并由于在一个应用中的微机(μC)是大端类型而另一设备是小端类型,使字节顺序发生问题。异步包的结构表示在图3中。参考号码10和12是不带有效载荷数据的异步包。这些数据包包括外部报头和异步1394报头。外部报头是任选的,但它是用于应用设备或数据链路层内的控制目的,在本发明特定的实施例中携带两个字节的顺序检测位13。对此将在下面进行解释。参考号码12表示数据包,它也有一个数据字段。异步报头和外部报头的组成部分列表如下<tablesid="table1"num="001"><table>名称说明DESTINATION_ID(目的地_ID)目的地标识TL事务标签RT重试代码TCODE事务代码PRI优先级SOURCE_ID(源_ID)源标识PACKETTYPESPECIFICINFORMATION(数据包类型专用信息)数据包类型专用信息DATA_LENGTH(数据_长度)数据字段长度EXTENDED_TCODE(扩展的TCODE)事务代码扩展DATAFIELD(数据字段)数据字段ZEROPADBYTES(零填空字节)以零填充字节HSIZE报头字段的报头长度RSV保留DATASIZE(数据长度)数据字段长度</table></tables>异步1394报头组成部分的含义,在上述IEC61883-1标准中也有充分的描述。要注意的是异步报头可包括例如三个或四个依赖于异步数据包类型的四部段。从图3容易看出异步报头中的项目与四部段中的字节限制是不同步的,所以在估算过程中对字节顺序敏感。不带数据字段的异步包可用于沟通协议,例如确认消息,也可用于某种专用的控制消息,如封锁对带儿童防护性能的电视机的请求等等。图4中描绘了非用户应用设备的一个例子。它是带IEEE1394接口的硬盘驱动的例子。参考号码20表示IEEE1394接口。参考号码30表示应用数据处理单元,它用于控制HD(硬盘)驱动40,例如根据SCSI(小型计算机接口)协议进行控制。应用数据处理单元30还有根据事务层服务程序估算异步报头数据的任务。为此目的,在应用数据处理单元是小端类型的情况下,就需要对字节重新排序。这是因为在IEEE1394标准中,IEEE1394数据链路IC被规定为大端类型。如果应用数据处理单元是大端类型,就不需要对字节重新排序了。根据发明,字节重新排序是在状态寄存器22中的小端标志23的控制下,用相应的多路复用装置24进行的。这个标志在数据链路层IC21初始化过程中设置。这个IC的初始化,则是在电源接通以后,用运行于应用数据处理单元30的专用程序实现的。在这个程序中,假如应用数据处理单元是小端类型,必须插入一个步骤,把小端标志设置为“1”。假如应用数据处理单元是大端类型,标志则被设置为“0”。图5说明字节重新排序的步骤。所表示的是异步1394报头数据的一个四部段25,对它的字节进行重新排序。在接收到异步1394包以后立即自动地进行这种重新排序。当数据处理单元访问这个数据包时,它将收到字节顺序正确的报头四部段,在估算中可以避免错误的结果。如果小端标志输入的是“0”,报头四部段的自动字节排序将被断开,四部段将不改变字节顺序地被传送到应用数据处理单元。按照这个实施例,数据字段的各个四部段不被重新排序,因为有效载荷数据字是8位数据字,这表示多字节数据字必须被立即解释。有效载荷数据字节,被从最低位地址到较高位进行8位访问,从存储器中被读出。借助于不同数据包的外部报头,可容易地解决用于四个或五个四部段重新排序的多路复用装置的控制问题。外部报头的结构在IEEE1394标准中未被规定。这是一个任选的报头,它能被用于在应用装置或数据链路层单元内的控制目的。在数据包从IEEE1394总线接收的方式中,外部报头在1394接口的数据链路层IC中产生。图3中表明外部报头有一个关于报头长度的项目,还有一个关于数据字段长度的项目。在字节重新排序之前。需要对报头长度和数据长度进行估算。这利用两个触发器组很容易实现,每当四部段已被重排后,设置这些触发器,在四个/五个触发器已被设置后,停止重分类。借助于外部报头中关于报头长度的项目,在数值四和五之间进行选择。为此目的,只需要几个逻辑门。多路复用装置的结构被表示于图6。它包括多路复用级241,向它馈送的输入是需要改变的字节的相应位。这些多路复用级的输出被馈送至输出寄存器26的相应位。每个多路复用器241,被以小端标志23控制。图3中也表示出外部报头有两个项目13,它们被称为字节顺序检测位。在每个外部报头,第一字节顺序检测位被设置为“0”,第二字节顺序检测位被设置为“1”。在传送至应用数据处理单元以后,利用这两个位,可容易地检测包的报头字节顺序。这是因为当第二最高有效字节在其最高有效位有“0”项目,和第三最高有效字节在其最高有效位有“1”项目时,表示正确的字节顺序。利用这些字节顺序检测位,有可能改善软件在应用数据处理单元中的运行,从而能完全自动地动态适应应用数据处理单元的字节顺序解释。在第一次初始化时,软件查我软件包并估算字节顺序检测位。根据结果,它知道这是大端还是小端机器,并能为以后的初始化设置相应的参数。用这种更通用的软件,软件工程师不必注意大端和小端问题。下面,详细解释发明的加一个实施例。为此目的以图7作为参考。图7表示了4个报头字节HB0至HB3的传输顺序和4个有效载荷数据字节DB0至DB3。所接受到的字节被按次序写入IEEE1394接口单元的内存储器,其中$A000至$A001表示由32位构成的内存储器的地址。报头四部段的MSB(最高有效字节)是HB3,LSB(最低有效字节)是HB0。所接收到的数据字被传送至外存储器33。这一步的实现不借助于应用CPU30,而是利用直接存储器存取单元32。外存储器33和接口单元20之间的总线假设是32位。外存储器32由8位构成。因此,所接收到的两个四部段占用外存储器33中的地址空间$D000至$D007。可以看出,报头四部段HB3的MSB被存储在第一存储位置$D000,报头四部段HS0的LSB被存储在地址SD003。有效载荷数据字段的第一数据字节DB0被存储在地址$D004,最后的数据字节DB3被存储在地址$D007。这是不进行字节重新排序时的存储顺序。在图7a中,假设CPU30是大端类型的。这样,CPU30将对正确的顺序地址$D000至$D003中的报头四部段进行解释。它将把存储位置$D000中的字节解释为报头四部段的MSB,把存储位置$D003中的字节解释为报头四部段的LSB。为了有效载荷数据字段的数据字节的解码,数据字节将以所示的读出顺序RO从存储器中读出。所以在这种情况下,应用μC30中的解码顺序是正确的。在图7b中,假设μC30是小端类型的。在这种情况下,对报头四部段的解释将是错误的。小端机器将把报头字节HB0解释为MSB,而把报头字节HB3解释为LSB。存储器中的有效载荷数据字节的解码顺序则是正确的,与第一种情况没有什么不同,如在图7b中所看到的。在图7c中,假设μC30是小端类型的。为了获得正确的报头四部段解释,进行下述步骤对存储器33和IEEE1394接口20之间的32位数据总线连接中的字节顺序,通过相应的电路交叉简单地变更。当然,这在所有操作时间内是固定的,在操作过程中不能改变。这个固定的字节顺序的变更,在IEEE1394接口单元20和存储器33之间用交叉符号被表示在图7c中。当然,这样做将使来自单元20的内存储器中的所有四部段都受到字节顺序变更。对所接收到的数据包的报头和有效载荷数据字段,这种方法是有效的。从图7b可知,有效载荷数据字段的数据字节,将在小端机器中以正确的顺序被解码。因此,为避免解码错误,在接口单元20中,对有效载荷数据字段四部段进行重新排序。这是在通过图6所示那样的多路复用装置接收到数据包以后,立即自动地进行的。这样,在接口单元20的内存储器中的有效载荷数据字段四部段的字节顺序被改变。这在图7c中有所表示。结果,在存储器33中有效载荷数据字段的字节顺序,与图7a和图7b中所示的情况是相同的,但报头四部段的字节顺序是不同的。这样就在小端μC30中产生对报头四部段的正确解释,以及对有效载荷数据字节的正确的解码顺序。对于不同的实现装置,可以有所变化,例如,在IEEE1394接口单元20和外部存储器33之间的数据总线连接的宽度不同,例如16位或8位。但发明的原理仍然是适用的。权利要求1.用于在总线接口单元(20)中对经由通信总线接收的数据包(10,11,12)进行预处理的方法,所述数据包(10,11,12)有报头数据字段和可选的有效载荷数据字段,其中,至少所述报头数据字段由若干个多字节数据字组成,其特征在于为准备在应用数据处理单元(30)中对数据包进行处理,根据一个信息项,该信息项表明数据包编址的所述应用数据处理单元(30)是大端类型还是小端类型,从而提供所述报头数据字段的所述多字节数据字的字节重新排序的步骤,或者提供有效载荷数据字段的字节重新排序的步骤。2.根据权利要求1所述的方法,其特征在于,其中有效载荷数据字段的字节重新排序的步骤,与报头数据字段和有效载荷数据字段中的字节进一步重新排序相并行。3.根据权利要求1所述的方法,其特征在于,其中在将数据包从接口单元(20)传送至应用数据处理单元(30)的存储器(33)的数据总线上,进行固定不变的电路交叉连接,实现报头数据字段和有效载荷数据字段中的字节进一步重新排序。4.根据权利要求1至3的任一所述的方法,其特征在于,其中所述信息接口单元(20)的初始化过程中被写入所述接口单元(20)。5.根据权利要求1至4的任一所述的方法,其特征在于,其中外部报头在所述总线接口单元(20)被列到所述数据包中,其中两个字节顺序检测位(13)被置于所述外部报头的多字节数据字的两个字节中。6.根据权利要求1至5的任一所述的方法,其特征在于,其中所述通信总线是IEEE1394总线,受到字节重新排序的所述数据包是异步数据包。7.根据前面的权利要求之一的方法中所用的总线接口单元(20),包括状态寄存器(22),它包含初始化过程中设置的小端或大端标志(23);字节重新排序电路(24),它在所述小端或大端标志(23)内的项目控制之下,对所述数据包(10,11,12)的报头数据字段的多字节数据字的字节,或者对有效载荷数据字段的字节,进行重新排序。8.根据权利要求1至8的任一所述的方法中所用的应用数据处理单元(30),有一个存储器(31),其特征在于,其中用于表明应用数据处理单元(30)是小端类型还是大端类型的所述信息项被存储,并有将所述信息项传送至所述总线接口单元(20)的装置,尤其是在初始化过程中。全文摘要IEEE1394总线通信协议有三层:物理层、链路层和事务层。由于IEEE1394异步数据包的报头数据包括32位字,它必须在所连接的应用数据处理单元(30)中被解释为32位字,这就存在一个问题。IEEEI394总线接口单元(20)被规定为大端类型。在小端类型应用数据处理器(30)中,数据字的顺序只能在字节顺序被变更以后,才会被正确地解释。根据本发明,通过针对异步数据包的硬件电路系统,可在数据链路层单元(21)中自动实现字节顺序的变更。文档编号G06F13/12GK1284673SQ0010930公开日2001年2月21日申请日期2000年5月29日优先权日1999年5月31日发明者托马斯·布吕内,拉尔夫·奥斯特曼,延斯·卡恩布里,西格弗里德·施魏德勒申请人:德国汤姆森-布兰特有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1