FTDI FT245 同步/异步 FIFO 桥
该组件提供了从 FTDI 异步或同步 FIFO 接口(例如在 FT245 或 FT2232 上找到)到 AXI4 主设备和 GPIO 接口的桥接。
FT2232 等设备必须使用 FTDI 的 FT_PROG EEPROM 编程工具切换到 FIFO 模式。
支持它的 FTDI 设备的异步和同步模式之间的选择是在运行时通过 ftdi_set_bitmode API 完成的。
该组件支持读取和写入到字节级别的粒度。
支持的 FTDI 设备
FTDI 设备 | 频道数 | 异步 FIFO 支持 | 同步 FIFO 支持 |
---|---|---|---|
FT245B | 1 | 真的 | 错误的 |
FT245R | 1 | 真的 | 错误的 |
FT240X | 1 | 真的 | 错误的 |
FT2232D | 2 | 真的 | 错误的 |
FT232H | 1 | 真的 | 真的 |
FT2232H | 2 | 真的 | 真的 |
有关详细信息,请参阅FTDI 的TN_167 FIFO 基础知识。
测试
在仿真下验证并在 FPGA 上验证。
在使用 FTDI FT2232HL(异步模式)的 miniSpartan6+ 板上使用,并使用带有 FTDI FT2232HL(同步模式)的 Xilinx Artix 7 板。
配置
- 顶部:ftdi_bridge
- 时钟:clk_i – 必须从 FTDI 设备获取模式 = SYNC
- 复位:rst_i – 异步,高电平有效
- 参数 MODE -“SYNC”或“ASYNC”FT245 模式
- 参数 CLK_DIV – 时钟分频器(最小值为 2)(仅对 MODE=”ASYNC” 有效)
- 参数 GP_OUTPUTS – GPIO 输出数量 (1 – 8)
- 参数 GP_INPUTS – GPIO 输入的数量 (1 – 8)
- 参数 AXI_ID – 要使用的 AXI ID
尺寸/速度
对于异步模式;
- ~220 次失败 / 320 LUT (Spartan 6)
- 在 Xilinx Spartan 6 LX9 上约 200MHz(速度 -3)
对于同步模式;
- ~275 次失败 / 598 个 LUT (Spartan 6)
- 在 Xilinx Spartan 6 LX9 上约 165MHz(速度 -3)
实例化示例
此示例适用于 Xilinx FPGA;
wire [7:0] ftdi_data_in_w;
wire [7:0] ftdi_data_out_w;
ftdi_bridge
#(
.MODE("SYNC")
)
u_bridge
(
.clk_i(ftdi_clk_i)
,.rst_i(rst)
,.mem_awvalid_o(...)
,.mem_awaddr_o(...)
,.mem_awid_o(...)
,.mem_awlen_o(...)
,.mem_awburst_o(...)
,.mem_wvalid_o(...)
,.mem_wdata_o(...)
,.mem_wstrb_o(...)
,.mem_wlast_o(...)
,.mem_bready_o(...)
,.mem_arvalid_o(...)
,.mem_araddr_o(...)
,.mem_arid_o(...)
,.mem_arlen_o(...)
,.mem_arburst_o(...)
,.mem_rready_o(...)
,.mem_awready_i(...)
,.mem_wready_i(...)
,.mem_bvalid_i(...)
,.mem_bresp_i(...)
,.mem_bid_i(...)
,.mem_arready_i(...)
,.mem_rvalid_i(...)
,.mem_rdata_i(...)
,.mem_rresp_i(...)
,.mem_rid_i(...)
,.mem_rlast_i(...)
,.ftdi_rxf_i(ftdi_rxf_i)
,.ftdi_txe_i(ftdi_txe_i)
,.ftdi_data_in_i(ftdi_data_in_w)
,.ftdi_siwua_o(ftdi_siwua_o)
,.ftdi_wrn_o(ftdi_wrn_o)
,.ftdi_rdn_o(ftdi_rdn_o)
,.ftdi_oen_o(ftdi_oen_o)
,.ftdi_data_out_o(ftdi_data_out_w)
);
assign ftdi_data_in_w = ftdi_data_io;
assign ftdi_data_io = ftdi_oen_o ? ftdi_data_out_w : 8'hZZ;
下载地址:
没有回复内容