AD2428W手册解读之响应周期的公式

简介: AD2428W手册解读之响应周期的公式

AD2428W手册解读之响应周期的公式


A2B_RESPCYCS寄存器用于设置从控制帧(SCF)开始到最后一个slave响应响应帧(SRF)的相对时间。寄存器设置定义了A2B网络中较早的节点在超帧的上游部分何时应该期望来自最后一个从节点的响应。如果最后一个节点没有响应,则在假定的最后一个节点之前的节点会响应。以下部分提供了关于如何对主节点和从节点A2B_RESPCYCS寄存器进行编程的信息。

1、配置主节点响应周期

主节点响应周期示意图描述了主响应周期值是如何确定的。

主节点响应周期示意图

在主节点响应周期图中:

1、主最小响应周期计数由下游数据的长度、最小总线周转时间和从节点的数量决定。

2、主最大响应周期计数由上游数据的长度和主响应周期偏移量决定。

3、主响应周期偏移确保从接收缓冲区的最后一个上游数据位到I2S/TDM数据输出点有足

够的内部处理时间(tIP),输出点开始同步到下一个SCF和SYNC引脚过渡。A2B主节点响应偏移(RESPOFFS)表定义了这个恒定的主响应周期偏移,它是A2B主节点的TDM模式

(A2B_I2SGCFG.TDMMODE)的一个函数。和I2S/TDM通道大小(A2B_I2SGCFG.TDMSS)。

A2B主节点响应偏移(RESPOFFS)

编写主节点A2B_RESPCYCS寄存器是上述主响应周期偏移(RESPOFFS)的函数,以及:

1、系统中从节点的数量。

2、在每个从属器(NUM_DNSLOTS)上从a端口接收的下游A2B总线数据槽的数量。

3、下游A2B总线数据槽的宽度(DNSLOT_SIZE)。

4、每个slave驱动到A-PORT的上游A2B总线数据槽的个数(NUM_UPSLOTS),以及上

游A2B总线数据槽的宽度(UPSLOT_SIZE)。

在系统中的任何给定节点上可能发生的上时隙和下时隙活动是第一个影响因素,确定必须编程到主节点A2B_RESPCYCS寄存器中的值。对于每个从节点n在A2B拓扑中,以下等式定义了下游(DNSLOT_ACTIVITY[n])和该节点的上游(UPSLOT_ACTIVITY[n])活动。

DNSLOT_ACTIVITY[n] = NUM_DNSLOTS * (DNSLOT_SIZE + 1)
UPSLOT_ACTIVITY[n] = NUM_UPSLOTS * (UPSLOT_SIZE + 1)

注意:DNSLOT_SIZE和UPSLOT_SIZE槽位大小在上述计算中偏移1,因为默认槽位格式

(A2B_SLOTFMT)在A2B总线上的每个数据槽附加一个奇偶校验位,因此每个槽位在A2B

总线上增加1位。对于备用槽位格式,必须添加为所选用例附加的位数,而不是这里定义

的1,如A2B槽位格式表中的A2B总线位列所示。

一旦建立了每个从节点n的上时隙和下时隙活动,就可以计算每个从节点n的等效上游 (RE-SPCYCS_UP[n])和下游(RESPCYCS_DN[n])响应周期需求从属节点,由以下等式控制。

RESPCYCS_DN[n] = ((64 + DNSLOT_ACTIVITY[n])/4) + 4n + 2            // Round Up
RESPCYCS_UP[n] = RESPOFFS - (((64 + UPSLOT_ACTIVITY[n])/4) + 1)    // Round Up

1、RESPCYCS_DN[n]是考虑到从节点n的下游活动,主节点可能的最小响应周期寄存

器设置。其中RESPCYCS_DN[n]计算的最大值是最小主节点A2B_RESPCYCS设置

(MAX(RESPCYCS_DN[n]))。

2、其中,RESPCYCS_UP[n]是考虑到从节点n的上游活动,主节点可能的最大响应周期

寄存器设置。其中,RESPCYCS_UP[n]计算的最小值是主节点最大A2B_RESPCYCS设置

(MIN(RESPCYCS_UP[n]))。

注意:如果MAX(RESPCYCS_DN[n]) > MIN(RESPCYCS_UP[n]),则A2B总线带宽不能

容纳该配置。

必须编程到主节点的A2B_RESPCYCS寄存器中的值是这些最小值和最大值的平均值:

A2B_RESPCYCS = (MAX(RESPCYCS_DN[n]) + MIN(RESPCYCS_UP[n])) / 2   // Round Down

2、主A2B_RESPCYCS计算示例

具有三个节点(主节点和两个从节点(从0和从1))的系统配置如所示三节点A2B系统示例图:

三节点A2B系统示例图

对于超帧的下游部分:

1、主节点(32位TDM8模式下配置):发送14个槽位,槽位大小为24位。

2、Slave 0:消耗主节点的6个槽位,将剩下的8个槽位传给Slave 1,然后为下行流量贡

献8个额外的槽位(从Slave 0发送到Slave 1的16个槽位)。

3、Slave 1:消耗从0产生的所有16个槽位

对于超帧的上游部分:

1、Slave 1:发送10个槽位,槽位大小为16位。

2、Slave 0:消耗Slave -1的6个槽位,将剩下的4个槽位传递给主节点,然后为上游流量贡献8个额外的槽位(从Slave 0发送给主节点的槽位共12个)。

3、主节点(配置为32位TDM8模式):消耗所有从节点0的12个槽位。

响应周期通过以下步骤确定:

1、计算每个从属节点的上时隙和下时隙活动。

DNSLOT_ACTIVITY[n] = NUM_DNSLOTS * (DNSLOT_SIZE + 1)
DNSLOT_ACTIVITY[0] = 14 * (24 + 1) = 350
DNSLOT_ACTIVITY[1] = 16 * (24 + 1) = 400
UPSLOT_ACTIVITY[n] = NUM_UPSLOTS * (UPSLOT_SIZE + 1)
UPSLOT_ACTIVITY[0] = 12 * (16 + 1) = 204
UPSLOT_ACTIVITY[1] = 10 * (16 + 1) = 170

2、有了这些信息,计算每个从属机的响应周期需求。从A2B主节点响应偏移

       (RESPOFFS)表中,TDM8模式和32位数据组合得到RESPOFFS = 248。

RESPCYCS_DN[n] = ((64 + DNSLOT_ACTIVITY[n])/4) + 4n + 2            // Round Up
RESPCYCS_DN[0] = ((64 + 350)/4) + (4*0) + 2 = 103.5 + 0 + 2 = 105.5     = 106
RESPCYCS_DN[1] = ((64 + 400)/4) + (4*1) + 2 = 116.0 + 4 + 2 = 122.0     = 122
RESPCYCS_UP[n] = RESPOFFS - (((64 + UPSLOT_ACTIVITY[n])/4) + 1)    // Round Up
RESPCYCS_UP[0] = 248 - (((64 + 204)/4) + 1) = 248 - (67.0 + 1) = 180.0  = 180
RESPCYCS_UP[1] = 248 - (((64 + 170)/4) + 1) = 248 - (58.5 + 1) = 188.5  = 189

最小主节点A2B_RESPCYCS设置为RESPCYCS_DN[n]计算中的最大值,为122,

       最大设置为RESPCYCS_UP[n]计算中的最小值,为180,最小值和最大值的平均值为:

(MAX(RESPCYCS_DN[n]) + MIN(RESPCYCS_UP[n])) / 2   // Round Down
(122 + 180) / 2 = 302 / 2 = 151.0                     = 151

3、配置从节点响应周期

       在系统发现过程中,每个从节点都设置了自己的A2B_RESPCYCS寄存器。主收发器程序其A2B_DISCVRY寄存器与它试图发现的从收发器相关联的响应周期值。每个从节点(SLV_RESPCYCS[n])的适当值是由从节点在A2B拓扑中的位置和编程到主节点的A2B_RESPCYCS寄存器(MSTR_RESPCYCS)的值决定的。离主节点最近的从节点的节点号为0,节点号为每个下一个直连从节点递增,直到最后一个直连从节点n。发现过程中每个从节点使用的A2B_RESPCYCS值可以用以下公式计算:

SLV_RESPCYCS[n] = MSTR_RESPCYCS - 4n

使用上面的主A2B_RESPCYCS计算示例(与MSTR_RESPCYCS = 151),以下公式确定两个从节点的正确A2B_RESPCYCS值:

SLV_RESPCYCS[0] = MSTR_RESPCYCS - (4*0) = 151 - 0 = 151 (0x97)
SLV_RESPCYCS[1] = MSTR_RESPCYCS - (4*1) = 151 - 4 = 147 (0x93)

下面的代码序列使用这些值在示例系统中进行发现过程:

Write MSTR_RESPCYCS to the A2B_RESPCYCS register in the master node
Write 0x01 to the A2B_CONTROL register in the master node
Write 0x01 to the A2B_SWCTL register in the master node
Write 0x01 to the A2B_INTMSK2 register in the master node 
Write SLV_RESPCYCS[0] to the A2B_DISCVRY register in the master node
     <Wait for Interrupt>
Write 0x00 to the A2B_NODEADR register in the master node
Write 0x01 to the A2B_SWCTL register in slave node 0
Write SLV_RESPCYCS[1] to the A2B_DISCVRY register in the master node
     <Wait for Interrupt>

4、使用高级发现功能配置从节点响应周期

       该收发器被设计为自动调整时间,当反应在总线上看到。这允许在不需要根据电缆长度更改从节点响应周期的情况下发现从节点。当使用高级发现流时,主节点发现新的从节点后,可能会立即报告暂时的数据奇偶性错误,该从节点通过长电缆(长度大于5m)连接。这些错误只在2到3个超级帧中存在。如果已知系统中的电缆长度,可以通过以下伪代码计算从节点响应周期来避免这些错误:

if (n = 0)
   SLV_RESPCYCS[n] = MSTR_RESPCYCS
else
   if (cable_length > 12m)
     SLV_RESPCYCS[n] = SLV_RESPCYCS[n-1] - 6
   else if (cable_length > 5m)
     SLV_RESPCYCS[n] = SLV_RESPCYCS[n-1] - 5
   else
     SLV_RESPCYCS[n] = SLV_RESPCYCS[n-1] - 4


相关文章
|
6月前
|
数据采集 测试技术
LabVIEW对Table中同一行数据分多次增加
LabVIEW对Table中同一行数据分多次增加
40 1
|
6月前
|
C语言
编写一个程序, 给出两个时间,计算出两个时间之差,如给出1120表示11:20,1330表示13:30, 将时间间隔以分钟为单位输出。
这是一个C语言程序,它接收两个时间(小时:分钟格式)作为输入,然后计算并输出两个时间之间的差值。代码包括输入处理、时间转换为分钟以及计算时间差。程序运行结果展示了一个具体的示例时间差。
55 0
|
6月前
配置AC和AP上报KPI指标信息实验
配置WLAN基本业务,使AP上线。 配置AC上报WMI服务器的对接参数。 配置通过WMI模板配置AP上报WMI服务器的对接参数,并通过AP系统模板将WMI模板绑定到AP组。
配置AC和AP上报KPI指标信息实验
|
机器学习/深度学习 算法
本周推荐 | AB实验低响应情景解决实践
推荐语:本文针对AB实验低响应情景下的增量效果不显著问题,提出通过倾向得分匹配方案来衡量策略增量效果的方法,并将相关方案融入一休平台科学评估体系中。文章理论与实践相结合,深入浅出,强烈推荐。 ——大淘宝技术数据研发工程师 伯略
279 0
本周推荐 | AB实验低响应情景解决实践
|
Serverless 开发者
函数计算FC进度一直卡在 94% 无法完成,怎么处理?
函数计算FC进度一直卡在 94% 无法完成,怎么处理?
35 1
|
数据可视化 机器人 C++
对MS大模型测评内容分享
对三个领域分别进行三个问题的体验
118 0
|
算法 异构计算
基于FPGA的控制参数在线实时调整的自适应PI控制器设计,包含testbench测试程序
基于FPGA的控制参数在线实时调整的自适应PI控制器设计,包含testbench测试程序
219 0
|
存储 资源调度 数据可视化
R问题|数值模拟流程记录和分享
R问题|数值模拟流程记录和分享
146 0
|
算法
m基于wcdma的软切换性能matlab仿真,对比平均激活集数(MASN)激活集更新率(ASUR)以及呼叫中断概率(OP)三个性能指标
m基于wcdma的软切换性能matlab仿真,对比平均激活集数(MASN)激活集更新率(ASUR)以及呼叫中断概率(OP)三个性能指标
110 0
m基于wcdma的软切换性能matlab仿真,对比平均激活集数(MASN)激活集更新率(ASUR)以及呼叫中断概率(OP)三个性能指标
【TP5.1】信息码调整
【TP5.1】信息码调整
101 0
【TP5.1】信息码调整