论文部分内容阅读
越来越多便携式外围设备使用USB接口与PC通信,但通常USB接口不支持两个USB外围设备之间的直接通信。OTG的出现解决了这一问题,支持OTG规范的USB OTG双重角色设备既可以实现主机功能,又可以实现标准设备功能,使得支持OTG规范的外围设备能充当主机与标准设备直接通信,而不需要PC的参与,此外两个支持OTG规范的外围设备也能直接通信。本文介绍一种基于ARM芯片的USB2.0 OTG接口IP设计,主要对其中的全速主机控制器模块设计和IP核的验证进行讨论。该USB2.0 OTG IP核支持USB2.0协议、OTG补充规范、UTMI+协议、OHCI以及EHCI协议。该IP核的一侧通过UTMI+的PHY与OTG设备通信;另一侧通过存储器控制器与ARM相连,使得ARM访问IP核如同访问存储器。USB2.0 OTG IP核主要包括OTG控制器(OTGC)、高速主机控制器(EHC)、全速主机控制器(OHC)以及设备控制器(DC)。基于标准OHCI协议设计的全速主机控制器具有总线控制权,是一个MASTER,而本IP核独立于MCU作为不具有总线控制权的接口模块设计,其与MCU的数据交互均通过中断服务程序完成,是一个SLAVE。所以在全速主机控制器模块设计中,对OHCI协议规定的用于表述端点描述符和传输描述符的数据结构以及事务调度过程进行一定的改进,由存储在片外存储器的链表结构改成存储在片内缓冲区的顺序表结构,从而实现了不具有总线控制权的全速主机控制器。本人在项目中完成的工作主要有全速主机控制器的硬件设计与IP核的EDA验证。全速主机控制器包括如下模块:OHC_GR、OHC_USC、OHC_LPB、OHC_BC、OHC_SIE和OHC_RH。OHC_GR完成全局软、硬复位控制;OHC_USC实现USB状态跳转控制;OHC_LPB完成USB主机事务调度;OHC_BC控制OHC_LPB和OHC_SIE对片内缓冲区的访问;OHC_SIE用于解析USB协议,包括解包组包;OHC_RH实现设备连接、断开、复位、挂起与恢复等功能。本IP核的EDA验证采用Synopsys的VIP作为UTMI+接口侧的激励,ARM侧则是按照s3c2410的规格编写的存储器控制器、DMA控制器和中断控制器的行为级代码以模拟ARM的功能,这样做主要是为了减少ARM侧验证的复杂度。本IP核的FPGA测试分两步走,首先测试高速主机控制器、全速主机控制器和设备控制器的功能,以确保IP核能独立作为标准主机和标准设备使用,当这三个模块的功能均实现后,再将这三个模块与OTG控制器一起联调以测试IP核的OTG功能。目前全速主机控制器的功能已全部实现,在FPGA下能实现文件的正常传输。