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.

[参考译文] DS90UB954-Q1:DS90UB954 与 DS90UB953 一起使用:CSI 问题、LENGTH_ERR 和 CKSUM_ERR

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1570527/ds90ub954-q1-ds90ub954-working-with-ds90ub953-csi-problem-length_err-and-cksum_err

工具/软件:

您好 TI 专家、

我们遇到与之前主题类似的问题:[DS954 正在处理 DS953 CSI 问题](e2e.ti.com/.../ds954-working-with-ds953-csi-problem)。

我们的设置如下:
-**系统连接**:传感器 (4 通道 x 2)→两个 UB953 串行器→UB954 解串器→FPGA
-**硬件**:定制设计,我们使用不同的传感器验证其功能(图像正常显示,没有问题)。

我们现在正在调试新的传感器、并在 UB954 上看到错误:寄存器 0x7A 在两个 RX 端口上显示值 0x0C(指示 LENGTH_ERR 和 CKSUM_ERR)。

**系统配置**:
-传感器分辨率:3840x2160,
UB953 寄存器 PKT_HDR_WC (0x62-0x63):2400
- UB954 寄存器 LINE_LEN (0x75-0x76):2400

UB953 似乎可以正确接收数据、并且在寄存器 0x5C 至 0x60(所有 0x00)中未报告错误。

以下是从 UB954 读取的一些关键寄存器值:
- 0x04:0xDF
- 0x22:0x01
0x35:0x03
- RX 端口 0 - 0x4D:0x43
- RX 端口 1 - 0x4D:0x43
- RX 端口 0 - 0x4E:0x0C
- RX 端口 1 - 0x4E:0x0C
- RX 端口 0 - 0x7A:0x0C
- RX 端口 1 - 0x7A:0x0C
- RX 端口 1 - 0x75:0x09
- RX 端口 1 - 0x76:0x60

此外、当我们在单通道模式下配置 4 个通道传感器(仅使用一个 UB953)时、UB954 不会报告错误。 但是、这种配置不满足我们所需的帧速率。

接下来、我们应该采取哪些步骤来进行故障排除并解决此问题? 非常希望能够深入了解 DUAL-UB953 设置中 LENGTH_ERR 和 CKSUM_ERR 的潜在原因。

此致、

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

    您好、

    从您的寄存器 0x73-0x76 中可以看到、每个 954 RX 端口每行接收 2400 字节、每帧接收 2181 行。 我知道您的有效视频分辨率是 3840x2160。 我想了解几点。

    • 什么是视频格式 (bpp)?
    • 每帧是否有 21 行垂直消隐?
    • 传感器如何在 2 个 CSI 端口之间拆分图像?
    • 传感器的帧速率是多少?
    • 传感器 CSI 输出的每通道数据速率是多少?

    据我所知、您在 954 RX 端口上看到了 LENGTH_ERR 和 CKSUM_ERR、但 953 上没有 CSI 错误。 您能否在操作期间以 1 秒的间隔重复读取以下寄存器? 我想了解这些错误是连续发生还是短时发生。 我还想确认线长/线数是否保持稳定。

    • 954(两个 RX 端口):0x4d、0x4e、0x55、0x56、0x7A、 0x7B、0x73-0x76
    • 953(两个器件):0x52、0x55、0x56、0x5c-0x64

    此致、

    Lucas

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

    您好、Lucas:

    感谢您的指导和详细问题。 以下是配置详细信息以及根据要求重复读取寄存器的结果。


    我们最终将需要 4K60FPS 视频、但现在我们在 4K25FPS 模式下进行调试、以确保在不同的 mipi 通道数下有足够的带宽。

    系统配置

    • 视频格式 (bpp) : RAW10.
    • 垂直消隐线 :我们已将 VMAX (VTS) 设置为 2250、但这里可能会出现问题、因为 UB954 寄存器 0x73-0x76 报告每帧 2181 行(有 2160 个有效行、意味着有 21 个消隐行)。 您能否告知此差异是否与错误有关?
    • 映像在 2 个 CSI 端口上拆分 :传感器水平分割图像,左半部分 (1920x2160) 发送到一个 CSI 端口,右半部分发送到另一个。
    • 传感器的帧速率 :在双通道模式下配置为 25 FPS。
    • 传感器 CSI 输出的每通道数据速率 :每路 594 Mbps。

    寄存器读取结果
    根据您的请求、我们在几分钟内运行期间每秒读取一次指定的寄存器。 这些值是稳定的、未观察到任何变化:

    鉴于寄存器值稳定且存在持续错误、我们是否应该检查或修改特定的 UB954 或 UB953 设置(例如时序,同步或错误处理)?

    最后、当我们在单通道模式下为 4 个通道配置传感器(仅使用一个 UB953)时、UB954 不会报告错误(忽略 RX 端口 1 和 ub953_1):

    此致

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

    您好、

    感谢您分享有关视频分辨率和重复读取寄存器的详细信息。 我知道图像是在串行器之间水平拆分的、可以看到 FPD-Link 器件报告的字节/线路与传感器设置相匹配。 我知道存在传感器配置问题、导致 21 行垂直消隐、而不是预期的 90 行。 我还看到错误/状态寄存器值是稳定/不变的、这意味着错误正在持续发生。

    请允许我更详细地解释这些错误的含义。

    • 954 寄存器 0x7A 中的 LENGTH_ERR 表示 CSI-2 长数据包的数据包标头中包含的字计数与数据包的实际数据长度不匹配。 在每秒一个或多个数据包中可以看到这种情况。
    • 954 寄存器 0x7A 中的 CKSUM_ERR 表示 CSI-2 长数据包的数据包报尾中的校验和与计算出的数据包数据部分校验和不匹配。 在每秒一个或多个数据包中可以看到这种情况。
    • 由于 954 寄存器 0x4E 中从未标记 LINE_LEN_UNSTABLE 和 LINE_LEN_CHG、这表明线路长度保持稳定、这个问题可能在每个长数据包中一致。

    我有几个问题/建议可以继续进行调试。

    • 是否可以测量和分析来自传感器的 CSI-2 输出? 检查长数据包的数据长度和校验和会有所帮助。 我想了解 此时数据包结构是否正常、或者我们是否需要重点了解传感器配置。
    • 您是否已配置/启用 954 的转发和 CSI 输出? 是否可以从 954 查看视频输出的外观?
    • 我认为调查和解决传感器配置中的垂直消隐问题非常重要。 虽然我不希望  直接 导致该问题的消隐线更少、但我想知道配置问题是否也可能影响数据包结构。

    此致、

    Lucas

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

    您好、Lucas:

    很抱歉延迟回复—我们刚刚从假日休息回来。

    要解决您的问题:

    • CSI-2 输出分析 :不幸的是,我们无法访问示波器、逻辑分析仪或其他具有足够带宽来直接测量 MIPI 信号的工具。 您是否有任何替代方法、例如在 UB953/UB954 上额外进行基于寄存器的检查来间接验证数据包结构?

    • UB954 转发和 CSI 输出 :尽管存在 LENGTH_ERR/CKSUM_ERR , UB954 仍然能够同步和转发数据到 FPGA。 但是、我的 FPGA 开发同事报告说、IP 内核无法正确解析传输的数据、因此我们还没有从中获得太多有用的信息、并且图像无法正确显示。 此外,我们之前使用了英飞凌 Cypress FX3 平台(连接到 FX3 的 UB954 ),我们也没有看到图像数据 — 我们用 qv4l2 打开了视频设备,但屏幕完全黑了。

    • 垂直消隐问题 :我们不认为这是问题的根本原因,因为当摄像头配置为 4 通道单通道模式时(使用单个 UB953 ), UB954 没有报告错误, LINE_COUNT 仍然是 2181。 在这种情况下、我的 FPGA 同事确认数据可以正常解析并正确显示。

    在相关注意事项中、我们遇到了 UB953 寄存器 0x61 的新观察结果。 当 VMAX 设置为 2250 时、0x61 持续读取 0x12、指示嵌入式 8 位非图像数据。 但是、当我们将 VMAX 降低到 2176 时、0x61 变为 0x2B、表示 RAW10 数据(此时,UB954 报告 LINE_COUNT=2170)。 我对此有点不清楚:摄像头是否会自动为垂直消隐线生成 0x12 数据包? 此外、寄存器 0x61 是针对每个线路数据包更新还是每帧仅更新一次? 为了与另一个传感器进行比较、0x61 始终为 0x2B(RAW10 数据)、所有内容看起来都正常、并且图像可以正常显示。

    我倾向于传感器配置问题、因为我的其他双 1080p 传感器工作正常。 你有什么想法?

    此致

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

    您好、

    希望你有一个很好的假期休息。

    • 我知道您没有直接探测 MIPI 信号所需的设备。
    • 我知道您的 FPGA 和 FX3 平台从 954 接收 CSI 数据、但无法正确解析。
    • 我知道 4x1 配置不存在垂直消隐问题、线路数仍然是 2181。

    我发现我之前对寄存器 0x73-0x74 存在误解。 这些寄存器指示最后一个视频帧的有效行数、而不是总行数。 由于这些寄存器始终读取 2181 条线路、并且活动视频帧有 2160 条线路、因此这表明还有 21 条额外的嵌入式线路。 954 不会计算垂直消隐线、成像仪很可能已配置了正确的垂直消隐。

    953 寄存器 0x61 读回每个接收到的长数据包的数据 ID 字节。 有关您的信息、这里介绍了数据 ID 字节在 CSI-2 长数据包中的结构。

    我预计 0x61 应在接收有效视频线路时读回 0x2B、并且应在接收嵌入式线路时读回 0x12。 我想知道您是否只看到 0x1=0x2B 或 0x61=0x12、因为 您读取寄存器 的频率与帧速率对齐、或者每个长数据包是否真正具有数据 ID 0x2B 或 0x12、具体取决于配置。

    当您将 VMAX 调整为 2176 时、LINE_COUNT=2170 表示有 10 个嵌入行和 6 个消隐行。 您是否仍然看到此配置标记了 LENGTH_ERR 和 CKSUM_ERR?

    是否可以将成像仪配置为不包括任何嵌入式线路? 我想看看在没有接收到嵌入式行时是否仍标记了 LENGTH_ERR 和 CKSUM_ERR。

    我还想检查 FrameValid 和 LineValid 信号的时序。 您能否将这些信号映射到 954 GPIO 引脚并使用示波器或逻辑分析仪测量波形? 您可以使用以下 寄存器写入将 FV 和 LV 映射到 GPIO。

    • 0x0F=0x70 #禁用 GPIO0-3 输入
    • 0x10=0xc1 # GPIO0 = RX0FV
    • 0x11=0xe1 # GPIO1 = RX0 LV
    • 0x12=0xc5 # GPIO2 = RX1 FV
    • 0x13=0xe5 # GPIO3 = RX1 LV

    此外、我还有几个问题、以便更好地了解您的设置。

    • 您的成像仪部件号是什么?
    • 成像仪是否在两个 CSI 输出端发送 FrameStart 和 FrameEnd 数据包?
    • 您如何将信号转发到 954 输出? 您是否使用线路连接转发将帧拼接回一起? 或者、您是否使用不同的转发方法、而 SoC/FPGA 负责拼接图像?

    此致、

    Lucas

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

    您好、Lucas:

    感谢您对寄存器 0x73-0x74 的澄清以及 CSI-2 数据包中数据 ID 字节的详细细分。

    要回答您的其他问题:

    1. 成像仪部件号 :我们正在使用 Sony IMX678 传感器。

    2. 两个 CSI 输出上的 FrameStart/FrameEnd 数据包 :我不是 100%确定,但我认为它们都发送在两个输出上。 如果没有、我不希望 UB953 能够识别和处理这些数据、您是否了解该传感器如何在分割图像模式下处理 FS / FE?

    3. 转发方法 :我们正在使用  线路连接转发  UB954 输出端的输入。  FPGA 负责向显示器输出最终图像。

         

      两个 RX 端口的 FrameValid (FV) 和 LineValid (LV) 信号相同、因此只会向您显示一组图像:(在 VMAX=2250 配置中)
    FrameValid:
       


    2.  LineValid  
       
      详细信息:
       
       
      从图中可以看出:38.9ms/17.8us = 2185、与 ub954 报告的数据大致一致

    即使 VMAX 调整为 2176、LENGTH_ERR 和 CKSUM_ERR 标志也会在寄存器 0x7A 中持续存在。 同样、当我们将 VMAX 设置为 2166 时、UB954 会报告 LINE_COUNT=2160、但错误仍会标记出来。

    鉴于我们正在使用 IMX678、您能否提供针对此传感器定制的任何具体指导或调试步骤? 例如、有关通过 IMX678 寄存器禁用嵌入式线路的建议、或者它的双通道输出的常见缺陷?

    此致

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

    您好、

    感谢您回答我的问题并分享 FV/LV 波形。

    我对 IMX678 不太熟悉、以前从未使用过此传感器。 尽管我不确定它如何在分离图像模式下处理 FrameValid 和 FS FE、但您提到、两个 RX 端口的 FrameValid 波形是相同的、并按预期切换高电平/低电平。 这表示两个 954 RX 端口都在接收 FS 数据包/FE。

    我仔细检查了 FV 和 LV 信号的时序、它们符合我对 25fps 视频流的预期、有 2181 个有效行、每帧总行 2250 个。

    让我与我的团队讨论这个问题、并向您提出进一步的调试建议。

    此致、

    Lucas

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

    您好、Lucas:

    感谢您的快速随访和检查 FV/LV 波形。

    我们期待您的团队提供有关 IMX678 集成的见解和任何其他调试建议。 同时、我们将继续测试较低的 VMAX 设置、并尽可能禁用嵌入式行。

    此致

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

    您好、

    我将需要一些额外的时间来考虑后续的调试步骤。 如果有进一步的反馈、我会再回来联系您。

    此致、

    Lucas

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

    您好、

    感谢您的耐心。 我还有一些其他的调试建议。

    • 您是否可以写入 954 寄存器 0x34[3]=1、然后在操作期间重复读取寄存器 0x35? 我想在运行期间检查您的 TX 端口同步和通过状态。
    • 您能共享 954 和 953 的初始化脚本吗? 我想回顾一下、以便更好地了解您的配置。
    • 您是否可以尝试为两个 RX 端口写入 954 寄存器 0x6D=0x3C、并检查这是否会改变发送到 FPGA 的 CSI 输出信号的行为? 我想检查当所有有错误的数据包仍转发到 CSI 输出时 FPGA 是否能够显示视频。
    • 您是否可以尝试在循环模式下禁用 RX 端口 1 并仅转发 RX 端口 0、同时仍在成像仪上使用分割映像模式? 我想检查只有一半的图像通过 954 传输时 FPGA 是否可以显示视频。 您可以通过以下寄存器写入来执行此操作。
      • 0x0C=0x81
      • 0x20=0x30
      • 0x21=0x01
      • 0x20=0x10
    • 在上述设置下操作时、您是否可以重复读取以下寄存器?
      • 954:0x4d、0x4e、0x55、0x56、0x7A、 0x7B、0x73-0x76、0x35
      • 953:0x52、0x55、0x56、0x5c-0x64

    此致、

    Lucas

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

    您好、

    感谢您实施并尝试我的建议。

    在快速设置的行中、我看到 0x35=0x03、表示 CSI TX 端口已同步且有效数据可用于发送。 0x35=0x00(在仅轮询 RX0 设置中)。 我看到 Length_ERR 和 CKSUM_ERR 在这两种设置中继续进行标记。 我想知道 FPGA 在这两种情况下是如何接收数据的。 FPGA 是否能够解释和显示视频数据?

    我将需要一些额外的时间来查看初始化脚本。 我们将在星期一上提供反馈意见、回复您。

    此致、

    Lucas

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

    您好、Lucas:

    我刚与 FPGA 开发同事确认、在单通道模式(4x1 配置)下、FPGA 可以解析数据并正确显示图像。 但是、在双通道模式下、FPGA 似乎根本没有从 UB954 CSI 输出接收任何数据、IP 内核无法检测到传入的帧或数据包。

    我们之前怀疑导致解析失败的 FS /FE 数据包或虚拟通道 ID (VC) 有问题。 但是、根据我之前分享的 FV/LV 波形、双通道模式下的信号看起来正常(线路有效,帧有效和同步转发都按预期切换)。 UB954 是否应至少转发数据? 这是否表示初始化代码有问题? 您是否提供了您的评论中的任何新发展或见解?

    此致、

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

    您好、

    我查看了您的脚本 、有一个问题。 您在寄存器 0x58 中使用 25Mbps 反向通道的原因是否存在? 通常、我们建议使用 50Mbps 反向通道。

    我来尝试对 EVM 板运行脚本、以确认其正常工作。 虽然我没有看到您的转发配置有任何问题、但基准测试将有助于确认它是否正常工作。

    此致、

    Lucas

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

    您好、Lucas:

    感谢您查看脚本、感谢您抽出宝贵的时间参与。

    关于寄存器 0x58 中的 25Mbps 反向通道:这个数据来源于之前的成像仪设置、我们最终将 UB953 配置为 12.5Mbps 时钟。 对于 IMX678、我们现在提供 24Mbps 时钟。 我们尝试了 25Mbps 和 50Mbps 反向通道速度、但结果(包括持续 LENGTH_ERR/CKSUM_ERR)保持不变。 我确实注意到一些论坛帖子、其他专家建议保留默认 50Mbps,但我不希望这会对我们的核心问题产生重大影响 — 您认为这仍然是一个因素吗?

    如果可能、如果您可以在终端使用 IMX678 运行脚本进行验证、那将会非常有用。 这种特定于传感器的测试可以为解决数据包错误提供有价值的见解。

    期待您的 EVM 基准测试结果和任何其他想法。

    此致、

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

    您好、

    感谢您提供有关 25Mbps 反向通道的说明。 我预计这不会影响此处的问题、因为没有标记 CRC 或 BCC 错误。

    很遗憾、我没有 IMX678 成像仪可供测试。 我已经与索尼联系了几个问题,以更好地了解这款设备。

    我仍在着手启动 EVM 工作台设置。 当我有结果要分享时、我会返回给您。

    此致、

    Lucas

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

    您好、

    很抱歉、延迟的回复。 我使用您的初始化脚本提出了一个带有 2 953EVM 的 954EVM。 我还在 953s 上启用了 patgen、并检查了典型的错误/状态寄存器。  链接运行无错误、这意味着我发现您的初始化脚本没有问题。

    我将继续集体讨论后续调试步骤、并会在我有进一步的建议时回复您。

    此致、

    Lucas

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

    您好、Lucas:


    感谢您的持续支持和集体讨论进一步的调试步骤、因为我们缩小了调试范围、这非常有用。
    快速更新:我们在同一数据路径上测试了另一个 OV 4K 成像仪(成像仪 4 通道→UB953→UB954)、可在 4K、2K 和 1080p 模式下正确解析且没有错误。 这强化了该问题可能是 IMX678 配置所特有的、而不是总体设置所特有的。 如果可能、您能否联系 Sony、了解 IMX678 的任何关键寄存器建议或常见缺陷(例如,单通道输出或嵌入式数据处理的关键设置)?
    期待您的想法。

    最好吃的肉酱

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

    您好、

    我同意、此问题可能专门与分割图像模式下的 IMX678 成像仪相关。  

    Sony 共享以下寄存器设置以禁用嵌入式数据输出。 您是否可以尝试禁用嵌入式数据并轮询相同的 953/954 寄存器? 我想看看在没有嵌入式数据包的情况下问题是否仍然发生。

    用于禁用输出数据中 EBD 的寄存器
    地址:303Ah
    02h(默认值)
    03h(EBD 关闭)

    此致、

    Lucas

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

    您好、Lucas:

    很抱歉延迟的响应—再次感谢 Sony 的循环并共享寄存器设置以禁用嵌入式数据输出。

    好消息:写入 0x303A=0x03(EBD 关闭)后、UB954 现在报告 LINE_COUNT=2180(从 2181 向下)、重要的是、寄存器 0x7A 中不再有 CSI_ERR 或 CKSUM_ERR 标志。 UB953 寄存器 0x61 读取 0x37(用户定义的 8 位数据类型 8)、这不是预期的 RAW10 0x2B、但 FPGA 现在正确解析数据并继续帧重建 — 图像首次正确显示!

    一个奇怪的观察结果:在后续测试中、我将 0x303A 恢复为 0x02(默认)、UB954 仍然显示没有错误。 之前、我们根本没有编写此寄存器、因此我将运行更多受控测试、以准确确定哪些变化(或组合)解决了标记问题。

    您的指导非常有用—如果您在此期间有任何其他要求或建议、请告诉我。

    此致、

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

    您好、

    感谢您分享您的更新、这是解决此问题的一大进步。 嵌入式数据线似乎与根本原因有关。 有趣的是、953 寄存器 0x61 读回 0x37、这是用户定义的数据类型、我不确定为什么会这样。

    我有几个问题。

    • 您是否可以在初始化后尝试读回成像仪寄存器 0x303A、而不更改该寄存器的值? 我想知道初始化后的值实际上是否不是 0x02。 这可能是为什么在显式写入 0x303A=0x02 时没有看到错误的原因。
    • 您的用例是否需要嵌入式数据线将信息从成像仪发送到 FPGA?

    我还建议与 Sony 合作、以便更好地了解此成像仪的工作原理。

    此致、

    Lucas