跳转到内容

BCON for LVDS 接口说明#

Basler 网站

本主题描述 Basler 专有的 BCON for LVDS 接口。

Basler BCON for LVDS 接口为连接基于 LVDS 的技术设备(如 FPGA 板和 SoC)提供了最高灵活性。#

接口规格
提示 数据通道 4
- 时钟线路 1
用于字时钟。 控制线路 3
I²C 接口线路(时钟、数据、ID)。 时钟线路 4
输入线路 时钟线路 4
输出线路 串化因子 4
7 数据总线宽度 4
28 位 保留用于图像数据的总线宽度 4
24 位 字时钟频率 12–84 MHz
可以 8 为增量设置。 字时钟占空比 4
4/7 位时钟频率 4

BCON for LVDS 和 Channel Link

  • BCON for LVDS 规范与 ChannelLink-I 规范相似,尤其是 Texas Instrument DS90CR28x 串并转换器的规范。这适用于以下情况:
  • 数据、时钟和控制线路的分离
  • 输出线路
  • 数据通道数
  • 总线宽度
  • 可以 8 为增量设置。

时钟频率

有关 Channel Link 的更多信息,请参见 Channel Link 设计指南

信息由于 Camera LinkComparison of Basler BCON for LVDS and Camera Link Interfaces 接口也基于 Channel Link,它与 BCON for LVDS 接口相似。有关更多信息,请参见

应用说明。#

数据输出

  • 四个数据通道(X0、X1、X2、X3)输出的数据包含以下信息:
  • 帧有效位 (FVal):指示正在传输有效帧。
  • 线路有效位 (LVal):指示正在传输有效线路。
  • 帧信息 (FrameInfo):包括有关像素格式和每时钟周期像素数的信息。在每帧传输之前发送。
  • 像素数据 (Line 1, Line 2, …, Line n):逐行显示像素数据。
  • 行校验和 (Cksum 1, Cksum 2, …, Cksum n):每行像素数据的校验和。每行传输后发送。

输出位(输出 0 和输出 1):可用于传输输出信号的两个位,例如“闪烁窗口”或“曝光激活”。

帧信息、像素数据和行校验和在通用的 24 位图像数据通道(“数据”通道)上传输。#

数据流

BCON for LVDS 数据流图

BCON for LVDS 接口不提供数据流控制。另外,与 CameraLink 接口不同,该接口不提供数据有效位 (DVal)。仅 FVal 和 LVal 用作同步信号:

只要 FVal 较低且相机模块不发送 FrameInfo 或 Cksum 数据,就发送同步模式。这使您可以设置正确的字对齐方式。#

BCON for LVDS 串化和时序

数据串化和时序

  • 如上所示,数据输出最多可在四个数据通道(X0 至 X3)上使用最多 28 位进行串化。
  • 保留两位用于输出信号(输出 0 和输出 1)。它们始终在数据通道 X0 的位置 0 和 1 上传输。
  • 保留另外两位用于同步信号(FVal 和 LVal)。它们始终在数据通道 X0 的位置 2 和 3 上传输。

其余 24 位保留给图像数据通道使用,包括帧信息、像素数据和行校验和。

实际使用的位数和有效数据通道数取决于所传输的数据: 传输的数据 所用位
数据通道激活 帧信息
8 位像素数据
8 位校验和
位 0 –位 7
X0、X1 12 位像素数据
12 位校验和
位 0 –位 11
X0、X1、X2 16 位像素数据
16 位校验和
位 0 –位 11
位 0 –位 15 24 位像素数据
24 位校验和
位 0 –位 23

有关 Channel Link 的更多信息,请参见 Channel Link 设计指南

X0、X1、X2、X3

如果仅使用 8 位像素格式(例如,由于使用单色相机模块),则 X2 和 X3 数据通道永远不会处于活动状态。相应地,如果仅使用 8 位或 12 位像素格式,则 X3 永远不会处于活动状态。

但 Basler 建议始终连接从 X0 到 X3 的所有 LVDS 数据通道。#

帧有效位和行有效位

帧有效位 (FVal) 和行有效位 (LVal) 表示正在发送有效帧或行。

LVal 和 FVal 在数据通道 X0 的位置 2 和 3 上传输。#

帧信息

数据流图所示,在每个帧传输之前发送一个“FrameInfo”块。

  • 每个 FrameInfo 块均包含以下信息:
  • 适用于以下像素数据的像素格式。

每个时钟周期的像素数。

FrameInfo 传输期间的数据通道使用情况

帧信息始终在 24 位数据通道的位 0 到 7 上传输:

相机模块在每个 FrameInfo 块中传输以下信息: 时钟周期 描述 位长 接口规格
枚举     n 命令字 4 8
0b10111101 n+1 命令字 “每时钟周期像素数”值 1
2
0b00000000
0b00000001
n+2

n+5
像素格式值
以 4 字节为单位发送,最低有效字节最先发送
遵守 GenICam 像素格式名称和值规范
32 Mono 8
Mono 12
Bayer GR 8a
Bayer RG 8a
Bayer GB 8a
Bayer BG 8a
Bayer GR 12a
Bayer RG 12a
Bayer GB 12a
Bayer BG 12a
YCbCr422
RGB 8

  1. 0x01080001
    0x01100005
    0x01080008
    0x01080009
    0x0108000A
    0x0108000B
    0x01100010
    0x01100011
    0x01100012
    0x01100013
    0x0210003B
    0x02180014

  2. Basler dart BCON for LVDS 相机模块的适用标准拜耳滤波器组为 GB。如果支持,则可以使用 Reverse X and Reverse Y 功能设置其他对齐。

每时钟周期图像数据示例。#

示例

相机模块在每个 FrameInfo 块中传输以下信息: 如果将相机模块配置为每个时钟周期两个像素和 Mono 12 像素数据,则相机模块在每次传输帧之前发送以下信息:
枚举     8 n
0b10111101 数据 0b00000001
每个时钟周期两个像素 n+2 0b00000101
Mono 12 像素格式值 n+3 0b00000101
0b00000000 n+4 0b00000101
0b00010000 数据 0b00000101

n+5

Mono 12 像素格式值 = 0x01100005 = 0b00000001 00010000 00000000 00000101(首先发送最低有效字节)#

行校验和

为了检测传输错误,Basler BCON for LVDS 接口使用偶校验。

对于每个图像行,计算校验和。校验和将添加到输出数据的每行末尾。校验和由许多奇偶校验位组成,具体取决于所选的像素格式。对于当前行的每个像素的每个位位置,系统都会计算一个偶校验位。

在图像行中最后一个像素的数据发送之后,立即发送校验和(请参阅数据流图)。

示例:假设相机模块设置为 Mono 8 像素数据,每个时钟周期一个像素。另外假设图像 ROI 宽度仅设置为 5 个像素。这意味着每个图像行由 5 x 8 位图像数据构成。下表显示了在这些条件下,一个图像行的示例数据。 数据通道位位置 0b10111101 每个时钟周期两个像素 Mono 12 像素格式值 0b00000000 nb 1 位计数  
校验和位(偶校验位) 时钟线路 时钟线路 位 0 时钟线路 位 0 控制线路 时钟线路 0
LSB 时钟线路 位 0 时钟线路 位 0 位 0 位 1 位 0  
2 时钟线路 位 0 位 0 位 0 位 0 时钟线路 时钟线路  
位 2 时钟线路 时钟线路 时钟线路 位 0 时钟线路 数据通道 位 0  
位 3 时钟线路 位 0 时钟线路 位 0 位 0 位 1 位 0  
位 4 位 0 位 0 位 0 时钟线路 时钟线路 位 1 位 0  
位 5 位 0 位 0 位 0 位 0 位 0 位 0 位 0  
位 6 时钟线路 时钟线路 位 0 位 0 时钟线路 控制线路 时钟线路 位 7

MSB

在上面的示例中,行校验和数据为 0b10000101。#

同步模式

BCON for LVDS 同步模式

只要帧有效位 (FVal) 较低并且相机模块未发送帧信息或行校验和数据,就会发送固定的同步模式。这使您可以设置正确的字对齐方式。#

输出位

BCON for LVDS 接口提供了两个位,可用于传输两个输出信号:输出 0 和输出 1。

输出 0 和输出 1 在数据通道 X0 的位置 0 和 1 传输。

  • 根据您的相机型号,可以使用以下输出信号:
  • 闪烁窗口
  • 曝光激活
  • 用户输出 1

用户输出 2

有关配置输出信号的更多信息,请参见 Line Source 功能。#

像素数据#

Pixel Format 像素格式 可用位置
位深 Mono 8 命令字
仅单色相机模块 Bayer 8 命令字
仅彩色相机模块 Mono 8 Mono 12
12 Bayer 8 Mono 12
Bayer 12 Bayer 8 YCbCr422
16 Bayer 8 RGB 8

24

对于图像数据传输,BCON for LVDS 接口无法区分各种 8 位像素格式(Mono 8/Bayer 8)。同样,该接口也无法区分各种 12 位像素格式(Mono 12/Bayer 12)。

但是,有关用于帧采集的特定像素格式的信息包含在数据流的 FrameInfo 部分中。#

每时钟周期像素数

在所有 Basler BCON for LVDS 相机模块上,您都可以设置每个时钟周期传输的像素数。

每个时钟周期一个像素

此模式适用于所有可用的像素格式

  • 在此模式下,相机模块按以下方式发送像素数据:
  • 在每个时钟周期中,通过 BCON for LVDS 接口传输一个像素的数据。
  • 在第一个时钟周期,相机模块传输第一行中第一个像素的数据。在第二个时钟周期,相机模块传输第一行中第二个像素的数据,依此类推,直到该行结束。

第一行完成后,相机模块将发送该行的校验和。随后,第二行的传输开始并以类似的方式进行。数据传输逐行继续,直到所有帧数据都已传输。

数据通道使用情况(每个时钟周期一个像素)

在像素数据传输期间,将使用数据通道的 24 个位,如下所示:

每个时钟周期两个像素

此模式适用于所有可用的像素格式

  • 此模式仅适用于 8 位和 12 位像素格式(即,不适用于 YCbCr422 和 RGB 8 像素格式)。
  • 在每个时钟周期中,通过 BCON for LVDS 接口传输两个像素的数据。
  • 在第一个时钟周期,相机模块传输第一行中第一个像素的数据。在第二个时钟周期,相机模块传输第一行中第二个像素的数据,依此类推,直到该行结束。

第一行完成后,相机模块将发送该行的校验和。随后,第二行的传输开始并以类似的方式进行。数据传输逐行继续,直到所有帧数据都已传输。

数据通道使用情况(每个时钟周期两个像素)

在第一个时钟周期,相机模块传输第一行中前两个像素的数据。在第二个时钟周期,相机模块传输第一行中后续两个像素的数据,依此类推,直到该行结束。

设置每个时钟周期的像素数

要设置每个时钟周期的像素数,请将 BconPixelsPerClockCycle 参数设置为12

有关 Channel Link 的更多信息,请参见 Channel Link 设计指南

您可以在下面找到示例代码。

pylon API 还提供了 PixelPerClockCycle 参数,该参数设置主机端每个时钟周期的像素。该参数应设置为与 BconPixelsPerClockCycle 参数相同的值。更改 BconPixelsPerClockCycle 参数时,PixelPerClockCycle 会自动调整,但反之则不然。#

输出时钟

BCON for LVDS 的基本时钟是字时钟 WordClk。它的频率范围可以从 12 MHz 到 84 MHz(可按照 8 为增量进行设置,即 12、20、28 等)。

字时钟占空比为 4/7,即,字时钟信号在每个周期的 4/7(约时间的 57.14%)内处于激活状态(高电平)。

字时钟在单独的输出时钟线路 XCLK 上传输。

系统不会传输位时钟频率 fBitClk,但可以计算得出此值。位时钟频率比字时钟频率快 7 倍:

fBitClk = fWordClk * 7#

设置时钟速度

  • 要设置时钟速度,请将 BconClockFrequency 参数设置为以下值:
  • MHz_12
  • MHz_20
  • MHz_28
  • MHz_36
  • MHz_44
  • MHz_52
  • MHz_60
  • MHz_68
  • MHz_76

MHz_84

有关 Channel Link 的更多信息,请参见 Channel Link 设计指南

您可以在下面找到示例代码

pylon API 还提供 ClockFrequency 参数,该参数设置流采集器端每时钟周期像素数。ClockFrequencyBconClockFrequency 参数自动同步。当您更改一个参数时,另一个将随之调整,反之亦然。#

输入线路

BCON for LVDS 输入线路可用于将触发信号或其他输入信号发送到相机模块。

输入状态可以通过相机模块的控制接口随时读取。

在 pylon API 中,输入线路是Line 3。#

I²C 接口

相机模块通过标准的 I²C 接口进行配置。有关详细说明,请参见 I²C 总线规范和用户手册#

I²C 功能

有关 Channel Link 的更多信息,请参见 Channel Link 设计指南

除了强制性的 I²C 功能,BCON for LVDS 使用可选的时钟拉伸功能,即,它可以使 I2C_SCL 保持低电平。

设计系统时,请确保 I²C 主设备可以处理时钟拉伸。

有关这些功能的详细信息,请参见 I²C 总线规范和用户手册#

Basler 特定设置

以下各节提供有关偏离 I²C 总线规范的设置的信息。#

一般信息

BCON for LVDS 接口的控制通道设计为 I²C 总线接口。一种 BCON for LVDS 相机模块是 I²C 从设备,可以处理高达 400 kbit/s 的数据传输(根据 I²C,称为“快速模式”)。

快速模式 (Fm) 设备向下兼容,并且可以在 0-100 kbit/s 的 I²C 总线系统中与标准模式 (Sm) 设备进行通信。

但是,由于它们不向上兼容,因此不应将快速模式设备集成到为更快模式配置的 I²C 总线系统中,即快速模式增强 (Fm+) 或高速模式 (Hs)。快速模式设备无法跟上更快模式的更高传输速率。因此,可能会发生不可预测的状态。

设计 I²C 总线主机时必须遵守这些限制。#

附加 I²C 控制线路 (I2C_ID)

除了标准的 I²C 控制线路(I2C_SDA 数据线路、I2C_SCL 时钟线路)外,还有一条额外的 I²C 控制线路,即 I2C_ID 线路。

通常,I2C_ID 线路可让您定义相机模块应响应的从机地址。您最多可以将两个相机模块连接到一条 I²C 总线。I2C_ID 线路的逻辑电平决定使用哪个从机地址(即,相机模块应响应的地址)。 I2C_ID 线路的逻辑电平 从机地址
通信对象 0(低) 0x3c
相机模块 1 重置相机模块: 将 I2C_ID 线路设置为相反的逻辑电平至少 100 ms。

将 I2C_ID 线路设置回其原始逻辑电平。切换回此电平将触发微控制器的重置。FPGA 将被重新载入,但不会重置。

示例代码

有关于改进文档的建议?欢迎提出宝贵的反馈意见。
如有技术问题,请联系您的当地经销商或使用 Basler 网站上的支持表格#

本出版物中的所有材料如有更改,恕不另行通知,并且其版权归Basler AG所有。

有关 Channel Link 的更多信息,请参见 Channel Link 设计指南

版本:38 • 发布日期:2020 年 7 月 10 日• ICP 许可编号:沪 ICP 备 17041046 号 -1

  • 隐私
  •  / 

Datenschutz

  1.  • 
  2. 许可

法律信息#

// Configure the camera to transmit two pixels per clock cycle
camera.BconPixelsPerClockCycle.SetValue(BconPixelsPerClockCycle_Two);
// Set the BCON output clock speed to 84 MHz
camera.BconClockFrequency.SetValue(BconClockFrequency_MHz_84);
INodeMap& nodemap = camera.GetNodeMap();
// Configure the camera to transmit two pixels per clock cycle
CEnumerationPtr(nodemap.GetNode("BconPixelsPerClockCycle"))->FromString("Two");
// Set the BCON output clock speed to 84 MHz
CEnumerationPtr(nodemap.GetNode("BconClockFrequency"))->FromString("MHz");
INodeMap& nodemap = camera.GetNodeMap();
// Configure the camera to transmit two pixels per clock cycle
CEnumParameter(nodemap, "BconPixelsPerClockCycle").SetValue("Two");
// Set the BCON output clock speed to 84 MHz
CEnumParameter(nodemap, "BconClockFrequency").SetValue("MHz");
// Configure the camera to transmit two pixels per clock cycle
camera.Parameters[PLCamera.BconPixelsPerClockCycle].SetValue(PLCamera.BconPixelsPerClockCycle.Two);
// Set the BCON output clock speed to 84 MHz
camera.Parameters[PLCamera.BconClockFrequency].SetValue(PLCamera.BconClockFrequency.MHz);
// Configure the camera to transmit two pixels per clock cycle
Pylon.DeviceFeatureFromString(hdev, "BconPixelsPerClockCycle", "Two");
// Set the BCON output clock speed to 84 MHz
Pylon.DeviceFeatureFromString(hdev, "BconClockFrequency", "MHz");
/* Macro to check for errors */
#define CHECK(errc) if (GENAPI_E_OK != errc) printErrorAndExit(errc)
GENAPIC_RESULT errRes = GENAPI_E_OK;  /* Return value of pylon methods */
/* Configure the camera to transmit two pixels per clock cycle */
errRes = PylonDeviceFeatureFromString(hdev, "BconPixelsPerClockCycle", "Two");
CHECK(errRes);
/* Set the BCON output clock speed to 84 MHz */
errRes = PylonDeviceFeatureFromString(hdev, "BconClockFrequency", "MHz");
CHECK(errRes);