回复: 一块IEEE-1394 OHCI卡构成一个1394 总线. 有四个因素会影响同一个1394总线上支持的相机的个数: 1. 同步通道的个数 理论上,1394a一个总线上所能支持的zui大的通道个数为16个,但是目前没有任何一个适配器能够支持16个通道。基于TI 芯片的适配器能够zui多支持4个同步DMA通道,基于Lucent/Agere 芯片的适配器支持8个DMA通道。Agere/LSI 基于 1394b 卡, 支持8个 DMA通道, Point Grey Research提供相关的产品。 2. IEEE-1394zui大带宽 1394a总线zui大的带宽为400Mb/s, 或50MB/s。带宽同时分为两个部分,一部分为同步数据传输(如数据流),一部分为异步控制(如相机控制)。其中 80% (40MB/s)的带宽用来进行同步数据传输,其它的20% (10MB/s)用来异步控制. 根据1394a协议的定义,以及微软1394驱动(1394bus.sys, ohci1394.sys, 等.) 的限制,一个数据包zui大为4096 bytes. 同步部分每秒8000个周期,相当于33MB/s, 这就意味着同步数据还有额外的7MB/s带宽. 所以,虽然不符合1394a协议,数据包可以zui大分配为4915bytes,。另外,协议中没有提到每一个同步周期不能够传输多个数据包,只要数据总量在协议带宽内即可。例如:一个相机可以每个同步周期发送两个2450-byte 数据包,但是仍然符合1394a标准协议。 对于1394b总线,与1394a相同,区别在于zui大的带宽为800Mb/s, 或100MB/s, zui大的数据包为8192 bytes. 3. 设备zui大个数 1394a标准限制了同一个1394总线上zui大的设备个数为63个. 4. 相机功耗 根据相机的功耗来决定功率的多少,以保证相机的正常运行。 计算zui高可能帧速 影响总线上每个相机的zui大帧速的因素有:相机类型及分辨率(比如类似于Dragonfly的单个相机,Bumblebee立体相机),DCAM为每一个视频格式/模式/帧速率定义了bytes-per-pixel (Bpp) , -可以预料,一些普遍高于zui低带宽。为了准确地确定是否有足够的带宽,需要用到这些参数。 例如, 单台PGR DragonFly相机640x480 Y16 15fps,每个数据包发送640个像素。每个像素包含16bits,或2 bytes数据。所以相机产生640*2 = 1280Bpp 的数据. 1394a总线zui大带宽像上面所提到每个数据包为 4096Bpp,所以 4096/1280 = 3 PGR Dragonfly运行在 640x480 Y16 模式 15fps在同一个1394a总线上可以接3个相机.PGR提供了一个带宽计算器,可以方便计算。 zui大帧速问题 在某些时候,由于1394a带宽的限制,一些相机不能够达到计算出来的zui高速度。例如:根据上面的公式,在同一个总线上4个 640x480 Y8 30Hz (8-bit)相机可以正常运行。但是通过PGR的软件进行相机类型及帧速控制时,第四个相机会返回 "bandwidth exceeded" 的错误. 解决这个问题的方法就是绕过Windows的带宽限制,直接对相机的寄存器CURRENT_FRAME_RATE register 0x600进行操作。向上面的例子,可以在PGR的 FlyCapture demo程序中,按照30fps对前三个相机进行初始化,第四个相机按照15fps进行初始化,初始化完成后设置寄存器0x600 为0x80000000 (30Hz)以解决上面的问题。 |