This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] DS90UB960-Q1:BIST 查询(与 933 配对使用时)

Guru**** 2451110 points
Other Parts Discussed in Thread: DS90UB960-Q1, DS90UB933-Q1, DS90UB913A-Q1, ALP

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1539959/ds90ub960-q1-bist-inquiry-when-paired-with-933

部件号:DS90UB960-Q1
Thread 中讨论的其他器件: DS90UB933-Q1DS90UB913A-Q1、ALP

工具/软件:

尊敬的团队:

我使用的是使用 933 SER 的摄像头、并在尝试运行 BIST 时将其连接到 960EVM。 这样、我注意到、当我将 BIST_CLOCK_SOURCE 设置为使用来自 SER 的外部时钟时、我的 BIST 运行总是失败:

但是、如果我修改 BIST_clock_source 以利用内部时钟、它将成功运行、并使用下面以绿色显示的任何模式。

从上面的数据片段可以看出、有一条评论说、“当 DS90UB960-Q1 与 DS90UB933-Q1 或 DS90UB913A-Q1 配对时、设置为 11 可能导致 DS90UB960-Q1 恢复速度太慢“。 鉴于此、我想知道我的外部时钟是否对于该摄像头的 BIST 操作太慢。 我目前希望获得此设计中使用的外部时钟的原理图和/或确认、但当我连接并查看 ALP 的“Information"选项“选项卡时、我会看到链接频率为 33MHz。

将 933 与 960 配对时、BIST_CLOCK_SOURCE 的最小速度有何限制?

作为参考、这是我一直使用的 BIST 脚本:

import usb2any_lib as USB2ANY
import math
import time

desAddr = 0x7A
serAlias = 0x18

board = USB2ANY.Board()

board.WriteI2C(desAddr, 0x4C, 0x12)     # Select Port 0
board.WriteI2C(desAddr, 0x58, 0x58)     # Enable I2C pass-through and set back channel to 2.5 Mbps for operation with 933/913
board.WriteI2C(desAddr, 0x5C, serAlias) # Set Serializer Alias

print("Deserializer Address: " + str(hex(board.ReadI2C(desAddr, 0x00))))
print("Serializer Address: " + str(hex(board.ReadI2C(serAlias, 0x00))))

duration = 10 # Duration for BIST in seconds
t_end = time.time() + duration

# Force FC BIST errors
# board.WriteI2C(serAlias, 0x13, 0x81) # Forcing 1 error

# Enable BIST
board.WriteI2C(desAddr, 0xB3, 0x05) # 0xB3[2:1] controls the BIST clock source used by the SER. 00 = External Clock, 01 = Internal Clock: 100-MHz (RAW10) or 75-MHz (RAW12), 10 = Internal Clock: 50-MHz (RAW10) or 37.5-MHz (RAW12).

time.sleep(0.1)

SER_BIST_ACT = (board.ReadI2C(desAddr, 0xD0) & 0x20)

if SER_BIST_ACT:
  print("BIST was properly activated")
else:
  print("BIST was not properly activated")

while time.time() < t_end:
    pass

board.WriteI2C(desAddr, 0xB3, 0x00)
des_err_count = board.ReadI2C(desAddr, 0x57)
print("Deserializer Error Count: " + str(des_err_count))

def confidence_level(t, data_rate, errors):
  BERs = 1e-10
  transmitted_bits = data_rate * t
  temp_array = []
  errors += 1

  # Proper Confidence level calculation in Python is bounded by the following requirement:
  #     (transmitted_bits * BERs)**errors >= 1.76e+308
  # If this condition is not met, an overflow error will occur due to 64-Bit Python 3 being limited to ~1.8e+308 as a max value.
  if (transmitted_bits * BERs)**errors >= 1.76e+308:
    confidence = 'Error - Confidence calculation failed due to Python limitation, please manually calculate confidence'
    return confidence
  else: 
    factorial = 1
    for k in range(0, errors):
      if k > 170:
        factorial = 7.257416e306
      else:
        for j in range(1, k+1):
          factorial = factorial * j

      temp_array.append(((transmitted_bits * BERs)**k) / factorial)
      factorial = 1

    confidence = (1-((math.exp(-transmitted_bits*BERs)) * sum(temp_array)))*100

    if confidence < 5e-09:
      confidence = 0

    return confidence

data_rate = 4e9 # Data rate dependent upon 954/960 REFCLK. See Table 6-8 of 953 datasheet for FC data rate calculation

confidence = confidence_level(duration, data_rate, des_err_count)
print("Confidence Level: " + str(confidence) + "%")

此致、

-安迪

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Andy:

    如果提到 BIST 失败、您是指串行器不进入 BIST、还是在进入 BIST 时锁定会永久丢失? 0x14[2:1]= 11 对应于~25MHz 的 PCLK。 该 PCLK 值超出了 933 支持的 PCLK 范围。 但是、如果外部时钟超出支持的范围、我们也会遇到非 BIST 模式下的锁定问题。 ALP 中的 33MHz 是 933 上的 PCLK 频率、还是 960 上的 FPD-Link 频率?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Darrah:

    对于 0x14[2:1]= 00(外部时钟)的情况、似乎没有进入 BIST。 我通过检查寄存器 0xD0 中的 SER_BIST_ACT 位来记录了这一点、如下面的代码片段所示。

    SER_BIST_ACT = (board.ReadI2C(desAddr, 0xD0) & 0x20)
    
    if SER_BIST_ACT:
      print("BIST was properly activated")
    else:
      print("BIST was not properly activated")

    33MHz 详细信息。 这只是在 960 配置文件的“Linked"行“行中的“Information"选项“选项卡中报告的。 我不知道引擎盖下确切填充了什么。 抱歉、我现在不接近我的设置来仔细检查这一点、但是我可以读回他们的具体寄存器、告诉我 933 的 PCLK 频率与 960 的 FPD-Link 频率是 33MHz 吗?

    此致、

    -安迪

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Andy:

    该 33MHz 应该是成像仪的 PCLK、但为了确认是否可以读取 960 的寄存器 0x4F 和 0x50? 此外、这两款器件使用了什么模式配置 (strap)?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Darrah:

    • 0x4F:0x21 (33MHz)
    • 0x50:0x00

    933 被配置为外部振荡器模式。 960 以 RAW10 模式工作。

    此致、

    -安迪

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Andy:

    我来看看这些模式的预期运行情况。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Andy:

    根据寄存器、我们预计摄像头的 PCLK 在 66MHz 下运行、933 上的外部时钟为 33MHz。 您是否收到了摄像头的示意图? 我很好奇这些是摄像头的预期外部时钟频率和 PCLK 吗?