基于ASIC流程和虚拟软硬件协同实现USB主机控制器IP的设计

网友投稿 246 2022-11-24

基于ASIC流程和虚拟软硬件协同实现USB主机控制器IP的设计

主机控制器功能模块设计

主机系统接口模块

状态控制模块(USB State Control)

列表处理器模块

它是整个IP 核最关键的控制器,实现了OHCI 规范规定的绝大部分协议。按照OHCI 规范,它有多个状态机实现列表服务流、列表优先级、ED/TD 服务、状态写回、TD 撤退等功能。它充当一个控制器,连接HCI Master 和Host SIE,帮助它们在系统存储器和USB 之间实现数据传输。它包含4个子模块:列表服务流程模块、端点描述符服务流程模块、传输描述符服务流程模块以及HCI Master 接口模块。

对于IN Packet,当数据从端点接收时,Host SIE 将其存储在数据FIFO 中。当所有数据收到(对GTD/ITD 而言)或数据FIFO 中的数据超过一定的门限(≥16byte),TD 状态机发起一个写命令通知HCI Master 接口模块。HCI Master 接口模块提供写的起始地址,同时本模块提供写回的字节数,触发HCI Master 执行一个写周期。HCI Master 写操作结束以后,它将控制返回到TDSF 的TD 状态机。

类似的,对于OUT Packet,TD 状态机通知本模块从系统存储器读取数据。读操作的地址和字节数由HCI Master 模块来提供。若数据超过16byte,它将通过HCI Master 执行多次操作。

主机控制器串行接口引擎模块

在USB 数据接收期间,D+和D-信号经由差分接收器变成单端字位流,然后经由DPLL 模块提取时钟和数据信息。在HSIE 的接收器中实现了大部分协议解释功能, 诸如NRZI-NRZ 的转变、位填充拆除、同步域检测、SE0 检测、CRC16 计算、超时逻辑、串并转换、速度控制等。在拆包模块中还实现了状态机来检测USB 的功能是否收到有效的握手信号。

(1) 数字锁相环(Digital Phase Lock Loop,DPLL)

(2)并行CRC 算法

module usbh_crc5(ci, d, co);

input [4:0] ci; //上一次输入数据CRC 校验值或CRC 初值

input [10:0] d;//输入的待校验数据

output [4:0] co;//本次输入数据的CRC 校验输出

assign co[0] = d[10]^d[9]^d[6]^d[5]^d[3]^d[0]^ci[0]^ci[3]^ci[4];

assign co[1] = d[10]^d[7]^d[6]^d[4]^d[1]^ci[0]^ci[1]^ci[4];

assign co[2] = d[10]^d[9]^d[8]^d[7]^d[6]^d[3]^d[2]^d[0]^ci[0]^ci[1]^ci[2]^ci[3]^ci[4];

assign co[3] = d[10]^d[9]^d[8]^d[7]^d[4]^d[3]^d[1]^ci[1]^ci[2]^ci[3] ^ci[4];

assign co[4] = d[10]^d[9]^d[8]^d[5]^d[4]^d[2]^ci[2]^ci[3]^ci[4];

endmodule

根集线器配置模块

本模块实现了针对根集线器部分的OHCI 寄存器堆,并为每个下行端口实现了一个状态机以控制端口功能状态。根集线器配置模块可以根据不同的用户需求做到端口数目可配置,最多可配置15 个下行端口,为用户提供了很大的灵活性。

仿真与验证

USB 是一个复杂的系统,包括上层应用程序、USB 类驱动程序、主机控制器驱动程序、主机控制器以及USB 设备,为了对USB 主机控制器进行全面的行为级验证,必须建立相对完整的虚拟验证平台。本文的验证工作基于中科院计算所自行开发的SoC 虚拟验证平台,主要验证下述内容:

(1)主机控制器IP 的OHCI 寄存器堆的可编程性;

(2)主机控制器IP 与虚拟存储器之间数据传输的正确性;

(3)主机控制器IP 内部协议处理部分在不同种类传输情况下的正确性,包括帧管理、主状态机在各种条件下的状态转换和管理、串行化与反串行化、位填充与位填充拆除、时钟和数据信号提取、NRZ 和NRZI 码相互转化、中断处理等;

为简单起见,本文列出综合后门级仿真一个典型Setup交易的波形图,如图4 所示。图中USB 总线上进行的交易为USB 总线复位结束以后,主机控制器检测到根端口1 上接入了一个USB 设备,由根端口作完设备速度评估,判断出接入端口1 的虚拟设备为全速设备,然后应用程序根据这些信息以及现有系统中USB 设备的相关信息来设置当前接入的设备地址,图中所示波形展示了主机发出SetAddress 请求以后USB 总线上的数据线D+和D-的行为以及主机控制器IP 的端口数据线的行为。

结论

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

上一篇:dfrobotIO Extend micro:bitIO扩展板简介
下一篇:超级经典的SQL练习题(MySQL版本),你还怕SQL不过关吗?
相关文章

 发表评论

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