7天内完成基础USB开发(1)——免固件USB开发介绍

       USB接口广泛应用于各种外设与PC或嵌入式系统的通信,在各行各业发挥着巨大的作用。如今已经成为最常见的数字接口,全球总设备量超过150亿,并以每年20亿的数量递增(by CNN)。

       然而USB的设备的开发却有着不小的难度。USB功能主要由USB接口芯片来实现,主流的方案有Cypress、FTDI。其中Cypress的FX2(CY7C68013A)/FX3(CYUSB3014)系列由于技术领先,最受市场青睐。

       接口芯片厂商一般会提供一套基础的函数库给用户用来开发上位机程序和接口芯片固件程序用于与外设的数据通信及控制。

       为了提高和外部设备的适应性,Cypress内建了模拟FPGA状态机功能的GPIF接口(FX3是8/16/32位),能够帮助用户实现一些基础的接口通信。

       然而GPIF的状态机功能是模拟出来的,有诸多限制,易用度上和真正的FPGA状态机有一定的差距,很多朋友普遍反映比较难搞,比如:

  •     能使用的输入输出控制信号只有14根@32bits位宽;
  •     每一个状态的跳出路径不能超过2个;
  •     状态机跳转条件不能使用超过4个触发变量;
  •     只能使用3个计数器功能,其中一个计数器是16位,另外两个是32位;
  •     内建的标志信号在不同的GPIF配置下会有不同的延迟时间;
  •     最让人头疼的是GPIF状态机没有办法像FPGA状态机一样灵活调试,如果碰上复杂一些的应用,需要花费大量的时间在调试上。

       USB接口的通信速度比较快,3.0达到300MiB/s+,3.1能达到600MiB/s+。在设计的过程中需要加入大容量SDRAM缓存来提高传输可靠性,由于USB接口芯片没有集成SDRAM控制器,并且下一代接口芯片的数据接口由并行口升级成了LVDS(FX3PD),这些都需要加入FPGA来提供辅助支持。

       所以,USB产品开发的软件部分和硬件部分都有着一定的难度,如果想实现复杂的功能,必须冲破接口芯片厂商提供的软硬件资料设计出更完善的硬件系统和更复杂的上层软件。

       如果能够把USB各种应用下的复杂开发过程归纳总结,在软硬件上将其公共部分提取出来,把USB接口芯片的固件做成统一化,并重新开发出一套面向FPGA的上位机API和FPGA IPcore。会极大的缩减USB新项目的开发风险、难度和花费,提升开发灵活度,开发出更复杂的USB产品应用。这就是USB免固件开发方案。

       免固件开发并不是指没有固件程序而是固件不需要修改,直接调用上位机API开发FPGA USB应用。

预告:7天内完成基础USB开发(2)——Pionway SDK简介

猜你喜欢

转载自blog.csdn.net/pionway/article/details/54414106