Thread 中讨论的其他器件: DS90UB933-Q1、 DS90UB913A-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) + "%")
此致、
-安迪
