ZHCU480A April 2018 – November 2024
在实现 CLB 设计时,首先使用波形直观地显示所需的 CLB 行为可能会有所帮助。为此,首先考虑一个示例事务。回想一下,BiSS-C 事务包含 MA 信号和编码器的响应。传输可以拆分成 FRAME_STATE,如图 2-11 所示。第一步是将事务的每个元素映射到 CLB 子模块。表 2-4 展示了一个示例映射。
| 事务行为 | CLB 映射 |
|---|---|
| 跟踪 FRAME_STATE | 有限状态机 (FSM):在给定先前状态和当前输入的情况下转换到新状态。 |
| 生成两个特定宽度的时钟信号:一个用于 MA,一个用于 SPI 时钟。 | 对于每个信号,此要求会映射到计数器。利用匹配值来生成上升/下降沿的时序。然后,LUT(查找表)会根据该时序生成实际的边沿。 |
| 为 MA 和 SPI 时钟传输特定数量的时钟脉冲。 | 对于每个时钟,这会映射到计数器。在时钟的边沿,计数器递增,MATCH 指示何时达到数量。 |
| 将 SPI 时钟与编码器的响应对齐 | 生成 SPI 时钟的计数器可以进行配置,使得边沿转换与编码器的响应正确对齐。 |
| 仅在接收到编码器的响应时允许为 SPI 提供时钟 | LUT 会在不需要时钟时阻止时钟。 |
| 在 BiSS 超时期间,将 MA 信号保持为高电平或低电平(CDM 位) | 使用 GPREG 输入,C28 可向 CLB 指示 CDM 必须为高电平还是低电平。这与 LUT 组合,然后在传输特定数量的时钟后将值保持在 MA 上。 |
| 控制 TxEN | 对于 BiSS-C,TxEN 保持低电平。CLB 输出 LUT 可对输出应用常量“0”。 |
| 通过发送 MA,指示 CLB 开始事务 | C28x 配置用于事务的计数器和 SPI。CLB GPREG 允许 C28x CPU 直接更改 CLB 输入以开始事务。 |
下一步是实现特定子模块行为的可视化。从快速草图开始,然后在设计开发过程中添加其他详细信息。图 2-12 展示了使用 CLB SystemC 仿真模型生成的波形示例,该模型使用自定义输入作为编码器的响应。虽然 图 2-12 是由实际设计生成的,但图的细节与初步草图类似。
以下部分中使用了 图 2-12 中的标记 1 至 4 来描述设计中与该标记相对应的特定行为。标记为:
在 IDLE 状态期间,接口上没有任何活动。C28x 必须通过以下方式发起事务:
参阅:图 2-12,标记 (1)。
START_OPERATION 会在一个 CLB_CLOCK 内保持高电平,因为针对该输入启用了 CLB 的上升沿滤波器。在标记 (1) 处,主状态机(逻辑块 4 上的 FSM1)会通过将 FRAME_STATE 从 IDLE 移到 TRANSMIT_MA 状态进行响应。
在 TRANSMIT_MA 期间:编码器接口向编码器发送 MA 信号。此信号是具有特定占空比和所定义数量时钟周期的时钟。周期数取决于编码器的分辨率。在为 MA 提供时钟时,CLB 监控 SL 线路以获得编码器响应。
参阅:图 2-12,标记 (2)。
为了检测编码器的响应,CLB 监控 SL 的上升沿。上升沿对应于 ACK 之后的开始位。检测响应所需的时间可以是任意数量的时钟,具体取决于编码器的状态和电缆长度。此外,如果编码器需要额外的响应时间,则延长 ACK 状态。
检测到编码器的起始位时,FRAME_STATE 转换用于发送 MA 和接收 SL。
参阅:图 2-12,标记 (3)。
CLB 开始为 SPI 外设提供时钟以接收响应。
参阅:图 2-12,标记 (4)。