ZHDA067 March 2026 TMS320F280039C
该解决方案中具有两个 CLB 逻辑块、一个控制 SPI 时序、另一个动态计算 RX CRC。SPI 时序 CLB 逻辑块将与 T-Format 解决方案中的逻辑块兼容,因此无需更改。但是,由于字段格式和 CRC 多项式不同,RX CRC CLB 逻辑块需要更改。下文介绍了用于 CRC 计算的 CLB 实现。对于其余的 CLB 函数,可以参考 T-Format 设计指南。
在线性反馈移位寄存器 (LFSR) 模式下用计数器块计算 RX CRC。RX 位在每个 SPI 时钟在 LFSR 中移位,一旦最后一位移入,就可以从 LFSR 读取 CRC 结果。图 2-3 标记应移入 LFSR 的位。CLB 逻辑实现了一个位掩码滤波器来选择需要移入 LFSR 进行 CRC 计算的特定位,根据以下两条规则生成掩码:
其中,n 是总帧长度,不包括 CRC 字段和末尾的定界符。用于屏蔽 CRC 位的信号命名为 CRC_MASK 及 DATA_VALID。
图 2-3 在 CLB 内生成 CRC 计算掩码由于屏蔽规则与 T-fomat 不同,因此用于 SHIFT_EN 信号生成的 CLB 逻辑也发生了变化。使用两个计数器及一个 FSM 来生成 SHIFT_EN 信号。图 2-4 展示了用于 CRC 计算的 CLB 逻辑块方框图。除了 SHIFT_EN 信号生成逻辑(包括 COUNTER0、COUNTER1 和 FSM2 和 LUT1)之外,方框图与 T-Format 实现基本相同。
图 2-4 CRC 计算的 CLB 图上述逻辑通过 TI CLB 工具链实现(修订版 B,请参阅参考文献[2])。有关工具链的使用,请参阅 CLB 工具用户指南(修订版 B)。验证逻辑的一种快速方法是在工具链中进行仿真。图 2-5 展示了 CRC 计算的模拟示例。编码器的响应在波形中作为“边界输入 4”输入。当响应数据输入时,SHIFT_EN 信号作为“Counter2_mode0”生成。该信号标记包含在 CRC 计算内的位。在 SHIFT_EN 信号的每个脉冲上,响应数据被移入标记为“counter_2”的 LFSR。随着最后一个 SHIFT_EN 脉冲的出现,LFSR 保持值 0x1576608F,其中最终 8 位 0x8F 表示所需的 CRC 结果。
图 2-5 CLB 中 CRC 计算逻辑的仿真