8.1 器件ID和指令集表( 四 )


图22a 双IO快速读指令(首次指令,或者上次指令M5~4!=10,仅SPI模式下支持)
图22b 双IO快速读指令(上次指令M5~4=10,仅SPI模式下支持)
8.2.11 四IO快速读(0xEB)
四IO快速读(0xEB)类似于双IO快速读(0xBB)指令,区别在于本指令使用4条IO线,IO0、IO1、IO2和IO3来传输地址和数据,以及需在数据输出之前插入额外的4个无效周期 。这降低了指令开销,从而允许更高速的随机访问或者XIP 。在使用四IO快速读之前,QE位必须使能 。
四IO快速读连同“连续读模式”
四IO快速读指令可以更进一步地降低指令开销,这一点可以通过设置“连续读模式”位(M70)来实现,这些位在24位地址传输之后,参考图24a 。高4位(M74)控制着下一次四IO快速读指令的长度,指示下次指令是否包含第一个字节指令码 。低4位(M3~0)不关心 。但是,在第一个数据传输时钟的下降沿之前这些IO必须已经是高阻态 。
如果“连续读模式”位M54=(1,0),则下一次四IO快速读指令(也就是本次/CS拉高然后再拉低)就不再需要1字节长度的指令码0xEB,参考图24b 。这样就从指令序列中减少了八个时钟周期,从而在/CS拉低后,立即输入读取地址 。反之如果M54不等于(1,0),则下一次指令仍旧需要首个字节的指令码,从而成为普通操作 。建议下条指令时,在IO0上输入0xFF(8个周期),从而确保M4=1,然后器件进入正常的操作模式 。
图24a 四IO快速读指令(首次指令,或者上次指令M5~4!=10,仅SPI模式下支持)
图24b 四IO快速读指令(上次指令M5~4=10,仅SPI模式下支持)
标准SPI模式下四IO快速读,连同“8/16/32/64字节回环”
在四IO快速读指令(0xEB)之前,还可以先发送“设置回环突发”(0x77)指令,从而使得本指令的读取访问,总是在一个页的指定区域之内循环 。“设置回环突发”(0x77)指令可以打开或者关闭接下来的四IO快速读指令的回环读取功能 。当该功能打开时,访问的数据会被限制在一个256字节页中的8/16/32/64字节段落内 。读取操作从指令指定的地址开始,一旦内部自动累加的地址触及到8/16/32/64字节段落的边界,输出将会自动回到段落的起始位置,除非/CS信号拉高以终止访问 。
该功能使得使用Cache的应用程序可以快速地取得关键地址,然后将cache使用固定长度的数据(8/16/32/64)填充,无需发出多次读指令 。
“设置回环突发”指令设置3位“回环位”,W6-4 。W4位用来使能或者禁止回环访问功能,W6-5用来指定位于一个页中的回环长度 。具体可参考8.2.24节 。
QPI模式下的四IO快速读
四IO快速读在QPI模式下同样支持,见图19c 。当QPI模式使能时,无效时钟周期数通过设置读参数(0xC0)指令来设置,具体设置多少,取决于应用对最高访问速度和最小的访问延时的考虑 。通过读参数位P[5:4]的设置,这个无效时钟周期数可以是2,4,6,8 。上电或者复位后该值缺省是2 。在QPI模式下,“连续读模式”位M7-0仍然建议作为无效时钟周期 。缺省设置下,“连续读模式”之后紧接着就是数据 。
“连续读模式”特性在QPI模式下使用四IO快速读指令时仍然有效 。请参考前页描述 。
“回环”特性在QPI模式下使用四IO快速读指令时无效 。如果一个读操作需要读取固定长度的数据并且可以回环读,则必须使用专用的“回环突发读”(0x0C)指令 。参考8.2.45 。
图24c 四IO快速读指令(首次读,或者上次读M5-4!=10,QPI模式下)
8.2.12 四IO字读取(0xE7)
四IO字读取(0xE7)指令类似于四IO快速读指令(0xEB),区别在于本指令发出的地址的最低位(A0)必须为0,并且在数据输出之前仅需要2个无效时钟周期 。四IO模式在使用高速随机访问的代码XIP应用中可以较大地降低指令开销 。使用本指令之前必须设置QE位 。