先前在TMS320F28335外部接口(XINTF)写缓冲及空间切换一文中曾经介绍过,当从XINTF的一个空间切换到另一个空间时,为了能够及时地释放总线给其他设备使用,一些慢速外设可能需要额外的周期。空间切换允许用户指定一个特殊的空间,可以在该空间与其他空间来回切换的过程中增加额外的周期,增加的周期数在XBANK寄存器中配置。
你需要基于XTIMCLK和XCLKOUT速率来决定增加的周期数目。共有一下三种情况:
1.XTIMCLK = SYSCLKOUT
当XTIMCLK等于SYSCLKOUT的时候,XBANK[BCYC]的选择是没有限制。
2.XTIMCLK = 1/2 SYSCLKOUT and XCLKOUT = 1/2 XTIMCLK
在这种情况下,只要XBANK[BCYC]的值不是4或者6,其他的任何值都是允许的。
3.XTIMCLK = 1/2 SYSCLKOUT and XCLKOUT = XTIMCLK
4.XTIMCLK = 1/4 SYSCLKOUT
延迟周期需要加在两个Zone访问之间,即延迟周期之前访问一个Zone,之后再访问另一个Zone。为了能够准确的将延迟周期加在两个访问之间,前一个空间总的访问时间要大于要加入延迟时间,这就要求配置的XBANK[BCYC]值要小于空间总的访问时间。
用下面的例子来说明一下:假定Zone7使能空间切换(XBANK[BANK] = 7),那么任何针对Zone7的访问,无论是读或者写,都会被加入延迟周期。而且该延迟周期要小于前一个空间总的访问周期。也就是说:
如果访问Zone0之后紧接着访问Zone7,那么Zone0的访问周期必须大于延迟周期;
如果访问Zone7之后紧接着访问Zone0,那么Zone7的访问周期必须大于延迟周期;
我们也可以用建立,激活,跟踪周期来确保访问时间长于延迟周期。由于XREADY只是延长了Zone的访问时间,所以此时并不用考虑它。具体关系如下:
如果X2TIMING=0,则就要满足以下两个条件:
– XBANK[BCYC] < XWRLEAD + XWRACTIVE + 1 + XWRTRAIL
– XBANK[BCYC] < XRDLEAD + XRDACTIVE + 1 + XRDTRAIL
如果X2TIMING=1,就要满足以下两个条件:
– XBANK[BCYC] < XWRLEADx2 + XWRACTIVEx2 + 1 + XWRTRAILx2
– XBANK[BCYC] < XRDLEADx2 + XRDACTIVEx2 + 1 + XRDTRAILx2
在技术手册中,TI列出了部分真值表。有兴趣的可以找到参考一下,我在这里就不一一列出了。