摘要:本文首先介绍了SOC软硬件协同验证方法及其平台Seamless CVE的工作原理和流程,进而在此基础上搭建一个高效的USB A-device验证平台,以实现USB 高速A-device软硬件的并行设计,并详细介绍了USB A-device的工作原理和验证流程。
关键词:USB A-device 软硬件协同SOCSeamless CVEVCS VERA
文献标识码A中图分类号TN402
1、概述
随着深亚微米技术的发展和设计能力的不断提高,以及人们对移动电子产品“更小、更快、更冷”的需求,系统芯片集成(SOC)的设计方法应运而生。
所谓SOC,是指在单个芯片上实现一个系统所具有的信号采集、转换、存储、处理和I/O等功能,将数字电路、模拟电路、信号采集和转换电路、存储器、MPU、MCU、DSP等集成在一块芯片上实现一个系统功能。SOC整合了各种预先设计好的IP核,通过复用技术和有效的系统的验证方法,从而快速开发出系统芯片。其中,仿真与验证是SOC设计流程中最复杂、最耗时的环节,约占整个芯片开发周期的70%,采用先进的设计与仿真验证方法成为SOC设计成功的关键。
SOC验证贯穿整个系统的设计流程,包括仿真验证、软硬件协同验证、等价性验证、静态时序分析和时序验证等,验证已成为SOC发展的瓶颈。因为SOC是内嵌处理器和软件平台的完整平台,为了缩短系统的开发周期,建立一套合理有效的软硬件协同开发与验证平台对整个SOC的开发具有重要意义。
Seamless CVE是Mentor Graphics公司开发的一套软硬件协同验证工具,它整合了MIPS、ARM、Power PC等CPU核以及各种存储器模型,实现软件仿真器XRAY Simulator和硬件仿真器Logic Simulator,并结合各种功能仿真软件如VCS、Modelsim、NCVerilog等。
2、系统验证平台
随着移动电子产品间相互连接的要求和USB OTG协议的提出,USB A-device 在系统中也就充当了主设备的角色,负责对从设备(B-device)的连接检测、断开检测、总线枚举、配置和通讯控制等。同时,USB主设备还必须与系统CPU进行通讯,并在CPU的控制下进行相应的操作。USB主设备验证结构框图如图1所示。
其中,USB A-device与MIPS CPU通过AMBA总线通讯,外部RAM与USB内部FIFO采用DMA方式进行数据传输,T&MT接口是Intel公司制定的UTMI接口标准,具有100个PIN,只在硬件测试时使用,以方便观测通讯信号。UTMI是USB2.0收发宏模块接口的简称,实现传输数据的并串/串并转换、位填充/反位填充、NRZI编解码,严格按照各种状态的电平特性,实现了USB物理层协议要求,是USB能否有效高速通讯的关键。
USB B-device采用了Synopsys公司的VMT模型,用VERA语言模拟了USB从设备的完成功能,通过对有关参数的配置,从而可以快速地构建一个USB从设备以实现与USB主设备的通讯,进而大大加速USB主设备的验证工作。
3、Seamless CVE验证流程
Seamless CVE可以实现软硬件的并行开发,采用了虚拟原型设计和各种CPU的指令集仿真,从而在开发的前期就可以分配好软硬件的开发任务,然后结合Seamless CVE的内部CPU、存储器和各种虚拟外设模型,协同验证开发系统的功能实现、控制流程以及对各种资源的有效访问。其验证流程如图2所示。
4、USB 通信过程
USB是一种握手通信,采用的是主从式的通信方法,如图3所示,其中A-device充当了主机的角色,而B-device则充当了从机的角色。为了保证通信的可靠性,每一次通信都至少包括了两个步骤:令牌-握手,当有数据传输时还有中间阶段:数据。USB通信包括控制传输、块传输、中断传输和实时传输,高速设备支持中断传输和实时传输,当采用高速高带宽传输时,最大包容量可达3Kbps。USB通信采用三层模型:最底层是总线接口层(物理层),负责数据包的收发和转换;中间层是设备层,负责数据路由;最顶层是功能层,实现逻辑通信。
USB设备主要包括连接、上电、默认、地址、配置、挂起等状态,USB主从设备的通信过程如图4所示。
首先,主设备不断检测从设备的连接,连接前,数据线DP、DM均在主设备15KΩ下拉电阻的作用下维持在低电平。当有从设备连接时, DP线上的1.5KΩ上拉电阻将linestate维持在J状态。主设备在CPU的命令下开始对从设备发出复位信号。此时主设备上的高速终端(45Ω下拉电阻)开始打开,linestate被驱动到SE0状态;当高速从设备检测到2.5μs到3ms的SE0时,就将总线驱动到K状态(维持1ms);主设备在检测到K状态后延迟100μs,开始发送KJ对,每个状态维持40到60μs;当从设备检测到3个KJ对之后,表明高速握手成功,从设备将1.5KΩ上拉电阻断开并将高速终端(45Ω下拉电阻)打开,因为主设备注入电流(100mA)不变,等效电阻此时只有22.5Ω,所以差分电压减半,即KJ对幅度减半。在CPU控制下,复位结束,主从设备进入IDLE态,从设备等待主设备的配置。
高速复位成功后,主设备通过默认控制通道断点0对从设备进行配置,配置过程均采用控制传输。首先,主设备读取从设备的设备和配置描述符,每个设备具有若干种配置,每种配置具有若干个接口,每个接口具有若干个端点,端点是数据传输的最终载体,它与主设备端的收发FIFO组成了物理通信的管道,每个端点描述符定义了其端点号、传输方向、传输类型、最大传输包容量等参数,除端点0是双向口外,其他端点都是单向口,只能输入或者输出。任何设备都具有端点0,它是一个消息管道而不是位流管道,用于系统配置。当主设备把从设备的所有相关描述符都读取了之后,然后在CPU的控制下分配一个外设地址(每个主设备可支持128个从设备)以及选择一个配置值。当配置结束后,此配置下的所有端点就可以进入正常通信状态,包括OUT和IN等,SOF每隔125μs发送一次。
在正常通信状态时,在CPU控制下,总线任何时候均可进入挂起状态,此时SOF停止发送。当从设备检测到总线上的SE0状态维持了3ms时,便将高速终端断开并将1.5KΩ上拉电阻打开,100到875μs之后再采样总线,当为J状态时维持挂起状态,若为SE0则此时为复位态。恢复态可以由CPU发起或者由从设备发起,必须维持20ms,总线维持在K状态,之后系统又恢复到正常通信状态。
5、USB A-device控制验证流程
USB A-device的验证控制主要包括两部分:
(1)CPU控制部分:采用C语言实现,对相应的控制状态寄存器进行判断和置位复位;
(2)USB B-device控制部分:B-device模型采用Synopsys公司的VMT模型,采用VERA语言实现,并且提供跟硬件的接口。采用调用任务的形式来实现B-device动作,并且通过事件触发的形式提供了相应的消息、通知,以便于控制调试与观察。
USB A-device具有一定的控制和状态寄存器,它的所有动作均在CPU控制下实现跳转,CPU控制流程如图7所示。
另外,VMT模型以命令流的形式依次执行,在测试向量的作用下,结合DUT(Device Under Test)的动作,对DUT进行激励与响应,如图8所示。
6、验证波形分析
采用Novas公司的Debussy软件进行调试与分析,对模块、信号进行跟踪,并对仿真波形进行观察分析,如图9所示。
由波形可以看出,控制传输包括了三个阶段:SETUP、DATA、STATUS(图10)。在高速OUT传输时,为了节省资源和避免无效传输,每次初次OUT传输时必须先采用PING传输,因为PING传输没有数据阶段,当PING成功了之后再发送OUT,就可以避免无效的数据阶段。
7、结论
软硬件协同验证可以实现高层次的功能验证和逻辑验证,可以无缝结合软硬件仿真器和各种仿真模型,虚拟原型快速建立一个完整的验证开发系统,从而实现软硬件的并行开发,加快产品开发速度。但是仿真速度比较慢,软硬件时序较难同步,因为软件与硬件采用的时钟不同,软件上的控制延迟较难把握。
Seamless CVE无缝整合了软件仿真器与硬件仿真器,结合相应的PSP(处理器支持包),可以实现控制软件与真实硬件平台的早期整合,从而并行开发其软件操作平台、低层的驱动。
参考文献
【1】 Prakash Rashinkar,Peter Paterson,Leena Singh.系统芯片(SoC)验证方法与技术.北京:电子工业出版社,2005.1
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文
推荐访问: 主设备 软硬件 协同 验证 SOC