- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
USB IP核的设计和应用
录入:edatop.com 点击:
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利用总线适配器使具体较强灵活性,可重用性强。
4 FPGA验证
本USB IP核已经应用于一款数据采集单芯片系统中。因此在进行FPGA验证时,是将此IP核嵌入于此单芯片系统中进行的。此单芯片系统中嵌入UART模块可与PC机的串口进行通信,此系统中的增强型8051MCU核对整个USB IP核进行相应的控制。FPGA验证采用了Xilinx公司的ISE集成开发环境,在调试的过程中用了ChipSeope Pro软逻辑分析仪。硬件平台用Xilinx公司的Virtex4系列中XC4VLX60器件。
整个过程如下:
(1)USB从设备与PC机的USB接口连接,此时USB从设备要完成设备枚举的过程。
(2)设备枚举完成PC机会提示驱动程序还没有装,要求加载驱动程序在PC机上加驱动程序,USB的驱动程序直接与PC机的操作系统联系,项目中的USB接口是在Windows XP操作系统中调试的。
(3)在驱动程序加载完成后,PC机会提示"现在可以正常通讯",表明现在可以利用USB的应用层软件进行通信了。
(4)将数据从PC机的应用层输入,通过USB接口发给嵌入USB IP核的数据采集SoC芯片,然后通过其中的SoC中UART将数据返回给PC机,经过比较两者数据完全相同,验证表明了此IP核的正确。
图5是在进行IP核FPGA验证时,设备枚举阶段PC的USB主机发送给USB IP核的帧开始(SOF)包。
在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利用总线适配器使具体较强灵活性,可重用性强。
4 FPGA验证
本USB IP核已经应用于一款数据采集单芯片系统中。因此在进行FPGA验证时,是将此IP核嵌入于此单芯片系统中进行的。此单芯片系统中嵌入UART模块可与PC机的串口进行通信,此系统中的增强型8051MCU核对整个USB IP核进行相应的控制。FPGA验证采用了Xilinx公司的ISE集成开发环境,在调试的过程中用了ChipSeope Pro软逻辑分析仪。硬件平台用Xilinx公司的Virtex4系列中XC4VLX60器件。
整个过程如下:
(1)USB从设备与PC机的USB接口连接,此时USB从设备要完成设备枚举的过程。
(2)设备枚举完成PC机会提示驱动程序还没有装,要求加载驱动程序在PC机上加驱动程序,USB的驱动程序直接与PC机的操作系统联系,项目中的USB接口是在Windows XP操作系统中调试的。
(3)在驱动程序加载完成后,PC机会提示"现在可以正常通讯",表明现在可以利用USB的应用层软件进行通信了。
(4)将数据从PC机的应用层输入,通过USB接口发给嵌入USB IP核的数据采集SoC芯片,然后通过其中的SoC中UART将数据返回给PC机,经过比较两者数据完全相同,验证表明了此IP核的正确。
图5是在进行IP核FPGA验证时,设备枚举阶段PC的USB主机发送给USB IP核的帧开始(SOF)包。
fs_clk为从PC机发过来的比特流恢复过来的12 MHz的时钟信号。rx_data表示收到的数据,如图5所示在rx_valid高电平时,表明收到的rx_data是有效的,从图中可以看出收到了十六进制数"A5—43—85",此包正是PC机发给USB IP核的SOF包。rxdp和rx_dn是串口接口引擎模块中的信号,他经过一个三态门与图1所示的D+和D一相连接。由图中可以看出,在"85"收到时,rxdp和rx_dn的波形表明收到了PC机发过来的两个fS_clk时钟周期的"SE0"表示包结束的信号。
5 结 语
本USB IP核在设计时,充分考虑到可重用性,其USB端点可进行相应的配置和扩展。同时针对目前SoC中常用的WishBone总线和AMBA ASB总线结构设计了总线适配器,在综合前进行相关的宏定义就可以无缝接入SoC中。本USB IP核在实际项目中,与MCU核以及其他的IP核集成于一款数据采集SoC芯片中,该数据采集SoC已经处于版图后仿真阶段,即将流片。
上一篇:艾克赛尔:移动通信网络与WLAN合路系统
下一篇:基于CPLD的键盘控制器设计