1 Star 0 Fork 1

卖菇凉小蘑菇 / FTDI-245fifo-interface

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

test docs

FTDI 245fifo interface

FT232HFT2232HFT600 等芯片的 245-sync-fifo 模式 控制器,实现FPGA与PC机的高速通信

简介

245-sync-fifo 模式FTDI 公司 USB 系列芯片 的一种高速字节流传输模式。该库将 245fifo 控制器 封装成 Verilog模块 ,留出 精简接口 ,方便 Verilog 开发者使用。并提供几个 Python程序 用于测试。下图是该模块的结构框图。

模块结构

特点

  • 精简接口:发送接口类似 AXI-stream slave , 接收接口类似 AXI-stream master
  • 收发分离:FTDI 芯片与 FPGA 之间的接口是半双工的,该模块控制收发分时复用,实现 收发接口互相独立
  • 跨时钟域:FTDI 芯片有自己的时钟。笔者用异步 FIFO 实现时钟域转换,使得收发接口可使用 自定义时钟
  • 位宽变换:FTDI 芯片数据位宽是固定的,但本模块实现了位宽变换。收发接口的 位宽可自定义
  • 移植性:纯 SystemVerilog 编写,易于移植和仿真

性能测试结果

芯片型号 FT232H / FT2232H* FT600Q FT601Q
USB模式 USB2.0 HS USB3.0 SS USB3.0 SS
理论带宽 <60MBps <200MBps <400MBps
实测带宽 42MBps 130MBps 理论可用,笔者未测

* FT232HFT2232H 高度相似, FT2232H 的 channel A 可配置成与 FT232H 完全相同的 245-sync-fifo 接口 。 本库的FT232H示例也适用于FT2232H

  • FT232H 性能测试: FPGA向Host-PC持续发送数据,稳定工作在 42MBps 不丢失字节,同时支持少量的Host-PC向FPGA发送数据。
  • FT600 性能测试: FPGA向Host-PC持续发送数据,稳定工作在 130MBps 不丢失字节,同时支持少量的Host-PC向FPGA发送数据。

接口与时序

下图是模块的接口图,模块顶层文件是 ./RTL/ftdi_245fifo.sv ,它调用了 ./RTL/fifos.sv ,除此之外无其它依赖。

模块接口图

FTDI chip Interface

FTDI chip Interface 应连接到 FTDI 芯片对应的 FPGA 管脚上。注意以下几点:

  • 关于引脚分配:FTDI USB 芯片工作在 sync-245-fifo 模式 时,引脚命名参加芯片 Datasheet,以 FT232H 为例,见 FT232H DataSheet 第9页。
  • 模块的 usb_be 是独热码,仅在 FT600 和 FT601 中有效,使用其它芯片时请忽略。
  • FTDI chip Interface 的时序图见 Datasheet,例如 FT232H DataSheet 第23页。 该时序由模块维护,不需要用户关注。

Send Interface (类似 AXI-stream slave)

Send Interface 是用户发送接口,该接口用于从 FPGA 发送数据到 Host-PC 。时序类似 AXI-stream slave ,如下图左。注意以下几点:

  • iclk 时钟 由用户指定,时钟频率不限,所有信号应该在 iclk 上升沿更新或捕获。
  • itvalid (发送请求) 为 1 时,说明用户想发送一个数据到 Host-PC。
  • itready (发送允许) 为 1 时,说明模块已经准备好接受发送数据。itready=0 时,模块FIFO满,不能接受更多数据。
  • itvaliditready 是一对握手信号。二者同时为 1 时, itdata 成功写入。
  • Send InterfaceAXI-stream 相比,没有 tlast 信号,因此没有包的概念,是单纯的流。

发送接口和接收接口的时序图

Recieve Interface (类似 AXI-stream master)

Recieve Interface 是用户接收接口,该接口用于接收从 Host-PC 到 FPGA 的数据。时序类似 AXI-stream master ,如上图右。注意以下几点:

  • oclk 时钟 由用户指定,时钟频率不限,所有信号应该在 oclk 上升沿更新或捕获。
  • otvalid (发送请求) 为 1 时,说明模块想发送一个数据给用户。otvalid=0 时,模块FIFO空,不能读出更多数据。
  • otready (发送允许) 为 1 时,说明用户已经准备好接受数据。
  • otvalidotready 是一对握手信号。二者同时为 1 时, otdata 成功读出。
  • Recieve InterfaceAXI-stream 相比,没有 tlast 信号,因此没有包的概念,是单纯的流。

模块参数

模块有几个 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

QuickStart

要运行基于 FT232HFT2232H 的 FPGA 示例,参见:

要运行基于 FT600 的 FPGA 示例,参见:

要运行 RTL 仿真,参见:

拓展资料

MIT License Copyright (c) 2019 Xuan Wang Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

FPGA-based USB fast communication using FT232H/FT600 chip. 展开 收起
SystemVerilog 等 2 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/qq1847123212/FTDI-245fifo-interface.git
git@gitee.com:qq1847123212/FTDI-245fifo-interface.git
qq1847123212
FTDI-245fifo-interface
FTDI-245fifo-interface
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891