如何在FPGA和ASIC设计中结合高速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资源。
评论