USB2-IP核的设计与FPGA实现.docx
文本预览下载声明
PAGE 15
USB2 IP核的设计与FPGA实现
本文介绍了一种USB2.0设备控制IP核的设计方法。先总结控制器的功能和内部结构。再来是控制器的接口和扩展芯片。然后是内部数据读取方式。接着是UTMI接口、PL层、存储器接口和仲裁器,控制状态寄存器,最后通过verilog HDL实现IP核的的设计和功能验证。
经过几年的发展通用串行总线(USB)已经演化成了电脑和外设的连接标准。在众多嵌入式应用里从鼠标键盘到相机移动电话等都可以通过USB方便地与电脑互连。随着新的USB标准的诞生,数据高速传输已经成为了可能,然而与之而来的是使用的多样化和复杂化。当前主流的解决方案是使用USB控制器来检测并对USB端口发生的事件进行回应。目前市场上供应的USB控制器主要有两种,一种是把微处理器集成在一个芯片里打包处理,另一种则是利用外部的微控制器来管理USB控制器的寄存器、设备描述符的内容读取和外部数据交换,这里的USB芯片仅处理USB通信。本文所设计的控制器属于后者。IP核(知识产权核,intellectual property core),是指某一方提供的、形式为逻辑单元、芯片设计的可征用模块。它分为软核、硬核和固核。软核通常是与工艺无关、具有寄存器传输级硬件描述语言描述的设计代码,可以进行后续设计;硬核是前者通过逻辑综合、布局、布线之后的一些列工艺文件,具有特定的工艺形式、物理实现方式;固核则通常介于上面两者之间,它已经通过功能验证、时序分析等过程,设计人员可以以逻辑门级网表的形式获取。本文所介绍的USB IP核处于软核阶段,以Verilog HDL语言描述文本的形式提交使用,并经过仿真验证,可以用它综合出正确的门级网表。
第一章 控制器结构原理
本文所设计的USB2.0设备控制器可以用来进行USB协议处理和数据间交换,实现USB通讯。根据USB2.0协议,控制器对USB总线上的差分信号进行NRZI解码和位解填充,然后经过串行转并行转换接着分组拆装,把需要的数据放入RAM区;也可以进一步把RAM区里的数据组装成协议所规定形式(分组),再利用差分驱动电路并行转串行、位填充NRZI编码输出到USB总线然后传回主机(逆过程)。
按照USB2.0设备控制器的希望功能,控制器可以划分为如下模块:UTMI(USB Transceiver Macmcell Interface)、协议层PL(Protocol Layer)、存储器接口和仲裁器、控制和状态寄存器及功能接口。如图1.1。
图1.1 USB2.0控制器结构
第二章 控制器与外部芯片的接口
USB2.0控制器和外部芯片的接口包括下列3种情况:和单口同步静态存储器(SSRAM)间的、与MCU(微控制器)间的以及和外部UTMI间的接口。
USB有两个时钟域。UTMI块执行的时钟来源于PHY。PHY提供的最大时钟输出能达到60MHz。实际时钟频率依据操作模式(全速/高速)的改变作调整。UTMI块和USB核保持同步的逻辑。所有模块执行的时钟来源于主机接口。由于USB延迟的需要,主机接口需要频率不少于60MHz的时钟。
控制器和UTMI的接口遵循UTMI规范。UTMI接口信号含有:USB总线状态信号LineState[1:0]、设置UTMI工作模式的信号位、检验或标志发送数据的信号(TxValid、TxReady等等)、检验或标志接收数据的信号(RxActive、RxValid、RxError等等)以及8位双向数据线、60MHz时钟信号。根据之前时钟描述,USB的时钟域完全可以满足数据传输的要求。
控制器要求的外部存储器使用标准单口SRAM,容量大小为215*16 bit=64 kB。其中读写信号(SSRAM_RD和SSRAM_WE)、16位数据线SSRAM_DATA和15位地址线SRAM_ADDR均属于信号接口。
和微控制器间的接口信号则包括:16位数据线DATA、16位地址线ADDR、读写请求信号、中断请求信号和DMA请求响应信号(DMA_REQ与DMA_ACK)。其中对于16位地址线,低15位addr[14:0]用于存放存储器SSRAM的地址内容,高16位则用来选通SSRAM和USB控制器的内部寄存器,值为高时选择缓冲存储器,低则是内部寄存器。
第三章 USB核数据读取
3.1结点
该USB核支持16个结点。具体结点数已经内置。功能控制器必须设置结点,具体操作是对结点寄存器:EPn_CSR,EPn_INT,EPn_BUFx进行赋值。
功能控制器必须为每个使用的结点分配准确的结点数(EP_NO)。这里的结点数与物理结点相对应。软件上的处理是必须确保所有结点在给定的处理类型上是不一样的。
3.1.1 缓冲器指针
缓冲器指针指向存储器中输入/输出数据的结构。对所有个体而言7FF
显示全部