USB2.0接口IP核的开发与设计

网友投稿 428 2022-10-26

USB2.0接口IP核的开发与设计

系统结构设计

作模式控制器和缓存控制器。这些模块将在下面具体介绍。

模块设计

收发器( Transceiver)

工作模式控制器( Work Mode Controller)

根据协议可知,从USB 设备连接到主机的USB 接口的过程中,USB 设备有多种可能的状态。不同的状态实现不同的功能。特别注意的是,如果USB 设备在一段特定的时间内探测不到总线活动时,必须进入挂起态,此时USB 设备保持当前的状态、地址及配置,这样可以有效地降低功耗。当检测到总线上任何非空闲信号时,设备必须被唤醒,回到原来的工作状态。

USB协议控制器( USB Protocol Controller)

Packet) ,则用16 位CRC 校验,然后将有效数据送入缓存控制器进行缓存,再根据传输类型,分别送入不同的模块; 在控制传输方式下, 则将数据传送给MCU ,利用MCU 完成主机对设备相应的配置工作以及完成和主机配置方面的数据交换,在其他传输方式下,则直接通过

总线将数据传送到SD

中存储。

如果是握手包(handshake Packet) ,则不需要CRC 校验,因为其已经包含自身反码的校验字段,直接将解析后的PID 送入USB 逻辑控制器。在发送数据时,如果是数据包,首先从缓存控制器模块得到所需数据,然后生成16 位CRC 校验码和相应数据包的PID ,传送到收发器中进行发送;如果是握手包,则直接生成相应握手包(ACK,NAK,STALL) 的PID ,然后送到收发器中发送.同时,USB 协议是通过切换从属于数据发送器和接收器的时序位来实现高速数据传输同步的。仅在接收器接受到带有正确的数据PID的无错数据包时,接收器时序位才切换;而仅在数据发送器收到合法的ACK握手PID 时,发送器时序位才切换。如果同步失败,则根据具体情况重传或丢弃该数据包,这样可以保证数据传输的正确性。

缓存控制器( Buffer Controller)

本文设计的缓存结构要求缓存控制器对不同的传输方式加以区分,相应增加了一些控制逻辑的复杂度。对于控制传输,数据是在USB 协议控制器和MCU 之间传输;对于其他传输方式,数据则是在USB 协议控制器和DMA(Direct Memory Access) 之间传输。总体来说,这种缓存结构是非常合理且有效的:节省硬件开销,而且保证传输速度。

MCU(Micro Control Unit)

MCU 采用的是51 系列的89C52 ,这部分是固件程序,负责协助完成控制传输,即USB 设备功能与设置配置的工作,利用MCU 可以降低硬件复杂度和硬件开销。在控制传输中,利用MCU 的中断程序来及时处理相应的数据交换,在批量传输时,MCU 几乎不参与工作,这是因为其工作速度较慢,不能满足大量数据传输对速度传输要求,影响传输效率。因为这部分不是硬件电路设计,所以就不再赘述了。

该模块主要负责USB 设备的状态转换,包括设备与主机的高速握手信号检测、主机复位信号检测、挂起和唤醒状态检测等功能。具体的状态转化过程如图2 所示。

当USB 设备刚刚和主机建立连接时,工作在全速状态,主机发送复位信号,在复位过程中,设备发送Chirp K 信号给主机,支持USB 2. 0 的主机接收到此信号后发送3 组交替的Chirp K和Chirp J信号。设备探测到此信号后,在复位信号结束后就工作在高速(480Mbps) 工作状态,否则USB 设备工作在全速(12 Mbps) 状态.当设备工作在高速模式下时,直接使用收发器提供的30MHz 的时钟;当设备工作在全速模式下时,此模块要对收发器提供的时钟进行40分频,然后再供给USB 的其他模块单元。这是因为在全速工作模式时,数据传输的串行速率是12Mbps ,仅为高速传输的1/ 40。检测总线状态,当接收到来自主机的软复位信号时,此模块负责产生复位信号给整个USB 接口电路。处在任何一种状态的设备都必须接收主机的复位信号。

检测总线状态,当USB设备发现总线上的连续空闲(高速时总线状态为SE0 ,全速时总线状态为J ) 时间超过3 ms 时,该模块产生挂起(suspend) 信号给整个USB 2. 0 接口电路,使之进入挂起状态,所有模块都不工作,此时整个电路的功耗会变得很低;处在挂起状态的设备,探测到总线上的非空闲(总线状态一般为K态) 信号时则产生唤醒信号,使整个电路在一定时间内回到全速或高速工作状态。

方案及测试结果

测试电路

设计了一个测试电路来验证USB 2. 0 接口电路功能的正确性,如图5 所示。在原USB 2. 0 接口电路的基础上,添加了MCU 接口、DMA(Direct Memory Access) 、EPP(Enhanced Parallel Port) 和SDRAM。MCU 负责控制整个电路系统中各个模块的协调工作。这个测试电路实际上基于数码相机电路系统,USB 为该系统与主机的接口电路。

下传数据则和上传数据的验证过程类似. 或者直接通过USB 先下传然后再上传来验证数据的正确性。值得一提的是,MCU 接口、DMA ,EPP 和SDRAM这几个模块没有使用收发器芯片提供的30 MHz 时钟,而是使用了

另外的系统时钟(13. 5 MHz/ 27 MHz/ 54 MHz) ,这样可以保证在USB 接口电路没有连接到主机或处在挂起状态(收发器此时也处在挂起状态,不提供时钟) 时,主机可以自由地将数据通过EPP 上传或下传到SDRAM中,而不必受USB 接口电路工作与否的限制,便于整个系统的测试工作。这样使得缓存控制器和DMA 之间的数据传输变为异步的工作模式,增加了一些处理的复杂度。图6 为USB 2. 0 接口电路

验证的验证平台。

测试结果

相应的测试结果为:USB 2. 0 接口电路功能正确,在高速,全速和挂起状态下的功耗(包括收发器以及其他的辅助模块EPP , SDRAM 等) 分别为:584 ,254 ,102 mw。批量传输的有效数据传输速率可以达到100 Mbps ,没有达到当然也不可能达到USB 2. 0 协议所规定的480 Mbps ,这是传输带宽的限制和数据包中冗余信息(包开始符、包结束符、同步字段以及校验码) 的存在所导致的,同时在USB 接口电路内部缓存通过DMA总线和SDRAM交互数据的时候,由于DMA 总线速度的限制,缓存也增加了一定的等待时间。总体来讲,100Mbps 的批量传输速率还是令人满意的。

本文提出的USB 2. 0 接口电路系统,兼顾了软硬件的优缺点,硬件电路与单片机有效结合使用,硬件实现简单,造价低廉. 同时为了实现较高的传输速率,满足USB 2. 0 高速传输的要求,并有效节省RAM,电路采用了不同传输方式缓冲区复用的双缓冲区的缓存结构。在FPGA 的验证过程中,为了实现测试的方便性,部分电路采用了异步的工作模式。整个模块已经通过FPGA 验证,功能正确。现在FPGA 的验证工作已经完成,下一步的任务就是在此基础上实现USB 2. 0 接口电路的芯片设计。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java设计模式之组合模式的示例详解
下一篇:Knative 基于流量的灰度发布和自动弹性实践
相关文章

 发表评论

暂时没有评论,来抢沙发吧~