这是一种slave bus, 用于处理多通道连接.
支持4个双向通道, 每个通道有1个USB OUT和1个 USB IN 终端(endpoint).
通道1~3的通道序号对应于 USB终端序号2~5.
FIFO OUT: 数据从USB host(电脑) 到USB phy芯片,并从phy芯片输出给FPGA;
FIFO IN: 数据从FPGA输入phy芯片,并传输给host(电脑)
WR_N: bus master(FPGA)到bus slave(USB phy芯片) 的数据传输请求信号, 低有效.
RXF_N: bus slave 到bus master数据接收告知收悉信号, 低有效.
TXE_N (可选信号, master可以忽略该信号): bus slave 到 bus master FIFO idle 状态有效信号, 低有效.
DATA[31:0]: 32 bit data bus. 当bus在idle状态,master (FPGA) 将DATA[31:16],DATA[7:0]和BE[3:0] 输出为logic"1", 并且bus salve(phy 芯片) 将DATA[15:8]设置为 FIFO staus. DATA[15:12] 提供4 OUT 通道的FIFO status, DATA[11:8]提供4个IN 通道的FIFO 状态. 这些信号都是低有效.
例如, 在idle状态, DATA[12]和DATA[8] 都是logic "0", 表示USB OUT 通道1 FIFO data 是可以发送, USB IN 通道1FIFO 空间是空的. 外部的bus master基于通道FIFO的状态,通过设置WR_N来启动一次传输. WR_N设置之后的第一个传输周期是command phase, 紧跟着是RXF_N设置之后的data phase.在command阶段, bus master发送数据传输通道序号(DATA[7:0]) 和读写命令(BE[3:0]). BE[3:0] = `h0 和 BE[3:0] = `h1分别表示master 读和写.命令阶段之后以及数据传输结束的时候, DATA[31:0]也是必要的回应信号.
下面的波形图显示了FT601 master在通道1读10个字节的传输过程. 在command阶段和传输结束后,有turn-a-round周期. 在这次传输中, BE[3:0] 显示,在最后一个字获取时,D2上的低2个字节有效.