图 2 ulpi 模块状态转移图
2 ulpi 接口模块的设计及实现
1 系统设计
用 vhdl 硬件描述语言完全按照上述状态机转移完成此模块,在xilinx ise 开发环境下使用ise simulator 仿真工具进行仿真,仿真波形如图3 所示:
图3 ulpi模块的仿真波形
芯片上电之后,通过写isp1504 的功能控制寄存器的reset 位来复位芯片,之后通过差分数据线的状态来检测是否有设备插入,并根据状态判断是低速设备还是全速设备(d-为高电平,即连接的设备为低速设备若d+为高电平,设计开发基本简介即连接的设备为全速设备)需特别说明的是,主机端对高速设备的检测并不是一下完成的,是首先置为全速设备,然后主机端通过设置控制功能寄存器驱动出se0 信号,如果收到设备发回的chirp k信号,主机端就会发送线性调频的kj 序列对,每个k 或者j 持续时间在40-60us,如果设备是高速设备,在检测到主机发过来的3 个kj 序列对之后设备的控制器会使其自身进入高速模式,即高速收发正常的操作状态如果没有收到设备返回的chirp k 信号则认为是全速设备回到全速状态下进行传输当总线上没有数据传输(空闲状态)超过3ms,则会进入fs 挂起状态,当收到主机端发送的resume信号时恢复到fs状态,同理如果在高速状态下空闲超过设计开发需求工具3ms,会先进入fs挂起状态
在usb 协议标准发展的过程中,usb2.0 接口凭借其连接简单、稳定、速度快以及即插即用等优点,广泛应用于计算机、通信和消费类电子产品中然而目前大部分usb 主机端控制器都是使用国外公司研制的专用asic 芯片,usb2.0 主机控制器ip 核的设计可以摆脱对这些芯片的依赖,使得应用灵活方便
ulpi(utmi+低引脚数)接口规范是应用于高速通用串行总线(usb)和便携式usb(usbotg)收发器芯片的行业规范ulpi 模块提供usb 主机控制器与utm 正常通信的物理层通道,是主机控制器实现正常通信的重要接口之一该模块依据ulpi规范实现了总线事件检测的功能,完成了上电,正常操作,挂设计开发设计工具起和复位状态之间的转换等
由于状态转移对时间的限制,故只截取了部分状态作分析由图所示,currentst[4:0]反映的是状态机的状态,linestate[1:0]表示线上状态(直接反映d+ d-状态),在状态1 通过向isp1504 的84h 地址(控制功能寄存器的地址)写入61h(置位rst 位)复位物理层芯片
图1 整体系统图
此模块采用状态机来实现,主要通过对 isp1504 的功能控制寄存器写入一定的数据,使得物理层芯片的收发器进入相应的状态(全速、高速以及高速挂起),对状态机中时间控制采用计数器实现,主机端发送kj 序列对首先通过写isp1504 的功能控制寄存器使之进入高速chirp 检测状态,然后在数据线上发送全0 和全1 来完成的本设计usb2.软件开发工具有哪些0 主机控制主要针对全速和高速海量存储设备设备,全速和高速的状态转移图如图2 所示:
ulpi 模块介于usb2.0 主机控制器的协议模块和物理层芯片之间,完成对插入usb 设备的状态检测,判别是何种设备(全速还是高速),然后将设备置于相应的状态再进行usb 的各种传输事务每一个usb 的传输都是由事务组成的而每一个事务都是由usb 传输的最基本单位包(packet)来组成的,usb 的包主要是由令牌包、数据包、握手包和特殊包这四种类型组成的令牌包和数据包又包含不同的类型[4],握手包仅由一个pid 域组成用以传输联络信号来反映目前数据处理的状态usb 协议包含了四种数据传输类型,分别为控制传输,批量传输,中断传设计开发管理工具输和同步传输,其中控制传输是所有设备必须要支持的传输方式,对时间没有严格限制的大量的数据传输要用到批量传输;同步传输也被称为实时传输
为了摆脱对usb2.0 主机控制器asic 芯片的依赖,提高产品集成度,本文设计了针对全速和高速usb 海量存储设备的usb2.0 主机控制器ip 核首先介绍usb2.0 主机控制器ip核中主要涉及的usb2.0 通信协议以及与物理层芯片接口的ulpi 接口规范协议,并依据协议规范,利用vhdl 硬件描述语言完成usb2.0 主机控制器ip 核的ulpi 接口模块以及usb2.0通信协议模块的设计使用xilinx 公司的ise simulator 工具进行波形仿真,并在xilinxxup那些是常用的开发工具v2 开发板上进行验证,仿真结果及fpga片上实验表明本文设计的usb2.0 主机控制器能够完成对usb 海量存储设备的有效管理
图 1 中fpga型号为xilinx virtex-ii proxc2vp30,标识为isp1504 的子板通过fpga扩展口接入到fpga 开发板,子板以物理层芯片isp1504 为核心并配以简单外围电路构成,上面带有usb 接口用来插入usb 设备isp1504 用来完成数据的串行化和解串,以及nrzi编码和比特位填充等功能fpga 中内嵌microblaze 软核处理器,usb 主机控制器ip 核作为用户ip 核挂接到处理器的plb 总线上,再加入usb 驱动,便可以实现microblaze 处理器设计开发构造工具对全速和高速usb 海量存储设备的管理本文主要介绍usb 主机控制器ip 核设计中的两个重要模块--与物理层接口的ulpi 模块以及usb2.0 协议层模块的设计实现
在状态1 写完寄存器后置位stp,转到状态2 检测设备连接状态在状态2,当检测到linestate变为10(d+为高),所以先识别为全速设备,转到全速状态4在下一个时钟周期进入状态6 驱动se0 对设备进行复位,然后按照状态转移图最后进入高速操作阶段
0 引言