ZHCAC41 February   2023 TMS320F280025C

 

  1.   摘要
  2.   商标
  3. 1引言
  4. 2串行端口设计方法
    1. 2.1 步骤 1:了解设计要求
    2. 2.2 步骤 2:识别至 CLB 逻辑块的所需输入
      1. 2.2.1 GPIO 输入限定
      2. 2.2.2 CLB 输入设置
    3. 2.3 步骤 3:识别来自 CLB 逻辑的所需输出
      1. 2.3.1 同步输出信号
      2. 2.3.2 输出信号调节
    4. 2.4 步骤 4:设计 CLB 逻辑
      1. 2.4.1 资源分配
      2. 2.4.2 在 CLB FIFO 和 MCU RAM 之间交换数据
      3. 2.4.3 CLB 逻辑状态和触发标志
        1. 2.4.3.1 状态/标志位
        2. 2.4.3.2 触发位
    5. 2.5 步骤 5 :仿真逻辑设计
    6. 2.6 步骤 6 :测试 CLB 逻辑
  5. 3示例 A:在音频应用中使用 CLB 输入和输出 TDM 流
    1. 3.1 示例概述
    2. 3.2 步骤 1:了解设计要求
    3. 3.3 步骤 2:识别至 CLB 逻辑块的所需输入
    4. 3.4 步骤 3:识别来自 CLB 逻辑的所需输出
    5. 3.5 步骤 4:设计 CLB 逻辑
      1. 3.5.1 资源分配
      2. 3.5.2 TDM 字计数器
      3. 3.5.3 FSYNC 和 DATA1 输出同步
    6. 3.6 步骤 5 :仿真逻辑设计
    7. 3.7 步骤 6 :测试 CLB 逻辑
      1. 3.7.1 硬件设置和连接
      2. 3.7.2 软件设置
      3. 3.7.3 测试输出建立时间和保持时间
      4. 3.7.4 测试数据完整性
  6. 4示例 B:在照明应用中使用 CLB 为 LED 驱动器实施定制通信总线
    1. 4.1 示例概述
    2. 4.2 步骤 1:了解设计要求
    3. 4.3 步骤 2:识别至 CLB 逻辑块的所需输入
    4. 4.4 步骤 3:识别来自 CLB 逻辑的所需输出
    5. 4.5 步骤 4:设计 CLB 逻辑
      1. 4.5.1 TX 逻辑块逻辑
      2. 4.5.2 RX 逻辑块逻辑
      3. 4.5.3 数据时钟
    6. 4.6 步骤 5 :仿真逻辑设计
    7. 4.7 步骤 6 :测试 CLB 逻辑
      1. 4.7.1 硬件设置和连接
      2. 4.7.2 软件设置
      3. 4.7.3 测试输出建立时间和保持时间
  7. 5参考文献

步骤 5 :仿真逻辑设计

#FIG_X5K_1YC_3VB 中仿真了数据接收操作。对于此仿真,使用 0xAAAA 的简单模式作为数据输入。该仿真显示了由 START 位指示的帧开始、完整接收字的捕获以及 CHECK 位的验证。

GUID-20220916-SS0I-MQCL-CQHW-BJMPHTMLCJZC-low.png图 4-15 LED 驱动器的数据接收仿真

第二个数据接收仿真如#GUID-020BC078-9055-4081-A916-44B0D9205A26 所示。在此仿真中,向传入数据流添加了不正确的 CHECK 位,以便验证 CHECK 位逻辑的操作。该仿真显示 LUT1 块的输出变为高电平,以指示检测到 CHECK 位错误。

GUID-20220916-SS0I-MTKX-0Z0M-6J0BKJ3DLQRK-low.png图 4-16 CHECK 位错误逻辑仿真

最后,#GUID-9E7D8A06-4DBD-459E-AE35-2668AF19A138 中的仿真显示了 END 位的检测。FSM0 块在检测到 END 位时将 CLB 逻辑转换为 IDLE 状态。

GUID-20220916-SS0I-R9XN-WCW5-TPVHZG5TZJK4-low.png图 4-17 END 帧检测
注: 在 END 位期间会生成接收中断和 CHECK 位错误(未显示)。CPU 代码必须始终丢弃帧中的最后一个字,因为这与 END 位相对应。

#GUID-DE20B45E-17F5-40B4-A380-DF8C0797729D 中仿真了数据发送操作。该仿真显示了单个 0x5555 字的发送,从 START 位开始,到 END 帧结束。为了简化 CLB 逻辑,通过允许逻辑块发送一个 0xFFFF 字来实施 START 位。使用逻辑块的 CHECK 位逻辑在第 17 个时钟周期生成 START 位。同样,要生成 END 帧,CLB 逻辑仅在最后一个字发送结束时将 CLB_SOUT 信号设置为 1。CLB 逻辑取决于 CPU 在开始新的数据发送之前至少等待 18 个 PWM_SCLKX2 周期。

GUID-20220916-SS0I-W09Q-3WLB-WTSCTRPQNXNS-low.png图 4-18 LED 驱动器的数据发送仿真

由于更新输出串行器(计数器 1)出现延迟,在数据发送操作期间会观察到输出干扰。#GUID-E12DC052-9332-4807-ABA6-44B7877A2BFD 显示了从 PWM_SCLKX2 低沿到输出串行器最终更新的内部延迟。干扰的结果是接收器件的建立时间缩短。建立时间不应从 PWM_SCLKX2 信号的上升沿计算,因为此时钟也会随着它通过 CLB 逻辑块而延迟。而是应根据 CLB_SCLKX2 信号计算建立时间。此信号是接收器件将观察到的 PWM_SCLKX2 的延迟版本。

GUID-20220916-SS0I-VGDP-ZBG6-WLWM8V8KB80C-low.png图 4-19 输出干扰

可以通过在传递到 CLB_SOUT 之前锁存串行器输出来消除干扰。但是,由于每个发送仿真预计至少有两个 CLB 周期的建立时间,这足以满足 LP5891-Q1 器件所需的 10ns 建立时间要求,因此未使用此方法。