当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于USB设备控制器的端点缓冲区的优化设计

这里首先简要介绍USB中端点的概念,并给出一款异步FIFO的设计方案。然后根据USB四种传输类型的特点,提出基于该FIFO结构的不同类型的端点缓冲区的设计方案。特别是对于控制端点提出了一种新型的双向异步FIFO结构,在保证控制传输的前提下,减小了将近1/2的电路面积。最后给出在Synopsys平台下电路的VLSL实现结果。

USB 2.0规范将USB接口的传输速度提高了40倍。传输速度的提升使得USB设备控制器的设计指标也随之提高,虽然协议中对于缓冲区的设计要求并没有本质上的改变,但是由于总线带宽与传输速度的提高,各个芯片供应商均推出了自己的缓冲区设计方案。为了提高USB接口的数据存取速度,通常使用异步FIFO来设计端点缓冲区。



1  USB协议中的端点及实施方案

1.1 USB设备的端点

USB主机和设备之间传输的数据是以信息包的格式来传输的,可分为令牌包、数据包、握手包和特殊包。在数据包中包括了主机和设备通信的数据分组。图1是一个典型的USB数据包的格式。



PID域是为了增加USB通信的健壮性而设定的数据分组的辨识符;CRC16域是对数据分组进行CRC校验的结果。DATA域是实际传送的数据内容。USB设备控制器会将接收到的主机数据包放入指定的端点缓冲区;或者从指定的端点取出待发送的数据组装成USB信息包发送到主机。

由此可见,所谓端点实际上是主机与设备之间通信的来源或目的,所有的传输都要传送到设备的端点,或是由设备的端点发出。一系列相互独立的端点在一起就构成了USB逻辑设备。从物理层的角度来看,端点是一块存储器区域,用以缓冲实际接收到或待发送的数据包。

USB协议中定义了四种传输类型,分别是控制传输、批量传输、中断传输和同步传输。所有USB设备控制器都应该支持控制传输,其他三种传输方式根据不同的应用背影而用于不同类型的设备。按照传输类型可将端点分为控制端点、批量端点、中断端点和同步端点。其中控制端点较为特殊,只有它可以双向的传输数据,而其他端点只能传输单方向的数据。

1.2 使用异步FIFO设计USB端点

由于USB设备控制器的缓冲区空间是对应各个不同的端点。每个端点所对应的传输方式、传输方向也不同。通常控制端点会连接控制器的MCU单元,而其他类型的端点一般连接设备端的接口。可见USB的端点缓冲区实际上是在串行接口引擎时钟和设备时钟或MCU时钟的两个时钟域之间传输数据。而使用异步FIFO来实现该结构显然是一个不错的选择。

图2是本文所采用的异步FIFO的结构框图。该异步FIFO由一块双端口SRAM、写地址/满逻辑和读地址/空逻辑、以及为了消除亚稳态的两级同步电路组成。左端口在写时钟下进行数据的写入操作;右端口在读时钟下实现数据的读出操作。



对于异步FIFO的设计,产生准确的空满标准是设计中的核心任务,它与FIFO是否能稳定工作息息相关。写满不溢出,读空不多读是异步FIFO空满标志判断的基本原则。传统的判断方法是另外设置一个状态位,作为最高位,其余位作为地址位,当读写指针的地址位和状态位全部吻合时,FIFO处于空状态;当读写指针的地址位相同而状态位相反,FIFO处于满状态。这种异步FIFO由于是通过直接比较二进制读写指针来判断满和空的,在跨时钟传递时会有毛刺产生。下面将介绍一种通过直接比较格雷码指针的方法生成FIFO的空满信号,从而消除了毛刺,提高了电路的稳定性。

比如要设计一个深度为8的异步FIFO,需要使用3 b的格雷码计数器对读写指针计数,与二进制类似,还是需要使用一个状态位来判断满和空状态。此时FIFO的格雷码指针跳变情况如表1所示。



观察表1可知,当读指针为4’b0011时(二进制为4’b0010),此时比他多一个周期所对应的格雷码为4’b1111(二进制为4’b1010)。两者的高二位恰好相反,但低位完全相同。对比表1左右两列可知当读写指针相差一个周期即FIFO满时对应的格雷码指针的最高两位相反,而低位则完全相同;当两者完全相等时对应为FIFO的空状态。图3给出的是在设计的FIFO的深度为8时,在Modelsim中的仿真波形。由图3可知,当FIFO从空到满时,对应的格雷码写指针为4’b1100,而同步后的读指针为4’b0000;当从满被读空时,读指针为4’b1100;由此可见仿真的FIFO的空满信号与设计一致。

2 基于FIFO结构的优化端点设计方案

2.1 基于新型FIFO结构设计控制端点

上文已经论述过控制端点是一个双向传输的端点,但是在同一时刻只能是单向的数据传输。该端点主要是用于USB设备的枚举过程,主机发送一个信息包,设备负责回应一个信息包。对于该端点的设计现有的方案都是采用双FIFO来实现双向传输的。一个FIFO用以接收主机发送过来的数据包;另外一个FIFO用以向主机发送数据包。在传输数据包时总有一个FIFO处于空闲状态,这样会造成存储器资源的浪费。为此,本文提出一种新型的异步FIFO结构,该结构使用一块双端口SRAM来实现控制端点的单工双向传输,而传统的双FIFO结构需要两块SRAM用来实现双向传输。由于SRAM占据了FIFO的大部分面积,在实现控制传输的功能下少用了一块SRAM,可以预见最终的电路实现面积会减小将近1/2。

图4是本文所设计的新型异步FIFO结构,该FIFO的实现是基于一块双端SRAM。在上文所提到的异步FIFO结构的基础上增加一套读写指针逻辑和满空判断标志。这个电路可以看作是原来电路模块的复制,即两者设计完全一致。这两个新增的指针模块用以产生访问SRAM的地址和用以产生满和空的格雷码指针。这样在同一方向对于SRAM的访问就会有两个地址,其中一个是读地址,另一个是写地址。这样需要设计一个选择器,用以选择当前访问SRAM的是读地址或写地址。这个选择器的选择端可以根据不同方向的读写使能信号来切换。这是由于在同一时刻不可能出现一个方向的读/写使能均有效的现象。

对于图4的数据路径可简介如下,方向0在其写使能信号的控制下,往FIFO内写入数据,写满之后方向1控制其读使能将方向0写入的数据读出来。然后方向1控制其写使能将数据写入双端口SRAM,方向0负责把SRAM内的数据读出。

[!--empirenews.page--]
对于USB的控制端点,其接收的最大数据包为64 b。故本文设计的双向FIFO使用的sram亦为64 b。使用memory complier生成。图5是设计的双向FIFO在Modelsim下的仿真波形图。该波形显示了方向0写数据,方向1读数据和方向1写数据,方向0读数据的过程。



2.2  其他端点的优化设计

对于USB设备控制器的其他端点,由于其与控制端点有所不同。控制端点是一个双向端点,而非控制端点单向的传输。故对于非控制端点对应的缓冲区的容量设定,应使USB的带宽利用率尽量达到最高。由于USB规范中规定缓冲区必须有足够的空间,可以为全(高)速设备容纳一个时间片所能传输的数据量的两倍的容量。这样USB在处理一个数据分组的同时,可以接收下一个数据分组。以此种重叠技术可以提高总线利用率。如果批量端点的缓冲区的深度设计为1 024 B。就可以得到最大的带宽利用率。

图6是其他端点所采用的双缓冲FIFO方案示意图。在状态1,req0控制访问FIFO0,reql控制访问FIFO1;在状态2,req0切换到访问FIFO1,req1切换到访问FIFO0。基于双缓冲FIFO的设计方案可使其他端点的带宽利用率达到最高,满足高速传输的需求。



3 电路的ASIC实现结果

对上述设计方案采用Verilog硬件描述语言进行设计。仿真工具为Modelsim SE 6.2b,前仿真通过后,对设计好的电路使用Design Complier进行综合。综合所使用的工艺库是SMIC 0.18 μm工艺库。

对于控制端点,考虑到其主要处在SIE时钟和MCU时钟之间,对其所加的时钟约束分别为60 MHz和30 MHz;此外还对传统的双缓冲FIFO结构进行了综合,两者所加约束完全一致。将两者的电路的综合结果对比如表2所示。



对比表2可知在保证控制端点功能的前提下,本文所采用的新型FIFO结构比传统双FIFO结构在电路的实现面积方面减小了45.3%。

对于其他端点所采用的双缓冲FIFO方案保证了传输速度,但却是以牺牲面积为代价换来的。表3给出了批量(Bulk)传输端点(两个深度为512 B的FIFO)的实现面积报告。



4 结  语

USB设备控制器端点缓冲区的性能,直接关系到总线的带宽利用率。这里分析了USB的四种传输类型并根据其特点灵活的设计了不同的方案,并给出了最终电路的ASIC实现结果。特别是针对控制端点所提出的一种新方案具有一定的通用性,该方案可以应用在其他类似场合的设计中。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在电子电路设计中,确保电源的稳定和安全至关重要。LTC4365 作为一款出色的过压(OV)、欠压(UV)以及反向极性故障保护控制器,在众多领域得到了广泛应用。其能够为电源输入电压可能出现过高、过低甚至负值的应用场景提供可...

关键字: 控制器 栅极 输出电压

2025年8月13日 – 提供超丰富半导体和电子元器件™的业界知名新品引入 (NPI) 代理商贸泽电子 (Mouser Electronics) 即日起开售Asahi Kasei Microdevices (AKM) 的...

关键字: 数模转换器 USB 无线扬声器

物联网与智能化设备快速普及,供电方式的选择直接影响设备部署的灵活性、成本与可靠性。PoE(以太网供电)与USB供电作为两大主流技术,分别在工业网络、智能家居、消费电子等领域占据关键地位。本文将从设备适配性、传输距离、功率...

关键字: PoE USB

ZCC3790 作为一款同步 4 开关升降压电压 / 电流调节器控制器,展现出了强大的性能。它能够在输入电压高于、低于或等于输出电压的复杂情况下,精准地调节输出电压、输出电流或输入电流。其恒定频率、电流模式架构赋予了它灵...

关键字: 升降压 控制器 宽电压

2025年8月12日 – 专注于引入新品的全球电子元器件和工业自动化产品授权代理商贸泽电子(Mouser Electronics) 是Phoenix Contact解决方案的全球授权代理商。贸泽供应超过93,000种可订...

关键字: 楼宇自动化 控制器 连接器

在之前的文章“为机器人技术的未来发展筑牢安全防线:网络安全的作用”中,我们全面介绍了机器人控制系统面临的安全挑战。文章强调了遵守机器人行业安全标准的重要性,并探索了加强机器人控制系统保护所需的基本安全能力。此外,我们还展...

关键字: 机器人 PLC 控制器

在无线技术的发展历程中,部署的简便性往往是成功的关键。像Wi-Fi、蓝牙和早期的蜂窝技术,只有在集成变得简单、无缝且实惠时,才能实现大规模的应用。而如今,Wi-Fi HaLow——一种专为物联网(IoT)设计的远距离、低...

关键字: 物联网 Wi-Fi USB

工业4.0的核心是工厂自动化,工业机器人、自主移动机器人(AMR)和协作机器人对于实现现代工业4.0至关重要。机器人正日益智能化,协作能力不断增强,能够在有人或无人干预的情况下高效完成复杂任务。随着自动化程度和机器人使用...

关键字: 机器人 工业4.0 控制器

2025年8月5日 – 专注于引入新品的全球电子元器件和工业自动化产品授权代理商贸泽电子 (Mouser Electronics)即日起开售Microchip Technology的新款AVR® SD 8位MCU。AVR...

关键字: MCU 工业自动化 USB

全新 I/O 解决方案赋予制造商更大的设计自由度,打造更智能、更具适应性更的设备

关键字: 控制器 I/O 系统
关闭