QSPI

Flexible AHB buffers

 为了减少AHB主设备的读取延迟,从串行闪存读取的数据被缓冲在灵活的AHB缓冲区中。有四个灵活缓冲区。
 每个缓冲区的大小都是可配置的,最小大小为0字节,最大大小为实例化的完整缓冲区的大小。                                             缓冲区0的大小定义为从0到qspi_buffind。缓冲区1的大小是从qspi_buffind到qspi_buf1ind,缓冲区2是从qspi_buf1ind到  qspi_buf2ind和buffer 3是从qspi_buf2ind到完整缓冲区的大小,这在芯片特定的quadspi信息中给出。 

AHB缓冲区相关设置
1. AHB 主设备。 可选地,通过设置QSPI_BUF3CR [ALLMST]位,可以将buffer3配置为“所有主”缓冲区。
当以这种方式配置buffer3时,当主设备访问 错过buffer0 - buffer2缓冲区 都将路由到buffer3。
2.数据字段,表示每次“错过”访问时从闪存中获取的数据量。

检查每个传入请求的主端口号,并将数据返回/提取到相应的关联缓冲区中。
每次访问超过缓冲区 都会导致控制器清除缓冲区并从串行闪存中获取QSPI_BUFxCR [ADATSZ]数据量。
因此,配置缓冲区大小不能大于ADATSZ,因为永远不会使用大于ADATSZ的位置。
对于任何AHB访问,QSPI_BFGENCR [SEQID]字段指向的序列用于启动闪存事务。 一旦从串行闪存读取请求的数量和闪存中读取的的相等,数据就会返回到主设备。
然而,控制器在预期下一个连续请求时继续预取其余数据。
图36-4显示了灵活的AHB缓冲区。

QSPI_BFGENCR [SEQID]字段指向LUT的索引。
有关详细信息,请参阅查找表

通过将QSPU_BUF0CR [HP_EN]位置1,可以选择将Buffer0配置为与高优先级主机相关联。

  • 注意

如果系统中启用了OTFAD,则高优先级功能将被禁用。

高优先级主机访问会暂停任何正在进行的预取事务。
高优先级主设备访问完成,则恢复暂停的事务(在任何其他AHB访问被接受之前)。
可以从序列挂起状态寄存器(QuadSPI_SPNDST)读取挂起缓冲区的状态。 

 

QSPI_第1张图片 

Suspend-Abort Mechanism 

高优先级的AHB主请求可以暂停任何低优先级的AHB访问。
低优先级正在进行的事务将以64位对齐边界处挂起。
在高优先级主服务器完成事务之后,将重新启动挂起的事务。
当事务处于挂起状态时,如果由同一挂起的主服务器进行的事务到达的位置与挂起的事务的位置不同,则也可以中止该事务。开始处理高优先级事务。

如果来自同一个主服务器的请求到达一个位置,而不是事务正在进行的位置,则任何正在进行的事务都将中止。
中止可以在任何时间点发生。

HBURST Support 

QuadSPI控制器支持AHB接口上的HBURST和HSIZE。

  • HBURST表示转移是否构成突发传输的一部分。

     支持四个,八个和十六个节拍突发,并且突发可以是递增或以包的形式。

  • HSIZE表示数据传输大小; 支持8,16,32和64位数据大小。

在WRAP访问的情况下,如果没有任何传入的非顺序AHB访问的缓冲区命中,QuadSPI会生成对串行闪存的对齐访问。
如果存在缓冲区命中,则haddr行中的传入地址将按原样锁存。
如果总突发大小大于数据预取大小,则生成错误响应并设置QSPI_FR [AIBSEF]。
当ADATSZ被编程为零时,数据perfetch大小可以由QSPI_BUFxCR [ADATSZ]或SEQID字段指向的序列中提到的数据大小来定义。
下图显示了一些示例:

  • Note

预取大小的设置不得小于任何外部接口开始处理所需的最小数据。

QSPI_第2张图片 

你可能感兴趣的:(QSPI)