TMS320C645x DSP SRIO寄存器(二)——事务包转发
本文是对TI的TMS320C645x DSP SRIO User’s Guide中5.10、5.11和2.3.15节内容的搬运
事务包转发寄存器(Packet Forwarding Register)
控制数据包转发的寄存器分为两类,分别对应8位设备地址和16位设备地址的情况
- PF_16B_CNTLn(n=0~3,与SRIO的端口没有对应关系,只是可以指定四段地址范围)
- D31-16 :16位可转发地址上边界
-
D15-0 :16位可转发地址下边界(具体转发机制在后面介绍)
- PF_8B_CNTLn
- D17-16: 转发输出端口,0~3对应SRIO的四个发送端口
- D15-8 :8位可转发地址上边界
-
D7-0: 8位可转发地址下边界
地址校验模式控制
- C645x系列的设备只通过一位来控制地址校验的模式。该位为SP_IP_MOD寄存器中的第26位(在手册中的5.91节介绍)若该位为0则只接收单播(unicast)事务,不接收广播事务,不转发;若该位为1,则能够接受广播事务,并根据条件转发。
- C645x系列的设备不会自动地将BASE_ID中的值复制到DEVICEID_REG1中,需要注意!
- 其他支持SRIO的设备支持能够自动向DEVICE_REG1中幅值,并且通过三位控制地址校验模式,因此相对来说,C645x系列设备的配置更加简单。
菊花链与包转发
“菊花链”与“包转发”我觉得讲的就是同一个东西。菊花链的拓扑结构就是比如我有多个设备需要向一个主设备发送事务包,将每个设备级联起来,只有一个子设备与主设备直接连接,而不是每个子设备与主设备都直接连接;子设备向主设备发送事务包需要靠中间的设备帮忙转发。这样的实现会引起不同位置设备的发送延迟不同。
地址校验流程
- 查看事务包的“TT”字段,判断该事务包为8位地址(00)或是16位地址(01);
- 事务包中的目的地址和设备ID1相同,则直接处理该事务包,不转发。(设备ID1是设备自身的ID,设备ID2是广播ID,用于接收广播事务);
- 事务包中的目的地址和设备ID1不同,但是和广播ID相同,并且落在数据包转发寄存器指定的地址范围内,则该事务包会被处理,同时也会被转发;
- 事务包中的目的地址和设备ID1或是广播ID都不同,但是在数据包转发寄存器指定的地址范围内,则该事务会被转发,但不被处理;
- 事务包转发寄存器给出了四段地址范围,如果某一个接收到的事务包中的目的地址和多段地址范围对应,则转发给优先级最高的输出端口;(输出端口0~3优先级逐次降低)
- 如果事务包中的目的地址和设备ID1或是广播ID都不同,也不在任何地址范围内,则该包会被销毁;
- 将转发寄存器中的上下边界赋予和本设备的设备ID相同的值也能使转发的功能失效。
本文是对TI的TMS320C645x DSP SRIO User’s Guide中5.10、5.11和2.3.15节内容的搬运
事务包转发寄存器(Packet Forwarding Register)
控制数据包转发的寄存器分为两类,分别对应8位设备地址和16位设备地址的情况
- PF_16B_CNTLn(n=0~3,与SRIO的端口没有对应关系,只是可以指定四段地址范围)
- D31-16 :16位可转发地址上边界
-
D15-0 :16位可转发地址下边界(具体转发机制在后面介绍)
- PF_8B_CNTLn
- D17-16: 转发输出端口,0~3对应SRIO的四个发送端口
- D15-8 :8位可转发地址上边界
-
D7-0: 8位可转发地址下边界
地址校验模式控制
- C645x系列的设备只通过一位来控制地址校验的模式。该位为SP_IP_MOD寄存器中的第26位(在手册中的5.91节介绍)若该位为0则只接收单播(unicast)事务,不接收广播事务,不转发;若该位为1,则能够接受广播事务,并根据条件转发。
- C645x系列的设备不会自动地将BASE_ID中的值复制到DEVICEID_REG1中,需要注意!
- 其他支持SRIO的设备支持能够自动向DEVICE_REG1中幅值,并且通过三位控制地址校验模式,因此相对来说,C645x系列设备的配置更加简单。
菊花链与包转发
“菊花链”与“包转发”我觉得讲的就是同一个东西。菊花链的拓扑结构就是比如我有多个设备需要向一个主设备发送事务包,将每个设备级联起来,只有一个子设备与主设备直接连接,而不是每个子设备与主设备都直接连接;子设备向主设备发送事务包需要靠中间的设备帮忙转发。这样的实现会引起不同位置设备的发送延迟不同。
地址校验流程
- 查看事务包的“TT”字段,判断该事务包为8位地址(00)或是16位地址(01);
- 事务包中的目的地址和设备ID1相同,则直接处理该事务包,不转发。(设备ID1是设备自身的ID,设备ID2是广播ID,用于接收广播事务);
- 事务包中的目的地址和设备ID1不同,但是和广播ID相同,并且落在数据包转发寄存器指定的地址范围内,则该事务包会被处理,同时也会被转发;
- 事务包中的目的地址和设备ID1或是广播ID都不同,但是在数据包转发寄存器指定的地址范围内,则该事务会被转发,但不被处理;
- 事务包转发寄存器给出了四段地址范围,如果某一个接收到的事务包中的目的地址和多段地址范围对应,则转发给优先级最高的输出端口;(输出端口0~3优先级逐次降低)
- 如果事务包中的目的地址和设备ID1或是广播ID都不同,也不在任何地址范围内,则该包会被销毁;
- 将转发寄存器中的上下边界赋予和本设备的设备ID相同的值也能使转发的功能失效。