当前位置:巨优公文网>范文大全 > 教案设计 > 基于FPGA的USB主控芯片软硬件协同设计与验证

基于FPGA的USB主控芯片软硬件协同设计与验证

时间:2022-11-10 21:15:03 教案设计 来源:网友投稿

zoޛ)j0zQ u0zQ H<S@A
DQ THDJ~8iNjpjpj׬	vjب+Q aR&ڱhSi,
n)!xZe迦ޥ%ykxx总结。

2USB主机SoC架构及其验证环境

基于PowerPC架构的USB1.1主机SoC的架构如图1所示。整个系统工作在两个严格的数字时钟域(总线时钟和USB时钟),尤其是USB时钟必须严格控制在48 MHz,因此需要一个时钟管理模块对外部输入的100 MHz时钟进行频率合成和锁相,以生成系统需要的时钟频率。PowerPC405微处理器作为整个SoC的控制核心与处理器局部总线(PLB)相连,并提供JTAG、电源管理、中断控制、片上数据/指令存储器(DOCM/IOCM)等接口,其上运行着USB主机的系统软件,因此需要在其数据/指令存储接口上连接两个片上存储单元(OCM)用于存储数据和指令。PLB总线主要为处理器和高速设备提供低延时、高带宽通路。片上外围总线(OPB)面向片上外围接口IP核,用于连接具有不同总线带宽及时序要求的外设,其总线上可挂载包括USB主机控制器、中断管理、定时器和串口等IP核。由于USB主机IP核采用wishbone作为内联总线,必须在wishbone和OPB总线之间进行必要的桥接设计(IPIF)。PowerPC405仅提供两个外设中断接口,当外部中断多于两个时,需要添加一个中断管理模块管理外围IP核的中断。定时器用于系统必要的定时。串口作为输出/输入端口。此外, USB主机SoC要能正常工作还需要相应的外部收发器支持,该收发器提供了USB的物理接口并对逻辑信号与物理端信号进行转换。

我们构建的协同验证环境如图2所示。采用Xilinx公司VIRTEX-II PRO开发板上的FPGA芯片XC2VP30来实现该USB主机的SoC。通过开发板的低速数字扩展口连接外部收发器子板。开发板上围绕FPGA的其他功能模块包括电源模块,时钟晶振等。PC机将USB主机SoC的软硬件比特流文件通过JTAG接口配置到FPGA,并通过串口和逻辑分析仪观察该SoC的运行情况。以下将对验证系统的软硬件设计做进一步的阐述。

3验证系统的硬件设计

硬件上的设计包含FPGA内部的SoC实现和收发器电路设计两个部分。我们在EDK开发平台中建立SoC系统的硬件,该平台提供了除USB主机IP核外的其他IP核,它们具有统一的接口标准,应用时仅需要进行必要的参数配置和接口连接,因此整个硬件设计的重点在于USB主机IP核的集成以及收发器电路的设计。

3.1 USB主机IP核集成

我们的USB主机IP核内部包含了5个模块(如图3)。Wishbone总线模块提供了与处理器的接口通道,内连USB协议核,数据接收缓存和发送缓存模块;USB主机协议核是USB1.1主机协议的具体硬件实现,它主要由可寻址寄存器和相应处理逻辑组成,通过配置这些寄存器可以完成USB协议规定的四种传输类型(控制、批量、中断和同步传输)、直接控制总线状态、在全速状态下实现每1 ms自动发送SOF包及帧号计算等功能;接收数据缓存和发送数据缓存用来暂时存储主机端接收到的和待发送的数据;串行接口引擎模块的主要功能是检测收发器状态,接收和发送总线信号,进行总线数据采样、串/并转换、同步插入、位填充、非归零反相编/解码等操作。

为了将USB主机IP核集成到SoC系统中,必须解决OPB到WishBone总线之间的桥接问题,EDK工具的IPIF服务[15]提供两种OPB到用户IP的桥接方式:寄存器模式和存储器模式。它们的最大区别在于读写方式不同。寄存器模式为每个寄存器单独提供读写使能,存储器模式则为一个连续的地址空间提供一个读写使能。为了满足WishBone接口信号时序,我们选用存储器模式桥,接口信号如图4。由于USB主机IP核地址空间为256字节,且数据宽度为一个字节,因此选择IPIF接口数据、地址总线的低8位连接到WishBone总线,并采用Bus2IP_ArCS信号作为USB主机IP核的片选信号。另外扩展了USB时钟输入信号(USB CLK)和USB中断输出信号(USB IRQ)。

3.2 外部收发器电路的设计

外部收发器电路连接着USB主机IP核的串行接口引擎(SIE)外部逻辑端口,实现总线信号与数字逻辑信号之间的电平转换,满足全速和低速两种传输模式。SIE外部逻辑端口包括:两对差分线WireDataIn(VMI,VPI), WireDataOut(VMO,VPO),线输出有效信号(OE)和传输速率控制信号(SPD)。这些逻辑端口工作在Vcc为3.3 V的LVTTL电平模式下,其输出和输入的高/低电平必须满足VOH>=2.4V,VOL <= 0.4 V;VIH >= 2 V,VIL <= 0.8 V的电平匹配。为此,我们选用了FAIRCHILD公司的USB1T11A作为外围收发器芯片,供电电压为3.3 V。外部收发器的设计电路图如图5所示。

电路中在差分总线D+,D-上分别串接一个24Ω电阻用于满足USB协议规定的总线串行阻抗要求。D+,D-线下拉15 k电阻用来检测USB设备的插拔动作以及判断全/低速模式。当有设备接时,D+或D-的下拉15 k电阻与设备端上拉的1.5 k电阻构成回路,通过15 k电阻分压使得其中一条数据总线处在高电平,从而通知主机有设备接入,D+为高时是全速设备;D-高时为低速设备,当设备移除后数据总线恢复默认的低电平状态。

4验证系统的软件设计

我们参考USB协议将主机系统的软件分为USB系统软件和设备层软件两个层次,如图6所示,USB系统软件使用主机控制器硬件来管理主机与USB设备的数据传输;设备层软件建立在系统软件之上,描述直接与USB设备进行交互所需要的软件包。每个分层又包含两个小层,以下将结合具体的设备对各层的软件做进一步的阐述。

4.1 USB系统软件

USB系统软件可分为主机控制器驱动和USB驱动两个模块,它们提供了基于不同抽象层级的软件函数。最底层的主机控制器驱动提供了对系统硬件可寻址寄存器的读/写函数,完成USB系统软件与硬件之间的映射。所有的IP核在总线上都分配有独立的地址空间,因此,IP核内可寻址寄存器的地址为IP核的总线基地址加上寄存器的偏移地址。USB驱动层通过调用底层的寄存器读写函数完成特定功能的函数抽象,包括IP核初始化、设备检测以及4种USB传输实现(控制,中断,批量和同步传输)等。IP核初始化函数完成对系统IP核的复位过程和设置系统的中断使能。在寄存器中,主机控制寄存器的最低位用于复位IP核。将其置1并等待10个USB时钟以上(大于200 ns),既可完成IP核的复位过程,完成后该位自动清零。中断设置包括主机控制器IP核内的中断使能设置(传输完成中断和连接事件中断使能),同时还包括系统中的定时器中断、串口中断以及中断管理单元的使能及优先级设置。设备检测函数通过读取反应USB总线连接状态寄存器的值判别设备的插拔,总线连接状态寄存器的低两位反应了总线的3种状态(00:不连接,01:低速,10:全速),当有插拔动作发生时,设备检测函数就读取该寄存器并根据所读取的数值设置主机端总线传输速率及极性。USB的4种传输基于3种事务传输实现(IN,OUT,SETUP),例如控制传输的实现由一个SETUP事务,若干IN事务和一个OUT事务构成。这3个事务都必须由USB主机发起, SETUP事务用于主机向设备发起各种描述符请求,首先将相应的描述符请求包送入发送数据缓存,然后设置设备的地址和端点号,最后设置发送模式并启动,对于全速设备,事务跟随在帧开始包(SOF)之后,低速设备事务直接发送。IN事务用于接收从设备过来的数据,在设置完设备的地址,端点号和发送模式后启动IN事务等待事务传输完成中断,然后读取接收数据缓存中设备发送过来的数据。OUT事务的工作过程和SETUP事务相似,区别在于OUT事务所发送的数据量没有固定,当数据量大于发送数据缓存时,必须分多次事务传输。同时在设备端OUT事务的端点BUF(OUTDATA0,OUTDATA1)轮流工作,因此,程序中必须指明当前发送的OUT事务的端点BUF。此外,USB驱动层还定义了设备描述请求结构体和相应的设备描述符结构体等信息。

4.2设备层软件

设备层的软件描述的是与具体设备相关的软件实体,它分为两个层级:设备驱动和应用测试,设备驱动层提供了针对不同设备应用的接口通道;应用测试则是针对具体设备的应用软件。以U盘设备为例,对U盘的操作可分为枚举过程和SCSI命令操作过程两个部分,因此设备驱动层主要实现U盘的枚举和SCSI命令。枚举过程通过调用USB驱动层的控制传输函数来完成,首先获取U盘端点0的最大包容量(Max_Packet_Size),然后给U盘分配一个新地址,接着获取U盘全面的设备描述符,根据设备描述符中描述的可用配置数量,获取U盘的配置描述符集合(包含接口和端点信息),最后进行U盘的配置。U盘SCSI命令操作基于USB驱动层的批量传输函数完成,包括READ(10),WRITE(10),INQUIRY,TEST UNIT READY等命令。其中,READ(10)、WRITE(10) 用于读写U盘数据,其它命令用于查询U盘的状态信息。为了进一步完成主机对U盘的应用测试,我们在应用测试层移植了开源的兼容FAT12/16/32的文件系统(FatFs),它提供了调用设备驱动层SCSI命令的函数接口,这些函数通过调用READ(10)、WRITE(10)来完成对U盘设备的数据操作。文件系统还向上提供了一系列针对文件操作的应用接口(API),如创建文件夹(f_mkdir),读目录清单(f_readdir),打开/创建文件(f_open),读、写文件(f_read、f_write),删除文件/目录(f_unlink)等。我们通过串口接收定制命令选择相应的文件系统API函数完成对U盘的文件操作。对U盘的应用测试程序设计为首先枚举U盘,然后程序进入空闲状态等待接收串口终端的控制命令。当有命令输入时,程序从空闲状态进入数据接收状态。在接收完数据后,程序进入到文件操作状态,完成对所接收数据的译码并执行相应的文件操作函数。最后程序重新进入到空闲状态等待下一次接收串口数据。

5验证结果及分析

我们构建的协同验证环境实物图如图7所示,和图1匹配。通过连接U盘、键盘等测试设备,并通过示波器和串口终端进行数据分析。

图8(a)为示波器在SIE接口上观察到的一个SETUP事务的传输过程,和2.2节描述的外部接口信号对应,信号从上至下分别为VMI,VPI,VMO,VPO,OE,SPD。从图中可看出SPD为高,表明主机工作在全速状态下,主机每1 ms向设备发送一个帧包(SOF),该事务紧跟随在SOF之后,共包含3个包。事务根据包的顺序传输,包按域的顺序传输,而在域中除了同步域和包标志,其它域的传输均遵循先低位后高位的顺序原则进行传输,对于多字节的数据域,按字节顺序传输,每个字节以先低位后高位的原则传输。包标志域由低4位的包标志加上高4位取反验证码组成。以下将对事务中各个包做进一步分析。

图8(b)(c)(d) 分别为该事务三个包的非归零反相编码(NRZI)时序图。NRZI编码原理是当输出0时总线状态取反,当输出1时总线状态保持不变。因此我们对各包进行解码分析,以令牌包为例,在VMO上取得的令牌包信号的NRZI编码如表1所示,对其进行解码分析后得出该包的5个域:同步域(sync)、包标识域(PID)、地址域、端点域和校验域。可分析结果表面该包为建立请求包,当前设备的地址为0,并采用端点0进行传输。

同理分析得到数据包和握手包的信息如表2。数据包分4个域:同步域、包标识域、数据域和校验域。该数据包中数据描述的是主机获取设备描述符的请求包。其中,十六进制80表示获取标准数据;06表示设备描述符;40表示要获取64字节的数据。握手包分2个域:同步域和标志域。该握手包为应答握手,表明数据包被正确接收。

我们通过串口终端捕捉系统对U盘的应用测试过程,从图9显示的信息可以看出,主机系统在发现一个全速设备后(found Full-Speed device),首先对其进行总线复位(Reset device),然后开始枚举过程(enumerate),在识别设备为存储设备后(Mass storage device),进一步读取文件系统基本信息并识别该设备文件系统类型(FAT32)。我们编写的测试程序通过输入控制命令完成对U盘的文件操作,getcap读取U盘的总空间和当前的可用空间,crtdir创建一个文件夹目录,crtfil创建一个文件,opnfil打开该文件,setptr设置读写操作的起始指针,wrfil、rdfil进行读写操作,完成后clsfil关闭该文件。通过cd,ls显示文件信息可以看到我们所创建的目录及文件的信息。结果表明:对U盘应用测试取得很好的效果。

此外在进行U盘文件操作测试程序设计时发现一个现象:如果停止对U盘的操作一段时间(大于2 s),再对U盘进行批量传输的话就得不到任何数据回应,但在此过程中主机每1 ms都向设备发生SOF包,表明设备并没有进入挂起状态。针对这一现象我们观察了PC机对U盘的操作过程,通过Bus Hound软件观察到,在空闲状态下PC主机大约每1 s向U盘发送一个TEST UNIT READY命令(图10)。为此我们通过定时器产生一个每1 s的定时中断使程序在U盘空闲时每秒发送一次查询命令,解决了这一问题。

6结束语

本文通过基于FPGA的USB主机硬件实现和驱动程序、HID和U-disk两类典型应用测试程序的软件开发,完成了对PowerPC架构的USB主机SoC设计方案的软硬件协同验证。结果表明该USB主机控制器的设计符合USB技术规范,并能很好地与Intel,Cypress等厂商的USB设备兼容。同时,在测试过程中所编写的软件驱动和移植的文件系统等均可以直接应用到SoC的后续开发中,降低了后续开发的难度。

参考文献

[1]余瑞琁. USB市场应用发展趋势[J].电子产品世界,2006,5. .cn/article/12719.htm.

[2] Universal Serial Bus Specification Reversion 1.1[S]. /support/documentation/ipbusinterfacei -o_ coreconn ect_opb-ipifarchitect.htm.

作者简介

梁瑞彬,在读硕士研究生,研究方向为嵌入式系统设计与应用;

李晓潮,副教授,研究领域:集成电路、嵌入式系统、扩谱通信和多媒体;

郭东辉,教授,博士生导师,研究领域:集成电路设计,人工智能,网络通信等。

推荐访问:软硬件 协同 芯片 验证 设计

版权所有:巨优公文网 2018-2024 未经授权禁止复制或建立镜像[巨优公文网]所有资源完全免费共享

Powered by 巨优公文网 © All Rights Reserved.。备案号:沪ICP备18054162号-1