3、USB 传输系统 (FX3 / GPIF) 视频 | 2026-04-29 07:29 | 阅读: 28 ### 3、USB 传输系统 (FX3 / GPIF) 我们可以从下图中看到**从 USB3.0 到 FPGA 全流程数据流转的电路原理图**: **1)全局数据流架构 (双向传输)** * **下行流 (电脑 → FPGA):** 用于发送控制指令、配置参数或输出波形数据。 * **路径:** PC USB口 $\rightarrow$ Type-C线缆 $\rightarrow$ **VL160** (正反插切换) $\rightarrow$ **FX3** (协议转换) $\rightarrow$ **GPIF II 总线** (32位并行) $\rightarrow$ **FPGA**。 * **上行流 (FPGA → 电脑):** 用于传输传感器数据、高速图像或处理后的结果。 * **路径:** **FPGA** $\rightarrow$ **GPIF II 总线** (以 100MHz 频率压入) $\rightarrow$ **FX3** (放入 512KB 缓存) $\rightarrow$ **VL160** $\rightarrow$ **USB 3.0 链路** (5Gbps) $\rightarrow$ PC。 <sub>**备注:**</sub> > **GPIF 总线**:`GPIF_D[0:31]` 是 **32 位宽** 的高速数据总线,连接到 Cypress FX3 芯片。 > **IFCLK**:100 MHz 的接口时钟。如果你发现数据传输丢包,通常要检查这个时钟域的代码。 </br> **2)同时还具备 FPGA 固件烧录功能 (Bin 文件下载)** 这是系统启动的第一步。由于 FPGA 掉电程序会丢失,FX3 充当了“搬运工”的角色: 1. **指令下发:** PC 端上位机通过 USB 发送一个特殊的 Vendor Command(供应商命令)给 FX3。 2. **触发复位:** FX3 接收指令后,拉低 **FPGA_CFG_PROG**,强迫 FPGA 进入待命状态。 3. **串行灌入:** FX3 将收到的 `.bin` 数据转换成串行流,通过 **FPGA_CFG_SCLK**(时钟)和 **FPGA_CFG_SDIN**(数据)发送。 4. **校验完成:** 当 FPGA 内部数据接收完毕并校验通过,它会拉高 **FPGA_CFG_DONE**。 5. **逻辑激活:** FX3 感知到 **DONE** 信号后,正式切换到高速 GPIF II 模式,开始数据业务。 ![][p9] </br> 其中涉及的核心组件角色总结如下: | 组件 | 核心职能 | 关键信号线 | | :--- | :--- | :--- | | **USB Type-C 口** | 物理接口 | VBUS, CC1/2, TX/RX 差分对 | | **VL160 (MUX)** | **方向纠错**:确保 USB 线反着插时,信号依然能接到 FX3 对应的针脚上。 | CC1/2 (探测), SEL (切换控制) | | **CYUSB3014 (FX3)** | **协议翻译官**:把复杂的 USB 3.0 协议转换成 FPGA 好理解的并行总线。 | FX3_DQ[0:31], PCLK (100MHz), I2C (连 EEPROM) | | **FPGA** | **运算中心**:负责极速的数据处理、算法执行或硬件接口控制。 | GPIF II 总线, 配置引脚 (PROG/DONE) | </br> **备注:CYUSB3014-BZXC** 是这套系统的核心“搬运工”。它是 Infineon(原 Cypress)生产的 **EZ-USB® FX3™** 系列芯片,也是目前工业界最成熟的 **USB 3.0 外设控制器** 之一。 --- **CYUSB3014-BZXC 介绍:** 它之所以被广泛用于 FPGA 数据采集系统,是因为它解决了一个核心痛点:**如何让 FPGA 的海量并行数据,无损、高速地跑在 USB 线缆上。** CYUSB3014 不仅仅是一个接口芯片,它内部其实藏着一个强大的“大脑”和“高速公路”: 1. **ARM926EJ-S 内核:** 内部集成了一个 200 MHz 的 ARM 处理器。它负责处理 USB 枚举、控制指令和复杂的电源管理,让 FPGA 只需要专心处理数据。 2. **GPIF™ II (General Programmable Interface):** 这是它的“杀手锏”。它是一个**可编程的状态机接口**,在原理图中连接了 `FX3_DQ[0:31]`(32位数据总线)。 * 它能与 FPGA 实现无缝对接。 * 支持高达 **100 MHz** 的接口时钟。 * 理论物理带宽可达 **32 bit × 100 MHz = 3.2 Gbps**,实测有效数据吞吐量通常能稳定在 **350 MB/s 以上**。 3. **512 KB 集成 SRAM:** 用于数据缓冲。这允许在 USB 忙碌时,暂时存放 FPGA 传过来的数据,防止丢包。 <div style="display: flex; align-items: center; gap: 10px;"> <img src="https://tuchuang.beautifulzzzz.com:3000/?path=202603/cyusb3014_bzxc_arch.png"></img> <img src="https://tuchuang.beautifulzzzz.com:3000/?path=202603/cyusb3014_bzxc_arch2.png"></img> <img src="https://tuchuang.beautifulzzzz.com:3000/?path=202603/cyusb3014_bzxc_arch3.png"></img> </div> --- **备注:** 此部分全部电路都在 `USB3_PHY.SchDoc` 和 `USB3_PWR.SchDoc` 中,是整个系统中最精妙、最复杂的地方。 </br> [p9]:https://tuchuang.beautifulzzzz.com:3000/?path=202603/B210_SCH_USB3_PHY_ICs.png