0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一种基于FPGA的FT232H接口通信开发方案

FPGA之家 来源:FPGA之家 2023-07-05 09:56 次阅读

概述

本文主要介绍一种基于FPGA的FT232H接口通信开发方案。传统的USB通信开发对工程人员的要求比较高,除了上层应用软件以外,还需要掌握一定的USB传输协议、固件编程以及底层驱动等等。对于FPGA固件开发人员来说,我只关心数据如何可以正确的收发,说白了就是给我说清楚接口交互时相关信号之间的时序关系即可,其他的内容并不是这么关心。FTDI公司的FT232H应运而生,他把USB的相关协议封装在芯片内部,只把数据端口部分开发给工程开发人员。与市面上另外一款USB芯片cypress的CY7C68013)相比,FT232H在模式配置上,有官方提供的工具软件直接进行模式配置,而不需要像前者那样,还要编写模式配置的相关代码,从而大大提高开发效率。

接口芯片FT232H

FT232H是一款单通道的高速USB转UART/FIFO芯片,支持USB2.0协议。通过配套的软件可以配置成不同的应用模式,如下图所示:

ad9bb44c-1ace-11ee-962d-dac502259ad0.png

ada40e94-1ace-11ee-962d-dac502259ad0.png

FT232H的内部结构

从图1中我们可以了解到,FT232H芯片内部可以划分为UTMI_PHY、USB_protocol and FIFO ctrol、Tx/Rx Buffer、MPSSE/Multi_purpose UART/FIFO controler以及EEPROM_interface这几部分。其中MPSSE/Multi_purpose UART/FIFO controler是面向用户设计的IO,通过配置成不同的模式,管脚对应的定义不一样。

我们通过把FT232H配置成同步FIFO模式,已达到最快的传输速率。

adaf19b0-1ace-11ee-962d-dac502259ad0.png

FIFO模式下的拓扑结构

软件设计

芯片工作模式配置

FT232H在出厂的时候,默认是UART模式,配置长同步FIFO模式,需要通过官方提供的配置软件FT_PROG进行配置,配置过程十分简单,如下:

adc28c34-1ace-11ee-962d-dac502259ad0.png

adccc762-1ace-11ee-962d-dac502259ad0.png

adeb5c72-1ace-11ee-962d-dac502259ad0.png

如上图所示,配置过程大体上可以分为上述3个步骤。需要注意的是在进行第一步之前,PC上需要安装好相应的驱动,才能够识别出芯片;还有一个需要注意的地方是,Property中product_desc里面的值可以自己修改,但是上位机一定要与之对应,否则编写的上位机软件有可能打不开设备。

代码设计

adf71c10-1ace-11ee-962d-dac502259ad0.png

同步FIFO模式下的读写时序关系

发送端(FPGA--->USB--->PC)

ae16c0b0-1ace-11ee-962d-dac502259ad0.png

通常来说,为了处理好异时钟域数据传输问题,都会在FPGA端例化一个FIFO来作为与USB接口交互的缓存。在数据发送有个需要注意的地方,当发送速率比USB传输速率快,FT232H内部缓存被填满的时候(TXE#被拉高),会出现丢数据情况。在处理的时候需要特别注意一下。

我们画一下相关时序就知道怎么回事了。

ae203226-1ace-11ee-962d-dac502259ad0.png

FIFO常规模式下时序图

从图中可以看出,FIFO的读使能持续了5个clk,由于FIFO的输出最少都有1个clk的延迟,所以这次数据传输只传输了4个有效数据,剩下一个数据只能由下一次传输,当然这种情况,在传输流式的数据是没有问题的,碰上我之前的项目,读写由上位机发起,并且读写的数据长度也由上位机决定的时候,就会出现上位机会少接收一个数据的现象。

那么有没有办法解决这种现象呢?答案是肯定的,我比较推荐的一种方法如下:

ae321f68-1ace-11ee-962d-dac502259ad0.png

First_word Fall through模式的时序

将例化FIFO的时候,设置成First_word Fall through模式就可以了,至于这种模式是什么,请自行度娘脑补一下。

ae442f96-1ace-11ee-962d-dac502259ad0.png

方法还有很多,只要时序对的上即可。

接收端(PC—>USB--->FPGA)

ae5cb278-1ace-11ee-962d-dac502259ad0.png

接收端的设计比较简单,这里就不展开论述了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21320

    浏览量

    593202
  • 芯片
    +关注

    关注

    447

    文章

    47788

    浏览量

    409144
  • 通信
    +关注

    关注

    18

    文章

    5706

    浏览量

    134396

原文标题:软件设计

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【紫光同创国产FPGA教程】【第二十八章】USB双向测速例程

    如何使用FTDI公司的FT232H驱动芯片进行USB数据传输,文中从底层FPGA、驱动层固件(FT232H固件)及上位机测试软件设计方面阐述了USB开发的整个流程。
    的头像 发表于 04-09 10:46 2w次阅读
    【紫光同创国产<b class='flag-5'>FPGA</b>教程】【第二十八章】USB双向测速例程

    完美高性能USB解决方案1

    R, FT232H, FT230X, FT231XUSB 转 FIFO :FT245B, FT245R,
    发表于 03-29 11:43

    UM232H-B是FT232H高速到串行/并行接口转换器的开发模块

    UM232H-B-01,用于FT232H单通道USB至串行/并行接口分线板的开发模块,带有母头。 UM232H-B是
    发表于 04-04 11:42

    FT232H单通道USB至串行/并行接口分线板开发模块UM232H-B-WE

    UM232H-B-WE,用于FT232H单通道USB至串行/并行接口分线板的开发模块,带有6条悬空引线,连接到信号焊盘。 UM232H-B是
    发表于 04-08 11:03

    用于FT232H单通道USB至串行/并行接口分线板的开发模块UM232H-B-NC

    UM232H-B-NC,用于FT232H单通道USB至串行/并行接口分线板的开发模块,仅带焊盘。 UM232H-B是
    发表于 04-09 09:20

    采用FT245BM和FPGA实现USB接口设计

    作者:孙立辉 刘院英 和志强、引言USB总线因其传输速度快、占用资源少以及真正的即插即用等诸多优点,受到了广大开发者的青睐,已经成为很多计算机设备的一种基本配置。目前被广泛采用的USB设备
    发表于 04-22 07:00

    采用FT245BM和FPGA实现USB接口设计

    作者:孙立辉 刘院英 和志强、引言USB总线因其传输速度快、占用资源少以及真正的即插即用等诸多优点,受到了广大开发者的青睐,已经成为很多计算机设备的一种基本配置。目前被广泛采用的USB设备
    发表于 04-26 07:00

    一种基于FPGA的光纤陀螺惯导系统温控电路接口设计

    摘要:本文介绍了一种基于FPGA的光纤陀螺惯导系统温控电路接口设计。主要说明了温控电路整体结构,温控电路工作流程,FPGA与外围电路的通信
    发表于 06-18 05:00

    基于FPGA技术的RS 232接口的时序逻辑设计实现

    摘要:RS 232接口是现在最常用的一种通信接口。随着FPGA技术的高速发展,
    发表于 06-19 07:42

    PIC32MX与FTDI FT232H接口如何同步并行

    有可能将PIC32MX(目前我有个运行@50Mhz)与FTDI FT232H接口。同步FIFO-并行(高达40MB/s)在这种模式下,FT232H输出
    发表于 04-29 07:16

    USB2.0高速至MPSSE SPI模块VA800A-SPI是个小型电子电路板

    板,使用FT232H。该设备处理所有USB信号和协议。该模块提供了一种快速、简单的方式将具有3.3伏数字接口的设备连接到USB。有关集成电路的全部详细信息,请参阅FT232H数据表DS
    发表于 10-14 16:55

    如何去实现一种高速通信接口的设计?

    一种FPGA与DSP的高速通信接口设计与实现方案
    发表于 06-02 06:07

    基于FT8U232BM的USB-HART通信接口开发

    基于FT8U232BM的USB-HART通信接口开发 Development of FT8U232BM Based USB-HART C
    发表于 03-16 11:04 60次下载

    基于FT8U232BM的USB-HART通信接口开发

    基于FT8U232BM的USB-HART通信接口开发
    发表于 09-04 14:24 15次下载
    基于<b class='flag-5'>FT8U232</b>BM的USB-HART<b class='flag-5'>通信</b><b class='flag-5'>接口</b><b class='flag-5'>开发</b>

    基于FPGAFT232H接口通信开发方案

    概述 本文主要介绍一种基于FPGAFT232H接口通信开发
    的头像 发表于 07-05 09:56 3274次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>FT232H</b><b class='flag-5'>接口</b><b class='flag-5'>通信</b><b class='flag-5'>开发</b><b class='flag-5'>方案</b>