FT232H、FT2232H、FT600 等芯片的 245-sync-fifo 模式 控制器,实现FPGA与PC机的高速通信
245-sync-fifo 模式 是 FTDI 公司 USB 系列芯片 的一种高速字节流传输模式。该库将 245fifo 控制器 封装成 Verilog模块 ,留出 精简接口 ,方便 Verilog 开发者使用。并提供几个 Python程序 用于测试。下图是该模块的结构框图。
芯片型号 | FT232H / FT2232H* | FT600Q | FT601Q |
---|---|---|---|
USB模式 | USB2.0 HS | USB3.0 SS | USB3.0 SS |
理论带宽 | <60MBps | <200MBps | <400MBps |
实测带宽 | 42MBps | 130MBps | 理论可用,笔者未测 |
* FT232H 与 FT2232H 高度相似, FT2232H 的 channel A 可配置成与 FT232H 完全相同的 245-sync-fifo 接口 。 本库的FT232H示例也适用于FT2232H
下图是模块的接口图,模块顶层文件是 ./RTL/ftdi_245fifo.sv ,它调用了 ./RTL/fifos.sv ,除此之外无其它依赖。
FTDI chip Interface 应连接到 FTDI 芯片对应的 FPGA 管脚上。注意以下几点:
Send Interface 是用户发送接口,该接口用于从 FPGA 发送数据到 Host-PC 。时序类似 AXI-stream slave ,如下图左。注意以下几点:
Recieve Interface 是用户接收接口,该接口用于接收从 Host-PC 到 FPGA 的数据。时序类似 AXI-stream master ,如上图右。注意以下几点:
模块有几个 parameter ,用于指定用户想要的参数 ,如下表。
parameter | 默认值 | 含义 | FT232H 推荐值 | FT600 推荐值 | FT601 推荐值 |
---|---|---|---|---|---|
INPUT_DSIZE | 1 | 发送接口的数据宽度(itdata的宽度),单位为Byte,用户自由调整,必须是 2^n 倍数 | 1,2,4,8 | 1,2,4,8 | 1,2,4,8 |
INPUT_ASIZE | 10 | 模块内发送缓存的深度 = 2^INPUT_ASIZE | >=8 | >=9 | >=10 |
OUPUT_DSIZE | 1 | 接收接口的数据宽度(otdata的宽度),单位为Byte,用户自由调整,必须是 2^n 倍数 | 1,2,4,8 | 1,2,4,8 | 1,2,4,8 |
OUTPUT_ASIZE | 9 | 模块内接收缓存的深度 = 2^OUTPUT_ASIZE | >=7 | >=8 | >=9 |
FTDI_DSIZE | 1 | USB 芯片的数据线宽度,单位为Byte,取决于芯片型号 | 1 | 2 | 4 |
要运行基于 FT232H 或 FT2232H 的 FPGA 示例,参见:
要运行基于 FT600 的 FPGA 示例,参见:
要运行 RTL 仿真,参见:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。