CN100576192C - 用dma控制电路在dma通道上传输数据的电路结构和方法 - Google Patents

用dma控制电路在dma通道上传输数据的电路结构和方法 Download PDF

Info

Publication number
CN100576192C
CN100576192C CN200380101117A CN200380101117A CN100576192C CN 100576192 C CN100576192 C CN 100576192C CN 200380101117 A CN200380101117 A CN 200380101117A CN 200380101117 A CN200380101117 A CN 200380101117A CN 100576192 C CN100576192 C CN 100576192C
Authority
CN
China
Prior art keywords
dma
control circuit
usb
data
passage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN200380101117A
Other languages
English (en)
Other versions
CN1703687A (zh
Inventor
L·C·戈夫
B·罗斯顿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN1703687A publication Critical patent/CN1703687A/zh
Application granted granted Critical
Publication of CN100576192C publication Critical patent/CN100576192C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)

Abstract

可以对DMA控制器(34)进行各种改进,以优化DMA控制器(34)用于非统一的DMA应用,诸如通用串行总线(USB)的应用。首先,用于存储控制在DMA通道(24)上数据传输长度的计数值的DMA计数寄存器(54)能够有选择地使其失效,使得当DMA计数寄存器(54)失效时,DMA控制电路(38)可以与DMA计数寄存器(54)无关地执行数据传输。还可以把一个端点监视定时器(40)耦合到DMA控制电路(38)并配置成在一个预定的时间段内DMA通道(24)没有接收到数据时产生一个中断。另外,DMA控制电路(38)可以含有部分字的推迟功能,如果最后字是部分字的话则延迟传输数据包中的数据的最后字。此外,可以把USB简档电路(26)耦合到DMA控制电路(38)并配置成去控制DMA控制电路(38)的至少一个操作参数来有选择地优化DMA控制电路(38),以便与从USB简档电路(26)所支持的多种USB协议中选中的一种USB协议一起使用。

Description

用DMA控制电路在DMA通道上传输数据的电路结构和方法
技术领域
本发明一般涉及存储器访问和传输,特别涉及直接存储器存取(DMA)控制器。
背景技术
在计算机或者其他电子系统中的数据传输经常是这种系统性能中的一个综合因素。不管计算机或者电子设备的中央处理单元(CPU)处理数据能有多快,如果数据不能以足够快的方式向CPU或从CPU通信,则系统性能肯定受损。
一直用来改善数据传输性能的一种技术被称为直接存储器存取(DMA)。DMA使用一个专用控制器或者电路独立于CPU来处理数据传输,从而在数据的传输操作期间释放CPU以处理其他任务。通常,DMA用于在存储器和外围设备或输入/输出(I/O)设备诸如扩展卡、网络端口、存储设备等之间传输数据。
常规DMA控制器通常很少需要CPU的照料以处理数据操作。通常,需要CPU来使DMA控制器初始化以处理一次特定的传输操作,例如通过指定操作的源和目的地和要传输的数据量。DMA控制逻辑通常包括一个字节计数器,它由CPU初始化以设定在一个操作中要传输的数据的总字节数。
一旦一个数据传输操作由CPU启动后,DMA控制逻辑就将开始传输数据,而不需CPU的任何进一步干预。在数据传输操作期间,随着DMA控制逻辑传输每一数据字节,它将字节计数器减量,直到字节计数器达到零。此时,DMA控制逻辑可以给CPU发送一个中断信号,通知CPU数据传输操作已完成。
经常使用DMA的许多外围设备依赖于相对简单的协议。一些设备例如是基于字符的设备,它们在有字符可提供时给DMA控制逻辑发送信号。在这种实例中要传输的进入字符数通常是基于规则的(亦即它要么是常数要么是由协议动态定义的)。另一种设备是块设备,这些设备使用固定块大小来给DMA控制逻辑中的字节计数器编程。
另外一些外围设备不那样简单。例如,通用串行总线(USB)性能规范定义了用于将外围设备连接到计算机的串行数据传输协议。已开发出来的USB性能规范是用来支持范围宽广的外围设备的,它们包括显示器、音频扬声器、打印机、鼠标、网络适配器、调制解调器等。这些设备都具有不同的能力和和数据传输特征,因此,USB性能规范定义了基于包的接口以便以标准化的方式包封数据来支持实际上是任何类型的外围设备。然而,应该注意,在通过USB总线通信的任何数据包中包含的信息量既非一致的也是不可预测的。
另外,基础的USB协议并不简单。例如,在USB 2.0性能规范下,有4个通信协议,称为控制、批量、中断和等时。控制协议支持双向数据传输。中断和等时协议在本质上是周期性的,具有得到保证的交付日程,而等时协议不能被抑制(亦即它是实时协议)。在各个单独端点上持续不变的数据速率可能达到192Mb/s。
由于USB协议的几个特别的细微差别,常规DMA控制逻辑不太适合结合到用于USB设备的控制器中。
首先,USB设备不容易适合于加载一个字节计数到DMA字节计数器中,并且当字节计数用尽时自动关掉DMA控制逻辑和结束数据传输操作的范例。在USB性能规范下,在单一数据包内接收到的字节数目得不到保证。此外,对于实时的等时协议,消息长度是不相干的,而对于周期性的中断或非周期性的批量和控制协议,在数据被收到时消息长度经常是不知道的。
因为无论在一个消息内的总数据字节数还是在一个消息的单一包中的字节数并非总是可预测的,因此常规USB的实现通常作出简化的假设,即以包为基础关掉DMA控制逻辑。然而,通过这样做,CPU所需要的监督量常常增加,从而降低了系统性能。
第二,许多CPU太慢以致不能介入某些与USB有关的DMA传输。如上所述,实时等时协议不能被调节,并且支持高达192Mb/s的持续数据速率。在单一USB数据包中可以传输的最大字节数是1024字节,所以在最大持续速率的情况下,USB控制器中的常规DMA控制逻辑对于它所服务的每一高带宽端点平均每43μs被关掉一次。另一方面,Linux操作系统的嵌入实时版本需要大约100条指令和对堆栈进行50次访问以便把程序控制引导到一个中断控制器例程并返回。取决于处理器和存储器总线速度和超高速缓存存储器的大小,该系统的开销通常在2到5μs范围内,而且该开销甚至不包括实际使中断处理器执行的时间。这一开销只代表一个端点,而即使对于双缓存的端点,常规DMA控制逻辑也要求能在17μs内重新启动和完成1024字节的传输,否则会丢失数据。其结果,许多CPU不能可靠介入高带宽等时传输。
第三,现代的总线结构经常能够损坏与USB有关的DMA数据内容。具体说,常规DMA控制器是面向字节的,而大多数调制解调器总线结构是面向字的。其结果,如果在一个数据包中接收到的字节数不是总线字大小的倍数的话,则常规DMA控制器执行最后字节的传输时只具有部分有效数据。在该最后字传输中剩余的数据是无效的,这样,如果该数据是指定用于一个块设备(诸如海量存储设备)的,则要求在CPU上执行的软件能保存接收到的包的大小,执行部分字的调整(这可能十分麻烦),进行必需的块溢出调整和每当数据传输操作完成时重新启动DMA控制器。这种开销也正是DMA所要提出的那种CPU开销类型,因此,为了处理与USB有关的DMA传输而要求的CPU监督的程度是不希望的。
这样,在DMA控制逻辑的技术中存在特别的需要,它解决常规DMA控制器设计中的上述限制,特别是解决每当这种控制逻辑结合与USB有关的数据传输及其类似传输使用时所产生的缺点。
发明内容
本发明解决与现有技术关联的这些和其他问题,它通过对DMA控制器提供一系列改进而实现,这些改进可以单独地或者组合地使用来优化DMA控制器以用于不一致的DMA应用,诸如与USB兼容的应用。通过后面会叙述的对DMA控制逻辑各种方式的改进,对于需要来自CPU的监督的量和程度明显减少,这将解放CPU以便与DMA传输操作并发地执行其他操作,从而改善了总的系统性能。
根据本发明的一个方面,例如,可以有选择地使得用于存储控制在DMA通道上的数据传输长度的计数值的DMA计数寄存器失效,从而当该DMA计数寄存器失效时,DMA控制电路可以独立于该DMA计数寄存器而执行数据传输。根据本发明的另一方面,可以把一个端点监视定时器耦合到DMA控制电路并将它配置成如果在预定时间段内DMA通道没有接收到数据的话就产生一个中断。另外,根据本发明的再一方面,DMA控制电路可以包含部分字推迟(hold off)功能,以便在最后一个字是一个部分字时延迟对数据包中数据的最后字的传输。
另外,当DMA控制电路用于USB应用时,可以把一个USB简档(profile)电路耦合到DMA控制电路并配置为去控制该DMA控制电路的至少一个操作参数以便有选择地优化DMA控制电路使该控制电路与由该USB简档电路所支持的多种USB协议中所选择的一个USB协议一起使用。
根据本发明的一个方面,提供了一种电路结构,包括:(a)直接存储器存取DMA控制电路,配置成在至少一个DMA通道上传递数据,和(b)DMA计数寄存器,配置成用于存储计数值,该计数值控制在DMA通道上的每次数据传输的长度,其中DMA控制电路被配置成在要传输的数据单元数不可预测时使DMA计数寄存器失效和独立于DMA计数寄存器(54)执行数据传输。
根据本发明的另一方面,提供了一种DMA控制器,包括上述电路结构。
根据本发明的另一方面,提供了一种USB控制器,包括上述电路结构。
根据本发明的另一方面,提供了一种集成电路,包括上述电路结构。
根据本发明的另一方面,提供了一种使用DMA控制电路在直接存储器存取DMA通道上传输数据的方法,所述方法包括:(a)通过在控制每次第一数据传输操作长度的DMA计数寄存器中存储一个计数值来执行第一数据传输操作,和(b)通过在要传输的数据单元数不可预测时使DMA计数寄存器失效来执行在DMA通道上的第二数据传输操作,以使得第二数据传输操作与DMA计数寄存器无关地去执行。
这些以及其他的表征本发明的优点和特征在所附权利要求中叙述,它们形成本发明的另一部分。然而,为更好地理解本发明和通过它的使用所得到的优点和目的,应该参考附图和伴随的说明事项,其中描述了本发明的示范实施例。
附图说明
图1是包括与本发明相一致的DMA控制器的一种装置的方框图。
图2是在参考图1的各DMA通道之一所使用的DMA控制器控制逻辑中的主要USB特定部件的方框图。
图3是一个流程图,描述由图1的USB驱动器执行的端点初始化例行程序的程序流。
图4是一个流程图,描述由图1的USB驱动器执行的中断处理器例行程序的程序流。
具体实施方式
这里说明的实施例使用DMA控制器的一个或者多个改进来优化在不一致的DMA应用诸如USB有关应用特别是与USB2.0性能规范兼容的应用中的DMA传输操作的性能。然而,应该理解,下面说明的各种改进彼此可以单独使用。此外,这里说明的改进可以在非USB兼容应用的应用中具有实用性。因此,本发明不限于这里所说明的特定实现。
现在转向附图,其中相似的编号在几个视图中都指示相似的部件,图1表示根据本发明的含有DMA控制器的装置10的示例硬件和软件环境。为了本发明的目的,装置10实际上可以表示任何类型的计算机、计算机系统或者能够作为一个USB主设备使用的其他可编程电子设备,包括客户计算机、服务器计算机、便携计算机、手持计算机、和嵌入式控制器等。装置10在下面也可以称为“计算机”,虽然应该理解,术语“装置”还可以包括与本发明一致的其他适合的可编程电子设备。
此外,应该理解,根据本发明的DMA控制器也可以用在USB从设备中。另外,这里描述的许多特征也可以在其他存储器传输应用,包括其他USB性能规范版本、以及一些非USB应用中使用的DMA控制器中实现。因此,本发明不限于下面说明的特定的USB主实现方案。
计算机10通常包括系统总线12,其上连接有中央处理单元(CPU)14,CPU14包括连接到存储器16上的一个或者多个微处理器,存储器16可以表示包括随机存取存储器(RAM)器件,计算机10的主存储器,以及任何补充级别的存储器,例如超高速缓存存储器、非易失或者备份存储器(例如可编程或快闪存储器)、只读存储器等。另外,存储器16可以认为包括物理上位于计算机10中任何地方的存储器,例如在CPU14中的一个处理器中的超高速缓存存储器,以及用作虚拟存储器的任何存储能力,例如在海量存储设备或者在和计算机10连接的另一台计算机上存储的虚拟存储器。
为提供USB连接性,USB控制器18另外连接到系统总线12。另外,在计算机10中可能使用的其他输入/输出(I/O)功能,例如海量存储设备、网络适配器、工作站适配器、外部输入设备诸如鼠标和键盘、视频显示器和适配器等,总体上由I/O块20表示,它也表示为连接到系统总线12上。
所示的与USB2.0性能规范兼容且总体上用USB接线22与系统总线12相连接的USB控制器18表示一个或者多个USB网络。USB控制器18定义一个设备端口,它通常支持一个或者多个USB通道24(也表示为通道0...N)。此外,与每一通道24关联的是一个简档寄存器26,它在下面讨论,它用于根据在每一通道上要传输的特定数据类型配置该通道以使性能最优。
每一通道24包括一个端点28,在其内部含有一个由控制逻辑电路32控制的先进先出(FIFO)缓冲器30。每一通道24还包括一个DMA控制器34,它包括由DMA控制逻辑电路38控制的一个FIFO缓冲器36。控制逻辑电路38还控制一个关联的监视定时器40的操作,该监视定时器40被配置为作为超时条件的结果在系统总线12上发布一个中断(中断0)。
在每一通道内的控制逻辑电路32、38的操作是基于存储在与该通道24关联的简档寄存器中的简档信息而定制的。一旦被配置后,电路32、38就在USB布线22和可通过系统总线12访问的一个寄存器或者存储器之间传输数据,如由传输路径42所示,其方式遵照USB2.0性能规范。
应该理解,USB控制器20通常是在包含一个或者多个集成电路器件以及另外的支持电子部件的电路结构中实现的。例如,每一DMA控制器34可以在相同或者不同集成电路器件中作为每一端点28来实现,而用于每一通道的控制电路可以在相同或者不同集成电路器件上实现。USB控制器还可以与另外的电路,例如系统总线12、CPU14、存储器16、和/或工/0块集成而实现,例如在芯片上系统(SOC)中实现。
此外,为每一通道24的USB控制器可以认为是一个单独的DMA控制器或在单一DMA控制器内的逻辑电路。
如在技术中所公知的,集成电路器件通常使用一个或者多个这里称为硬件定义程序的计算机数据文件而设计和制作,该程序规定了在该设备上的电路结构的布局。所述程序通常由设计工具产生,并随后在制造期间使用以产生布局掩膜,后者规定了制作在半导体晶片上的电路结构。通常,使用硬件定义语言(HDL)诸如VHDL、verilog、EDIF等以预定格式提供所述程序。虽然本发明已经或者以后将要在以全功能集成电路器件和使用这种器件的数据处理系统中实现的电路结构的环境中说明,但是本领域的技术人员将会理解,根据本发明的电路结构也可以作为以各种形式的程序产品发布,而且不管用于实际执行这一发布的信号承载介质的特定类型如何,本发明都同样适用。信号承载介质的例子包括但不限于可记录型介质,诸如易失和非易失存储器设备、软盘和其他可移动盘、硬盘驱动器、磁带、光盘(例如CD-ROM,DVD等)等等,以及传输型介质,诸如数字和模拟通信链路。
从软件观点出发,对USB设备功能性的支持通常在USB驱动器44中实现,表示作为操作系统46的一个部件驻留在存储器16中。USB数据通常由各种应用软件48使用,这在技术中是公知的。除其他功能外,USB驱动器44能够配置USB控制器20的每一通道24,包括为了用于传输各种类型USB数据而使每一DMA控制器34的性能最优化。
应该理解,为实现在本发明的各个实施例中使用的任何功能的例行程序,不管它是操作系统的一部分或者一个特定的应用、部件、程序、对象、模块或指令序列,或者甚至其子集,这里都将称为“计算机程序代码”或者简称为“程序代码”。程序代码通常包括一条或多条指令,它(们)在任何时候都常驻在计算机中各种存储器和存储设备中,并当由计算机中的一个或者多个处理器或者在可编程电子设备中的任何其他可编程逻辑读取或执行时引起该计算机或设备执行各个步骤,这些步骤是执行体现本发明的各个方面的步骤或元件所必需的。此外,尽管本发明已经或者在以后将用全功能计算机或电子设备的环境来说明,但是熟悉本技术领域的人员理解,本发明的各种实施例能够以各种形式的程序产品发布,而且不管用于实际执行这一分发的信号承载介质的特定类型如何,本发明都同样适用。
另外,通常可以把程序功能以无穷数量的方式组织到例行程序、过程、方法、模块、对象或类似程序中,同样可以把程序功能分配到常驻在典型的计算机或电子设备内的各种软件层级中(例如操作系统,库,API,应用程序,小应用程序等),在这样的情况下,应该理解,本发明不限于这里说明的程序功能的特定组织和分配。另外,这里说明的功能在硬件和软件之间的确切分配并不限制本发明,在其他的实现中也可以使用不同的分配。
熟悉本技术领域的人员了解,在图1中描绘的示例环境不想要限制本发明。的确,熟悉本技术领域的人员了解,可以使用其他可选硬件和/或软件环境而不背离本发明的范围。
为提供USB环境中的最优性能,USB控制器(特别是其中的每一个DMA控制逻辑电路)支持一系列的改进以利于高带宽的数据速率(例如由USB2.0性能规范支持的192Mb/s带宽),以及使软件开销简化和最小化。一系列这样的改进在图2中详细表示,图2表示为图1的一个DMA通道的DMA控制器控制逻辑38的示例配置。应该注意,FIFO和通过DMA通道的总数据流从图2中被省略了。
具体是,每一DMA控制逻辑电路包括一个状态机50,它可以由一个简档解码器52动态地配置,该简档解码器52从该DMA通道的关联的简档寄存器供给简档标识符。简档解码器产生多个配置信号,包括启动计数寄存器信号、启动包结束信号、启动字节计数信号、启动错误计数信号、启动监视信号、和部分字推迟信号。在另一可选的方案中,由解码器提供的各种信号可以直接映射到简档寄存器26中的各个位中,从而不需要简档解码器52。在该实例中,USB驱动器的责任是设定简档寄存器26中的相应各个位。
对于常规DMA控制器的一个改进是DMA计数寄存器54,它可以被有选择地失效,例如响应来自解码器52的启动计数寄存器的信号。另一个改进,如上所述,是端点监视定时器40,它例如可以响应来自解码器52的启动监.视信号而被启动。当被启动时(例如通过来自状态机50的启动信号),端点监视定时器响应对在相关DMA通道上的数据包的接收(例如响应由状态机50产生的复位信号)而被复位,使得如果在指定时间后未接收到数据包,则触发一个中断,并可选地把推迟的部分字(如果有的话)传输。在一个另外可选的实现中,监视定时器40可以直接通过来自解码器52的启动监视信号而被启动,并且该定时器可以直接监视DMA通道上的数据传输。
此外,通过在状态机50中将有选择地失效的计数寄存器、端点监视定时器和包结束检测电路组合,可以由每一DMA控制逻辑电路支持多种DMA操作方式。此外,操作方式例如可以通过来自解码器52的启动计数寄存器、启动包结束和/或启动监视等信号来选择。可用方式如下:
·传统方式:用要传输的字节数加载DMA计数寄存器54。当计数用尽时,DMA控制逻辑电路自动失效。
·包结束方式:DMA控制逻辑电路,一旦启动,就传输到来的数据包的全部内容。使DMA计数寄存器54失效,因此它基本上被忽略。一个包结束检测电路(例如在状态机50中)被用于在USB总线上收到包结束信号时发送一个中断信号。
·连续方式:DMA控制逻辑电路一旦启动,它就传输到来的数据,直到由软件禁止。同样,使DMA计数寄存器54失效。此外,可以由端点监视定时器40的到期来检测数据传输的完成。
由每一DMA控制逻辑电路支持的另一个特征是部分字推迟特征,它由来自解码器52的部分字推迟信号所启动,并且它决定来到的数据包中的字节数是否是DMA字长的倍数。如果不是,则这一特征推迟最后一个字的DMA传输,直到接收到更多数据,从而防止在DMA传输操作的最后字中传输无效数据。
可以被支持的另外的特征包括跨越包边界字节计数器、条件停止和错误计数器寄存器。具体说,每一DMA通道可以包括一个相关的跨越包边界字节计数器56,它可以在软件控制下被复位,用于积累在每一进入的数据包中接收到的字节数。计数器继续积累直到由软件复位,这将使其能够例如跟踪多个包的消息的长度。可以由解码器52产生的启动字节计数信号来启动字节计数器56。
每一DMA控制逻辑电路还可以支持条件停止,从而可以在软件控制下通过设定条件停止功能(例如通过由状态机50接收到的条件停止信号)动态地关掉一个DMA通道。然而,如果当该软件设定条件停止功能时一个DMA传输正在进行,则活动的传输将把当前包完成,然后才关掉控制逻辑。这一特征例如在与连续操作方式一起使用时也许有用,这样,如果DMA通道的端点监视定时器产生中断的话,则在软件能够处理该中断并且关掉DMA控制电路之前到达的任何新数据包都将被完整地传输。
还可以使一个错误计数器寄存器58与每一DMA通道关联。这种寄存器被配置成每当DMA控制逻辑检测到一个错误时就将其更新。可以使用软件来复位该计数器,该计数器可以连续计数直到被复位。检测到的错误包括与数据的DMA传输相关的任一和所有问题,包括例如与USB等时协议相关的可能发生的溢出错误。可以由解码器52产生的启动错误计数器信号来启动错误计数器58。
另外,每一DMA控制逻辑电路希望由包括前述USB简档寄存器26的一个USB简档电路来配置。在每一简档寄存器存储的简档信息主要基于其相关通道正使用的USB协议,使得全部DMA通道可以基于在该寄存器中存储的简档数据而被恰当配置。
这样,使用DMA通道中的DMA控制逻辑的软件通常不需要理解设定和处理由USB性能规范所支持的各种通信协议的复杂性。该软件只需指定端点所支持的协议相匹配的简档以及设备的接口类型(基于存储器或寄存器的)。然后从这一选择可以自动配置硬件。
例如,简档寄存器可以支持下面表1中所示的简档。应该理解,可以使用其他简档映射作为另外可选的方案。此外应该理解,可以使用对寄存器中简档信息进行编码的各种方式。例如,11种所支持的简档可以用4位寄存器编码。在另一种方案中,每一可选特征可以被指定给寄存器中的一个或者多个位,从而软件能把一个编码值写入简档寄存器来设定所有必需的简档选项,如上所述。
表1:简档寄存器映射
  值   协议   应用接口   简档内容
  1   控制OUT   存储器   DMA包结束方式,跨越包边界计数器,错误计数器
  2   控制IN   存储器   DMA传统方式,错误计数器
  3   批量OUT   存储器   DMA传统方式,部分字保持,错误计数器,跨越包边界计数器,监视定时器
  4   批量IN   存储器   DMA传统方式,错误计数器
  5   中断OUT   存储器   DMA传统方式,监视定时器,部分字推迟,错误计数器,跨越包边界计数器
  6   中断OUT   寄存器/FIFO   DMA连续方式,错误计数器寄存器中断,监视定时器
  7   中断IN   存储器<或>寄存器/FIFO   DMA传统方式,错误计数器
  8   等时OUT   存储器   DMA传统方式,监视定时器,部分字推迟,错误计数器,跨越包边界计数器
  9   等时OUT   寄存器/FIFO   DMA连续方式,错误计数器寄存器中断,监视定时器
  10   等时IN   存储器   DMA传统方式,错误计数器
  11   等时IN   寄存器/FIFO   DMA连续方式,错误计数器寄存器中断
对于每一简档,“错误计数器”表示错误计数器被启动,而“错误计数器寄存器中断”表示错误计数器被启动和每当错误计数器被更新时要触发一个中断。
在图示的实施例中,当需要时,DMA地址寄存器和DMA计数寄存器是由简档寄存器分别编程的。此外,在一些实现中希望允许在DMA通道空间中的任一或者全部寄存器在申请一个简档后通过简档寄存器被重写,以便允许通过软件控制定制一个特定的简档。在另外的实现中,不可以使用简档寄存器,每一相关的特征和寄存器是为特定USB协议恰当地设定的。
从上述的表可以看出,当端点支持等时协议和数据直接在端点FIFO和设备FIFO之间通过时主要使用DMA连续方式。在这一方式中,使DMA计数寄存器失效,任何错误都被积累到错误计数器寄存器中。软件或者可以在周期的基础上轮询该错误计数器寄存器,或者可以当该寄存器被增量时引起触发一个中断。然而,在这种方式下,希望不会因错误而引起DMA控制逻辑电路被关掉。还可能希望如果设备FIFO不能接受部分字传输的话能使用部分字保持特征。另外,如在方式9中指出的,也许希望使用端点监视定时器来检测实时传输中的中断。
从上述还可以看出,主要为支持控制协议而使用DMA包结束方式。在这一环境中,具有经常不确定长度的非实时信息的小包被零星接收。DMA控制逻辑电路在接收任何长度的单个包后关断。无论是部分字保持特征还是端点监视定时器都不需要或被使用,DMA计数寄存器也是这样。可选地使用跨越包边界字节计数器来确定在该包中接收到的字节数,并且可以周期地轮询错误计数器寄存器或者可以响应在数据包传输期间接收到的错误而产生中断。
对于所有其他方式,可以使用DMA传统方式。例如,当海量存储(块)设备从一个支持批量传输协议的端点接收数据时,DMA传统方式可以十分有用。DMA计数器寄存器可以装入块大小的倍数,其中数据从各个包写入各存储器块。然而,为充满这些存储器块所需要的包的数目是透明的。当充满了指定的块数时(亦即计数器寄存器用尽),可以关掉DMA控制逻辑电路。也许希望使用部分字推迟特征来保证在存储器块中不发生无效数据间隙。另外,也可能希望使用端点监视定时器以检测没有充分接收到数据。
应该理解,利用当前公开的内容,这里说明的在DMA控制逻辑中的改进的实现将完全在熟悉本计数领域的人员的能力之内。
这里说明的改进的DMA控制器的软件控制一般地但并非必需地要利用,由如上所述的USB驱动器来管理。例如,图3表示一个示例性的初始化例行程序60,它可以由一个USB驱动器执行以恰当地配置一个USB控制器的每一端点,以便利用这些设备的最优协议来和特定的USB设备进行交互作用。
例行程序60在块62开始,它设定一个端点变量以选择由该控制器支持的第一端点。然后块64把一个索引变量初始化以便为该端点选择相关联的USB简档寄存器。
接着,在块66,这里决定是否应该把第一端点配置为控制端点,例如根据是否期望使用该USB控制协议来通过该端点传输数据。如果是这样,则将控制传到块68,以便将那个端点(通过索引变量选择)的简档寄存器设定为识别相应的简档的控制标识值。一旦设定后,将控制传给块70和72来使索引和端点变量增量。然后将控制传到块74以决定该USB控制器的最后端点是否已经处理。如果不是,则将控制传到块66来处理另外的端点。否则,例行程序60就告完成。
返回到块66,这时决定下一端点不应该配置为控制端点,将控制传到块76以决定该端点是否应该被配置为批量端点,例如根据是否期望使用USB批量协议来通过该端点传输数据。如果是,则将控制传给块78,以便将那个端点的简档寄存器设定为识别相应的简档的批量标识值。一旦设定后,就把控制传给块70和72来使索引和端点变量增量,然后传给块74以处理所有剩余的端点,如果有的话。
接着,返回到块76,这时决定下一端点不应该配置为批量端点,将控制传给块80以决定该端点是否应该被配置为中断端点,例如根据是否期望使用USB中断协议来通过该端点传输数据。如果是,则将控制传给块82,以便把那个端点的简档寄存器设定为识别相应的简档的中断标识值。一旦设定后,就将控制传给块70和72来把索引和端点变量增量,然后传给块74以处理所有剩余的端点,如果有的话。
接着,返回到块80,这时决定下一端点不应该配置为中断端点,把控制传给块84以决定该端点是否应该被配置为等时端点,例如根据是否期望使用USB等时协议来通过该端点传输数据。如果是,则将控制传给块86,以便将那个端点的简档寄存器设定为识别相应的简档的等时标识值。一旦设定后,就将控制传给块70和72来使索引和端点变量增量,然后传给块74以处理所有剩余的端点,如果有的话。
如上所述,为了进一步把一个端点初始化以用于DMA传输,USB驱动器为通过该DMA通道的DMA传输分别配置DMA地址寄存器以识别适当的源和/或目的地。另外,如果选择了传统方式,则把该DMA计数寄存器也相应地设定。一旦配置后,用于该DMA通道的DMA控制器就独立于软件管理数据传输,如同常规DMA控制器一样。
下面图4表示一个示例性的中断处理例行程序100,它可以由USB驱动器响应由在该USB控制器中的一个特定端点产生的中断而执行。例行程序100在块102开始,它获得产生中断的端点的身份。接着,在块104决定是否检测到错误,例如通过轮询DMA控制器中的错误计数器寄存器。如果是,则把控制传给块106以报告该错误,使得该错误被适当处理。然后例行程序100完成。
返回到块104,如果没有检测到错误,则把控制传到块108,决定是否已经接收到USB消息的最后的数据包。具体说,例行程序100可以轮询DMA控制器中适当的字节以决定是否已经接收到USB消息的所有数据(例如根据驱动器跟踪一个到来消息)。如果尚未接收到最后的包,则例行程序100结束。否则,块108把控制传给块110以决定该端点的DMA控制器是否仍然在工作。如果是,则块110把控制传给块112以关掉DMA控制器(例如通过建立一个条件停止信号)。然后把控制传给块114来揭示一个“消息完成”状态,使得在USB驱动器中的其他程序代码以常规方式进行该消息的处理。然后例行程序100完成。返回块110,如果DMA控制器当前未启动,则控制直接传给块114来揭示“消息完成”状态,并结束例行程序100。
对于图示实施例可以进行各种修改而不离开本发明的精神和范围。因此,本发明建立在下面所附的权利要求上。

Claims (25)

1.一种电路结构,包括:(a)直接存储器存取DMA控制电路(38),配置成在至少一个DMA通道(24)上传递数据,和(b)DMA计数寄存器(54),配置成用于存储计数值,该计数值控制在DMA通道(24)上的每次数据传输的长度,其中DMA控制电路(38)被配置成在要传输的数据单元数不可预测时使DMA计数寄存器(54)失效和独立于DMA计数寄存器(54)执行数据传输。
2.权利要求1的电路结构,进一步包括端点监视定时器(40),它被耦合DMA控制电路(38)并被配置成在一个预定时间段内如果DMA通道(24)未接收到数据则产生一个中断。
3.权利要求1的电路结构,其中,DMA控制电路(38)被配置成当在DMA通道(24)上传递数据包时,如果最后字是一个部分字,则延迟该数据包中的数据的最后字的传输。
4.权利要求3的电路结构,其中,DMA控制电路(38)被配置成仅当为DMA控制电路(38)选择一个部分字推迟方式时才延迟数据的最后字的传输。
5.权利要求1的电路结构,进一步包括错误计数器寄存器(58),它被配置成用于记录在DMA通道(24)上的数据传输期间检测到的错误。
6.权利要求1的电路结构,其中,DMA控制电路(38)被配置成在响应接收到关断DMA通道(24)的请求而关断DMA通道(24)之前先完成在DMA通道(24)上正在进行的数据包中的数据传输。
7.权利要求6的电路结构,其中,请求关断DMA通道(24)的请求是条件停止请求。
8.权利要求1的电路结构,进一步包括字节计数器(56),它被配置成用于累计在DMA通道(24)上传输的数据量。
9.权利要求1的电路结构,其中,DMA控制电路(38)可以有选择地工作在计数方式和连续方式,其中,在计数方式中,DMA控制电路(38)启动DMA计数寄存器(54),而在连续方式中,DMA控制电路(38)使DMA计数寄存器(54)失效。
10.权利要求9的电路结构,其中,DMA控制电路(38)可以有选择地工作在包结束方式,其中,在包结束方式中DMA控制电路(38)使DMA计数寄存器(54)失效并响应检测到数据包的结束而终止在DMA通道(24)上的数据传输。
11.权利要求1的电路结构,进一步包括一个通用串行总线(USB)简档电路(26),它耦合到DMA控制电路(38)并配置成去控制DMA控制电路(38)的至少一个操作参数以便有选择地优化DMA控制电路(38)使其与从受USB简档电路(26)所支持的多个USB协议中所选中的一个USB协议一起使用。
12.权利要求1的电路结构,进一步包括一个通用串行总线(USB)端点(28),它耦合到DMA控制电路(38),其中,DMA控制电路(38)被配置成去控制在USB端点(28)和一个可编程电子设备之间的数据传输。
13.权利要求1的电路结构,其中,DMA控制电路(38)被配置成在多个DMA通道(24)上传递数据,其中,所述电路结构包括多个分别与多个DMA通道(24)关联的DMA计数寄存器(54),其中,每一DMA计数寄存器(54)被配置成在相关联的DMA通道(24)上执行数据传输期间被DMA控制电路(38)有选择地使其失效。
14.包括权利要求1的电路结构的DMA控制器(34)。
15.包括权利要求1的电路结构的USB控制器(18)。
16.包括权利要求1的电路结构的集成电路。
17.一种使用DMA控制电路(38)在直接存储器存取DMA通道(24)上传输数据的方法,所述方法包括:(a)通过在控制每次第一数据传输操作长度的DMA计数寄存器(54)中存储一个计数值来执行第一数据传输操作,和(b)通过在要传输的数据单元数不可预测时使DMA计数寄存器(54)失效来执行在DMA通道(24)上的第二数据传输操作,以使得第二数据传输操作与DMA计数寄存器(54)无关地去执行。
18.权利要求17的方法,其中,执行第二数据传输操作包括如果在预定时间段内DMA通道(24)没有接收到数据就使用耦合到DMA控制电路(38)上的端点监视定时器来产生一个中断。
19.权利要求17的方法,其中,执行第二数据传输操作包括在DMA通道(24)上传输数据包,和如果最后字是一个部分字则延迟传输数据包中的数据的最后字。
20.权利要求17的方法,其中,执行第二数据传输操作包括把在DMA通道(24)上传输数据期间检测到的错误记录到错误计数器寄存器(58)中。
21.权利要求17的方法,其中,执行第二数据传输操作包括响应在数据包中的数据的传输完成之前接收到关断DMA通道(24)的请求的接收,从而在关掉DMA通道(24)之前完成在DMA通道(24)上对数据包中的数据的传输。
22.权利要求17的方法,进一步包括在执行第一和第二数据传输操作期间在字节计数器(56)中累计在DMA通道(24)上传输的数据量。
23.权利要求17的方法,其中,执行第一数据传输操作包括把DMA控制电路(38)配置成以计数方式操作,其中,执行第二数据传输操作包括把DMA控制电路(38)配置成以连续方式操作。
24.权利要求23的方法,进一步包括执行第三数据传输操作,其中包括把DMA控制电路(38)配置成以包结束方式操作,和响应检测到数据包结束而终止第三数据传输操作。
25.权利要求17的方法,其中执行第一和第二数据传输操作的每一种操作包括向或从一个USB端点(28)传输通用串行总线(USB)数据,该方法进一步包括使用一个USB简档电路(26)去控制DMA控制电路(38)的至少一个操作参数来有选择地优化DMA控制电路(38),以便与从受USB简档电路(26)支持的多个USB协议中选中的一个USB协议一起使用。
CN200380101117A 2002-10-10 2003-10-04 用dma控制电路在dma通道上传输数据的电路结构和方法 Expired - Fee Related CN100576192C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/268,408 US20040073721A1 (en) 2002-10-10 2002-10-10 DMA Controller for USB and like applications
US10/268,408 2002-10-10

Publications (2)

Publication Number Publication Date
CN1703687A CN1703687A (zh) 2005-11-30
CN100576192C true CN100576192C (zh) 2009-12-30

Family

ID=32068558

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200380101117A Expired - Fee Related CN100576192C (zh) 2002-10-10 2003-10-04 用dma控制电路在dma通道上传输数据的电路结构和方法

Country Status (6)

Country Link
US (1) US20040073721A1 (zh)
JP (1) JP2006502491A (zh)
CN (1) CN100576192C (zh)
AU (1) AU2003265086A1 (zh)
TW (1) TW200428219A (zh)
WO (1) WO2004034175A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10417164B2 (en) 2016-12-29 2019-09-17 Asmedia Technology Inc. Synchronous transmission device and synchronous transmission method

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004227501A (ja) * 2003-01-27 2004-08-12 Yamaha Corp データ転送制御装置および方法
JP4211698B2 (ja) * 2004-07-09 2009-01-21 ソニー株式会社 コンテンツデータ再生装置
US20060026308A1 (en) * 2004-07-29 2006-02-02 International Business Machines Corporation DMAC issue mechanism via streaming ID method
DE602005027003D1 (de) 2005-06-30 2011-04-28 Freescale Semiconductor Inc Einrichtung und verfahren zur steuerung einer ausführung einer dma-task
US20090125647A1 (en) * 2005-06-30 2009-05-14 Citibank, N.A. Device And Method For Executing A DMA Task
DE602005015632D1 (de) * 2005-06-30 2009-09-03 Freescale Semiconductor Inc Einrichtung und verfahren zur steuerung mehrerer dma-tasks
JP4598858B2 (ja) 2005-06-30 2010-12-15 フリースケール セミコンダクター インコーポレイテッド ダイレクトメモリアクセスタスク要求のアービトレーションを行うためのデバイスおよび方法
US7496695B2 (en) * 2005-09-29 2009-02-24 P.A. Semi, Inc. Unified DMA
WO2007083197A1 (en) 2006-01-18 2007-07-26 Freescale Semiconductor Inc. Device having data sharing capabilities and a method for sharing data
US7657684B2 (en) * 2006-04-28 2010-02-02 Qualcomm Incorporated USB interrupt endpoint sharing
US7506098B2 (en) * 2006-06-08 2009-03-17 Bitmicro Networks, Inc. Optimized placement policy for solid state storage devices
US8190698B2 (en) * 2006-06-30 2012-05-29 Microsoft Corporation Efficiently polling to determine completion of a DMA copy operation
US8959307B1 (en) 2007-11-16 2015-02-17 Bitmicro Networks, Inc. Reduced latency memory read transactions in storage devices
CN101587462B (zh) * 2008-05-21 2012-02-08 上海摩波彼克半导体有限公司 高速数据通信链路中的usb数据传输装置及其数据传输方法
DE102008051861A1 (de) * 2008-10-16 2010-04-22 Deutsche Thomson Ohg Verfahren zum Betreiben einer Mehrport-MAC-Brücke mit abschaltbaren Ports abhängig von einem isochronen Datenstrom an einem Port oder Port-Paar in Ethernet-LANs
US8665601B1 (en) 2009-09-04 2014-03-04 Bitmicro Networks, Inc. Solid state drive with improved enclosure assembly
US8447908B2 (en) 2009-09-07 2013-05-21 Bitmicro Networks, Inc. Multilevel memory bus system for solid-state mass storage
US8560804B2 (en) 2009-09-14 2013-10-15 Bitmicro Networks, Inc. Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device
JP5506304B2 (ja) * 2009-09-18 2014-05-28 ルネサスエレクトロニクス株式会社 データ処理装置及びデータ処理システム
US9372755B1 (en) 2011-10-05 2016-06-21 Bitmicro Networks, Inc. Adaptive power cycle sequences for data recovery
US9043669B1 (en) 2012-05-18 2015-05-26 Bitmicro Networks, Inc. Distributed ECC engine for storage media
US9423457B2 (en) 2013-03-14 2016-08-23 Bitmicro Networks, Inc. Self-test solution for delay locked loops
US10120694B2 (en) 2013-03-15 2018-11-06 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9934045B1 (en) 2013-03-15 2018-04-03 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9875205B1 (en) 2013-03-15 2018-01-23 Bitmicro Networks, Inc. Network of memory systems
US9430386B2 (en) 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US9842024B1 (en) 2013-03-15 2017-12-12 Bitmicro Networks, Inc. Flash electronic disk with RAID controller
US9720603B1 (en) 2013-03-15 2017-08-01 Bitmicro Networks, Inc. IOC to IOC distributed caching architecture
US9916213B1 (en) 2013-03-15 2018-03-13 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US10489318B1 (en) 2013-03-15 2019-11-26 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9971524B1 (en) 2013-03-15 2018-05-15 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9501436B1 (en) 2013-03-15 2016-11-22 Bitmicro Networks, Inc. Multi-level message passing descriptor
US9672178B1 (en) 2013-03-15 2017-06-06 Bitmicro Networks, Inc. Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system
US9400617B2 (en) 2013-03-15 2016-07-26 Bitmicro Networks, Inc. Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained
US9734067B1 (en) 2013-03-15 2017-08-15 Bitmicro Networks, Inc. Write buffering
US9798688B1 (en) 2013-03-15 2017-10-24 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US10078604B1 (en) 2014-04-17 2018-09-18 Bitmicro Networks, Inc. Interrupt coalescing
US9952991B1 (en) 2014-04-17 2018-04-24 Bitmicro Networks, Inc. Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation
US10042792B1 (en) 2014-04-17 2018-08-07 Bitmicro Networks, Inc. Method for transferring and receiving frames across PCI express bus for SSD device
US9811461B1 (en) 2014-04-17 2017-11-07 Bitmicro Networks, Inc. Data storage system
US10055150B1 (en) 2014-04-17 2018-08-21 Bitmicro Networks, Inc. Writing volatile scattered memory metadata to flash device
US10025736B1 (en) 2014-04-17 2018-07-17 Bitmicro Networks, Inc. Exchange message protocol message transmission between two devices
US9721625B2 (en) * 2014-06-18 2017-08-01 Qualcomm Incorporated Time-constrained data copying between storage media
US10552050B1 (en) 2017-04-07 2020-02-04 Bitmicro Llc Multi-dimensional computer storage system
CN111090601A (zh) * 2019-12-07 2020-05-01 苏州浪潮智能科技有限公司 基于bmc芯片的多功能usb控制方法、系统、终端及存储介质
CN111813727B (zh) * 2020-08-21 2020-12-08 南京沁恒微电子股份有限公司 一种实时高效的usb数据传输方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU568977B2 (en) * 1985-05-10 1988-01-14 Tandem Computers Inc. Dual processor error detection system
DE69127851T2 (de) * 1990-05-22 1998-04-30 Nippon Electric Co Direktspeicherzugriffübertragungssystem und Benutzung
US6745264B1 (en) * 2002-07-15 2004-06-01 Cypress Semiconductor Corp. Method and apparatus for configuring an interface controller wherein ping pong FIFO segments stores isochronous data and a single circular FIFO stores non-isochronous data

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10417164B2 (en) 2016-12-29 2019-09-17 Asmedia Technology Inc. Synchronous transmission device and synchronous transmission method

Also Published As

Publication number Publication date
US20040073721A1 (en) 2004-04-15
WO2004034175A3 (en) 2004-07-01
CN1703687A (zh) 2005-11-30
JP2006502491A (ja) 2006-01-19
AU2003265086A8 (en) 2004-05-04
AU2003265086A1 (en) 2004-05-04
WO2004034175A2 (en) 2004-04-22
TW200428219A (en) 2004-12-16

Similar Documents

Publication Publication Date Title
CN100576192C (zh) 用dma控制电路在dma通道上传输数据的电路结构和方法
TWI434182B (zh) 外部記憶體快進快出裝置
CN1199115C (zh) 执行中断目的地重新指向的机制
US6742076B2 (en) USB host controller for systems employing batched data transfer
US7822908B2 (en) Discovery of a bridge device in a SAS communication system
US7529862B2 (en) System for providing access of multiple data buffers to a data retaining and processing device
US6925512B2 (en) Communication between two embedded processors
CN100440184C (zh) 一种能同时进行读写操作的dma控制器及传输方法
US6131131A (en) Computer system including an enhanced communication interface for an ACPI-compliant controller
US6889266B1 (en) Method for delivering packet boundary or other metadata to and from a device using direct memory controller
CN101636721B (zh) 用于处理未知长度传输的dmac
US6243787B1 (en) Synchronization of interrupts with data pockets
CN100440242C (zh) 用于识别标准卡以及非标准卡的卡识别系统
CN101493805B (zh) 可伸缩总线结构
US5937200A (en) Using firmware to enhance the functionality of a controller
US7222201B2 (en) Virtual endpoint for USB devices
KR101051703B1 (ko) 서스펜드/리쥼 기능을 갖는 집적 회로 카드 및 집적 회로카드 시스템
CN106155960A (zh) 基于gpio握手和edma的uart串口通信方法
US20090059943A1 (en) Data processing system
US5896549A (en) System for selecting between internal and external DMA request where ASP generates internal request is determined by at least one bit position within configuration register
CN100476772C (zh) 用于在总线的发射信道上分配带宽的方法和设备
US6535942B1 (en) Method for reducing processor interrupt load
AU8100287A (en) Data transfer system having transfer discrimination circuit
EP1754159A2 (en) Configurable ping-pong buffers for usb buffer description tables
CN100555256C (zh) 供多主控器共享的资源系统使用的通信操纵

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: NXP CO., LTD.

Free format text: FORMER OWNER: KONINKLIJKE PHILIPS ELECTRONICS N.V.

Effective date: 20071102

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20071102

Address after: Holland Ian Deho Finn

Applicant after: Koninkl Philips Electronics NV

Address before: Holland Ian Deho Finn

Applicant before: Koninklijke Philips Electronics N.V.

C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20091230

Termination date: 20111004