ZHCU481E october 2022 – july 2023
图 2-13 展示了通信逻辑块设计。本节深入讨论了该设计的三个关键组成部分:
通过在 CLB 工具中查看逻辑块的配置,可以找到其他子模块的公式。节 2.3.6.3 以原理图的形式包含每个模块的更多信息。
FRAME_STATE (FSM_1 s1, s0) 转换如图 2-13 中所示。为了推导相应的公式,这里使用了卡诺图(表 2-13 和表 2-14)。生成的公式由 OR 运算符连接,并输入到 CLB 工具中。这些公式不需要简化为最简单的形式。
当前输入 (e1, e0) CLOCK_COMPLETE, TX_OR_RX |
|||||
0,0 | 0,1 | 1,1 | 1,0 | ||
上一状态 s1, s0 |
0,0 IDLE |
0 IDLE |
1(1) TX |
1(1) TX |
0 IDLE |
0,1 TX |
1(2) TX |
1(2) TX |
0 WAIT |
0 WAIT |
|
1,1 RX |
1(3) RX |
1(3) RX |
0 IDLE |
0 IDLE |
|
1,0 WAIT |
0 WAIT |
1(4) RX |
1(4) RX |
0 WAIT |
当前输入 (e1, e0) CLOCK_COMPLETE, TX_OR_RX |
|||||
0,0 | 0,1 | 1,1 | 1,0 | ||
上一状态 s1, s0 |
0,0 IDLE |
0 IDLE |
0 TX |
0 TX |
0 IDLE |
0,1 TX |
0 TX |
0 TX |
1(1) WAIT |
1(1) WAIT |
|
1,1 RX |
1(2) RX |
1(2) RX |
0 IDLE |
0 IDLE |
|
1,0 WAIT |
1(3) WAIT |
1(3) RX |
1(3) RX |
1(3) WAIT |
来自 FSM_1 的 OUT 信号只是当前状态的或运算:s1 | s2。这对应于帧的任何活动部分(非 IDLE)。
检测编码器的响应是该设计的另一个关键组成部分。LUT_1 负责检测事务的开始和编码器响应的开始。为了简化设计,我们做出了以下假设:
鉴于编码器仅响应从 C28x 发起的传输并且 C28x 控制 START_OPERATION,这些假设是合理的。这些假设会得到以下公式:out = (i3 & i2) & i1 | i0:
由于电缆延迟,编码器的响应可能随时出现。要正确读取响应,必须正确对齐 CLB_SPI_CLK。LUT_0 负责时钟对齐和时钟宽度。LUT_0 会在适当的时候复位 COUNTER_0 来实现对齐和时钟宽度。COUNTER_0 匹配值控制 CLB_SPI_CLOCK 边沿时序。
这样会等到以下公式:LUT_0 out = i3 | ( ( ( i2 & !i1) | (i2 & i1) ) & i0 )。
通过在 CLB 工具中查看逻辑块的配置,可以检查其他子模块的公式。节 2.3.6.3 以原理图的形式包含每个模块的更多信息。