基于FPGA的USB接口控制器设计(VHDL)(上)

今天给大侠带来基于 FPGA 的 USB 接口控制器设计(VHDL),由于篇幅较长,分三篇。今天带来第一篇,上篇,USB 接口简介 以及 USB 体系结构。话不多说,上货。

之前有关于 Veriliog HDL 实现的 USB 接口控制器设计,这里放上超链接,仅供各位大侠参考。

源码系列:基于 FPGA 的 USB2.0 设计

基于FPGA的USB接口控制器设计(VHDL)(上)_第1张图片

导读 

 

 

2019年9月4日,USB-IF终于正式公布USB 4规范。它引入了Intel此前捐献给USB推广组织的Thunderbolt雷电协议规范,双链路运行(Two-lane),传输带宽因此提升,与雷电3持平,都是40Gbps。需要注意的是,你想要体验最高传输速度,就必须使用经过认证的全新数据线。USB4保留了良好的兼容性,可向下兼容USB 3.2/3.1/3.0、雷电3。除此之外,USB4将只有USB Type-C一种接口,并支持多种数据、显示协议,包括DisplayPort,可以一起充分利用高速带宽,也支持USB PD供电。

比较遗憾的是,USB4的发布时间至今暂未公布。值得注意的是,此次发布的USB4是规范,而并非USB4.0。在此之前,USB Implementers Forum(USB-IF)计划取消USB 3.0/3.1命名,统一划归为USB 3.2。其中USB 3.0更名USB 3.2 Gen 1(5Gbps),USB 3.1更名USB 3.2 Gen 2(10Gbps),USB 3.2更名为USB 3.2 Gen 2x2(20Gbps)。以上就是关于USB标准以及命名的讯息。

现在大部分USB设备(比如USB接口的鼠标、键盘、闪存、U盘等等)都是采用了USB通用驱动,而你的系统有USB通用驱动的话(比如XP就内建了USB通用驱动)就能用。而有些USB设备是需要特殊驱动的,比如某些手机,连接到电脑的USB口,是需要安装驱动才能使用的。下面我们一起动手做一做USB接口控制器设计,了解一下如何设计。

第一篇内容摘要:本篇会介绍USB 接口简介,包括USB 发展历史、USB 特点和应用;USB 体系结构,包括USB 系统描述、USB 物理接口、USB电源管理、USB设备以及USB主机等相关内容。

 

一、USB 接口简介

 

 

1.1 USB 发展历史

USB 是英文 Universal Serial Bus 的缩写,中文含义是“通用串行总线”,它是一种应用在 PC 领域的新型接口技术。1994 年,Intel、Compaq、Digital、IBM、Microsoft、NEC、NorthernTelecom 等 7 家世界著名的计算机和通信公司成立了 USB 论坛,花了近两年的时间形成了统一的意见,于 1995 年 11 月正式制定了 USB 0.9 通用串行总线(Universal Serial Bus)规范,1997 年开始有真正符合 USB 技术标准的设备出现。1999 年初在 Intel 的开发者论坛大会上,与会者介绍了 USB 2.0 规范,该规范的支持者除了原有的 Compaq、Intel、Microsoft 和 NEC 4个成员外,还有惠普、朗讯和飞利浦 3 个新成员。USB 2.0 向下兼容 USB 1.1,最高数据传输速度将达到 480Mbit/s,还支持宽带宽数字摄像设备及下一代扫描仪、打印机及存储设备。

2019年9月4日,USB-IF终于正式公布USB 4规范。它引入了Intel此前捐献给USB推广组织的Thunderbolt雷电协议规范,双链路运行(Two-lane),传输带宽因此提升,与雷电3持平,都是40Gbps。需要注意的是,你想要体验最高传输速度,就必须使用经过认证的全新数据线。USB4保留了良好的兼容性,可向下兼容USB 3.2/3.1/3.0、雷电3。除此之外,USB4将只有USB Type-C一种接口,并支持多种数据、显示协议,包括DisplayPort,可以一起充分利用高速带宽,也支持USB PD供电。

图1 所示是一些常见的 USB 设备。

 

基于FPGA的USB接口控制器设计(VHDL)(上)_第2张图片

图 1 常见 USB 设备

 

 

1.2 USB 特点和应用

此前的 USB 设备普遍都兼容 USB 1.1 协议,该协议主要应用在中低速外部设备上,它提供的传输速度有低速 1.5Mbit/s 和全速 12Mbit/s 两种,低速的 USB 带宽(1.5Mbit/s)支持低速设备,例如显示器、调制解调器、键盘、鼠标、扫描仪、打印机、光驱、磁带机、软驱等。全速的 USB 带宽(12Mbit/s)支持大范围的多媒体设备。1999 年推出的 USB 2.0 协议使得 USB接口的性能有了大大的提高,其速度比 USB 1.0/1.1 快 40 倍,达到 480Mbit/s。USB 2.0 协议的推出使 USB 接口的应用推广到硬盘、电缆调制解调器、信息家电网络产品和其他高速外设。

表 1 按照数据传输率(USB 可以达到的)对 USB 设备进行了分类。

表 1 不同传输速率 USB 设备应用分类表

基于FPGA的USB接口控制器设计(VHDL)(上)_第3张图片

 

USB 之所以能得到广泛支持和快速普及,是因为它具备如下的特点。

• 使用方便、即插即用。使用 USB 接口可以连接多个不同的设备,支持热插拔,在软件方面,为 USB 设计的驱动程序和应用软件可以自动启动,无需用户干预。USB 设备也不涉及 IRQ冲突等问题,它单独使用自己的保留中断,不会同其他设备争用 PC 机有限的资源,为用户省去了硬件配置的烦恼。所以,USB 设备能真正做到“即插即用”。

• 传输速度快。高速传输是 USB 技术的突出特点之一。USB 1.1 协议支持的低速传输速率为 1.5Mbit/s,其全速传输速率可达 12Mbit/s,比串口快了整整 100 倍,比并口也快了十多倍。而目前的 USB 2.0 协议支持的最高传输速率甚至高达 480Mbit/s,这使得高分辨率、真彩色的大容量图像的实时传送成为可能。

• 连接灵活、可扩展性强。USB 接口具有很强的可扩展性,一个 USB 口理论上可以连接 127个 USB 设备。连接的方式也十分灵活,既可以使用串行连接,也可以使用集线器(Hub)把多个设备连接在一起,再同 PC 机的 USB 口相接。此外,所有的 USB 设备都在机箱外连接,不必打开机箱;允许设备热插拔,而不必关闭主机电源。USB 采用“级联”方式,即每个 USB 设备用一个 USB 插头连接到一个设备的 USB 插座上,而其本身又提供一个 USB 插座供下一个 USB设备连接用。通过这种类似菊花链式的连接,一个 USB 控制器可以连接多达 127 个设备,而每个设备间距离(线缆长度)可达 5m。

• 独立供电。使用串口或者并口的设备都需要单独的供电系统,而 USB 设备则不需要,因为 USB 接口提供了内置电源。USB 电源能向低压设备提供 5V 的电源,因此新的设备就不需要专门的交流电源,从而降低了这些设备的成本并提高了性价比。

• 丰富的多媒体支持。USB 提供了对电话的两路数据支持,USB 可支持异步以及等时数据传输,使电话可与 PC 集成,共享语音邮件及其他特性。USB 还具有高保真音频。由于 USB 音频信息生成于计算机外,因而减少了电子噪音干扰声音质量的机会,从而使音频系统具有更高的保真度。

 

二、USB 体系结构

 

2.1 USB 系统描述

一个 USB 系统是由 3 部分来描述的,即 USB 互连(USB Interconnect)、USB 设备(USBDevices)和 USB 主机(USB Host)。所谓 USB 互连实际上是指一种 USB 器件和 USB 主机进行通信的方法。它包括:

(1)总线的拓扑(由一点分出多点的网络形式),即设备和主机连接的模式;

(2)各层之间的关系,即组成 USB 系统的各个部分在完成一个特定的 USB 任务时,各自之间的分工与合作;

(3)数据流动的模式,即 USB 总线的数据传输方式;

(4)USB 的“分时复用”,因为 USB 提供的是一种共享连接方式,因而为了进行数据的同步传输,这是 USB 数据传输和处理必须的机制。

USB 接口连接了 USB 设备和 USB 主机,USB 的物理连接是有层次性的星形结构,星形结构的中心是网络集线器。无论是从主机到集线器或其功能部件,还是从集线器到集线器或其功能部件,之间的连接都是点点连接。图 2 表示了 USB 体系的拓扑结构。

 

基于FPGA的USB接口控制器设计(VHDL)(上)_第4张图片

图 6-2 USB 总线拓扑结构

 

在任何 USB 系统中,只有一个主机。USB 和主机系统的接口称作主机控制器(HostController),主机控制器可由硬件、固件和软件综合实现。一块具有 USB 接口的主板通常集成了一个称为根集线器(Root Hub)的部件,它为主机提供一到多个 USB 设备的 USB 扩展接口,我们通常在主板上见到的 USB 接口都是由根集线器提供的。

USB 器件可以分为两种:即 USB 集线器(USB Hub)和 USB 功能器件(Function Device)。其中,USB 集线器向 USB 提供了更多的连接点;USB 功能器件则是提供具体应用功能的器件,常见的 USB 鼠标、USB 摄像头、USB 打印机等都可以归属于 USB 功能器件。

USB 设备提供的 USB 标准接口的主要依据有 3 条:

• 对 USB 协议的运用;

• 对标准 USB 操作的反馈,如设置和复位;

• 标准性能的描述性信息。

 

 

2.2 USB 物理接口

USB 物理接口包括两部分,一部分指的是用于实现设备到主机或 USB 集线器连接的 USB 电缆(USB Cable),另一部分是指 USB 主机或 USB 设备上的接口。USB 电缆的物理结构如图 3 所示,从严格意义上讲,USB 电缆应属于 USB 器件的接口部分。

USB 电缆其中一根是电源线 VBus,一根是地线 GND,其余两根是用于差动信号传输的数据线 D+和 D-。将数据流信号驱动成为差动信号的目的是为了提高信号的抗干扰能力(EMI)。USB传输分为高速和低速两种模式,低速模式需要的 EMI 保护相对较少。两种模式可在用同一 USB总线传输的情况下自动地动态切换。因为过多的低速模式的使用将降低总线的利用率,所以该模式只支持有限个低带宽的设备(如鼠标)。时钟被调制后与差分数据一同被传送出去,时钟信号被转换成 NRZI 码,并填充了比特以保证转换的连续性,每一数据包中附有同步信号以使得收方可还原出时钟信号。

 

基于FPGA的USB接口控制器设计(VHDL)(上)_第5张图片

图 3 USB 电缆物理结构示意图

 

对于集线器来说,判别所连接的设备是否是高速设备,仅仅只需要检测在设备被初次连接时,D+或 D-上的信号是高或是低即可。因为 USB 协议要求低速设备在其 D-端接接地电阻,而高速设备则在 D+端接同样的电阻。在加电时,根据低速设备的 D-线和高速设备的 D+线所处的状态,集线器就很容易辨认设备的速度,从而为器件配置不同的信息。为提高数据传输的可靠性以及系统的兼容性,协议对用于 USB 的线缆提出了较为严格的要求,如用于高速传输的 USB电缆,其最大长度不应超过 5m,而用于低速传输的线缆,每根数据线的电阻应为 90Ω。

USB 是一种统一的传输规范,但是接插口有许多种,最常见的就是普通计算机上用的扁平外形的 A 型口。接插口又分为公口和母口,一般电缆上带的是公口,机器上带的是母口。图4 所示的就是 A 型和 B 型的接插口。

 

基于FPGA的USB接口控制器设计(VHDL)(上)_第6张图片

图 4 A、B 型接插口

 

 

2.3 USB电源管理

USB 系统可以通过 USB 电缆为其设备提供不高于+5V、500mA 的总线电源。那些完全依靠USB 电缆来提供电源的器件被称为总线供电设备(Bus-powered Device),而自带电源的器件则被称为自供电设备(Self-powered Device)。需要注意的是,无论是总线供电设备还是自供电设备,当初次连接到 USB 接口上时都不使用其自带的电源,而是通过 USB 电缆提供的电源来使其处于 Powered 状态。

USB 主机与 USB 系统有相互独立的电源管理系统。USB 的系统软件可以与主机的电源管理系统进行交互,共同处理各种系统电源事件(例如挂起、唤醒)。此外,USB 设备还具有特殊的电源管理特性,使得设备的电源完全由系统软件进行管理。

USB 的电源分配和电源管理特性使之可以被设计在电源传感系统中,如采用电池的笔记本电脑。此类的 USB 系统会在一台设备长时间(这个时间一般在 3.0ms 以内)处于不工作状态时自动将该设备挂起(Suspend),当一台 USB 设备处于挂起状态时,USB 总线通过 USB 电缆为该设备仅仅提供 500μA 以下的电流,同时将所占用的 USB 带宽分配给其他的 USB 设备。

 

 

2.4 USB设备

最为常用的 USB 设备可以分为两类:集线器和功能部件。典型的 USB 集线器如图 5 所示,它可以提供更多的 USB 连接点。功能部件是一种通过 USB 总线进行数据发送和接收的 USB 设备,它们可以直接连接到主机的 USB 接口上,也可以连接在集线器的某个端口上。功能设备一般是一种相互无关的设备,如图 1 所示的所有 USB 设备都是功能部件。除了集线器和功能部件,还有一种 USB 设备同时包括了功能部件和集线器,此类设备通常被称为复合设备。

基于FPGA的USB接口控制器设计(VHDL)(上)_第7张图片

图 5 典型的 USB 集线器

 

 

2.5 USB主机

USB 主机不是一种单纯的硬件,而是指 USB 设备所服务对象的硬件和软件的集合。比如有一个 USB 移动硬盘用于一台 PC 机上,则此 PC 机以及其所安装的操作系统称为 USB 主机,而USB 移动硬盘就是 USB 设备。USB 主机是整个 USB 系统通信的控制方,它通过主机控制器与 USB设备进行交互。

 

USB 主机的主要功能如下:

• 检测 USB 设备的安装和拆卸;

• 管理在主机和 USB 设备之间的控制流;

• 管理在主机和 USB 设备之间的数据流;

• 收集状态和动作信息;

• 给连接的 USB 设备供电。

 

USB 主机可以分为 3 个层次:

• USB 总线接口;

• USB 系统;

• 用户。

 

一般的 USB 系统开发主要集中在 USB 设备的开发上,所以 USB 主机开发相关的内容将不在本篇中介绍。

 

基于FPGA的USB接口控制器设计(VHDL)(上)_第8张图片

 

本篇到此结束,下一篇带来基于 FPGA 的 USB 接口控制器设计(VHDL)(中),会介绍USB通信原理,包括USB 传输模型、USB 设备检测过程;USB 系统开发,包括USB 硬件系统,USB 接口芯片 PDIUSBD12;USB 设计实例,包括设计需求分析以及设计方案等相关内容。

 

 

END

 

后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。

大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见!

 

 

 

 

 

精彩推荐

 

 

 

 

毕设:基于FPGA的FIR数字滤波器设计

基于FPGA的千兆以太网设计

在word文档中添加“原汁原味”代码

“FPGA产品设计与研发 ” 零基础入门及就业

你可能感兴趣的:(FPGA项目开发经验分享,FPGA,usb接口控制器,vhdl语言)