USB芯片设计规范_第1页
USB芯片设计规范_第2页
USB芯片设计规范_第3页
USB芯片设计规范_第4页
USB芯片设计规范_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

------------------------------------------------------------------------USB芯片设计规范文档编号:保密级别:众志-863系统芯片通用串行总线设备控制芯片设计规范UNITY-863USBDCSpecification北京大学微处理器研究开发中心▔▔▔▔▔▔▔▔▔▔▔▔▔此硬件参考手册属机密级,仅供北京大学微处理器研究中心相关成员查看版本说明版本号日期描述0010005/26/2002完成unity-863usbspecification初稿目录版本说明…………..1目录………………2图片目录…………..3表格目录…………..4概述…………..51,1功能简述……………….61.1.1宏观特性…………61.1.2主要功能…………6BlockDiagram………….8引脚配置……………….9USB接口描述………………….9寄存器配置………………….102.1可编程寄存器…………11接口和时序………………….203.1USB接口描述………….213.1.1USB输入信号…………………223.1.2USB输出信号…………………223.2主要接口信号时序…………………….23附录一文档维护人……………21附录二文档评审情况…………21图片目录表格目录.+1概述众志-863系统芯片USBDC(universerialbusdevcecontrol通用串行总线设备控制芯片,以下简称USBDC)是和带有USB主机控制器的设备进行通信的支持部件,实现和带有USB主机控制器的设备进行数据交换。USBDC和APB连接进行寄存器的初始化配置,和DMAC连接进行大量的数据交换。1.1功能简述1.1.1宏观特性众志-863系统芯片USBDC具有以下特征:48MHZ的系统时钟USB外挂FIFO,发送和接受FIFO都为128x16一个配置,三个端点DMAC传输方式1.1.2主要功能INTERFACE模块的功能暂存数据(读写数据)、地址信号、读写信号FSM模块的功能把APB的时序转化为USB的时序同时返回FINISH信号和读数据USBDC使用SYNOPSYS公司的DESIGNWARE,设备端的控制芯片,把有效负载转换为满足协议的数据格式。三个模块连在一起和具有USB主机控制器的设备(主要是PC)进行数据交换。1.2BlockDiagram在UNITY-863中,USBDC和其他模块的连接图如下:图SEQ图表\*ARABIC1与APBMASTER的连接图SEQ图表\*ARABIC2与DMAC和RAM的连接3引脚配置本节简要描述USBDC的接口信号,对每一个信号更详细的描述以及时序图参阅第三章接口信号和时序描述。输入输出管脚总模块输入输出信号和描述参见下表:表1-1总模块输入输出信号信号方向作用描述PCLK输入INTERFACE模块的时钟APBMASTER发出PSEL输入片选信号1有效PENABLE输入使能信号1有效PWRITE输入读写信号1有效PADDR输入地址信号宽度是10PWDATA输入写数据宽度是8PRESETn输入复位信号0有效USB_CLK输入FSM,USBDC的时钟信号48MHZPRDATA输出读数据宽度是8app2usb_rxpkt_accepted输入OUT事务的ACK信号1有效app2usb_rxpkt_rejected输入OUT事务的NAK信号1有效app2usb_rdma_ack输入DMA读请求的响应信号1有效app2usb_wdma_ack输入DMA写请求的响应信号1有效app2usb_wdma_data输入DMA写操作的数据信号宽度是16usb2app_rdma_req输出读操作的请求信号1有效usb2app_wdma_req输出写操作的请求信号1有效app2usb_rdma_data输出DMA读操作的数据信号宽度是16INTERFACE接口信号的描述表1-2INTERFACE接口信号信号方向作用描述PCLK输入INTERFACE模块的时钟APBMASTER发出PSEL输入片选信号1有效PENABLE输入使能信号1有效PWRITE输入读写信号1有效PADDR输入地址信号宽度是10PWDATA输入写数据宽度是8PRESETn输入复位信号0有效USB_CLK输入FSM,USBDC的时钟信号48MHZFINISH输入表明FSM已经完成当前操作1有效RDATA输入FSM返回的数据宽度是8PRDATA输出读数据宽度是8READY输出准备好信号,有效表明可以进行下一次操作1有效WDATA输出发给FSM的数据信号宽度是8WR输出发给FSM的读写信号1有效ADDR输出发给FSM的地址信号宽度是10RSTn输出发给FSM的复位信号0有效1.3.2FSM的接口信号app2usb_rxpkt_accepted输入OUT事务的ACK信号1有效app2usb_rxpkt_rejected输入OUT事务的NAK信号1有效app2usb_rdma_ack输入DMA读请求的响应信号1有效app2usb_wdma_ack输入DMA写请求的响应信号1有效app2usb_wdma_data输入DMA写操作的数据信号宽度是16usb2app_rdma_req输出读操作的请求信号1有效usb2app_wdma_req输出写操作的请求信号1有效app2usb_rdma_data输出DMA读操作的数据信号宽度是16与APB的接口的信号说明:APBMASTER和INTERFACE接口的信号PCLK输入APB的时钟PSEL输入APBMASTER发出的片选信号PENABLE输入APBMASTER发出的使能信号。PWRITE输入APBMASTER发出的读写信号。PADDR输入APBMASTER发出的地址信号。宽度是10。PWDATA输入APBMASTER发出的写数据。宽度是8。PRDATA输出APBMASTER要读回的数据。宽度是8PRESETn输入APBMASTER发出的复位信号。低电平有效。READY输出准备好信号,表明当前操作已经完成,等待下一个操作。INTERFACE和FSM之间的信号USB_CLK输入USB的时钟(48MHZ)REQ输入INTERFACE模块请求FSM对INTERFACE进行读操作。FINISH输出FSM返回给INTERFACE的信号,表明FSM已经完成当前操作。INTERFACE收到这个信号之后,就把HREADY置位。WDATA输入INTERFACE发出的写数据。宽度是8RDATA输出FSM返回给INTERFACE的数据。宽度是8ADDR输入INTERFACE发出的地址信号。宽度是10。WR输入INTERFACE发出的读写信号。RSTn输入INTERFACE发出的复位信号,低电平有效。FSM和USB之间的信号app_addr输出FSM发出的地址信号。app_wr_n输出FSM发出的写信号。低电平有效。app_rd_n输出FSM发出的读信号。低电平有效。app_reg_sel输出FSM发出的片选信号。app2usb_drdy输出FSM发出的准备好信号。usb2app_drdy输入USB发出的准备好信号。app2usb_data输出FSM发出的数据信号。宽度是8。usb2app_data输入USB返回的数据信号。宽度是8。未说明的电平有效的均为高电平有效。功能描述:工作流程:1.INTERFACE和FSM复位,此时READY,FLAG信号置为高电平,REQ清零,等待读写指令。2.读写指令发出后,APB会发出地址,读写信号,PSEL,PENABLE.3.在PSEL,PENABLE都有效的时候,在PCLK的上升沿,此时把读写信号、地址信号和数据(读操作无数据)保存在INTERFACE里边,同时把HREADY置为无效,并且向FSM发出请求信号REQ。(上次的文档是下一个周期发REQ信号)。4.FSM在USB_CLK的上升沿,如果FLAG(请参看说明)和REQ都为1,就把APB的时序变为USB要求的时序,同时把FLAG置为0。5.FSM从USB得到数据和结束信号FINISH之后,把数据(如果写操作此时没有数据),放到INTERFACE里边,同时向INTERFACE发出HREADY的置位信号。6.等待软件的查询。一些说明:对软件查询的要求:当发现READY为高时,如果上次发出的指令为写指令,这时可以对USB进行读写。如果上次发出的是读指令,就把数据读走。我们在APB的PENABLE,PSEL两个信号都有效时的时钟上升沿把地址,读写信号和写数据保存在INTERFACE。在PSEL下降沿我们向FSM发出一个请求信号REQ(因为两个时钟频率不同,一个为166MHZ,一个为48MHZ,所以REQ至少要4个166时钟宽度才能保证FSM的时钟采样到正确的REQ为了防止REQ信号被采样两次,要设一个标志信号FLAG,在时钟(USB时钟)上升沿采样到REQ有效之后,就把标志信号FLAG清零。系统复位时标志信号FLAG置1,这样就防止被采样两次。FSM采样到数据和控制信号之后,FSM按照USB的时钟和要求的时序发给USB,当USB操作完成之后,发数据(写操作不返回数据)和FINISH信号给FSM,FSM接到这个信后之后,把数据发到INTERFACE,并且置位信号READY。FSM的时钟和USB的时钟一致。INTERFACE的时钟和APB的时钟保持一致。因为两个时钟频率相差比较大,所以复位信号的宽度要求很宽,至少为3个USB时钟周期(48MHZ)。寄存器的读写数据总线宽度是8。与DMAC的接口信号的说明:APP2USB_RXPKT_ACCEPTEDDMAC通知USB发出一个OUT事务的ACK信号。APP2USB_RXPKT_REJECTEDDMAC通知USB发出一个OUT事务的NAK信号或者是IN令牌(标志)的NAK信号。APP2USB_RXMEM_AVAILDMAC发出的RAM是否还有空间的信号。USB2APP_RDMA_REQUSB发出的DMA读操作的请求信号。APP2USB_RDMA_ACKDMAC对USB读请求的响应信号。USB2APP_WDMA_REQUSB发出的DMA写操作的请求信号。APP2USB_WDMA_ACKDMAC对USB写请求的响应信号。USB2APP_EPINDEXUSB发出的信号,表明当前要操作的端点号和端点的方向。这个信号和DMA当前的地址构成了对RAM操作的地址。宽度是5。USB2APP_RDMA_DATA读操作的数据线。APP2USB_WDMA_DATA写操作的数据线。DMA的传输方式采用INCREMNTING方式,传输类型为BULK传输。DMAC和USB接口的时钟和USB的时钟一致,并且时序关系和徐兴文已经协商好了,他给出的信号和时序关系符合USB的要求。USB采用外挂FIFO的方式,FIFO的宽度采用halfword(16位),深度采用32位。这样FIFO正好可以容纳一个包的大小。操作流程:写操作当USB发出DMA写请求后,DMAC会发出响应信号,如果当前RAM没有数据时或者DMAC忙,DMAC就不同意当前的操作。否则DMAC发出响应ACK,同时把数据放到总线上。USB就会在ACK等于1的时钟的上升沿读取数据。送出数据(读操作)读操作当USB发出DMA读请求,同时把数据放到总线上。就DMAC会发出响应信号ACK,。DMAC就会在ACK的下一个时钟的读取数据。DMAC数据读取操作结束之后,会发出ACK或者NAK响应。主要信号时序图:寄存器配置:DW_usbdMacroCore有一个可见的能被编程的寄存器组,他用来对管理配置、控制、监视USB的所有操作。具体的寄存器组以及如何管理说明如下:所有的寄存器按照功能可以分为三类:终端信息寄存器组请求、控制和状态寄存器组统计寄存器组她们的功能基于两个出发点:保持当前与配置相关的信息保持状态和中断控制终端信息寄存器组:Core中对于每个终端都给分配一个24字节的寄存器块,块内的寄存器说明如下:寄存器名字:ep_bEndpoitAddress寄存器宽度(bits):8属性:只读偏址:‘h000复位值:寄存器名字:ep_bmAttributes寄存器宽度(bits):8属性:对Endpoint0只读,别的Endpoint读/写偏址:‘h001复位值:寄存器名字:ep_wMaxpacketSize寄存器宽度(bits):16属性:读/写偏址:‘h002复位值:寄存器名字:ep_bInterfaceNumber寄存器宽度(bits):8属性:读/写偏址:‘h004复位值:‘h00寄存器名字:ep_stat寄存器宽度(bits):8属性:Bits7,5,3,2,0:读/写,屏蔽Bits6,4:保留Bits1:读/写偏址:‘h005复位值:‘h00寄存器名字:ep_setup_bmRequestType寄存器宽度(bits):8属性:读/写偏址:‘h006复位值:‘h00寄存器名字:ep_setup_bRequest寄存器宽度(bits):8属性:只读偏址:‘h007复位值:‘h00寄存器名字:ep_setup_wValue寄存器宽度(bits):16属性:只读偏址:‘h008(低位在’h008,高位在’h009)复位值:‘h0000寄存器名字:ep_setup_wIndex寄存器宽度(bits):16属性:只读,屏蔽偏址:‘h00A(低位在’h00A,高位在’h00B)复位值:‘h0000寄存器名字:ep_setup_wLength寄存器宽度(bits):16属性:只读偏址:‘h00C(低位在’h00C,高位在’h00D)复位值:‘h0000寄存器名字:ep_synchFrame寄存器宽度(bits):16属性:读/写偏址:‘h00E(低位在’h00E,高位在’h00F)复位值:‘h0000寄存器名字:app_intr寄存器宽度(bits):8属性:读/写,屏蔽偏址:‘h000复位值:‘h00寄存器名字:app_imask寄存器宽度(bits):8属性:读/写偏址:‘h001复位值:‘hFF寄存器名字:app_ctrl寄存器宽度(bits):8属性:读/写偏址:‘h002复位值:‘h00寄存器名字:ep_info寄存器宽度(bits):8属性:只读,Bits4,3,2,1,0屏蔽偏址:‘h003复位值:‘h00寄存器名字:cfg_bConfigurationValue寄存器宽度(bits):8属性:读/写偏址:‘h004复位值:‘h00寄存器名字:cfg_bmAttributes寄存器宽度(bits):8属性:Bit7:只读Bit6:读/写,屏蔽Bit5:读/写Bits4-0:保留偏址:‘h005复位值:‘h00寄存器名字:dev_speed寄存器宽度(bits):8属性:Bits7-2:保留Bits1-0:只读偏址:‘h006复位值:‘h00寄存器名字:frame_number寄存器宽度(bits):16属性:只读偏址:‘h00E(低位在’h00E,高位在’h00F)复位值:‘h0000寄存器名字:ep_transaction0寄存器宽度(bits):16属性:读/写偏址:‘h010(低位在’h010,高位在’h011)复位值:‘h0000寄存器名字:ep_transaction1寄存器宽度(bits):16属性:读/写偏址:‘h012(低位在’h012,高位在’h013)复位值:‘h0000寄存器名字:app_ifUpdate寄存器宽度(bits):16属性:只写偏址:‘h014复位值:N/A寄存器名字:cfg_interface0寄存器宽度(bits):16属性:读/写偏址:‘h040复位值:‘h0000寄存器名字:pkt_passed_ctr寄存器宽度(bits):16属性:读/写偏址:‘h080(低位在’h080,高位在’h081)复位值:‘h0000寄存器名字:pkt_dropped_ctr寄存器宽度(bits):16属性:读/写偏址:‘h082(低位在’h082,高位在’h083)复位值:‘h0000寄存器名字:crc_err_ctr寄存器宽度(bits):16属性:读/写偏址:‘h084(低位在’h084,高位在’h085)复位值:‘h0000寄存器名字:bitstuff_err_ctr寄存器宽度(bits):16属性:读/写偏址:‘h086(低位在’h086,高位在’h087)复位值:‘h0000寄存器名字:pid_err_ctr寄存器宽度(bits):16属性:读/写偏址:‘h088(低位在’h088,高位在’h089)复位值:‘h0000寄存器名字:framing_err_ctr寄存器宽度(bits):16属性:读/写偏址:‘h08A(低位在’h08A,高位在’h08B)复位值:‘h0000寄存器名字:txpkt_ctr寄存器宽度(bits):16属性:读/写偏址:‘h08C(低位在’h08C,高位在’h08D)复位值:‘h0000寄存器名字:stat_ctr_ov寄存器宽度(bits):8属性:读/写偏址:‘h08E复位值:‘h00USB的参数配置它分为两部分:一是在coreConsultant工具中直接输入的数据,另一是由coreConsultant间接产生的数据。一,直接数据:ConfigurableFeatureOptions————————————————————————————————USBDataRateRequirementfullspeedPHYtypeclassical(1.1)ClockfrequencyratiobetweenDPLLandotherClassicalcoremodules1xNumberofconcurrentinterfaceperconfiguration1NumberofadditionalINendpoints(Excludingdefaultcontrolendpoint0)1NumberofadditionalOUTendpoints(Excludingdefaultcontrolendpoint0)1Bandwidth-matchingFIFOcontrollerdepth(matchesRAMdepth)128Bandwidth-matchingFIFOcontrollerwidth(matchesapplication’sdataportwidth)16bitsLocationofRAMsforbandwidth-matchingFIFOControllersinternalEndpoint0maximumpacketsize64bytesEndpoint1INtransfertypebulkEndpoint1OUTtransfertypebulkEndpoint1INMaxPacketSize8Endpoint1OUTMaxPacketSize8ChecktoEnableControl-EndpointCapabilitiestrue二,间接数据:fiforam_data_width16:RAM的数据宽度位16fiforam_be_data_width2:用以指示数据是否有效,需要2个比特fifo_addr_width7:RAM的寻址宽度log2_fifo_depth7一些常量:(列出它们,可能在软件编程的时候会用到)DeviceStateMachine(DSM)的状态定义:DSM_ATTACHED0DSM_POWRED1DSM_DEFAULT2DSM_ADDRESS3DSM_CONFIGURED4DSM_NCSUSPEND5DSM_SUSPEND6数据的PID定义:D0_PID4’b0001D1_PID4’b0010D2_PID4’b0100MD_PID4’b1000对被选择的控制命令回复寄存器的定义。NOTE:这些代码由CSM产生,由TSM读。SELECT_NOTHING0SELECT_CONFIGURATION1SELECT_INTERFACE2SELECT_DEVICE_STATUS3SELECT_DEVICE_INTERFACE4SELECT_ENDPOINT_STATUS5SELECT_TEATURE_REMWKP6SELECT_TEATURE_EPHALT7SELECT_TEATURE_TSTMODE8SELECT_SYNCH_FRAME9功能选择器(FEATUREselectors)的定义FEATURE_REMOTE_WAKEUP1FEATURE_ENDPOINT_HALT0FEATURE_TEST_MODE2对IN处理状态机(transactionstatemachine)的状态定义:TSM_IN_TONE0TSM_IN_VALIDATE1TST_IN_DATAPID2TST_IN_DATA3TST_IN_STALL4TST_IN_NAK5TST_IN_HANDSHAKE6TST_IN_WAIT7对OUT处理状态机(transactionstatemachine)的状态定义:TSM_OUT_TONE0TSM_OUT_VALIDATE1TST_OUT_DATAPID2TST_OUT_DATA3TST_OUT_STALL4TST_OUT_NAK5TST_OUT_HANDSHAKE6TST_OUT_WAIT7对PING处理状态机的定义TSM_PING_TONE0TSM_PING_VALIDATE1TST_PING_HANDSHAKE2TST_PING_WAIT3TST_PING_STALL4对SETUP处理状态机的定义TSM_SETUP_TONE0TST_SETUP_VALIDATE1TST_SETUP_DATAPID2TST_SETUP_DATA3TST_SETP_HANDSHAKE4对WDMA状态机的定义(DMA的write操作)WDMA_STATE_IDLE0WDMA_STATE_START1WDMA_STATE_DPID2WDMA_STATE_DREQ3WDMA_STATE_FINISH4PIE(PHYInterfaceEngine)读入pid数据总线上值的定义(pie_rx_pid)RX_IN_PID10’b00000_00001RX_OUT_PID10’b00000_00010RX_SETUP_PID10’b00000_00100RX_PING_PID10’b00000_01000RX_ACK_PID10’b00000_10000RX_DATA0_PID10’b00001_00000RX_DATA1_PID10’b00010_00000RX_DATA2_PID10’b00100_00000RX_MDATA_PID10’b01000

温馨提示

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

评论

0/150

提交评论