中科SoC的USB1.1OHCI主机控制器IP设计-设计应用_第1页
中科SoC的USB1.1OHCI主机控制器IP设计-设计应用_第2页
中科SoC的USB1.1OHCI主机控制器IP设计-设计应用_第3页
中科SoC的USB1.1OHCI主机控制器IP设计-设计应用_第4页
中科SoC的USB1.1OHCI主机控制器IP设计-设计应用_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档-下载后可编辑中科SoC的USB1.1OHCI主机控制器IP设计-设计应用系统阐述了USB1.1OHCI主机控制器IP的功能、结构、各功能模块的电路设计和实现方法,介绍了主机串行接口引擎模块及其时钟和数据恢复电路以及并行CRC算法的设计。为了验证OHCI主机控制器功能正确性,在中科SoC虚拟验证平台上对该主机控制器做了系统级模拟验证,验证结果证明了设计的正确性。

IP就其本质来讲是一个能提供正确接口信号的功能模块。随着EDA技术和半导体工艺技术的发展,集成电路的规模越来越大,设计越来越复杂,使用IP核是一个必然趋势。研究开发超大规模集成电路设计业亟需的、具有良好应用前景的IP核,积极推动IP核的应用,对于我国集成电路产业的良性发展将会起到极大的促进作用。USB通用串行总线是众多计算机厂商和电信厂商共同开发的用于计算机外设连通到计算机的规范。它日益成为一种主流的计算机接口标准。它包含3大技术要素:主机,集线器和功能。国外一些公司近年来相继开发出基于上述3个技术要素的IP,国内一些IC设计公司也开始在这些领域内作研究,但由于USB主机控制器IP的设计一直是USB系统设计中的难点,成果较少。

作者遵循USB规范和开放主机总线接口(OpenHostControllerInterface,OHCI)规范,基于ASIC流程开发出了USB1.1OHCI主机控制器IP。

在所有的实现中,主机控制器都必须提供基本相同的功能,主要包含状态处理、串行化与反串行化、帧产生、数据处理、协议引擎、传输差错控制、远程唤醒、集线器、主机系统接口。根据这些要求,参考USB规范和OHCI规范,通过定义一组与主机系统存储器交互的虚拟主机总线接口以及收发器接口,作者将设计分成若干部分,将每一部分需要完成的目标功能单独描述并验证,在此基础上再作顶层的整合。进行功能划分后OHCI主机控制器IP的结构如图1。

主机控制器功能模块设计

主机系统接口模块

该模块由两个部分组成,主要功能是在主机系统与OHCI主机控制器之间建立高速的数据通道。按照数据传输的发起者不同,可以分为HCI主模块和HCI从模块,前者负责发起对系统存储器的读写操作,后者负责响应主机系统或CPU的读写操作。针对不同的SoC(SystemonaChip)片内总线,可以在主机系统接口模块与片内总线之间实现简单的胶合逻辑,从而实现USB主机控制器IP的重复使用。

状态控制模块(USBStateControl)

它是列表处理器层次结构的上层模块,直接由OHCI寄存器来控制。它实现了主状态机,可用来触发列表处理器中较低层次的状态机。主状态机还可以生成一些控制信号,以便控制下列操作:传输SOF(StartofFrame)标示、复位/恢复、向系统存储器中的HCCA(HostControllerCommunicationArea)写回每微秒的帧序号等。该模块还实现了优先级算法,该算法基于OHCI寄存器决定当前需要处理周期性列表还是非周期性列表,如果非周期性列表获得优先权,它可以确定当前应该执行的传输是控制传输还是批传输。

列表处理器模块

它是整个IP核关键的控制器,实现了OHCI规范规定的绝大部分协议。按照OHCI规范,它有多个状态机实现列表服务流、列表优先级、ED/TD服务、状态写回、TD撤退等功能。它充当一个控制器,连接HCIMaster和HostSIE,帮助它们在系统存储器和USB之间实现数据传输。它包含4个子模块:列表服务流程模块、端点描述符服务流程模块、传输描述符服务流程模块以及HCIMaster接口模块。

数据FIFO和数据FIFO控制模块

数据FIFO模块实现了一个宽度为8bit、深度为64byte的FIFO,它的主要作用是同步HostSIE和HCIMaster之间的数据传输。数据FIFO控制模块实现了主机控制器的内部数据FIFO的方向控制逻辑,以便在USB和系统存储器间传输数据。

对于INPacket,当数据从端点接收时,HostSIE将其存储在数据FIFO中。当所有数据收到(对GTD/ITD而言)或数据FIFO中的数据超过一定的门限(≥16byte),TD状态机发起一个写命令通知HCIMaster接口模块。HCIMaster接口模块提供写的起始地址,同时本模块提供写回的字节数,触发HCIMaster执行一个写周期。HCIMaster写操作结束以后,它将控制返回到TDSF的TD状态机。

类似的,对于OUTPacket,TD状态机通知本模块从系统存储器读取数据。读操作的地址和字节数由HCIMaster模块来提供。若数据超过16byte,它将通过HCIMaster执行多次操作。

主机控制器串行接口引擎模块

本模块主要用来完成USB规范中协议处理部分的功能。它用作主机控制器的协议引擎,并且与列表处理器、数据FIFO以及OHCI寄存器相连接,此外它还实现了用来同步HSIE和端口状态机之间接口的控制逻辑。本模块的数据流框图如图2所示,图中HSIE模块工作在48MHz、打包模块和拆包模块工作在12MHz,因此需要异步逻辑在不同的时钟域之间实现同步,为简单起见,图中省去了异步逻辑模块和控制逻辑。

在USB数据接收期间,D+和D-信号经由差分接收器变成单端字位流,然后经由DPLL模块提取时钟和数据信息。在HSIE的接收器中实现了大部分协议解释功能,诸如NRZI-NRZ的转变、位填充拆除、同步域检测、SE0检测、CRC16计算、超时逻辑、串并转换、速度控制等。在拆包模块中还实现了状态机来检测USB的功能是否收到有效的握手信号。

在USB数据发送期间,打包模块根据列表处理器的要求确定需要发送的包类型。有3种类型的包:标示,数据,握手包。如果是数据包,则需要进行CRC16校验;如果是标示包,则需要进行CRC5校验;握手包不需要进行CRC校验。打包模块随后将字节流传送给HSIE的发送器进行同步域添加、并串转换、位填充、NRZ-NRZI转换等工作。限于篇幅,仅介绍其中的关键模块:时钟恢复和数据提取电路以及并行CRC算法。

(1)数字锁相环(DigitalPhaseLockLoop,DPLL)

由于USB主机与USB设备所采用的工作时钟完全分离性,的交互信息是USB总线上的字位流,为了正确提取字位流中包含的数据信息,必须有一套机制从接收到的字位流中恢复时钟信息。本文采用一种超前滞后型数字锁相环(LeadLagDPLL)来实现上述功能。LL-DPLL时钟恢复环路的原理如图3。

环路的工作原理如下:数字鉴相器(DigitalPhaseDetector)比较字位流数据Data与本地跟随时钟Clk_out的相位,给出相位误差信号LeadPulse和LagPulse。数字环路滤波器对相对误差进行平滑滤波,并生成控制数控振荡器的控制信号Deduct和Insert。DCO根据控制信号给出的指令,利用内部高速振荡器的产生的时钟调整输出时钟Clk_out的相位,使其跟随输入数据Data的相位。按照恢复时钟对输入的字位流进行采样,即可提取数据。

(2)并行CRC算法

为了提高串行数据的校验速率,在传统的串行CRC基础上,本文提出了一种并行CRC算法,以CRC5为例,该算法的Verilog硬件描述如下:

moduleusbh_crc5(ci,d,co);

input[4:0]ci;//上输入数据CRC校验值或CRC初值

input[10:0]d;//输入的待校验数据

output[4:0]co;//本次输入数据的CRC校验输出

assignco[0]=d[10]^d[9]^d[6]^d[5]^d[3]^d[0]^ci[0]^ci[3]^ci[4];

assignco[1]=d[10]^d[7]^d[6]^d[4]^d[1]^ci[0]^ci[1]^ci[4];

assignco[2]=d[10]^d[9]^d[8]^d[7]^d[6]^d[3]^d[2]^d[0]^ci[0]^ci[1]^ci[2]^ci[3]^ci[4];

assignco[3]=d[10]^d[9]^d[8]^d[7]^d[4]^d[3]^d[1]^ci[1]^ci[2]^ci[3]^ci[4];

assignco[4]=d[10]^d[9]^d[8]^d[5]^d[4]^d[2]^ci[2]^ci[3]^ci[4];

endmodule

根集线器配置模块

本模块实现了针对根集线器部分的OHCI寄存器堆,并为每个下行端口实现了一个状态机以控制端口功能状态。根集线器配置模块可以根据不同的用户需求做到端口数目可配置,多可配置15个下行端口,为用户提供了很大的灵活性。

仿真与验证

USB是一个复杂的系统,包括上层应用程序、USB类驱动程序、主机控制器驱动程序、主机控制器以及USB设备,为了对USB主机控制器进行全面的行为级验证,必须建立相对完整的虚拟验证平台。本文的验证工作基于中科院计算所自行开发的SoC虚拟验证平台,主要验证下述内容:

(1)主机控制器IP的OHCI寄存器堆的可编程性;

(2)主机控制器IP与虚拟存储器之间数据传输的正确性;

(3)主机控制器IP内部协议处理部分在不同种类传输情况下的正确性,包括帧管理、主状态机在各种条件下的状态转换和管理、串行化与反串行化、位填充与位填充拆除、时钟和数据信号提取、NRZ和NRZI码相互转化、中断处理等;

(4)传输差错处理,包括CRC校验错、PID校验错、位填充错、传输顺序错、应用程序缓冲区BufferOverRun和BufferUnderRun错、控制器内部数据FIFODataOverRun和DataUnderRun错、设备Babble、设备超时错等;

(5)根集线器配置部分功能,主要包括下行端口状态转换、设备连接/断开检测、端口过流检测、远程唤醒、设备挂起、USB总线复位等。主机控制器IP设计使用的硬件描述语言是Verilog。仿真工具使用Cadence公司的NCSIM。逻辑综合使用Synopsys公司的DesignCompiler。作者在RTL设计完成以后在行为级作仿真。在确定行为正确以后,利用综合工具作逻辑综合,形成网表文件和综合后的时延估计(StandardDelayFormat,SDF)文件,然后利用这两个文件作门级仿真。

为简单起见,本文列出综合后门级仿真一个典型Setup交易的波形图,如图4所示。图中USB总线上进行的交易为USB总线复位结束以后,主机控制器检测到根端口1上接入了一个USB设备,由根端口作完设备速度评估,判断出接入端口1的虚拟设备为全速设备,然后应用程序根据这些信息以及现有系统中USB设备的相关信息来设置当前接入的设备地址,图中所示波形展示了主机发出SetAddress请求以后USB总线上的数据线D+和D-的行为以及主机控制器IP的端口数据线的行为。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论