收藏 分销(赏)

USB芯片设计规范样本.doc

上传人:w****g 文档编号:9897073 上传时间:2025-04-12 格式:DOC 页数:42 大小:2.71MB
下载 相关 举报
USB芯片设计规范样本.doc_第1页
第1页 / 共42页
USB芯片设计规范样本.doc_第2页
第2页 / 共42页
点击查看更多>>
资源描述
资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。 文档编号: 保密级别: 众志-863系统芯片通用串行总线设备控制 芯片设计规范 UNITY-863 USBDC Specification 北京大学微处理器研究开发中心 ▔▔▔▔▔▔▔▔▔▔▔▔▔ 此硬件参考手册属机密级, 仅供北京大学微处理器研究中心相关成员查看 版本说明 版本号 日期 描述 00100 05/26/ 完成unity-863 usb specification 初稿 目 录 版本说明…………………………………………………………………………..1 目 录………………………………………………………………………………2 图片目录…………………………………………………………………………..3 表格目录…………………………………………………………………………..4 1 概述…………………………………………………………………………..5 1,1 功能简述……………………………………………………………….6 1.1.1 宏观特性…………………………………………………………6 1.1.2 主要功能…………………………………………………………6 1.2 Block Diagram………………………………………………………….8 1.3 引脚配置……………………………………………………………….9 1.3.1 USB接口描述………………………………………………….9 2 寄存器配置………………………………………………………………….10 2.1 可编程寄存器…………………………………………………………11 3 接口和时序………………………………………………………………….20 3.1 USB接口描述………………………………………………………….21 3.1.1 USB输入信号…………………………………………………22 3.1.2 USB输出信号…………………………………………………22 3.2 主要接口信号时序…………………………………………………….23 附录一 文档维护人……………………………………………………………21 附录二 文档评审情况…………………………………………………………21 图片目录 表格目录 . + 1 概 述 众志-863系统芯片 USBDC( univer serial bus devce control通用串行总线设备控制芯片, 以下简称USBDC) 是和带有USB主机控制器的设备进行通信的支持部件, 实现和带有USB主机控制器的设备进行数据交换。 USBDC和APB连接进行寄存器的初始化配置, 和DMAC连接进行大量的数据交换。 1.1 功能简述 1.1.1宏观特性 众志-863系统芯片 USBDC具有以下特征: l 48MHZ的系统时钟 l USB外挂FIFO,发送和接受FIFO都为128x16 l 一个配置, 三个端点 l DMAC传输方式 1.1.2主要功能 INTERFACE模块的功能 暂存数据( 读写数据) 、 地址信号、 读写信号 FSM模块的功能 把APB的时序转化为USB的时序同时返回FINISH信号和读数据 USBDC 使用SYNOPSYS公司的DESIGNWARE, 设备端的控制芯片, 把有效负载转换为满足协议的数据格式。 三个模块连在一起和具有USB主机控制器的设备( 主要是PC) 进行数据交换。 1.2 Block Diagram 在UNITY-863中, USBDC和其它模块的连接图如下: 图 1 与APB MASTER的连接 图 2 与DMAC和RAM的连接 1. 3引脚配置 本节简要描述USBDC的接口信号, 对每一个信号更详细的描述以及时序图参阅第三章接口信号和时序描述。 输入输出管脚 总模块输入输出信号和描述参见下表: 表1-1总模块输入输出信号 信号 方向 作用 描述 PCLK 输入 INTERFACE模块的时钟 APB MASTER发出 PSEL 输入 片选信号 1 有效 PENABLE 输入 使能信号 1 有效 PWRITE 输入 读写信号 1 有效 PADDR 输入 地址信号 宽度是10 PWDATA 输入 写数据 宽度是8 PRESETn 输入 复位信号 0 有效 USB_CLK 输入 FSM,USBDC的时钟信号 48MHZ PRDATA 输出 读数据 宽度是8 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写操作的数据信号 宽度是16 usb2app_rdma_req 输出 读操作的请求信号 1 有效 usb2app_wdma_req 输出 写操作的请求信号 1 有效 app2usb _rdma_data 输出 DMA读操作的数据信号 宽度是16 1.3.1 INTERFACE接口信号的描述 表1-2 INTERFACE接口信号 信号 方向 作用 描述 PCLK 输入 INTERFACE模块的时钟 APB MASTER发出 PSEL 输入 片选信号 1 有效 PENABLE 输入 使能信号 1 有效 PWRITE 输入 读写信号 1 有效 PADDR 输入 地址信号 宽度是10 PWDATA 输入 写数据 宽度是8 PRESETn 输入 复位信号 0 有效 USB_CLK 输入 FSM,USBDC的时钟信号 48MHZ FINISH 输入 表明FSM已经完成当前操作 1 有效 RDATA 输入 FSM返回的数据 宽度是8 PRDATA 输出 读数据 宽度是8 READY 输出 准备好信号, 有效表明能够进行下一次操作 1 有效 WDATA 输出 发给FSM的数据信号 宽度是8 WR 输出 发给FSM的读写信号 1 有效 ADDR 输出 发给FSM的地址信号 宽度是10 RSTn 输出 发给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写操作的数据信号 宽度是16 usb2app_rdma_req 输出 读操作的请求信号 1 有效 usb2app_wdma_req 输出 写操作的请求信号 1 有效 app2usb _rdma_data 输出 DMA读操作的数据信号 宽度是16 l 与APB的接口的信号说明: APB MASTER和INTERFACE接口的信号 PCLK 输入 APB的时钟 PSEL 输入 APB MASTER发出的片选信号 PENABLE 输入 APB MASTER 发出的使能信号。 PWRITE 输入 APB MASTER 发出的读写信号。 PADDR 输入 APB MASTER 发出的地址信号。宽度是10。 PWDATA 输入 APB MASTER 发出的写数据。宽度是8。 PRDATA 输出 APB MASTER 要读回的数据。宽度是8 PRESETn 输入 APB MASTER 发出的复位信号。低电平有效。 READY 输出 准备好信号, 表明当前操作已经完成, 等待下一个操作。 INTERFACE和FSM之间的信号 USB_CLK 输入 USB的时钟(48MHZ) REQ 输入 INTERFACE模块请求FSM对INTERFACE进行读操作。 FINISH 输出 FSM返回给INTERFACE的信号, 表明FSM已经完成当前操作。INTERFACE收到这个信号之后, 就把HREADY置位。 WDATA 输入 INTERFACE发出的写数据。宽度是8 RDATA 输出 FSM返回给INTERFACE的数据。宽度是8 ADDR 输入 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。 l 与DMAC的接口信号的说明: APP2USB_RXPKT_ACCEPTED DMAC通知USB发出一个OUT事务的ACK信号。 APP2USB_RXPKT_REJECTED DMAC通知USB发出一个OUT事务的NAK信号或者是IN 令牌( 标志) 的NAK信号。 APP2USB_RXMEM_AVAIL DMAC发出的RAM是否还有空间的信号。 USB2APP_RDMA_REQ USB发出的DMA读操作的请求信号。 APP2USB_RDMA_ACK DMAC对USB读请求的响应信号。 USB2APP_WDMA_REQ USB发出的DMA写操作的请求信号。 APP2USB_WDMA_ACK DMAC对USB写请求的响应信号。 USB2APP_EPINDEX USB发出的信号, 表明当前要操作的端点号和端点的方向。这个信号和DMA当前的地址构成了对RAM操作的地址。宽度是5。 USB2APP_RDMA_DATA 读操作的数据线。 APP2USB_WDMA_DATA 写操作的数据线。 DMA的传输方式采用INCREMNTING方式, 传输类型为BULK传输。DMAC和USB接口的时钟和USB的时钟一致, 而且时序关系和徐兴文已经协商好了, 她给出的信号和时序关系符合USB的要求。USB采用外挂FIFO的方式, FIFO的宽度采用halfword(16位),深度采用32位 。这样FIFO正好能够容纳一个包的大小。 操作流程: l 写操作 当USB发出DMA写请求后, DMAC会发出响应信号, 如果当前RAM没有数据时或者DMAC忙, DMAC就不同意当前的操作。否则DMAC发出响应ACK, 同时把数据放到总线上。USB就会在ACK等于1 的时钟的上升沿读取数据。送出数据( 读操作) l 读操作 当USB发出DMA读请求, 同时把数据放到总线上。就DMAC会发出响应信号ACK, 。DMAC就会在ACK 的下一个时钟的读取数据。DMAC数据读取操作结束之后, 会发出ACK或者NAK 响应。 主要信号时序图: 寄存器配置: DW_usbd MacroCore有一个可见的能被编程的寄存器组, 她用来对管理配置、 控制、 监视USB的所有操作。具体的寄存器组以及如何管理说明如下: 所有的寄存器按照功能能够分为三类: l 终端信息寄存器组 l 请求、 控制和状态寄存器组 l 统计寄存器组 她们的功能基于两个出发点: l 保持当前与配置相关的信息 l 保持状态和中断控制 终端信息寄存器组: Core中对于每个终端都给分配一个24字节的寄存器块, 块内的寄存器说明如下: 寄存器名字: ep_bEndpoitAddress 寄存器宽度( bits) : 8 属性: 只读 偏址: ‘h000 复位值: 寄存器名字: ep_bmAttributes 寄存器宽度( bits) : 8 属性: 对Endpoint 0只读,别的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 复位值: ‘h00 USB的参数配置 它分为两部分:一是在coreConsultant工具中直接输入的数据, 另一是由coreConsultant 间接产生的数据。 一,直接数据: Configurable Feature Options ———————————————————————————————— USB Data Rate Requirement full speed PHY type classical (1.1) Clock frequency ratio between DPLL and other Classical core modules 1x Number of concurrent interface per configuration 1 Number of additional IN endpoints (Excluding default control endpoint 0) 1 Number of additional OUT endpoints (Excluding default control endpoint 0) 1 Bandwidth-matching FIFO controller depth (matches RAM depth) 128 Bandwidth-matching FIFO controller width (matches application’s data port width) 16bits Location of RAMs for bandwidth-matching FIFO Controllers internal Endpoint 0 maximum packet size 64bytes Endpoint 1 IN transfer type bulk Endpoint 1 OUT transfer type bulk Endpoint 1 IN MaxPacketSize 8 Endpoint 1 OUT MaxPacketSize 8 Check to Enable Control-Endpoint Capabilities true 二, 间接数据: fiforam_data_width 16 : RAM的数据宽度位16 fiforam_be_data_width 2 : 用以指示数据是否有效, 需要2个比特 fifo_addr_width 7 : RAM的寻址宽度 log2_fifo_depth 7 一些常量: (列出它们, 可能在软件编程的时候会用到) a) Device State Machine(DSM)的状态定义: DSM_ATTACHED 0 DSM_POWRED 1 DSM_DEFAULT 2 DSM_ADDRESS 3 DSM_CONFIGURED 4 DSM_NCSUSPEND 5 DSM_SUSPEND 6 b) 数据的PID定义: D0_PID 4’b0001 D1_PID 4’b0010 D2_PID 4’b0100 MD_PID 4’b1000 c) 对被选择的控制命令回复寄存器的定义。NOTE: 这些代码由CSM产生, 由TSM读。 SELECT_NOTHING 0 SELECT_CONFIGURATION 1 SELECT_INTERFACE 2 SELECT_DEVICE_STATUS 3 SELECT_DEVICE_INTERFACE 4 SELECT_ENDPOINT_STATUS 5 SELECT_TEATURE_REMWKP 6 SELECT_T
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服