基于 FT245BM 的 FPGA 与 PC 机 USB 通信接口电路设计

2017-08-18 78 0

USB 总线因其传输速度快、占用资源少以及真正的即插即用等诸多优点,受到了广大开发者的青睐,已经成为很多计算机设备的一种基本配置。目前被广泛采用的 USB 设备开发方案主要有以下两种:一是利用 USB 设备端接口芯片加微控制器结构,如国内用得比较多的 Philips 公司的 PDIUSBD12/ISP1581 等;二是采用 USB 单片机。采用这两种方案要求开发者彻底理解 USB 协议的细节并编写出固件程序,而固件的运行要占用微控制器的时间和空间资源,实际通信效率不会很高;也有人用 FPGA 实现固件的功能,但这种方案开发和调试的难度很大。

本设计用 FPGA 外部直接连接一片 USB 协议芯片 FT245BM,实现了 FPGA 与 PC 机的 USB 通信。该方法不用微控制器,减少了元器件的个数,并且占用 FPGA 资源很少,FPGA 仍然可以实现其他逻辑功能,系统设计的灵活性很大。

FT245BM 的内部结构及详细引脚介绍读者可以参考其他相关资料,在此仅对与本设计相关的内容作介绍。FT245BM 内含两个 FIFO 数据缓冲区,一个是 128 字节的接收缓冲区,另一个是 384 字节的发送缓冲区,它们用作 USB 数据与并行 I/O 口数据的交换缓冲区。FIFO 实现与外界(微控制器、FPGA 或其他器件)的接口,主要通过 8 根数据线 D0~D7、读写控制线 RD# 和 WR# 以及 FIFO 发送缓冲区空标志 TXE#、FIFO 接收缓冲区非空标志 RXF# 来完成数据交互。TXE# 为低表示当前 FIFO 发送缓冲区为空,为高表示当前 FIFO 发送缓冲区满或者正在存储前一个字节,禁止向缓冲区中写数据;RXF# 为低表示当前 FIFO 的接收缓冲区非空;RD# 信号由低变高将从 FIFO 缓冲区中读取数据,当 RD# 变低时将数据送到数据总线;RXF# 为高时不能从 FIFO 读数据。读写时序如图 1 所示。

基于 FT245BM 的 FPGA 与 PC 机 USB 通信接口电路设计

图 1 FT245BM 写数据时序

FT245BM 与 FPGA 的接口电路设计

图 2 是 FT245BM 的 USB 与 FPGA 的接口电路,FPGA 选用 ALTERA 公司的 EP1K50TC144。其中 D0~D7 是 FT245BM 与 FPGA 交换数据的数据总线,USB_RD#、USB_WR#、USB_TXE#、USB_RXF# 是相关的控制总线。

基于 FT245BM 的 FPGA 与 PC 机 USB 通信接口电路设计

图 2 FT245BM 与 FPGA 的接口电路

相关文章

压敏电阻的参数、特性与应用
基于 STC12C 与 SIM300 的智能家电防盗系统电路设计
基于 nRF24L01 与 DHT11 的无线温湿度测试系统电路设计
电冰箱电子温控器的原理与半自动除霜电路
基于 586-Engine 的无人机飞行控制器电路设计
三极管开关电路的改进接法:加速电容、图腾柱与驱动电路

发布评论