USB3.0的GPIF II标志配置

1、标志可被配置为空、满、一部分空或一部分满信号。这些信号并非由GPIF II状态机控制,而是由EZ-USB FX3内部的DMA硬件引擎控制
标志将根据(初始化套接字过程中所配置的)套接字方向来指示空或满状态。因此,如果从套接字读取数据,标志将表示空/未空状态;如果对套接字写入数据,标志将表示满/未满状态。
2、标志类型:
     1、专用线程标志   2、当前线程标志     3、局部标志
USB3.0的GPIF II标志配置
局部标志:配置局部标志的第二步是指定固件项目中的标志水印值。在cyfxslfifo.c文件中,添加一个CyU3PgpifSocketConfigure() API调用,以指定水印值。在调用CyU3PGPIFLoad() API后可立即调用该API
水印值将决定何时**局部标志
3、使用局部标志情况下的通用公式
**局部标志后,应使用下面公式来计算将要读/写的数据字数量。
注意:在CyU3PgpifSocketConfigure() API中指定的水印值的单位为32位数据字。
1. 当外部主设备对同步从设备FIFO进行写入时:
 
(a) 时钟沿到来(这时,对处于低电平的局部标志进行采样)后将要写入的数据字的数量= 水印值x (32/总线宽度) – 4
2. 当外部主设备对同步从设备FIFO进行读取时:
(a) 时钟沿到来(这时,对处于**状态的局部标志进行采样)后可用于读取的数据字的数量(SLOE#维持**时) = 水印值x (32/总线宽度) – 1
(b) 已包含SLRD#置低到数据在总线上有效的两个周期的延迟。因此,时钟沿到来(这时,对处于**状态的局部标志进行采样)后维持**SLRD#的周期数=水印值*(32/总线宽度)-3
 
4、使用局部标志时的其他注意事项:
a、局部标志仅用于决定传输结束的时间。必须在开始传输时监控满/空标志,以确保套接字的可用性。这意味着,不能单独使用局部标志,而必须和满/空标志结合使用。
b、如果外部主设备能够执行一个计数机制,并始终写入与EZ-USB FX3 的 DMA 缓冲区大小相同的数据量,就能完全避免使用局部标志。外部主设备应计算将要写入或读取的数据量,并保证该计数值不超过创建 DMA 通道时所设置的缓冲区大小。在这种情况下,应通过监控满 /空标志来决定开始传输的时间。                     水印值和缓冲区的大小有关
c、如果尚未执行上面介绍的计数机制,并且使用了一个局部标志,请按照下面各步骤的其中一个进行操作:
     如果外部主设备始终使用固定的数据量进行突发传输,那么,必须在选择水印值时考虑到该突发的大小。例如,如果外部主设备始终进行8个字的突发写入,则必须设置水印值,使之满足下面条件:当EZ-USB FX3的DMA缓冲区中有8字突发的空间,标志将转为低电平。在局部标志转为低电平后,外部主设备可写入一个完整的8字突发。对于在16位模式下的写操作(对从设备FIFO进行)方向,请将水印值设为‘6’。
     前一步骤的备用步骤是,在局部标志变为零后,外部主设备不会执行突发访问,而切换到单周期访问模式。然后,在每个周期,外部主设备将在写入前先检查满/空标志,以确保缓冲区是可用的。