1 引 言
USB ,是英文Universal Serial BUS(通用串行总线)的缩写,而其中文简称为“通串线,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在PC领域的接口技术。USB接口支持设备的即插即用和热插拔功能。USB是在1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出的。
随着半导体工艺技术的发展,集成电路设计者能够将愈来愈复杂的功能集成到单硅片上。SoC是将系统集成在一块芯片上,包括微处理器、模拟IP核、数字IP核和存储器(或片外存储控制接口)等。SoC的一项关键技术即为IP(Intellectual Property)复用技术。IP核是指在电子设计中预先开发的用于系统芯片设计的可复用构件,系统设计者在进行一个复杂设计时将众多IP核在一个芯片上有效集成,从而构成一个功能强大的系统。
在设计IP核时应注意其可重用性,为了增强IP核的可能重用性,使IP核能更好地适应不同总线结构的SoC平台,可以为IP核设计一个总线接口模块。该模块主要完成片上总线的协议转换和实现,称之为总线适配器(BusAdapter)。其特点为:IP核与外部的片上总线标准无关,其逻辑相对固定,只需对相应的总线适配器进行配置就能够有效地集成于不同片上总线的SoC平台。当前SoC中常用的总线协议有三种分别是:ARM公司的AMBA、Silicore公司的WISHBONE SoC Interconnection Archi—tecture和Ahera的Avalon总线。
本文实现的USB IP核中,设计了总线适配器,在综合前针对WishBone总线或AMBA ASB总线通过宏定义进行设置,从而使USB IP核能够直接集成于WishBone或AMBA ASB总线的SoC系统中。
2 USB系统组成部分
系统主要分为三个部分:主机、设备和互连。在任何的系统中,只有一个主机,与主机系统的接口称作主机控制器。他可由硬件、固件和软件综合实现。设备可以分为功能性设备即外设和集线器,前者作为系统的功能扩展设备而后者作为设备的扩展连接点。互连定义了主机和外设的连接和通信方式。包括总线拓扑结构、内部分层关系、数据传输模型和总线访问控制等几个部分。一个简单的系统可以由一台主机和一个外设构成。
3 USB的模块设计
3.1 模块划分
USB IP核主要是实现了USBl.1协议,在对整个协议分析的基础上,整个IP核共分成五大模块:串行接口引擎模块、协议层模块、端点控制模块、端点存储模块和总线适配器模块。串行接口引擎主要是支持最底层的USB协议,由于USB协议中为了增加抗干扰对比特流进行了“不归零码(Non Return to Zero Invert)”的编解码,同时为了可以从比特流中提取同步信号用了“位填充”和“位剔去”。串行接口主要完成比特流方面的处理。协议层模块则主要是完成解包和打包。在USB协议中,数据缓冲区用了端点(Endpoint)这个概念,不同的缓冲区用了不同的端点号来区分,端点存储模块就是相应的数据缓冲区。端点控制模块主要是端点控制寄存器和端点状态寄存器,对端点进行相应的控制。总线适配器模块主要是在不同总线结构的SoC中,对USB IP核总线接口进行相应的配置,从而可以进行无缝连接到相应的SoC中。USB IP核模块划分如图1所示。
3.2 串口接口引擎
串口接口引擎主要是完成USB协议中比特流的处理。根据数据的传输方向可分为发送部分和接收部分。发送部分即为USB设备给USB主机发送数据,接收部分则为USB设备从USB主机那里接收数据。如图2所示。
接收部分:从同步域中恢复出12
MHz的时钟信号,接收主机过来的比特流对其进行不归零码(NRZI)解码,剔除位填充然后进行串并转换,最后将转换后的数据以字节的形式传给协议层。接收部分还要能判断出一个包的开始,在USB传输过程中,是以包为单位的,因此接收部分首先要测包的开始SOP(Start
of Packet),所有包都是从同步字段(SYNC)开始的,同步字段是产生最大的边缘转换密度(Endge Transition
Density)的编码序例。以NR—ZI编码的二进制串“KJKJKJKK”同步字段最后2位是同步字段结束的标记,同时标志了包标识符(Pacekt
Iden一tiler,PID)的开始。只有当检测到包SOP才开始后面的NRZI解码、去位填充和串并操作,否则就继续处于等待阶段。
在接收部分还需要有检错部分,在检查到传输过来的数据有错误时,要进行相应的错误处理。如在NRZI解码后,在对数据进行去位填充时发现了有连续7个“1”则可以认为数据在传输过程中出现了错误,数据包已经损坏,必须通知协议层。在接收部分需要特别注意的是:在接收USB主机过来数据时,是不同的时钟域,因此必须考虑到亚稳态问题。在本设计中,由于只处理单个比特信号,因此用了两级寄存器来消除亚稳态。
发送部分:将协议层打包好的加上同步字段,然后进行并串转换,将字节形式转换成比特流形式,接着根据协议将数据进行位填充和NRZI编码,通过D+和D一信号传送给USB主机。这个同步字段也是告诉USB主机有一个新数据包发送过来了,在发送部分还要产生包结束EOP(End of Packet)的信号。[page]
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包中若发现数据有错则丢弃此包并报错。
(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)包。
5 结 语
本USB IP核在设计时,充分考虑到可重用性,其USB端点可进行相应的配置和扩展。同时针对目前SoC中常用的WishBone总线和AMBA ASB总线结构设计了总线适配器,在综合前进行相关的宏定义就可以无缝接入SoC中。本USB IP核在实际项目中,与MCU核以及其他的IP核集成于一款数据采集SoC芯片中,该数据采集SoC已经处于版图后仿真阶段,即将流片。
上一篇:USB2.0主机控制器IP核的设计
下一篇:一种USB-RS232转换模块设计
推荐阅读最新更新时间:2024-05-02 22:45
- PC产业驶入创新超车道,英特尔蓉城撬动AI新引擎
- 与产业聚力共赢,英特尔举行新质生产力技术生态大会
- “新”享5G-A万兆网络前沿体验 高通携手产业伙伴亮相第二届链博会
- 英飞凌推出符合ASIL-D标准的新型汽车制动系统和电动助力转向系统三相栅极驱动器 IC
- 南芯科技推出80V升降压转换器,持续深耕工业储能市场
- 法雷奥与罗姆联合开发新一代功率电子领域
- 贸泽电子开售能为电动汽车牵引逆变器提供可扩展性能的 英飞凌HybridPACK Drive G2模块
- 德州仪器新型 MCU 可实现边缘 AI 和先进的实时控制, 提高系统效率、安全性和可持续性
- 瑞萨推出高性能四核应用处理器, 增强工业以太网与多轴电机控制解决方案阵容
- 研华全新模块化电脑SOM-6833助力5G路测设备升级