Thread 中讨论的其他器件: DS90UB954-Q1EVM
大家好、
我将 TDA2PXEVM 与 DS90UB954-Q1EVM 配合使用、在设置 CSI2数据速率为800Mbps 时运行时遇到问题。 一切都可以在400Mbps 下正常工作、我能够使用 CAL 的 WRDMA 捕获数据并将其写入存储器。 该实现是裸机。 我根据 TRMv1.0第10.4.5.3章执行 CSI2 PHY 链路初始化。 当 PHY REG0/DS90UB954配置为800Mbps 的数据速率时、将不会达到 STOPSTATE (初始化序列的第2f 点)、因此 不会完成 CAL_CSI2_COMPLEXIO_CFG 的 RESET_DONE。
我不确定是否正确配置了 PHY 寄存器 REG0、REG1中的时序:
对于 THS_TERM:
根据 TRM:“编程值= floor (20ns/DDR_CLK),其中 DDR_CLK 是 CSI-2 I/O 通道速率的周期。 默认值:4 (对于400 MHz)。”
对于 DDR_CLK=5ns 的值(仅查看整数值)、默认值是正确的、该值对应于200MHz。 查看帖子末尾的问题。
对于 THS_SETTLE:
根据 TRM:“编程值= floor (105ns/DDR_CLK)+ 4,其中 DDR_CLK 是 CSI-2 I/O 通道速率的周期。 默认值:39 (对于400 MHz)。”
对于默认值39、DDR_CLK 需要介于3和3.0882之间、这对应于大约333.3MHz 的值。 查看帖子末尾的问题。
对于 TCLK_SETTLE:
根据 TRM:“编程值= max[3,ceil (155ns/CTRLCLK 周期)–1]默认值:14 (96MHz)”
计算方法是直接的,但在 PDK 中,该值是通过以下公式计算的:"temp =(((((Float32)260U /(Float32)DPHY_Functional_CLK_PERIOD )-(Float32)2U)";
这意味着值为22而不是14。 查看帖子末尾的问题。
TCLK_TERM 的计算也与 TRM 中的计算不同、但在这种情况下、两种计算结果相同。
对于 TCLK_DIV:
根据 TRM:“CLKMISS 检测器的 CTRLCLK 分频系数编程值= ceil (15ns/CTRLCLK 周期)-1默认值:1 (96MHz)
CLKMISS 检测时间=(5*TCLK_DIV+1)*(CTRLCLK 周期)< 60ns
注意:只允许满足上述关系的 CTRLCLK 频率。 通常,在 CTRLCLK 上使用96MHz。”
尽管默认值为1、但 CLKMISS 检测时间为62.5ns。 查看帖子末尾的问题。
测试内容:
- 使用数据速率的周期或实际时钟(数据速率的一半)来计算 THS_TERM、THS_SETTLE。 我已通过电子邮件得知、这些计算应使用数据速率。 对于800MbIT/s 的数据速率、计算如下值:
-
使用数据速率周期(1.25ns)进行计算 使用时钟周期(2.5ns)进行计算 THS_TERM floor (20ns/1.25ns)= 16 floor (20ns/2.5ns)= 8. THS_SETTLE floor (105ns/1.25ns)+4=84+4=88 floor (105ns/2.5ns)+4=42+4=46
- 使用 PDK 计算的 TCLK_SETTLE、结合上述两个值、得出值为22而不是14。
- 否则、对于96MHz 的标准控制时钟、使用 TCLK_DIV (1)和 TCLK_TERM (0)的标准值。
- 使用示波器监控 CSI2时钟通道、输出为400MHz、预计数据速率为800Mbit/s
问题:
- 除了 CSI2 PHY 寄存器的 REG0之外、还有其他寄存器因 CSI2数据速率的变化而必须重新编程吗?
- 要进行双次检查:使用数据速率的周期来计算 THS_TERM、THS_SETTLE 是否正确?
- 对于 TCLK_SETTLE、TCLK_TERM:应该使用来自 TRM 还是来自 PDK 的计算?
- 通过 上述计算、TCLK_DIV 是否可以不满足"CLKMISS 检测时间<60ns"要求?
注:
- PDK (01_10_00_08)中用于比较计算的文件:vpshal_calCsi2Tda2px.c
- 在 TDA2PX 的 TRM (Nov17)和 TDA3的 TRM (June18)中、上述5个参数的计算是相同的
谢谢、
此致、
托比亚斯