您可以添加到网摘 让更多人关注此文章:
摘要:本文针对USB设备单芯片设计方法,介绍一种USB设备控制器IP核系统的设计,提出SIE核心控制流程,能满足设备控制器最大限度精简指令,同时对USB设备控制器如何屏蔽USB协议做了部分探讨,并简述了FPGA验证。
关键词:USB设备控制器;IP核;系统设计;FPGA
1 引言
继USB协议公布后,USB凭借其占用系统资源少、廉价、通用、热插拔等优点,日益成为通用的串行接口总线。当前,绝大部分计算机外围设备如打印机、MP3、移动硬盘等均采用USB接口。USB设备的开发也受到越来越多的设计公司关注。
设计一种带USB接口的外围设备,可以采用多芯片和单芯片两种设计方法实现。多芯片设计方法即将USB设备控制器与专用单片机组合,由于需要专用的USB设备控制器,不仅不经济,而且USB设备控制器作为一个“黑匣子”调试起来异常麻烦,USB设备产品升级周期长。而采用单芯片设计方法,在单芯片内集成USB设备控制核和基于该核的单片机,既可以节省芯片资源、降低成本,也可以方便特定单片机设计,升级灵活,缩短了设计周期。
本文针对单芯片设计方法提出了一种全速USB设备控制器IP(Intelligent Property,简称IP)核的系统设计,总结出USB设备控制器SIE(Serial Interface Engine,简称SIE)的核心控制流程,完全符合协议且独立于设备具体命令,精简了报错机制,减少了对设备不必要的中断请求;同时对设备控制器特性做了部分探讨,以便于具体USB设备IP核设计和调试。这样,既可以减少USB设备对来自于设备控制器频繁却没必要的中断报错的后续处理,也能通过对USB格式数据屏蔽方法的介绍,方便USB设备调试,甚至经细微修改后可以适应不同设备的命令请求。本设计采用VerilogHDL硬件描述语言编写,通过了FPGA验证,可转入ASIC设计。
2 设备控制器功能实现
2.1 设备控制器简介 整个USB协议实现分三层,其中总线接口层分USB主机控制器、集线器、USB设备控制器和设备。设备与主机数据交换时,需要USB主机控制器和USB设备控制器完成并串/串并转换和数据USB格式的生成/屏蔽。设备控制器集成电压调整器、收发器、SIE、存储器管理和存储器。电压调整器将外部电压或自供电压调整成稳定的3.3伏;收发器直接与USB电缆相连,自带上拉电阻,协调转换两条差分数据线双向输出,并可由数据传输模式和是否SUSPEND来控制其上拉电阻;存储器管理负责调用存储器,而自带的存储器一般较小,只是用于暂时缓冲数据;SIE即串行接口引擎,是整个USB设备控制器的核心,用来屏蔽数据USB格式,完成串并转换。本IP核包括SIE和存储器管理模块。
2.2 IP核设计思想 整个IP可以实现控制、中断、批量和同步四种模式传输,具有独立的SIE,不仅精简了设备控制器指令,减少了中断请求,而且屏蔽数据重传,具有良好的可扩展性,可以添加本地DMA(Direct Message Access,简称DMA)传输模式或者更改设备命令集。
2.3 IP核模块划分及详细设计 USB设备控制器的最终目的是对数据流进行打包或解包。其控制逻辑由主机信息流和设备命令生成,数据流理论上不影响控制逻辑,但错误的数据包传输会被提前处理。控制逻辑比较复杂,为了易于实现和理解,本文将整个设备控制器IP核划分为六个模块(见图1),即时钟生成GECLK、事件探测ENENT_D、物理接口PHY、数据访问控制MAC、数据访问接口MAI和端点控制EPC,由USB2CLT顶层调用。除了GECLK模块和EVENT_D模块生成全局信号外,其他模块均双向数据传输。以下介绍每个模块功能及其详细设计。
 图1 设备控制器IP核模块划分图
2.3.1 GECLK 本模块实现以下两个功能:从NRZI信号恢复生成12MHz时钟和可配置时钟输出。对于前者,本模块对12MHz信号元(bitcell)四次过采样从而恢复生成12MHz时钟。由于PLL(Phase Locked Loop,简称PLL)能逐渐同步信号中的跳变沿,所以具有三次信号元连续跳变的包同步头(SYNC)可以促使时钟同步。另外,位填充(BITSTUFF)机制也是为时钟同步而设计的。至于可配置时钟输出,可以供设备使用,不过这种时钟输出未必与设备控制器工作时钟同步。
2.3.2 EVENT_D 本模块直接对差分信号进行探测,识别空闲、单端零(SE0)状态,并根据协议翻译生成相应信号,应用于整个系统或者报告给设备。
2.3.3 PHY 该模块直接与收发器接壤,接收来自收发器的差分放大信号并向其发送NRZI差分信号。主要功能为添删同步头(SYNC)和位填充(BIT STUFF),对NRZI编解码且翻转高低位(因为低位先入)。其流程如图2所示。

[1] [2] 下一页
|