怎么在FPGA或ASIC系统中实现高效高速USB 2.0接口?

通用串行总线已经很普遍了,这是由于其使用简单,随插即用,并具有鲁棒性的优点。usb已经找到了进入曾经使用串口、并口作为其host接口的计算机外设的方式,需要接口到host计算机的产品现在也把usb作为其主要选择。usb提供多种带宽选择--低速、全速、高速、和现在的超高速--迎合了各种计算机外设以及工业和医疗设备的需要。
usb提供的吞吐量足够大,适合高带宽应用,如硬盘驱动器和扫描器。事实上,对于大部分计算机外设,如键盘,鼠标,pda,游戏键盘,操纵杆,扫描仪,数码相机,打印机,usb已经是互连标准。
除了简单的电脑外围设备,fpga应用也广泛存在,其可以受益于高速usb接口的增加。数字信号示波器、心电图、摄像机和数据采集系统是其中的一些例子。将usb接口添加到设备里将会大大扩展其能力。例如,在数据记录系统中(如数字储存示波器和心电图),得到实时数据可以通过主机实时传输,也可以通过网络传输这个数据,如图1所示。对于远程数据采集应用,将数字记录仪设备通过usb连接到主机也可以使设备进行远程控制,主机可以位于几英里以外,通过网络连接到usb主机。本文将探讨其设计方法,可以在fpga或asic系统中实现高效高速usb 2.0接口。
图1 基于usb的分布式数据采集系统
在介绍整合通用串行总线接口到fpga或asic系统的各种方法之前,我们需要了解一下典型usb系统的工作原理。典型的usb系统由收发器,串行接口引擎(sie),和接口控制器构成,如图2所示。
图2 典型的usb系统
收发器实现了usb协议的物理层。收发器形成了主设备和从设备之间数据连结的两端。usb接收器会有差分和单端两种输出。sie进行串行数据的编码和解码,位填充,错误校验和其他信号级处理任务。它还将并行数据转换成串行数据,反之亦然。sie应该连接到智能master,其通过控制端点相应主设备请求实施高级usb协议。master也将实现器件功能所需的应用级任务。
在这篇文章中,我们将讨论三种不同的方法,实现usb接口添加到fpga或者asic系统。
使用usb协议栈知识产权(ip)及外部收发器
在第一种方法中,我们可以在fpga或asic中实现sie(见图3)。
图3 fpga + usb协议栈ip + usb收发器
sie ip的主要功能是要执行数据编码和解码,crc生成和错误校验,位填充,数据包id生成,串到并以及并到串转换。这个ip可以自己开发或者可以从第三方供应商购买。fpga也要执行上层usb协议。外部要使用一个收发器ic,比如赛普拉斯的tx2ul收发器芯片。这款收发器是usb 2.0认证的符合收发器红单元接口(utmi)相关标准。所需的所有终端,包括dplus 线上的1.5 k欧姆的上拉电阻,都是在芯片里内置了。
该方法的优点是所需外部硬件最少。使用这种方法的缺点是开发复杂的usb堆栈ip需要时间以及工程资源。sie ip执行,上层协议和应用功能也占用了fpga的大量资源。使用第三方的ip成本会很昂贵。
使用集成sie和收发器芯片的usb桥
另一种把usb接口整合到fpga设计的方式是连接一个外部串行接口引擎ic和收发器(见图4)。
图4. fpga +桥芯片(sie+ phy)
在这里,fpga只需要实现上层usb协议。任何从usb主设备收到的命令都会通过sie传递到fpga.fpga需要包含逻辑来对这些命令进行恰当的响应。例如,在枚举过程中,usb外设会从主设备得到一个命令,请求它的描述符。在这个实现中,外部硬件,即收发器和sie,会收到封包,并通过一个中断通知fpga命令已收到。fpga就会在ste读寄存器,并了解到外设已收到来自主设备的get描述符命令。它会把正确的描述符发送给sie.和使用外部收发器的sie ic 不同,usb桥芯片如赛普拉斯的mobl-usb芯片内置了sie以及收发器。该控制器有两个双缓高速端点,其共享2 kb fifo空间,最大化了灵活度和吞吐量,还有控制端点0.
这种实现的最大好处是,减少了fpga一半的复杂性(例如,信号级协议管理)。然而,即使在这种情况下,还要占用一定数量的fpga资源来执行上层usb协议。在这种情况下,需要做的决定是,要分析要分析所需外部硬件成本 vs. 节省的fpga资源。
使用usb控制器与fpga
图5. usb控制器+ fpga
最后一种方式是,连接全功能 usb控制器到fpga(见图5)。在这种情况下,所有的usb协议管理都会发生在fpga以外。专门的usb控制器ic包含phy,sie,协议控制逻辑。
控制器可以提供灵活的端点可配置数量,fifo大小,甚至可能包含一个微控制器来处理上层usb协议管理。这种外设控制器可以处理一些应用功能,从而不再需要fpga或asic处理这些事务。如果他们包含ram架构,开发人员还可以进行灵活的现场固件升级。
现在fpga只需要掌握和这个芯片的逻辑接口。usb控制器和fpga之间的接口可以是任何的标准接口,例如spi,i2c,或hpi.还可能是自定义的接口,这在usb控制器ic中很普遍。
赛普拉斯的fx2lp 是专门的外设控制器芯片,其可以减少将usb集成到fpga或asic系统的开发时间。它包含了一个简单的“从fifo”接口,使得和fpga系统互联很简单。从fifo接口功能具备从读和从写信号,可以读或写数据到fx2lp 4 k fifo空间。
对于与asic系统互联,fx2lp包含一个gpif或通用可编程接口逻辑接口,可以为asic处理或通讯的任何标准接口生成接口波形。gpif还可以通过usb接口配置fpga,这样就不需要一个单独的配置芯片,例如prom或处理器。通过usb配置fpga也不再需要jtag.因此,通用的专用的usb控制器可以不仅仅作为一个数据通道,还可以减少线路板尺寸和成本。
这篇文章里提到的这三种设计方法都有自己的优点和缺点。选择时要进行仔细分析,要权衡成本,线路板空间,和fpga资源。

采用晶片尺寸型覆晶基板的IC设计业者大势增长
分析芯片内部不同硬件资源对于SEU效应敏感性的问题
RTX2060值得买吗
照明应用中LED闪烁的原因及解决方案分析
2019集微半导体峰会:蒋尚义作了《从集成电路到集成系统》的演讲
怎么在FPGA或ASIC系统中实现高效高速USB 2.0接口?
智慧空气开关智能微型断路器可应用于哪些场所?
比传统强1000倍 全新石墨烯图像传感器
2018世界人工智能创新大赛终进入决赛阶段 谁将最终夺魁
最新消息:苹果下一代自研Mac处理器曝光
港中文贾佳亚团队联手MIT发布超长文本扩展技术,打破LLM遗忘魔咒
ADI最新推出Blackfin(R)系列新成员BF50x系列
基于深度学习的透射式光学系统初始结构设计
关于GD32F350R8的摄影光源控制器的性能分析和应用
阶跃恢复二极管的工作原理
美国联邦航空管理局提出了一种超声速飞机噪声的认证标准
解读48V轻度混合动力用途
培养人工智能进化的几个阶段
华为Mate20Pro体验报告 到底怎么样
漏电断路器推不上去是什么问题