首页 USB2IP核的设计与FPGA实现

USB2IP核的设计与FPGA实现

举报
开通vip

USB2IP核的设计与FPGA实现USB2IP核的设计与FPGA实现本文介绍了一种USB2.0设备控制IP核的设计方法。先总结控制器的功能和内部结构。再来是控制器的接口和扩展芯片。然后是内部数据读取方式。接着是UTMI接口、PL层、存储器接口和仲裁器,控制状态寄存器,最后通过verilogHDL实现IP核的的设计和功能验证。经过几年的发展通用串行总线(USB)已经演化成了电脑和外设的连接标准。在众多嵌入式应用里从鼠标键盘到相机移动电话等都可以通过USB方便地与电脑互连。随着新的USB标准的诞生,数据高速传输已经成为了可能,然而与之而来的是使用的多样...

USB2IP核的设计与FPGA实现
USB2IP核的设计与FPGA实现本文介绍了一种USB2.0设备控制IP核的设计方法。先总结控制器的功能和内部结构。再来是控制器的接口和扩展芯片。然后是内部数据读取方式。接着是UTMI接口、PL层、存储器接口和仲裁器,控制状态寄存器,最后通过verilogHDL实现IP核的的设计和功能验证。经过几年的发展通用串行总线(USB)已经演化成了电脑和外设的连接 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 。在众多嵌入式应用里从鼠标键盘到相机移动电话等都可以通过USB方便地与电脑互连。随着新的USB标准的诞生,数据高速传输已经成为了可能,然而与之而来的是使用的多样化和复杂化。当前主流的解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 是使用USB控制器来检测并对USB端口发生的事件进行回应。目前市场上供应的USBB制器主要有两种,一种是把微处理器集成在一个芯片里打包处理,另一种则是利用外部的微控制器来管理USBK制器的寄存器、设备描述符的内容读取和外部数据交换,这里的USB芯片仅处理USB通信。本文所设计的控制器属于后者。IP核(知识产权核,intellectualpropertycore),是指某一方提供的、形式为逻辑单元、芯片设计的可征用模块。它分为软核、硬核和固核。软核通常是与工艺无关、具有寄存器传输级硬件描述语言描述的设计代码,可以进行后续设计;硬核是前者通过逻辑综合、布局、布线之后的一些列工艺文件,具有特定的工艺形式、物理实现方式;固核则通常介于上面两者之间,它已经通过功能验证、时序分析等过程,设计人员可以以逻辑门级网表的形式获取。本文所介绍的USBIP核处于软核阶段,以VerilogHDL语言描述文本的形式提交使用,并经过仿真验证,可以用它综合出正确的门级网表。第一章控制器结构原理本文所设计的USB2.0设备控制器可以用来进行USB协议处理和数据间交换,实现USB通讯。根据USB2.0协议,控制器对USB总线上的差分信号进行NRZI解码和位解填充,然后经过串行转并行转换接着分组拆装,把需要的数据放入RAM区;也可以进一步把RAM区里的数据组装成协议所规定形式(分组),再利用差分驱动电路并行转串行、位填充NRZI编码输出到USB总线然后传回主机(逆过程)按照USB2.0设备控制器的希望功能,控制器可以划分为如下模块:UTMI(USBTransceiverMacmcellInterface)、协议层PL(ProtocolLayer)、存储器接口和仲裁器、控制和状态寄存器及功能接口。如图1.10PI.HX13X1JEII[nledTucr亦UFitpncTi〔0一一IHtrfvrhfnniNrgilAahBniKnpwRxfk»Intrrfftrc副处ttll厂能ELAMVV■k*:55HAM;分Ulftfunw口期仲就辨图1.1USB2.0控制器结构第二章控制器与外部芯片的接口USB2.0控制器和外部芯片的接口包括下列3种情况:和单口同步静态存储器(SSRAM)间的、与MCU(微控制器)间的以及和外部UTMI间的接口。USB有两个时钟域。UTMI块执行的时钟来源于PHY。PHY提供的最大时钟输出能达到60MHz。实际时钟频率依据操作模式(全速/高速)的改变作调整。UTMI块和USB核保持同步的逻辑。所有模块执行的时钟来源于主机接口。由于USB延迟的需要,主机接口需要频率不少于60MHz的时钟。控制器和UTMI的接口遵循UTMI规范。UTMI接口信号含有:USB总线状态信号LineState[1:0]、设置UTMI工作模式的信号位、检验或标志发送数据的信号(TxValid、TxReady等等)、检验或标志接收数据的信号(RxActive、RxValid、RxError等等)以及8位双向数据线、60MHz时钟信号。根据之前时钟描述,USB的时钟域完全可以满足数据传输的要求。控制器要求的外部存储器使用标准单口SRAM,容量大小为215*16bit=64kB。其中读写信号(SSRAM_RD和SSRAM_WE)、16位数据线SSRAM_DATA和15位地址线SRAM_ADDR均属于信号接口。和微控制器间的接口信号则包括:16位数据线DATA、16位地址线ADDR、读写请求信号、中断请求信号和DMA请求响应信号(DMA_REQ与DMA_ACK)。其中对于16位地址线,低15位addr[14:0]用于存放存储器SSRAM的地址内容,高16位则用来选通SSRAM和USB控制器的内部寄存器,值为高时选择缓冲存储器,低则是内部寄存器。第三章USB核数据读取结点该USB核支持16个结点。具体结点数已经内置。功能控制器必须设置结点,具体操作是对结点寄存器:EPn_CSR,EPn_INT,EPn_BUFx进行赋值。功能控制器必须为每个使用的结点分配准确的结点数(EP_NO)。这里的结点数与物理结点相对应。软件上的处理是必须确保所有结点在给定的处理类型上是不一样的。3.1.1缓冲器指针缓冲器指针指向存储器中输入/输出数据的结构。对所有个体而言7FFFh这个值表示缓冲器尚未被分配。如果所有的的缓冲器都没有被分配,该核会返回NAK确认信息给USB主机。USB核支持双缓冲器,它能够减少对于功能微控制器和驱动软件的潜在需求。当所有的缓冲器指针都被调用的时候双缓冲器自动设为使能的。数据将会以循环的方式被找回到或填充缓冲器。当数据被送到或来自一个结点,缓冲器0将会优先被使用。当第一个缓冲器是空的/满的,功能控制器可能经由一个中断被唤醒。此时功能控制器的可以重新填充/清空缓冲器0。USB核现在可以使用缓冲器1进行下一步操作。当第二个缓冲器是满/空的,功能控制器将会中断,并且USB核会再次使用缓冲器0等等。没有被声明的缓冲器将会被跳过。一个缓冲区有设置过使用位将会导致核的停止,返回NAK/NYET标志给主机。当一个缓冲区被使用的时候其使用位将会作出相应提示(这个信息也提供给中断资源寄存器)。功能控制器在清空/重新填充缓冲区后必须清除这些位。缓冲区可以比最大有效负载大。因此,可以将多个数据包从缓冲区里取出或者放入。缓冲器用于输出结点必须是有效负载的倍数。当缓冲器剩余空间少于最大有效负载(因为一个或者多个数据包在少于最大有效负载情况也会被接收),缓冲区会被认为是填满,然后USB核会自动切换到下一个缓冲区。例如,如果最大有效装载量是512bytes,这个缓冲器的大小可能是512,1024,1536,2048比特等等。软件应该检查缓冲区域的大小,在整个缓冲区都被使用的时候它应该是置0。如果缓冲区的大小不是0,那么域的大小会显示还剩多少比特没被使用。对于输入缓冲器没有这些限制。核总会试图传输最大数量的比特。最大可能数量的比特总是比一个最大有效负载和剩余缓冲器容量小。1stIransactionMax.PayloadSi阳initialButterRoilterBufferPdiliterafter1sttrans-actioriInitialBufferSize2ndTransactionMax.PayloadSizeBufferSPeafter1sttransaciionNthTransactionSeeTextAboveLocalButlerMemory图3.1.1缓冲器指针示意3.1.2缓冲区过溢与下溢当一个超过缓冲器大小的数据包被接收的时候会发生缓冲区过溢。这个数据包会被丢弃并且一个NACK会被送入主机。典型地缓冲区能够容纳一个或更多的MAX_PL_SZ数据包。由于无法保证主机实际使用上会送出MAX_PL_SZ数据包,所以每次传输的时候缓冲区可能不完全填满MAX_PL_SZ数据包。当缓冲区发生过溢,USB核将会丢弃已接收的数据并返回一个NACK信号到主机。当有效负载不能兼容缓冲区时它会继续丢弃已接收到的数据并返回NACK信号到每个输出令牌。当两个缓冲器都没被声明或者置空,此时如果接收到一个输出令牌的时候USB核会快速返回一个NACK(它不会等待来自主机的数据)。下溢同理。3.1.3数据组织由于缓冲存储器有32位宽并且USB定义所有字节边界上的数据交换,理解缓冲器上的数据关系对于实际USB比特序列来说关系重大。USB核支持小端字节序列3124231615B70Byte3Byte2Byte1Byte0图3.1.3数据组织架构缓冲区指针总是指向0字节。USB核总是从缓冲区存储器读取4个字节。实际上通过第N个交换的最后字节取决于缓冲区的大小。最大数据包的大小必须是4个字节的倍数。DM/操作DM臊作允许介于USB核和Wishbone总线之间完全透明的数据移动。一旦开启之后,正常的操作便不需要功能微控制器的干预。每个结点都有一对相关的DMA_REQ和DMA_ACK信号。当位于CSR寄存器里的DMAEN位被设置,USB核便会使用DMA_REQ和DMA_ACK信号来控制DMA数据流。当缓冲区里有数据或者空的需要填充,DMA_REQ信号便会被声明。每传输一个字DMA必须返回一个DMA_ACK信号。在DMA模式,USED位不再被使用并且经常是清零的。在DMA模式,只有缓冲区0被使用。缓冲区1在DMA模式不会被使用。在USB存储器缓冲区内缓冲区0和外部DMA必须被设置成同样的地址。当指定数量的字节通过时它们应该被设置成同样的缓冲区大小并被打包一起。缓冲区必须至少能装载一个MAX_PL_SZ数据包。取决于DMA和外部总线潜在可能需要装载更多的数据包。由于USB核不支持数据转换,MAX_PL_SZ被设置成4字节的倍数。对于输出结点无法保证接收数据包是4字节的倍数。USB核提供了一个机制去解决这些问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 :无论何时只要接收的数据包小于MAX_PL_SZ,系统便会自动产生一个中断来通知该状态的功能控制器。缓冲区1的域的大小会提示该数据包的实际大小。USB核会填补MAX_PL_SZ的字节让DMA转换不中断。如果位于结点CSR寄存器的OTS_STOP被设置,该结点会失去作用并给予功能控制器足够的时间去处理短的数据包。功能控制器可以通过设置位于结点CSR寄存器的EP_DIS域来重新使能该结点。PID序列USB使用PID序列来保持数据同步传输。它也提供了一个机制去恢复和同步数据当同步过程出现紊乱。由于包的破碎同步可能出现问题,进而导致产生不良的CRC码。USB核完全实施USB相关的PID同步和恢复规定。同步结点不提供关于自动恢复因不同步而丢失数据的处理办法。USB核会自动和主机同步,然而由于同步结点没有相关的握手状态,因此无法告诉主机相关的失败情况。USB核提供一个“PID序列中断”来为上述情况提供中断以此告诉功能控制器相关事件。这个中断仅会被同步结点声明。对于其它结点来说它没有任何意义并且自动关闭。第四章控制器设计4.1UTMI接口UTMI(USBTransceiverMacrocellInteface)为协议层和设备物理层芯片提供了一个标准的接口。这个接口主要负责:一提供收发器芯片和协议层控制器模块间的数据传输通道,即在不改变其原有时序的情况下利用寄存器对收发数据缓存一个周期;二是侦测USB总线上的事件,实现设备在不同状态间的转换,控制IP在不同模式下工作。在高速接收状态下,RXActive和RXValid两个信号位在复位同时被置0,当收发器侦测到总线上的同步数据序列时,RXActive信号位置1,然后在侦测到PID后再将RXValid置1,这时进入数据接收状态。发送状态和接收类似,即也是TXValid和TXReady的先后赋值。ETenli}■■■,.弓I|±]111.LUJ口」»SI■L一:1l^lrri^rM近驗!ip的M呼軒-Ja可北w&d■卄J■hyLk:TesMFjrqi—n_n_rm_nr.rLnrL_n_n_TLJrstrii_*stive国刖13tkd4b.i:»rnTM_wtrr皿4Td.EColiK_£llT*ld.1■疋晋・1■:id九・■■■£usOtait图4.1aUTMI发送数据时序仿真图UTMI接口模块根据侦测到的事件发出一系列控制信号来进行相应的处理。因而在UTMI模块中设计了一个状态机来实现上述功能。下图描述该状态机的转换机制。SAFSffi式井等得lOOnS状志罠狀我FS槪式F空两妬3mS股上HE模式F空闲狀萍』於以上FSffiK:FSEO2.5uS至3mS设为FS13*零椅in4usSE0桃老lAd以上远粹喚醉(5mS以上$发送Chi:rpKEmS1迥出挂起横式退出挂秫操式弄挣1OIT1SKtt?1-nmS等樽ChirpJ尊特ChirpK刑模式下SEO状志韓制序列ChirpSCJKJKJSEO状设为HS西複式下SEO状杏设为HS壌允FS横式FSFO^S一SEOttA2>图4.1b状态机转换机制USB设备接口有4个状态:上电/复位、正常状态、暂停和复位。正常状态时USB设备控制器可以和UTMI进行数据交换,其它状态则不行。复位时,设备控制器可以进行速度模式间的切换。暂停时的设备控制器内部停止工作,直到主机通过USB总线传递唤醒信号才会退出暂停模式。下图则为UTMI电路综合图。Ig图1.1综合图4.2协议层(ProtocolLayer)协议层由三个模块组成,分别是:组包模块、协议引擎模块、解包模块。它负责解释和处理USB的绝大部分基本功能。通过对数据包进行解析/组装,去除/加上PID和CRC校验字段,将处理过的数据缓存到USB2.0的缓冲区内进行再处理。组包模块(PacketsAssembler)得到协议引擎模块的控制信号后,从缓冲区获取原始数据并加上包好的PID和CRC校验码,然后将处理后的数据发送给UTMI,最后数据将经由收发器进行并串转换传输出去。协议引擎模块(ProtocolEngine)是整个PL层的核心。它根据解包模块对接收到的数据包进行PID解码,并做出相应的处理;控制组包模块的数据包装处理以及发送,实时监测USB设备的状态寄存器并对之进行更新;利用USB状态寄存器内置中断位信息提出中断;提供对传输错误的恢复机制。解包模块(PacketsDisassemble)和PA模块的工作机制相反,它通过对每个数据包的剥离解析来得到其对应的设备地址、结点号等。当收发器得到SYNC码之后就会通知PD模块做好接收准备,然后在收发器芯片收到同步码后的第一个时钟周期后PD模块就会开始进行数据采样。所以类型的包前8位都是其PID和校验位,可以通过这点进行判断接收数据是否正确。判断数据无误后再根据PID字段来分析该包是令牌包、数据包或者握手包,并把分析结果传送给协议引擎模块。可通过如下语言描述这一过程:assignpid_TOKEN=pid_SETUP|pid_PING|pid_OUT|pid_IN|pid_SOF;assignpid_DATA=pid_DATA0|pid_DATA|pid_DATA2|pid_MDATA;下图是PL层的时序仿真情况:图4.2bPL层电路综合图4.3控制和状态寄存器寄存器可以用来暂存状态、指令、数据,是控制器内重要的组成部分。根据之前所述,控制器中所定义的寄存器均为32位,分为两种:一是负责描述控制器环境的状态寄存器,包括总线状态、传输模式以及中断的设置;另一种则是针对每个结点的寄存器。数据的传输通过结点(Endpoint)进行。控制器通过写结点寄存器来配置使用结点。该控制器最多可以使用16个结点,每个结点对应有4个寄存器,分别是Ep*_CSR、Ep*_INT、Ep*_BUF0和Ep*_BUF1。可以禾U用地址addr[8:4]来选择结点号,addr[3:2]选择寄存器类型。addrf3313017161$0tfriCSH011nlinrni]4IrrlrmiplSiiijky-mFTi10LIhifEnOSn-亦IMTI11USin-fti&flQ具体使用方式可以参照下图图4.3a寄存器使用相关m■■■■DO■-r-—rmj屮族砖筍0)rxWiADI离tW剜10CXI峑.七1011)[壮氐契用tpPiEBM131.LDIIQJ!■niirif曲何IE⑷】1国n軸供LMirnUTnimi1蚀训rNaiT^clkrslqu-LrLnLriip-LnLrTjru-^rLnLnuruTLrxfLTLnur[3.於*ri_wdirtio):a厂1国xrWi_Jihc-iujii.ij■"'lSsirv-^ntrOrtuiKiihj]criri_r-4u*拠_网▼IEYft-irLmn:n厂”1国]vdkTi[■Wilt]J[Cl]FTTlfoTltL—KTIorj:■!■]—sa图4.4a仲裁器时序仿真图第五章IP核的仿真与综合整个USBIP核的代码在编写完毕之后,需要对其进行语法功能等的验证。验证过程贯穿整个IC设计流程,对从行为级HDL设计到tape-out之前都需要做足够多的验证工作。验证旨在保证设计时所实现的功能特性是正确无误的,是和设计 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 中的目的功能特性是一致的。验证的目的在于证明设计没有逻辑和功能错误,不过实际操作过程中,它只能证明某些错误的存在而不能完全解决或避免后续问题的发生,因而它是一个穷举设计中可能存在的错误的过程。验证一般包括以下步骤:根据系统设计方案创建一个功能验证平台,整个验证计划构成了功能验证环境的基本框架。创建验证的平台按照验证计划对待验证对象给予一定激励,在仿真器中进行仿真。分析住址输出结果,与预期结果进行比较,直至满足覆盖目标。功能仿真是验证的主要形式和目标,其对象是RTL模型,目的是检查寄存器传输级模型是否满足设计需要。功能验证使用测试平台验证被测设计对象的功能,测试平台是根据设计对象的规约建立起来的。本文使用的是Altera公司的设计的Quartusii软件进行仿真。根据上文所描述的模块,先对各部分子模块进行仿真,接着对于TOP级进行整体的综合仿真。以下是整体USB核的仿真结果。下图是各部分主程序模块间的从属关系,可以比较清晰地看出整体程序的布局和调用情况TopLevelusbftcp,vTUTMIInterfaceMemoryArbiterWishboneInterfaceusbtutmiit.v□sbtmemarb.v\ustrfwb.vAProtocolLayerRegisterFilepLvusbf_rf.vT/\\\\1UTMILineStabsEndoointReciisierFles□sblutmiIs.yusbfeprf.v(usbfeprfdumniy.visaplaceholderlorunusedendpointajPacketDisassemDlerProtocolEnaineusbfjxj.vust>fpe.vrPacketAssemblerInternalALsof_pa.vjsbfjdma.v,1usb1_defines.v,'isincludedbyallrnodjles图5b程序布局图21tnJj-rst_i下图是整体USB核设计的时序图LkJifiSitiiUjtxLLHciiirLev»_f-kSl-rjaiLi-Sn.i.pK7.■H_DT诵曲軌_f»口TtViJ.1WFtdjbL®TCtBt.-3i._F*a_e.lo^AkkCt_J>AX_tdKiLTt6_r-LSltt0图5cTOP层时序仿真图第六章结束语随着微电子技术的日新月异,越来越多的系统设计师们加入到设计专用集成电路芯片的队伍里,并且对于芯片的设计周期的要求也越来越苛刻。因此对于IP核的数量和质量也成为了人们日益追求的目标。本文对USB2.0协议进行了较为深入的研究,对于USB设备接口规范进行了详细的分析,在此基础上完成了USB2.0设备接口IP核的设计。根据自下而上模块化的设计思想,将设计分成UTMI模块、PL协议层模块、控制和状态寄存器模块、缓冲和仲裁器模块4个部分。并对该设计进行功能仿真和综合。当然因为时间和条件的限制,该设计也有不足的地方,即对整个设计的验证工作仅仅进行了功能仿真而没有做FPGA验证和后续的工作。今后可以针对以上不足进行展开,让整个系统的性能更加完备。近年来,USB发展了OTG(On-The-Go)等新技术,该技术允许两个或两个以上的USB设备不需要经由主机就可以进行通讯。但是由于时间紧迫,本 论文 政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载 没有对OTG技术进行讨论和实现,这些内容有待完成。USB3.0的协议规范也已经出台,更高速便利的USB正开始走入人们生活,希望它越来越好。
本文档为【USB2IP核的设计与FPGA实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_072127
暂无简介~
格式:doc
大小:623KB
软件:Word
页数:0
分类:
上传时间:2019-07-18
浏览量:1