微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > SPI4.2总线应用和调试经验谈

SPI4.2总线应用和调试经验谈

时间:05-09 来源:互联网 点击:

假如某个端口接收端队列的长度是48,MaxBurst1是12,MaxBurst2是8。那么当该模块接收数据时,如果由于某些原因(例如软件来不及处理),接收队列只剩下12个空位,也就是接收队列已经有48-12=36个空位被占用时,它将通过状态链路向对端发送“饿”的状态信号(反压信号)。对端收到该信号后实施流控策略,根据本端发送端的MaxBurst1设置值发送数据,该值表示接收到“饿”状态信号后最多还可以发送的数据块数目。所以接收端的MaxBurst1 的值一定要大于对端发送端的MaxBurst1,并且要留出一定的余量,因为数据在链路上的传输也是需要时间的。同理,接收端的MaxBurst2要大于对端发送端的MaxBurst2。值得注意的是,流控是基于逻辑端口的,而不是整条链路。

  为保证不发生接收端FIFO队列溢出等问题,尽量将接收端的MaxBurst1和MaxBurst2设置大一些, 只要小于FIFO入口总数就可以,而发送端MaxBurst1和MaxBurst2的 设置不要超过本端接收能力。

  如果出现EOP(结束包)和SOP(起始包)错误或缺失,或者其他错包(例如包长变短、帧校验错误等),但没有DIP4 错误,该怎么办?这类问题一般出现在FIFO队列设置上,尤其是接收端的FIFO队列可能溢出,从而丢失了某些数据块,可以通过以下3种方法来检测和解决:

  ① 通过查看接收端FIFO溢出标志来判断FIFO队列是否溢出;

  ② 通过调整接收端的MaxBurst1和MaxBurst2来防止FIFO队列溢出;

  ③ 如果方法②的调整足够大,还有此问题,可以查看对端是否收到反压信号,以及对端的状态等。

  为了方便,通常将发送端的MaxBurst1和MaxBurst2设置为相同数值,将接收端的MaxBurst1和MaxBurst2也设置成相同数值。

  结语

  随着处理器的速度越来越快,处理器集成的内核越来越多,处理器与外围器件之间,处理器之间,以及外围器件之间的连接速度逐渐成为制约平台性能的瓶颈。许多芯片同时集成了多个总线接口,例如XLR732同时拥有SPI4.2、HT、以太网3种总线接口。SPI4.2总线在与其他总线的竞争中体现出了强大的生命力,希望本文所介绍的经验对正在应用或计划应用SPI4.2总线的同行有所帮助。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top