微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > USB IP核的设计及FPGA验证

USB IP核的设计及FPGA验证

时间:12-14 来源:互联网 点击:

去位填充时发现了有连续7个“1”则可以认为数据在传输过程中出现了错误,数据包已经损坏,必须通知协议层。在接收部分需要特别注意的是:在接收USB主机过来数据时,是不同的时钟域,因此必须考虑到亚稳态问题。在本设计中,由于只处理单个比特信号,因此用了两级寄存器来消除亚稳态。

发送部分:将协议层打包好的加上同步字段,然后进行并串转换,将字节形式转换成比特流形式,接着根据协议将数据进行位填充和NRZI编码,通过D+和D一信号传送给USB主机。这个同步字段也是告诉USB主机有一个新数据包发送过来了,在发送部分还要产生包结束EOP(End of Packet)的信号。

3.3 USB协议层

协议层主要分成三个子模块:解包模块、打包模块和协议引擎模块。这一层主要是将经过串口接口引擎模块过来的数据进行解包,剔除USB协议中的信息。同时将端点中要发送的数据,在协议引擎控制下进行相应的打包,然后通过SIE模块传送给USB主机。 3.3.1 解包模块

本模块主要将接收到的信息包数据进行解析,解析出包标识(PID),端点地址和USB设备地址以及包含在包中的有效数据。在解包时,对令牌包进行CRC5校验,对数据包进CRCl6检验,若出错则进行相应的出错处理。从上面所述可知,任何包都有同步字段而同步字段在串口接口引擎模块中已经除去了,因此本模块不用关心同步字段。整个解包数据流如图3所示。


整个解包过程如下:首先判断接收的包是什么包,若为TOKEN包(0UT或IN或SOF或SETUP或ACK或NAK或STALL或PRE)则转入到TOKEN包的处理进程,若为数据包(DATA0或DATAl)则转入到DATA包的处理进程。在TOKEN包或DATA包中若发现数据有错则丢弃此包并报错。

3.3.2 打包模块

根据PE送来的PID组织相应的信息包,把要发送的数据安排在相应的数据包,或者组织令牌包。发送令牌包时,不必产生CRC5校验位。在发送数据包时,需要把有效数据的CRCl6校验位放在末尾一起发送。这个模块主要就是如何把协议层引擎模块送过来的数据进行打包,打包的概念其实质就是把要发送的数据根据其相应的信息安排相应的发送顺序。同样打包的过程中也不用考虑同步字段,同步字段在串口接口引擎层加入。整个打包数据流如图4所示。

3.3.3 协议层引擎模块

在USB设备中,某一个时刻和主机通信的只能是一个端点,当前操作都基于这个端点地址。主机不能同时和几个端点进行通信,端点的属性在设备和主机刚开始连接时进行的枚举过程中已经确定,保存在各端点对应的寄存器中,比如是IN还是OUT端点,是支持控制传输、批量传输还是中断传输的端点等。协议引擎模块是整个协议层的核心控制单元,控制了其他所有模块的工作方式,根据当前端点的配置或当前状态处理传输事务,并在传输事务中实时更新控制与状态寄存器。他的功能包括:有效处理IN,OUT和SETUP事务,确定当前传输事务要操作的端点地址,正确应答各种包和管理数据的发送和接收,同时实现USB协议中的错误恢复机制。

3.4 端点控制模块和端点模块

端点模块:端点其实就是USB进行通信时,用于存数据的缓冲区,为了提高数据存取的速度,本IP核的端点设计成FIFO。端点控制模块:主要是端点控制寄存器和端点状态寄存器,此模块中包含了USB IP核的顶层控制和状态寄存器。如USB设备的状态控制寄存器、设备地址寄存器、中断屏蔽寄存器和中断源寄存器等。为了增加灵活性,在设计时针对每一个端点分别设计了设置和功能相同但地址不同的寄存器,包括端点的控制状态寄存器、中断源寄存器、中断屏蔽寄存器、缓冲区的指针寄存器。端点根据协议可以配置1到16个,在实际设计中根据本身系统需要可以对USB IP核配置端点数,增加了USB IP核端点可扩展性。

3.5 总线适配器模块

此模块是为了提高本IP核的可重用性而设计的。他主要包括WishBone总线接口、AMBA ASB总线接口和相应的配置寄存器。若使用于WishBone总线结构的SoC中,则在综合前通过宏定义进行设置启用WishBone总线接口,这样整个USB IP核可以无缝接入WishBone总线结构的SoC中。若使用于AMBA ASB总线结构的SoC中,则在综合前通过宏定义进行设置启用AMBA总线接口无缝接入其SoC中。由于是在综合前通过宏定义的,因此在实际综合的时候,只会将宏定义的总线模块综合成实际电路,而不会两个总线接口模块都给综合,节省资源。同时当此IP核要应用于其他的总线结构SoC中,如Altera的Avalon总线,则只要根据此总线协议再设计一个总线接口模块,在综合时启用此总线接口模块就可以将此IP核直接应用于此SoC中。因此本USB IP核对于不同总线的SoC利用总线适

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top