题主是想从0开始实现一套USB控制器?还是如何操作USB控制器?
怎么实现控制器可以参考USB规范:
USB.org - USB 2.0 Documents,规范就几百页,还只是基础规范,不建议直接搞,上手太慢,意义也不大(除非你真是想学这方面的),做产品的话更不值得,市面上有现成的东西。
如果是想知道控制器怎么操作,先看一下控制器的类型,PC的一般是:
USB 1.1 UHCI/OHCI
USB 2.0 EHCI
USB 3.0 XHCI
常见的是EHCI+UHCI/OHCI这种组合,规范网上都有(不在USB-IF网站,在各个厂商那),下一份研究一下就可以了。
嵌入式还有Synopsis和Mentor Graphics的控制器,到这俩厂商网站上找。
或者如果没有开源的限制,去看Linux实现也可以。
即使这样,也不建议直接从头开始写USB协议栈,因为USB协议栈很大,一个基本的USB实现需要包含:控制器驱动+Device框架(USBD)+至少一个Class驱动,最精简的写法估计也得上万行,并且还要把这套东西整合到原有系统的设备管理框架里,不值得从头弄。
供应商给方案就直接拿来用,没有方案找方案,尽量不考虑从头写。一般厂商给方案的时候,都附带有USB控制器的驱动,二次开发的时候一般写的都是Class驱动(简单的情况下几百行就搞定),有控制器驱动的前提下,可以考虑二次开发。
拿FPGA实现USB这个我没搞过,直观感觉是比前面的更复杂,规范就几百页,能把人搞死。