ZHCU481E october 2022 – july 2023
在实现 CLB 设计时,首先使用波形直观地显示所需的 CLB 行为可能会有所帮助。为此,首先考虑一个示例事务。回想一下 T-Format 事务包含请求传输和编码器的响应。传输可以拆分成 FRAME_STATE,如图 2-11 所示。第一步是将事务的每个元素映射到 CLB 子模块。表 2-12 展示了一个示例映射。
事务行为 | CLB 映射 |
---|---|
跟踪 FRAME_STATE | 有限状态机 (FSM):在给定先前状态和当前输入的情况下转换到新状态。 |
对生成的时钟进行计数 | 计数器:配置为在 TRANSMIT_DATA 和 RECEIVE_DATA 状态期间根据时钟边沿递增。mode0 输入控制计数器何时处于活动状态以及计数器何时停止。利用计数器的匹配值来驱动状态转换(TRANSMIT_DATA 到 WAIT_FOR_START,RECEIVE_DATA 到 IDLE)。 |
生成特定宽度的时钟信号 | 此要求会映射到第二个计数器。利用匹配值来生成上升/下降沿的时序。然后,LUT(查找表)会根据该时序生成实际的边沿。 |
将时钟与编码器的响应对齐 | 生成时钟的计数器可以进行配置,使得边沿转换与编码器的响应正确对齐。 |
仅允许在发送和接收期间为 SPI 提供时钟 | LUT 会在不需要时阻止时钟。 |
控制 TxEN | LUT 利用当前的 FRAME_STATE 来控制该信号。 |
指示 CLB 开始事务 | C28x 配置用于事务的计数器和 SPI。CLB GPREG 允许 C28x CPU 直接更改 CLB 输入以开始事务。 |
下一步是实现特定子模块行为的可视化。从快速草图开始,然后在设计开发过程中添加其他详细信息。图 2-12 展示了一个示例波形。
以下部分中使用了 图 2-12 中的标记 1 至 6 来描述设计中与该标记相对应的特定行为。标记为:
在对每个 FRAME_STATE 进行说明之后,节 2.3.6.2 给出了完整的逻辑块设计。在查看每种状态的描述期间,请参阅节 2.3.6.2 和图 2-12。