用于数字信号处理的存储器地址生成.pdf

上传人:62****3 文档编号:6174252 上传时间:2019-05-17 格式:PDF 页数:31 大小:1.41MB
返回 下载 相关 举报
摘要
申请专利号:

CN201310384896.3

申请日:

2013.08.29

公开号:

CN103677663A

公开日:

2014.03.26

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 3/06申请日:20130829|||公开

IPC分类号:

G06F3/06; G06F12/02; G06F13/28

主分类号:

G06F3/06

申请人:

想象力科技有限公司

发明人:

A·J·安德森

地址:

英国赫特福德郡

优先权:

2012.08.30 GB 1215422.5

专利代理机构:

永新专利商标代理有限公司 72002

代理人:

刘瑜;王英

PDF下载: PDF下载
内容摘要

本发明描述了用于数字信号处理的存储器地址生成。在一个例子中,片上数字信号处理系统利用在系统的功能块之间共享的片上存储器空间。片上DMA控制器包括地址生成器,其可以生成读存储器地址序列和写存储器地址序列,以在片上存储器和页式存储器设备之间或者在系统中内部地传输数据项。地址生成器是可配置的,并可以生成非线性的读和/或写地址序列。这使交织/解交织操作的方面能够作为内部或页式存储器之间的数据传输的一部分而被执行。作为结果,不需要用于交织操作的专用存储器。在另外的例子中,地址生成器可以被配置成生成读和/或写地址,所述读和/或写地址考虑了在执行交织时特定存储器设备(例如DRAM)的限制。

权利要求书

权利要求书
1.  一种片上数字信号处理系统,包括:
第一存储器,其存储以第一序列排列的多个数据项,每个数据项具有所述第一存储器上的相关联的存储器地址;
至少一个数字信号处理器,其耦合到所述第一存储器,并用于直接对所述第一存储器进行数据读取和数据写入;以及
直接存储器存取控制器,其耦合到所述第一存储器,并且包括通往页式存储器设备的端口,其中,所述直接存储器存取控制器被配置成将所述多个数据项直接从所述第一存储器传输到所述页式存储器设备,并且
其中,所述直接存储器存取控制器还包括可配置的地址生成器,所述地址生成器用于通过使用多个读模式中的选定的一个读模式和多个写模式中的选定的一个写模式,来在所述传输期间操纵与每个数据项相关联的存储器地址,使得写入所述页式存储器设备的数据项以不同于所述第一序列的第二序列进行排列。

2.  根据权利要求1所述的片上数字信号处理系统,其中,所述多个读模式中的所述选定的一个读模式用于配置所述地址生成器,以使所述直接存储器存取控制器从所述第一存储器上的非线性存储器地址序列读取所述数据项,并且所述多个写模式中的所述选定的一个写模式用于配置所述地址生成器,以使所述直接存储器存取控制器将所述数据项写入所述页式存储器设备上的线性地址序列。

3.  根据权利要求1所述的片上数字信号处理系统,其中,所述多个读模式中的所述选定的一个读模式用于配置所述地址生成器,以使所述直接存储器存取控制器从所述第一存储器上的线性存储器地址序列读取所述数据项,并且所述多个写模式中的所述选定的一个写模式用于配置所述地址生成器,以使所述直接存储器存取控制器将所述数据项写入所述页式存储器设备上的非线性地址序列。

4.  根据权利要求1所述的片上数字信号处理系统,其中,所述多个读模式中的所述选定的一个读模式用于配置所述地址生成器,以使所述直接存储器存取控制器从所述第一存储器上的非线性存储器地址序列读取所述数据项,并且所述多个写模式中的所述选定的一个写模式用于配置所述地址生成器,以使所述直接存储器存取控制器将所述数据项写入所述页式存储器设备上的非线性地址序列。

5.  根据权利要求1所述的片上数字信号处理系统,其中,所述直接存储器存取控制器还被配置成将所述多个数据项直接从所述页式存储器设备传输到所述第一存储器,并且所述地址生成器还用于通过使用多个读模式中的进一步选定的一个读模式和多个写模式中的进一步选定的一个写模式,来在从所述页式存储器设备到所述第一存储器的传输期间操纵与每个数据项相关联的存储器地址,使得写入所述第一存储器的数据项以不同于所述第一序列和所述第二序列的第三序列进行排列。

6.  根据权利要求1所述的片上数字信号处理系统,其中,所述页式存储器设备是动态随机存取存储器。

7.  根据权利要求1所述的片上数字信号处理系统,其中,所述第一存储器是静态随机存取存储器。

8.  根据权利要求1所述的片上数字信号处理系统,还包括:控制处理器,所述控制处理器用于执行一程序,所述程序被配置成选择所述多个读模式中的所述一个读模式和所述多个写模式中的所述一个写模式以供所述地址生成器使用,并将这些选择提供给所述地址生成器。

9.  根据权利要求1所述的片上数字信号处理系统,其中,所述数字信号处理系统还包括:多个硬件外围设备,每个硬件外围设备连接到所述直接存储器存取控制器,并且每个硬件外围设备被配置成经由所述直接存储器存取控制器从所述第一存储器读取数据,对所述数据执行一个或多个操 作,并经由所述直接存储器存取控制器将数据写入所述第一存储器设备。

10.  根据权利要求1所述的片上数字信号处理系统,其中,所述第一序列中的所述多个数据项被定义为排列成具有多个行和列的网格。

11.  根据权利要求1所述的片上数字信号处理系统,其中,所述第一序列中的所述多个数据项被定义为排列成具有多个行和列的元素网格,每个元素包括一组来自所述第一序列的连续数据项。

12.  根据权利要求10所述的片上数字信号处理系统,其中,所述多个读模式中的所述选定的一个读模式和所述多个写模式中的所述选定的一个写模式一起配置所述地址生成器,以操纵每个数据项的存储器地址,使得所述第二序列基于所述网格的转置。

13.  根据权利要求10所述的片上数字信号处理系统,其中,所述多个读模式中的所述选定的一个读模式和所述多个写模式中的所述选定的一个写模式一起配置所述地址生成器,以操纵每个数据项的存储器地址,使得所述第二序列基于所述网格的转置,其中,对一个或多个列或行的元素应用了位置移位。

14.  根据任一前述权利要求所述的片上数字信号处理系统,其中,所述多个读模式中的所述选定的一个读模式和所述多个写模式中的所述选定的一个写模式一起配置所述地址生成器,以在所述传输期间操纵与每个数据项相关联的存储器地址,使得所述第二序列等价于对所述第一序列执行的卷积解交织操作的至少一部分。

15.  一种使用直接存储器存取控制器来在数字信号处理系统中执行交织或解交织操作的方法,所述直接存储器存取控制器包括可配置的地址生成器,其中,所述直接存储器存取控制器耦合到用于存储以第一序列排列的多个数据项的存储器,每个数据项具有所述存储器上的相关联的地址, 所述方法包括:
选择所述地址生成器的读模式和写模式;
在所述地址生成器处,根据所述读模式计算存储器读地址序列,并根据所述写模式计算存储器写地址序列,使得在读地址和相应的写地址之间存在非线性关系;
使用所述直接存储器存取控制器读取与所述读地址序列中的第一地址相关联的数据项;
使用所述直接存储器存取控制器将该数据项写入所述写地址序列中的第一地址;以及
对于所述读地址序列和所述写地址序列中的每个后续地址,重复所述读取步骤和所述写入步骤,使得所述多个数据项在所述存储器上以不同于所述第一序列的第二序列进行排列。

16.  根据权利要求15所述的方法,其中,所述存储器是片上系统存储器。

17.  根据权利要求15所述的方法,还包括:在所述读取步骤之后并且在所述写入步骤之前,将数据项存储在耦合到所述直接存储器存取控制器的页式存储器设备上。

18.  根据权利要求15所述的方法,其中,根据所述读模式计算存储器读地址序列的步骤包括以下中的一个或多个:
基于起始地址和预定整数的模来计算非线性读地址序列;
通过将连续的存储器地址子序列重复预定次数来计算非线性读地址序列;以及
通过选择第一预定数量的连续存储器地址,然后跳过一个或多个存储器地址,并选择第二预定数量的连续存储器地址,来计算非线性读地址序列。

19.  根据权利要求15所述的方法,其中,根据所述写模式计算存储器 写地址序列的步骤包括:基于起始地址和预定整数的模来计算非线性写地址序列。

20.  根据权利要求15到20中的任一项所述的方法,其中,选择读模式和写模式的步骤是由控制处理器执行的,所述控制处理器执行用于配置所述数字信号处理系统的操作的程序。

说明书

说明书用于数字信号处理的存储器地址生成
背景技术
数字信号处理在多种多样的应用程序中获得了使用。这些应用中的很多都是实时的,在该意义上,对于数据的处理存在时间约束,以便其对于终端用户来说是有意义的或者有用的。这方面的一个例子是数字广播流,例如数字电视和数字无线电。数据信号处理系统需要能够足够快速地对实时流进行处理和解码,以便使数据能够像其被接收那样快速地被输出(除非缓冲)。
数字信号处理系统除了使用更加通用的数字信号处理器之外,通常还使用一个或多个专用硬件外围设备。这些硬件外围设备是被设计为以快速和高效方式来执行特定的信号处理任务的处理模块。例如,交织和解交织是通常使用硬件外围设备来针对实时数据执行的操作。交织和解交织是存储器密集型的操作,执行该操作的硬件外围设备使用相关联的专用存储器设备对数据进行重新排序。
但是,不同类型的实时数据的要求变化非常大。例如,世界范围内使用的各种不同的数字电视和无线标准通常具有不同结构的实时数据,例如,使用不同的类型或者参数进行编码、交织、均衡等等。如果数字信号处理系统能足够灵活地应用于不同的标准,那么用于交织/解交织的专用存储器设备必须足够地大,以便处理具有最大存储器要求的标准。结果,与交织/解交织硬件外围设备一起使用的存储器经常是未充分利用的。
下面所描述的实施例并不限于解决已知数字信号处理系统的任何或者所有缺点的实现。
发明内容
提供该概括以便以简化形式来介绍在下面的具体实施方式中进一步描述的构思的精华。该概括并不是旨在标识要求保护的主题的关键特征或者必要特征,也不是旨在用作帮助确定所要求保护的主题的范围。
描述了用于数字信号处理的存储器地址生成。在一个例子中,片上数字信号处理系统利用在系统的功能块之间共享的片上存储器空间。片上直接存储器存取(DMA)控制器包括地址生成器,其可以生成读存储器地址序列和写存储器地址序列,以在片上存储器和页式存储器设备之间或者在系统中内部地传输数据项。地址生成器是可配置的,并可以生成非线性的读和/或写地址序列。这使交织/解交织操作的方面能够作为内部或页式存储器之间的数据传输的一部分而被执行。作为结果,不需要用于交织操作的专用存储器。在另外的例子中,地址生成器可以被配置成生成读和/或写地址,所述读和/或写地址考虑了在执行交织时特定存储器设备(例如DRAM)的限制。
第一方面提供了一种片上数字信号处理系统,其包括:第一存储器,存储以第一序列排列的多个数据项,每个数据项具有第一存储器上的相关联存储器地址;至少一个数字信号处理器,耦合到第一存储器,并用于直接对所述第一存储器进行读数据和写数据;以及直接存储器存取控制器,耦合到所述第一存储器并包括通往页式存储器设备的端口,其中,所述直接存储器存取控制器被配置成将多个数据项直接从第一存储器传输到页式存储器设备,并且其中,直接存储器存取控制器还包括可配置的地址生成器,其用于通过使用多个读模式中的选定的一个读模式和多个写模式中的选定的一个写模式来在传输期间操纵与每个数据项相关联的存储器地址,使得写到页式存储器设备的数据项以不同于第一序列的第二序列进行排列。
多个读模式中的选定的一个读模式可以用于配置地址生成器以使直接存储器存取控制器从第一存储器上的非线性的存储器地址序列读取数据项,并且多个写模式中的选定的一个写模式以用于配置地址生成器以使直接存储器存取控制器将数据项写到页式存储器设备上的线性地址序列。
多个读模式中的选定的一个读模式可以用于配置地址生成器以使直接存储器存取控制器从第一存储器上的线性存储器地址序列读取数据项,并且多个写模式中的选定的一个写模式可以用于配置地址生成器以使直接存储器存取控制器将数据项写到页式存储器设备上的非线性地址序列。
多个读模式中的选定的一个读模式可以用于配置地址生成器以使直接 存储器存取控制器从第一存储器上的非线性存储器地址序列读取数据项,并且多个写模式中的选定的一个写模式可以用于配置地址生成器以使直接存储器存取控制器将数据项写到页式存储器设备上的非线性地址序列。
直接存储器存取控制器还可以被配置成将多个数据项从页式存储器设备直接传输到第一存储器,并且地址生成器可以用于通过使用多个读模式中的进一步选定的一个读模式和多个写模式中的进一步选定的一个写模式来在从页式存储器设备到第一存储器的传输期间进一步操纵与每个数据项相关联的存储器地址,使得写到第一存储器的数据项以不同于第一和第二序列的第三序列进行排列。
页式存储器设备可以是动态随机存取存储器。
第一存储器可以是静态随机存取存储器。
片上数字信号处理系统还可以包括控制处理器,用于执行一程序,所述程序被配置成选择多个读模式中的一个和多个写模式中的一个以供地址生成器使用,并向地址生成器提供这些选择。
数字信号处理系统还可以包括多个硬件外围设备,每个硬件外围设备连接到直接存储器存取控制器,并且每个硬件外围设备被配置成经由直接存储器存取控制器从第一存储器读取数据,对所述数据执行一个或多个操作,并经由直接存储器存取控制器将数据写到第一存储器设备。
第一序列中的多个数据项可以被定义为排列成具有多个行和列的网格。
第一序列中的多个数据项可以被定义为排列成具有多个行和列的元素的网格,,每个元素包括来自第一序列的一组连续的数据项。
多个读模式中的选定的一个读模式和多个写模式中的选定的一个写模式可以一起配置地址生成器以操纵每个数据项的存储器地址,使得第二序列基于网格的转置。
多个读模式中的选定的一个读模式和多个写模式中的选定的一个写模式可以一起配置地址生成器以操纵每个数据项的存储器地址,使得第二序列基于网格的转置,其中对一个或多个列或行中的元素应用了位置偏移。
多个读模式中的选定的一个读模式和多个写模式中的选定的一个写模式可以一起配置地址生成器,以在传输期间操纵与每个数据项相关联的存 储器地址,使得第二序列等价于在第一序列上执行的卷积解交织操作的至少一部分。
第二方面提供了使用包括可配置的地址生成器的直接存储器存取控制器来在数字信号处理系统中执行交织或解交织操作的方法,其中直接存储器存取控制器耦合到用于存储以第一序列排列的多个数据项的存储器,每个数据项具有存储器上的相关联的地址,该方法包括:选择地址生成器的读模式和写模式;在地址生成器处根据读模式计算存储器读地址序列,并根据写模式计算存储器写地址序列,使得在读地址和相应的写地址之间存在非线性关系;使用直接存储器存取控制器读取与读地址序列中的第一地址相关联的数据项;使用直接存储器存取控制器将该数据项写到写地址序列中的第一地址;以及对于读地址和写地址序列中的每个后续的地址,重复读取和写入的步骤,使得数据项在存储器上以不同于第一序列的第二序列进行排列。
存储器可以是静态随机存取存储器。
存储器可以是片上系统存储器。
该方法还可以包括:在读取步骤之后并且在写入步骤之前,使用耦合到直接存储器存取控制器的硬件外围设备来对一个或多个数据项执行一个或多个操作。
该方法还可以包括:在读取步骤之后并且在写入步骤之前,将数据项存储在耦合到直接存储器存取控制器的页式存储器设备上。
第一序列中的多个数据项可以被定义为排列成具有多个行和列的网格。
第一序列中的多个数据项可以被定义为排列成具有多个行和列的元素的栅格,每个元素包括来自第一序列的一组连续的数据项。
读地址和相应的写地址之间的非线性关系可以使得第二序列基于网格的转置。
读地址和相应的写地址之间的非线性关系可以使得第二序列基于网格的转置,其中,对一个或多个列或行中的元素应用了位置偏移。
根据读模式计算存储器读地址序列的步骤可以包括:基于起始地址和预定整数的模来计算非线性读地址序列。
根据写模式计算存储器写地址序列的步骤可以包括:基于起始地址和预定整数的模来计算非线性写地址序列。
根据读模式计算存储器读地址序列的步骤可以包括:通过将连续的存储器地址子序列重复预定的次数来计算非线性读地址序列。
根据读模式计算存储器读地址序列的步骤可以包括:通过选择第一预定数量的连续存储器地址,然后跳过一个或多个存储器地址,并选择第二预定数量的连续存储器地址,来计算非线性读地址序列。
选择读模式和写模式的步骤可以由控制处理器执行,控制处理器执行配置数字信号处理系统的操作的程序。
本申请所描述的方法可以由机器可读形式的软件执行,其中该软件以例如计算机程序的形式存储在有形存储介质上,计算机程序包括计算机程序代码模块,当程序运行在计算机上时并且在计算机程序可以体现在计算机可读介质上的情况下,所述计算机程序代码模块用于执行本文描述的任意方法的所有步骤。有形(或非临时性)存储介质的例子包括磁盘、指状驱动器、存储卡等等,其不包括传播的信号。软件可适合于在并行处理器或者串行处理器上执行,使得这些方法步骤可以按照任何适当的顺序执行,或可以同时地执行。
本申请承认固件和软件可以是有价值的可单独交易的商品。旨在涵盖在“哑”或标准硬件上运行或对“哑”或标准硬件进行控制以执行期望功能的软件。还旨在涵盖“描述”或定义硬件的配置的软件,例如HDL(硬件描述语言)软件,如用于设计硅芯片,或用于配置通用编程芯片,以执行期望功能。
优选的特征可以适当地组合,这对于技术人员将是显而易见的,并且可以与本发明的任意方面进行组合。
附图说明
通过示例的方式,参照下面的附图来描述实施例,其中:
图1示出了可配置的数字信号处理系统;
图2示出了DMA控制器的示意图;
图3示出了非线性地址生成过程的流程图;
图4示出了使用DMA控制器对两个数据块执行的行-列操作的例子;以及
图5示出了图4的行-列操作的例子,其具有抵消DRAM设备的限制的增强措施。
贯穿附图使用共同的参考数字来指示类似的特征。
具体实施方式
下面仅仅是通过例子的方式来描述实施例。这些例子代表了申请人当前已知的将这些实施例付诸于实践的最佳方式,虽然这些最佳方式并不是能够实现本发明的仅有的方式。描述给出了例子的功能以及用于构造和操作例子的步骤的序列。然而,可以通过不同的例子来实现相同的或等同的功能和序列。
下面描述了利用通用数字信号处理器以及专用硬件外围设备的可配置的数字信号处理系统。为了实现存储器的有效使用,系统的不同元件能够访问共享的片上存储器。可以通过直接存储器存取(DMA)控制器将数据项写入片上存储器或从片上存储器读取数据项。在一些例子中,DMA控制器也可以具有通往另一存储器设备(例如页式存储器设备)的端口。
本文中使用术语页式存储器设备来描述以下这样的任何类型的存储器设备:其中,当某个范围的存储单元(定义页)被激活(即,该页被打开)时,对该范围的单元内的多个存储单元进行读和/或写是高效的。这旨在涵盖例如动态随机存取存储器(DRAM)和其任何变形,例如同步DRAM(SDRAM)和双数据率(DDR)SDRAM,以及使用连续存储器单元的突发高效地访问的任何存储器设备。
DMA控制器具有可配置的地址生成器,其可以被配置成根据不同的模式对片上存储器(和/或页式存储器设备)进行读取数据项和写入数据项。不同的模式允许从存储器读取非线性(即,非连续)数据项序列和/或向存储器写入非线性数据项序列。这使得能够对数据项(例如在交织或解交织中使用的数据项)执行重新排序操作。这些操作是即时执行的,同时数据项在存储单元之间传输或从一个存储器传输到另一存储器。这避免为了结合交织或解交织使用而在数字信号处理系统上包括专用(非共享)存储器 的需要,从而减少了芯片面积和费用。。不同的模式也可以被配置成抵消某些类型的存储器设备(例如DRAM)的性能限制。
在本文中使用与读取/写入数据项序列有关的术语“线性”,以表示读取/写入连续的(或邻接的)数据项。相反,在本文中使用与读取/写入数据项序列有关的术语“非线性”,以表示读取/写入非连续的(或非邻接的)数据项,并且下面描述非线性序列的例子。
首先参考图1,其示出了示例性可配置片上数字信号处理系统100的结构。系统100包括片上存储器102,其用于数据项的存储。片上存储器102可以是任何适当形式的随机存取存储器(RAM),例如(但不限于)静态RAM(SRAM)。
连接到片上存储器102的是一个或多个数字信号处理器(DSP)104。DSP104是可编程来对数据执行信号处理计算(例如快速傅立叶变换和均衡)的处理器。当不考虑通用处理器时,DSP104比下面描述的硬件外围设备是更可配置的。DSP104执行程序代码/指令以从片上存储器102读取数据,对数据执行信号处理操作,并将数据写回到片上存储器102。
也连接到片上存储器102的是DMA控制器106,其为多个硬件外围设备108提供对片上存储器102的访问。DMA控制器106提供多个存储器访问通道(例如DMA通道),这些通道可由硬件外围设备108使用以实现从片上存储器102读数据或将数据写到片上存储器102。
如上所述,硬件外围设备108是特殊的、专用固定功能硬件模块,其配置为执行特定的信号处理任务。例如,一个硬件外围设备可以是专用的Viterbi解码模块,另一个可以是专用的Reed-Solomon解码模块。此外,这些硬件外围设备还可以称为加速器。这些硬件外围设备中的每一个彼此之间独立地操作。可以对硬件外围设备进行充分地配置,以便提供特定于它们的任务的操作参数,但不能对它们进行充分地配置来改变它们的任务(例如,不能将Viterbi模块重新配置成Reed-Solomon模块)。因此,与DSP104相比,硬件外围设备更加专用于特定的任务。但是,硬件外围设备被布置为以非常快速和高效的方式来执行它们的特定任务。此外,通用控制处理器110也连接到片上存储器102,其中通用控制处理器110可以用于初始化、配置和控制该数字信号处理系统的操作。
上面所描述的数字信号处理系统提供信号处理操作方面的灵活性。例如,该系统可以配置为进行操作,使得不同的DSP104和硬件外围设备108以任何期望的配置或者序列对数据进行处理。每一个硬件外围设备或DSP可以对一块或多块数据(本申请还将其称为数据缓冲区)进行操作,其中所述一块或多块数据由系统的其它部件提供并存储在片上存储器102中,每一个硬件外围设备或DSP生成和存储由该系统的其它元件使用的一个或多个数据缓冲区。这使该数字信号处理系统能用于多种不同类型的信号,例如用于不同的广播/电信标准。
使用片上存储器102所提供的公共存储空间,能减少在该片上系统100中提供的存储器存贮的总量。在不使用公共存储空间的情况下,向每一个处理元件提供其自己的专用存储器。例如,每一个DSP104都可以具有它们自己的工作空间存储器,通用控制处理器110具有用于存储执行代码和数据的另一个单独的存储器,硬件外围设备108具有单独的输入和输出缓冲区,并且可以使用一个或多个另外的存储器来在这些处理元件之间交换数据。
由于可对该数字信号处理系统进行配置,以与多个不同的标准一起使用(即,以便允许实现不同的通信标准),因此针对具体的标准(其中该标准对于任何给定的存储器都具有最大要求),需要对这些单独的存储器中的每一个单独地确定大小。换言之,DSP存储器需要足够的大,以便适应对于DSP存储器具有最大要求的标准。类似地,硬件外围设备缓冲器也需要足够的大,以便适应对于硬件外围设备缓冲器具有最高要求的标准(其与具有较高DSP存储器要求的标准不相同)。结果,非常大量的存储器通常并不被处理元件中的一些使用。
但是,如果由片上存储器102提供公共存储空间的话,那么可以将不同标准的存储器需求作为一个整体进行考虑(而不是它们对于系统的各个元件的需求)。换言之,片上存储器102需要足够的大,以便适应这些标准的最大整体、总存储器需求。这具有对标准之间的不同存储器需求进行平均的效果(例如,一种标准可能需要更多的DSP存储器、但更小的缓冲器,而另一种标准可能则是相反的)。这具有只需要显著的更低的总存储器量的效果,并因此节省了硅片面积。
因此,片上存储器102所提供的公共存储空间可以保存该系统所使用的所有不同类型的数据,例如,数字信号处理器工作空间、用于通用控制处理器的执行代码和数据、用于硬件外围设备中的一个或多个的输入和输出缓冲区、用于在处理器之间交换数据的一个或多个缓冲区、以及用于该数字信号处理系统的其它配置数据。
图1还示出了连接到DMA控制器106的页式存储器设备112。在一些例子中,页式存储器设备112DRAM形式的,其可提供大量的相对廉价的但易失性的存储。页式存储器设备112在它不能在与片上系统100相同的硅上形成的意义上来讲,可被考虑为外部存储器,或在一些例子中,存储器设备112可以是在与片上系统100相同的硅上形成的嵌入式DRAM的一块,但在它不可直接由DSP访问的意义上来讲仍然在外部。页式存储器设备也可以形成例如存储与数字信号处理系统有关的数据以及MPEG或其它视频流相关的数据的另一共享存储器空间。
现在参考图2,其示出了DMA控制器106的示意图。DMA控制器106包括:内部端口202,其用于连接到片上存储器102;以及外部端口204,其用于连接到页式存储器设备112。DMA控制器106还包括多个外围设备端口206,每个外围设备端口206用于连接到相关联的硬件外围设备108。内部端口202、外部端口204和外围设备端口206都连接到交叉线(crossbar)208,交叉线208使这些端口中的任一个能够连接到这些端口中的任何其它端口。
DMA控制器106还包括地址生成器210,其耦合到内部端口202和外部端口204,并用于生成用于连接到内部端口202和外部端口204的存储器中的任一个或两个的读和/或写地址序列。地址生成器210是可配置的,并可被编程为以多个不同的模式进行操作,其例子在下文被更详细地概述。例如,通用控制处理器110可以用于将一个或多个命令发送到地址生成器210,以便为地址生成器210选择一个或多个操作模式。通用控制处理器110可以通过执行一程序来选择模式,所述程序用于根据期望标准在一个或多个模式中配置地址生成器。
通过生成读和/或写地址序列,地址生成器可以对存储在连接到DMA控制器106的端口之一的存储器上的数据项执行非线性重新排序。例如, 图2示出了如何在传输到页式存储器设备112期间,对片上存储器102上所存储的第一数据项序列212进行重新排序。在图2的示例中,在片上存储器102上有八个数据项,它们存储在被表示为0到7的存储器地址。在其它示例中,存储器地址可以从不同于零的基地址开始,和/或每一个单独数据项可以比存储器设备上的单个存储单元更大。在该示例中,将这些数据项传输到页式存储器设备,但按照与第一序列212不相同的第二序列214进行排序。为了清楚说明起见,在页式存储器设备112上,将第二序列214中的数据项存储在被表示为0到7的存储器地址,但在其它示例中,这些地址也可以从不同于零的基地址开始。
在第一例子中,地址生成器210可以生成线性读序列[0、1、2、3、4、5、6、7],并将该读序列提供到内部端口202。地址生成器210也可以生成非线性写序列[3、6、4、1、2、7、0、5],并将其提供到外部端口204。这使内部端口202首先从读序列中的第一地址(地址0)读取数据项,其在本例中为数据项“A”。该数据项通过交叉线208传递到外部端口204,外部端口204将该数据项写到写序列中的第一存储器地址(地址3)。这导致数据项“A”从第一序列212中的第一数据项被重新排序到第二序列214中的第四数据项。对于在读序列中编址的每一个后续数据项,重复该操作,每一个后续数据项被写入写序列中的相应地址。作为该操作的结果,来自第一序列(被表示为A、B、C、D、E、F、G)的数据项现在以第二序列(G、D、E、A、C、H、B、F)存储在页式存储器上。
在第二例子中,通过地址生成器210生成非线性读序列[6、3、4、0、2、7、1、5]和线性写序列[0、1、2、3、4、5、6、7],也可以实现数据项的相同的重新排序。在本例中,首先从片上存储器上的地址6读取数据项“G”,并将其写入到页式存储器上的地址0,其后从片上存储器上的地址3读取数据项“D”,并将其写入到页式存储器上的地址1,等等。类似地,在第三示例中,通过地址生成器210生成非线性读序列以及也是非线性的写序列,也可以实现对数据项的相同的重新排序。这种方式的一个示例可以是读序列[0,2,4,6,1,3,5,7]和写序列[3,4,2,0,6,1,7,5]。
在上述例子的每个中,从第一序列到第二序列的重新排序是通过DMA控制器106在数据项从片上存储器102到页式存储器设备112的直接传输 期间被即时地执行的。注意,从片上存储器102到页式存储器设备112的传输仅仅是例子。在其它例子中,也可以通过将第一数据项序列从片上存储器102的一部分传输到片上存储器102的另一部分,并在该传输期间操纵数据项的地址以形成第二数据项序列,来在片上系统内部执行类似的重新排列操作。还注意,也可以针对从页式存储器设备112到片上存储器102的传输,并且也可以针对去往或来自硬件外围设备和片上存储器102或页式存储器设备112的传输,来执行类似的操作。
上面的示例还示出了在执行传输之前,完全地生成读地址序列和写地址序列。但是,这也可以与传输一起并发地执行,例如,通过在对一个或多个之前数据项进行读/写时生成一个或多个读地址和写地址。
现在参考图3,其示出了用于使用地址生成器对数据项重新排序的更一般的过程的流程图。在本例中,数据项是从片上存储器102被读取的,并以不同的序列被写回到片上存储器102。在其它例子中,数据可以是从页式存储器112读取的,和/或它可以被写到页式存储器112。在步骤300中,选择可配置的地址生成器210的读模式和写模式。如上所述,可以使用一般的控制处理器110根据配置程序和传递到地址生成器的命令或信号来选择读模式和写模式。
在步骤302中,地址生成器210根据选定的读模式计算具有n个读地址的序列,其中n是在该序列中传输的数据项的数量。注意,虽然n个数据项被传输,但是可能存在更多或更少的不同的数据项(即,一个或多个数据项可能被传输多于一次,或根本不被传输)。在步骤304中,地址生成器210根据选定的写模式计算具有n个写地址的序列。读地址序列和写地址序列中的一个或两个可以被计算为非线性(即,非连续或非邻接)序列。下面提供用于计算读和/或写地址序列的各种示例性算法。
在步骤306中,DMA控制器106依次地遍历读和写序列中的n个地址中的每个地址,并在每次迭代i执行图3的方框内的操作。对于第一次迭代而言,在步骤308中,DMA控制器106(经由内部端口202)从片上存储器102读取由读序列中的第一地址寻址的数据项。随后,在步骤310中,可以对读取的数据项执行一个或多个可选的操作。例如,可以将数据项(经由外围设备端口206)提供给硬件外围设备108以便进行处理,或者可以将 其提供给所连接的多个硬件外围设备,使得一个外围设备的输出连接到另一外围设备的输入。在步骤312中,(经由内部端口202)将数据项(或被一个或多个硬件外围设备处理过的数据项)写回到片上存储器102,写到写序列中的第一存储器地址。随后对于读和写序列中的每一个后续的第i个地址,重复步骤308到312,直到该迭代了全部n个地址为止。
注意,不需要执行图3中所示的步骤来使得读出一个单独的数据项随后将其写回,之后再读取另一个数据项。相反,一些或所有数据项可以作为一组从片上存储器102被读取(并随后可选地被处理),并接着作为一组被写回到片上存储器102。
作为存储器传输操作的组成部分,图3的过程因此使片上存储器102上的数据项能够被重新排序成不同的序列。这可以用于通过根据交织方案生成读/写地址序列来实现交织或解交织。使用图3的过程,可以通过根据读序列从其在片上存储器102上的位置读取数据项,并根据写序列将它们写回片上存储器102,从而以交织顺序将它们写到片上存储器102上的不同位置,来实现存储在片上存储器102上的数据项的交织。可替换地,可以根据读序列从页式存储器读取数据项,和/或可以根据写序列将数据项写到页式存储器。下文介绍的是地址生成器210可以被配置成实现的几个示例性算法或模式,以便生成读和/或写序列。地址生成器不限于这些模式,并且可以使用任何其它适当的地址生成,这对于技术人员将是明显的。这些示例性模式/算法也可以按任何适当的方式组合。
行-列模式
第一种模式被称为行-列模式。行-列模式考虑将第一序列中的数据项排列在具有多个行和列的一个或多个网格或表格中。这在图4中示出,图4示出了第一输入数据项块402和第二输入数据项块404,第一输入数据项块402(只是为了说明目的)具有从0到23的连续存储器地址,并且第二输入数据项块402(也只是为了说明的目的)具有从24到47的连续存储器地址。在本例中,考虑数据项每隔六个数据项具有列中断,如图4中的虚线所指示的。这意味着考虑将连续的存储器地址沿着具有六行的网格的列进行排列。
在图4中示出了网格形式给出的数据项,图4示出了用于第一输入数据项块402的第一网格406和用于第二输入数据项块404的第二网格408。第一和第二个网格都具有六行和四列。可以注意到,连续寻址的数据项是沿着列排列的。然而,在其它例子中,也可以给出数据,使得连续的项替代地是沿着行排列的,在这种情况下,下面的描述仍然适用,但参考倒置的行和列。
行-列模式的目的是对每一个网格进行转置,使得当以穿过网格的列的序列来排列输入数据项时,以穿过网格的行的序列来排列输出数据项。例如,参见网格406,如果输入数据序列的前四个数据项是A、B、C、D(沿着第一列读取四个项),那么输出数据序列的前四个数据项是A、G、M、S(沿着第一行读取四个项)。因此,诸如该方式的行-列操作改变了数据项的顺序,这其取决于定义了多少个行存在于网格中。频繁地执行这种类型的操作以进行交织和解交织。
为了实现行-列模式,地址生成器210生成用于导致行-列转置的读和写序列。这可以通过生成非线性读序列和线性写序列(如图4中所示,下面将更详细地进行描述),或者通过生成线性读序列和非线性写序列来实现。在另外的示例中,为了实现高效的存储器存取,还可以使用非线性读序列和非线性写序列,如下面参照图5所描述的。
图4示出了非线性读序列410的示例,可以观察到其包括非连续的存储器地址。在一个示例中,可以使用下面的伪代码所描绘的算法,来生成该地址序列:


其中“rows”是网格中的行的数量(在图4的示例中,其是6),“columns”是网格中的列的数量(在图4的示例中,其是4),“numBlocks”是数据项块的数量(在图4的示例中,其是2),“numItems”是所有块上的数据项的全部数量(在图4的示例中,其是48)。变量“a”、“b”和“o”是在该算法中使用的内部变量,它们可以都被初始化为零,或者一个或多个可以被初始化为非零值以便应用偏移量。
在计算了N0、N1和N2的初始值之后,该算法迭代的次数为所给出的数据项的数量,在每一次迭代计算该序列中的下一个地址(“nextItemAddr”)。实际上,该算法跳过了输入序列中的固定数量的数据项(例如,在图4中是6个),直到到达一行的结束位置为止(由第一个“if”语句来确定),随后将该行的起始点递增1,并进行重复。第二个“if”语句检测一个块的结束,该“if”语句对计算进行重置,但增加通过求余运算(rem(.))所计算的偏移量(在图4中,其是24)。随后,重复该过程,直到到达“numItems”为止。应当注意,可以将“numItems”设置为比所给出的数据项的总数更大的值,并且如果是这样的话,则一旦访问了所有的块,该算法就卷绕回到第一块。
在图4中示出了通过上面的算法所生成的读序列410,其中最上面一行示出了用于第一块(网格406)的序列,最下面一行示出了用于第二块(网格408)的序列。将读序列410的前四个项作为例子,它们从地址0、6、12、18进行读取,地址0、6、12、18对应于来自输入数据项402的数据项A、G、M、S。可以观察到,其与网格406的第一行相对应。
地址生成器210生成具有连续的存储器地址的线性写序列412,使得当DMA控制器106使用读序列410和写序列412时,以非线性序列读取数据项,并以线性序列写入这些数据项。应当注意,为了简单起见,图4中的写序列具有从0到47的地址,但在其它示例中,这些地址可以从任何基地址开始。DMA控制器可以读取来自一个块的所有数据项,之后将它们 写回到存储器的同一区域。在替代的操作模式中,DMA控制器可以从存储器读取一个项,并将该项写回到存储器的不同区域,之后读取下一数据项。在该替代操作模式中,写序列的基地址不同于读序列的基地址。在第一输出数据项块414和第二输出数据项块416中,可以观察到读序列410和写序列412的组合的结果。通过将这些输出数据项与网格406和408进行比较,可以观察到,已经成功地执行了行-列操作。
通过生成线性读序列和非线性写序列,也可以获得相同的结果,如下所示(为了简洁起见,只示出了第一块):
读序列:
01234567891011121314151617181920212223
写序列:
04812162015913172126101418223711151923
可以使用与上面详细描述的非线性读序列相类似的技术,来生成非线性写序列。上面的示例描绘了可以如何使用可配置的地址生成器210来实现对一组数据项的交织操作,如行-列交换。这种类型的操作可以例如用于从片上存储器读取数据项块,并以转置的顺序将数据项写回到片上存储器,从而对数据进行解交织。
突发行-列模式
第二种模式是行-列模式的变形,其也考虑将数据排列在具有行和列的网格中。但是,当沿着行穿过时,不是只从每一个列读取一个数据项(如在行-列情况中),突发行-列模式在沿着行跳到下一个列之前读取预定数量的连续地址。例如,参见图4的网格406,如果突发长度为3,则突发行-列模式首先在一个突发中读取三个连续项(项A、B、C),随后沿着行移动,读取接着的三个连续项(G、H、I),接着是M、N、O并且随后是S、T、U。随后,卷绕回第一列,并读取D、E、F,接着读取J、K、L等等。因此,可以将突发行-列模式视作为与行-列模式相同,除了读取一组连续的数据项而不是仅仅一个数据项之外。
在一个示例中,可以使用通过下面的伪代码所描绘的算法,来生成用 于突发行-列模式的读序列:

变量的定义与上面针对行-列模式的定义一样。“突发长度”是要在每一个突发中读取的连续项或毗邻项的数量。应当注意,还可以用类似的方式来生成用于突发行-列操作的写序列。
突发行-列模式可以用于使得能够使用某些类型的存储器设备来执行交织操作,如参考图5所概述的。例如,页式存储器设备112可以是DRAM设备。DRAM设备以页组织其存储的内容,每页的大小一般是几千字节,并且每个DRAM一次只能打开有限数量的页(一般是四个)。打开页来访问数据需要很多开销周期,所以频繁地访问不同的页的数据访问模式可能是低效的。很多交织器访问模式试图连续地访问较宽地间隔开的数据项,在使用DRAM设备的情况下这导致了低效的存储器访问。
例如,图4的行-列操作读取连续的数据项,其中这些数据项被间隔开网格中的行的数量。在存在很大数量的行的示例中,这会导致在该存储器设备中进行间隔很大的访问,从而造成从不同的DRAM页进行不高效的访问。
图5示出了可以如何使用可配置的地址生成器来实现行-列交换,而不会引发与频繁地访问不同的页或者部分地填充突发相关联的DRAM访问的低效性。图5的示例生成与图4相同的行-列结果(即,具有6行、4列和 2个块的交换),但是使用线性顺序存储器访问的多次运行来生成来获得该结果,其导致类似DRAM的页式设备的高效操作。在图5的示例中,DMA控制器从片上存储器102读取输入数据项序列,在页式存储器设备112(DRAM)上存储这些数据项,随后从DRAM中读回这些数据项,并将它们写入到片上存储器102(潜在地覆盖它们的原始位置),其中行和列进行了交换。
输入数据项502与图4的示例中所使用的数据项相同。总共存在48个数据项,它们具有从零开始的连续的存储器地址序列。首先,以每一个块具有六行和两列的行列模式,从片上存储器102读取这些数据项。块504示出了排列在块中的数据项,每个块具有6行和4列。用于依次地沿着这些块中的每一个块的行进行读取读序列506是由地址生成器210生成的,如上所述的。线性写序列608也是由地址生成器210生成的。DMA控制器106使用读序列506从片上存储器102进行读取,使用写序列508向页式存储器设备112进行写入。用此方式向DRAM进行写入并不是低效的,这是由于其线性地向连续的地址进行写入,因此如果数据项的数量充足,则只会偶尔地跨越DRAM页边界。
作为该操作的结果,可以观察到DRAM上的数据项510与来自块504的行-列交换相对应。随后,地址生成器210生成用于从DRAM读回这些数据项的DRAM读序列512。使用突发行-列模式来生成该读序列,将该读序列配置为避免低效的访问。在该示例中,突发行-列模式使用每突发6个项、12行和2列。由于DRAM读序列512读取数据项的突发,所以这些数据项位于DRAM上的连续地址,并且因此不太可能跨越页边界,并且还能高效地利用DRAM接口上的可用的突发(特别是如果地址生成器突发大小接近DRAM接口突发大小)。因此,相对于(非突发)行-列模式,将跨越明显更少的页边界。
此外,还生成非线性写序列514,以便将这些数据项写回到片上存储器102。该写序列514也是使用突发行-列模式来生成的,并且在该示例中,使用每突发两个项、四个行和三个列。读序列512和写序列514的组合使得与执行具有六行、四列和两个块的基本行-列操作相比,写回到片上存储器102的输出数据项516处于相同的序列(这可以与图4进行比较),除了 在DRAM上存储该数据以外,而不会引起由于页边界和不完整的突发所造成的低效。此外,由于从片上存储器102进行的初始读取使用只具有两列的块的行列操作,因此这使得一个整个块一到达片上存储器102就能开始向DRAM传输数据,其与图4中使用四个列的块相比更加快速。这可以提高实时数据情形下的性能,其中在该情形下,数据随着时间以流的方式到达。
扭曲行-列模式
该模式是行-列模式的变形,其也考虑将数据排列在具有行和列的网格中。然而,不是仅仅沿着每个行横穿,而是将每个列循环地移位一个取决于列的偏移。换句话说,所产生的序列基于网格的转置,其中对一个或多个列或行中的元素应用了位置移位。
在一个例子中,突发行-列模式的读序列可以使用由下面的伪码示出的算法来产生:

变量的定义与上面针对行-列模式和突发行-列模式定义的一样。“offset”变量定义了将列移位多少。“offset”变量所取的值可以是向量的 形式,其包含每个列的偏移值。“getNextOffset()”是从偏移值的向量获取下一个值的函数。
作为例子,考虑以下数据项序列,其中,顶行示出了底行中的相应数据项的存储器地址:
012345678910111213514ABCDEFGHIJKLMNO
地址生成器210可以例如产生扭曲的行-列读序列,其具有五行、三列、burstLength为1以及偏移向量为[0,1,2](即,列1具有零偏移,列2具有的偏移为1,而列3具有的偏移为2)。
没有扭曲的行-列操作(例如,图4所示的操作)在五行三列的网格上表示数据,如下所示:
AFKBGLCHMDINEJO
当将上面的偏移应用于列时,这意味着在列1中的数据项向下移位1,并且列2中的数据项向下移位2。这给出了下面的网格表示:
AJNBFOCGKDHLEIM
这个示例性扭曲行-列操作的读序列可以由诸如上面的伪码的算法来产生,并且如下所示:
09131514261037114812
当与线性写序列组合时,这导致写入下面的序列:
01234567891011121314AJNBFOCGKDHLEIM
可以观察到,这与上面所示的沿着偏移网格的行横穿相对应。
注意,扭曲行-列操作也可以应用于写序列。此外,偏移可以用于向上或向下沿着列使得数据项移位。在另外的例子中,数据项可以被考虑为沿着行而不是沿着列(在上面的例子中)排列连续的项,在这种情况下,在 上面的描述中对行和列的引用被倒置。
FIFO模式
该模式实现一组不同长度的先进先出(FIFO)队列。可以使用诸如此类的FIFO来实现卷积解交织器。在使用卷积解交织的情况下,进入的数据项依次循环地放置在不同长度的FIFO的每一个上,并且外发的数据项通过依次循环地读出每个FIFO来形成。FIFO的不同长度有效地引入了数据项通过每个FIFO的不同延迟。在DVB-T广播标准中,卷积解交织器例如用于在Reed-Solomon解码之前对数据重新排序。
在一个例子中,FIFO模式可以使用由下面的伪码示出的算法来产生写序列:

变量的定义如上。此外,FIFO中的数据项存储在大小为“structureSize”的存储器块中。“offset”变量定义了FIFO所位于的存储器地址。“offset”变量所取的值可以是向量的形式,其包含每个FIFO的偏移值。“getNextOffset()”是从偏移值向量获取下一个值的函数。“itemsPerFIFO”定义了在继续前进到下一FIFO之前写到每个FIFO的数据项的数量。
上面的伪码迭代访问数据项,并定义表示表示应当将每个数据项存储到的FIFO的存储器块内的存储器地址。数据DMA控制器使用由该伪码产 生的地址来将数据项循环地写到FIFO中。为了实现卷积解交织器,数据DMA控制器使用由另一类似的算法产生的地址来从这些FIFO读取数据,但是使用在存储器中使用不同的FIFO偏移,以便产生延迟。
作为例子,考虑下面的数据项序列:
01234567891011121314151617ABCDEFGHIJKLMNOPQR
写地址序列是使用上述FIFO模式产生的,使用长度为1、2和3的(即,偏移向量为[025])和itemsPerFIFO为1的三个FIFO:
025130241352403514
读地址序列是使用上述FIFO模式产生的,使用长度为1、2和3(即,偏移向量为[0,1,3])itemsPerFIFO为1的三个FIFO:
013124235340451502
在已经写入并读取每一个具有三个数据项的组之后,表示FIFO的存储器包含如下所示的数据项:
012345xxxxxxxxxxxx
012345AxxBxxxxC
012345FDBExxC
012345FIGEHC
012345FILJHK
012345NILOMK
012345NQLORP
这导致了输出数据序列为:
01234567891011121314151617AXXXXDBXXGECJHFMKIPNL
这与卷积解交织操作相对应。注意,“XX”表示无效数据项,例如由于延迟在此时不具有数据的FIFO所造成的。这种模式显示了可以如何使用地址生成器210将数据写到存储器块,就好像数据存储在一组专用FIFO中一样,并从该存储器块将它读回以实现卷积解交织器。因此,这使用共享的存储器实现了卷积解交织,而不需要专用缓冲器。
模模式
这个模式基于起始地址和预定整数的模来计算读或写序列。例如,这可以使用下面的伪码来示出。

变量的定义如上。此外,“modulo”是在模计算(使用rem(.)函数)中使用的预定整数。“increment”定义地址序列在值之间跳过的量,以及“startAddr”定义输入数据项内的起始地址,其中序列从该起始地址开始。
例如,考虑下面的输入数据项序列(地址在顶行而数据项在底行):
0123456ABCDEFG
如果取示例性的值modulo=7、increment=3和startAddr=2,则这个模式产生下列读序列:
2514036
与线性写序列组合,写出的数据项序列于是为:
0123456CFBEADG
注意,模运算也可应用于写序列。
行-列卷积解交织器模式:
这个模式使用行-列寻址的变形来实现卷积解交织器(类似于使用上面的FIFO模式实现的卷积解交织器)。这个模式产生的读序列模拟上述从FIFO读取数据项。随后可以使用上述的模模式来读出来自这个读序列的所存储的数据,以便实现卷积解交织。
这个模式可使用下面的伪代码来示出:

在上面的伪代码中,“numFIFOs”定义在被实现的卷积解交织器中将存在的FIFO的数量,“d1”是应用于FIFO1的延迟,并且“d0”是应用于FIFO0的延迟。“buffLen”是数据项中输入序列的长度。其余的变量的定义如上。这个算法产生读序列,其对数据项进行读取,就好像这些数据项已经交替地放置在两个或多个单独的FIFO中一样(例如,第一数据项在FIFO0中,第二数据项在FIFO1中,第三数据项在FIFO2中,等等)。然而,对于被认为处于FIFO中具有延迟的那些数据项而言,该算法进一步沿着该序列进行读取。这使用下面的例子来示出。
考虑下面的输入数据项序列(地址在顶行上而数据项在底行上):
01234567891011121314151617181920212223ABCDEFGHIJKLMNOPQRSTUVWX
如果这些数据项交替地存储在三个FIFO缓冲器上,则这些数据项将被保持为如下:
FIFO0:ADGJMPSVFIFO1:BEHKNQTW
FIFO2:CFILORUX
使用上述算法,如果numFIFOs=3、buffLen=24并且(d1-d0)=2(即,相邻FIFO之间延迟为2),则生成下面的读序列:
07143101761320916231219215225181821411
当使用线性写序列进行写时,这产生下面的输出数据序列:
01234567891011121314151617181920212223AHODKRGNUJQXMTCPWFSBIVEL
重新排列这个序列以显示三个FIFO给出下面的模式:
FIFO0:ADGJMPSVFIFO1:HKNQTWBEFIFO2:ORUXCFIL
可看到,这个序列在来自每个FIFO的数据项之间交替,其中应用了延迟。例如,第一数据项“A”是FIFO0中的第一项,第二数据项“H”是FIFO1中应用了移位2的数据项,第三数据项“O”FIFO2中应用了移位4的数据项,以此类推。
这个模式使地址生成器能够使用最小数量的存储器到存储器传输来实现卷积解交织,并且不使用专用FIFO缓冲器。注意,这个模式也可以用类似的方式产生写序列。
重复跳跃模式
这个模式产生读地址序列,其包括被重复预定的次数的线性连续存储器地址子序列。在重复预定的次数之后,存储器地址继续前进一预定的量,并且该过程再次开始。用于说明此的示例性伪代码如下:


变量“sequenceLength”定义连续子序列多长(以存储器地址为单位),“sequenceRepeats”定义子序列被重复的次数,“itemsToSkip”定义当每个子序列重复完成时跳过多少个数据项。其余的变量的定义如上。
例如,对于下面的输入数据序列(地址在顶行上而数据项在底行上):

如果sequenceLength=4,sequenceRepeats=2并且itemsToSkip=3,则这产生下面的读序列:
012301237891078910
这个读序列包括被重复两次的第一子序列0、1、2、3和随后的也被重复两次的第二子序列7、8、9、10。第二子序列的起始地址(7)来自于从之前子序列的末尾起跳过三项。当与线性写序列组合时,这给出下面的输出数据序列:
0123456789101112131415ABCDABCDHIJKHIJK
这个模式例如可以用于读取校验的Reed-Solomon码字序列中的有效数据,使得奇偶字节被跳过。
游程长度模式
这个模式产生的读序列包括第一预定数量的连续存储器地址,然后跳过一个或多个存储器地址,之后是第二预定数量的连续存储器地址。另外的预定数量的连续存储器地址的块也可以跟随。每个块中的存储器地址的数量可以由一个向量来定义,该向量存储块长度的整数值。说明这个模式的示例性伪代码如下:


其中,“skip”定义在连续地址块之间跳过的数据项的数量,以及“offset”是包含定义块大小的整数的向量。例如,考虑下面的输入数据序列(地址在顶行上而数据项在底行上):
0123456789101112131415161718192021222324ABCDEFGHIJKLMNOPQRSTUVWXY
如果例如skip=1并且offset=[2,1,2,4],则产生下面的读序列:
01356891011131416181921222324
当与线性写序列组合时,这导致下面的输出数据序列:
01234567891011121314151617ABDFGIJKLNOQSTVWXY
可以观察到,这对应于:前两个连续数据项的块,然后跳过一项,之后是一个数据项的块,跳过一项,两个连续数据项的块,跳过一项,四个连续数据项的块,等等。
上述八个模式仅仅是可配置的地址生成器210在产生存储器传输操作的读和/或写地址时可以执行的操作类型的例子。注意,更多类型的操作也可以被实现并被编程为由地址生成器210执行。此外,这些操作也可以用任何适当的方式组合,并且对行和列的任何提及也可反转,以根据需要表示列和行。在上述例子示出读序列的产生的场合,它们也可以或可替代地用于产生写序列,反之亦然。此外,虽然这些例子示出了读和写序列的基地址都是从零开始的,但是这仅仅为了清楚起见,并且可以使用任何基地址。此外,上面的例子示出了在每个数据项之间存储器地址递增1。然而,在其它例子中,数据项可以大于单个存储单元,在这种情况下,每个数据项的存储器地址增量大于一。
由可配置的地址生成器210执行的地址生成操作使数字信号处理系统 能够执行复杂的存储器密集型操作,例如交织和解交织,同时仍然利用公共的共享存储器空间而不是专用交织缓冲器。此外,在数据项被读出到页式存储器设备(例如DRAM)的场合,地址生成器210可以被配置成抵消存储器设备的低效性,并提高存储器传输性能。
本文中使用术语“处理器”和“计算机”来表示具有处理能力使得其能够执行指令的任意设备。本领域技术人员将认识到这样的处理能力被并入到许多不同的设备,并且因此,术语“计算机”包括机顶盒、媒体播放器、数字电台、PC、服务器、移动电话、个人数字助理和许多其它设备。
本领域技术人员将认识到用于存储程序指令的存储设备可以分布在网络上。例如,远程计算机可以将所描述的过程的例子存储成软件。本地或终端计算机可以访问远程计算机,并下载所述软件的一部分或全部以运行程序。可替换地,本地计算机可以根据需要下载软件的片段,或者在本地终端执行一些软件指令并且在远程计算机(或计算机网络)执行一些软件指令。本领域技术人员还将认识到,通过使用本领域技术人员已知的常规技术,软件指令的全部或一部分可以由专用电路、可编程逻辑阵列等来执行。
对于“逻辑”的具体引用指代执行某种功能或者一些功能的结构。逻辑的示例包括:用于执行这些功能的电路。例如,这种电路可以包括晶体管和/或在制造过程中可用的其它硬件元件。举例而言,这种晶体管和/或其它元件可以用于形成实现和/或包含存储器(例如,寄存器、触发器或锁存器)、逻辑运算器(例如,布尔运算)、算术运算器(例如,加法器、乘法器或移位器)和互连的电路或结构。可以将这些元件提供成定制电路或者标准单元库、宏或者位于其它层次的抽象。可以用特定的排列对这些元件进行互连。逻辑可以包括是固定功能的电路,可以对电路进行编程以执行某种功能或者一些功能;可以通过固件或者软件更新或者控制机制来提供这种编程。被标识为执行一种功能的逻辑还可以包括:实现组分功能或者子过程的逻辑。在一个示例中,硬件逻辑具有实现固定的功能操作或者一些操作、状态机或过程的电路。
本文给出的任意范围或设备值可以被扩展或者被修改,而不丧失所请求的效果,这对于技术人员将是显而易见的。
将理解的是,上面描述的益处和优点可以涉及一个实施例,或者可以涉及若干实施例。这些实施例并不限于解决所陈述问题中的任何一个或全部的实施例或者具有所陈述益处和优点中的任何一个或全部的实施例。
对“一”项的任何提及是指这些项中的一个或多个。本文中使用术语“包括”来表示包含所标识的方法方框或元件,但是这样的方框或元件并不包括排他列表,并且装置可以包含额外的方框或元件,并且方法可以包含额外的方框或操作。
本文描述的方法的步骤可以以任何适当的顺序执行,或者在适当的情况下同时执行。此外,可以从任意方法中删除单独的方框,而不脱离本文描述的主题的精神和范围。上面描述的任意例子的方案可以与所描述的任意其它例子的方案组合,以形成其它例子,而不丧失所请求的效果。
将理解的是,仅仅通过例子的方式给出了优选实施例的以上描述,并且本领域技术人员可以做出各种修改。虽然上面以某种具体度或者参考一个或多个单独实施例描述了各个实施例,但是本领域技术人员可以对所公开的实施例做出大量的改变,而不脱离本发明的精神或范围。

用于数字信号处理的存储器地址生成.pdf_第1页
第1页 / 共31页
用于数字信号处理的存储器地址生成.pdf_第2页
第2页 / 共31页
用于数字信号处理的存储器地址生成.pdf_第3页
第3页 / 共31页
点击查看更多>>
资源描述

《用于数字信号处理的存储器地址生成.pdf》由会员分享,可在线阅读,更多相关《用于数字信号处理的存储器地址生成.pdf(31页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103677663 A (43)申请公布日 2014.03.26 CN 103677663 A (21)申请号 201310384896.3 (22)申请日 2013.08.29 1215422.5 2012.08.30 GB G06F 3/06(2006.01) G06F 12/02(2006.01) G06F 13/28(2006.01) (71)申请人 想象力科技有限公司 地址 英国赫特福德郡 (72)发明人 AJ安德森 (74)专利代理机构 永新专利商标代理有限公司 72002 代理人 刘瑜 王英 (54) 发明名称 用于数字信号处理的存储器地址生成 (57)。

2、 摘要 本发明描述了用于数字信号处理的存储器地 址生成。 在一个例子中, 片上数字信号处理系统利 用在系统的功能块之间共享的片上存储器空间。 片上 DMA 控制器包括地址生成器, 其可以生成读 存储器地址序列和写存储器地址序列, 以在片上 存储器和页式存储器设备之间或者在系统中内部 地传输数据项。 地址生成器是可配置的, 并可以生 成非线性的读和 / 或写地址序列。这使交织 / 解 交织操作的方面能够作为内部或页式存储器之间 的数据传输的一部分而被执行。 作为结果, 不需要 用于交织操作的专用存储器。 在另外的例子中, 地 址生成器可以被配置成生成读和 / 或写地址, 所 述读和 / 或写地址。

3、考虑了在执行交织时特定存储 器设备 (例如 DRAM) 的限制。 (30)优先权数据 (51)Int.Cl. 权利要求书 3 页 说明书 22 页 附图 5 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书3页 说明书22页 附图5页 (10)申请公布号 CN 103677663 A CN 103677663 A 1/3 页 2 1. 一种片上数字信号处理系统, 包括 : 第一存储器, 其存储以第一序列排列的多个数据项, 每个数据项具有所述第一存储器 上的相关联的存储器地址 ; 至少一个数字信号处理器, 其耦合到所述第一存储器, 并用于直接对所述第一存储器 进行数据读。

4、取和数据写入 ; 以及 直接存储器存取控制器, 其耦合到所述第一存储器, 并且包括通往页式存储器设备的 端口, 其中, 所述直接存储器存取控制器被配置成将所述多个数据项直接从所述第一存储 器传输到所述页式存储器设备, 并且 其中, 所述直接存储器存取控制器还包括可配置的地址生成器, 所述地址生成器用于 通过使用多个读模式中的选定的一个读模式和多个写模式中的选定的一个写模式, 来在所 述传输期间操纵与每个数据项相关联的存储器地址, 使得写入所述页式存储器设备的数据 项以不同于所述第一序列的第二序列进行排列。 2. 根据权利要求 1 所述的片上数字信号处理系统, 其中, 所述多个读模式中的所述选 。

5、定的一个读模式用于配置所述地址生成器, 以使所述直接存储器存取控制器从所述第一存 储器上的非线性存储器地址序列读取所述数据项, 并且所述多个写模式中的所述选定的一 个写模式用于配置所述地址生成器, 以使所述直接存储器存取控制器将所述数据项写入所 述页式存储器设备上的线性地址序列。 3. 根据权利要求 1 所述的片上数字信号处理系统, 其中, 所述多个读模式中的所述选 定的一个读模式用于配置所述地址生成器, 以使所述直接存储器存取控制器从所述第一存 储器上的线性存储器地址序列读取所述数据项, 并且所述多个写模式中的所述选定的一个 写模式用于配置所述地址生成器, 以使所述直接存储器存取控制器将所述。

6、数据项写入所述 页式存储器设备上的非线性地址序列。 4. 根据权利要求 1 所述的片上数字信号处理系统, 其中, 所述多个读模式中的所述选 定的一个读模式用于配置所述地址生成器, 以使所述直接存储器存取控制器从所述第一存 储器上的非线性存储器地址序列读取所述数据项, 并且所述多个写模式中的所述选定的一 个写模式用于配置所述地址生成器, 以使所述直接存储器存取控制器将所述数据项写入所 述页式存储器设备上的非线性地址序列。 5. 根据权利要求 1 所述的片上数字信号处理系统, 其中, 所述直接存储器存取控制器 还被配置成将所述多个数据项直接从所述页式存储器设备传输到所述第一存储器, 并且所 述地址。

7、生成器还用于通过使用多个读模式中的进一步选定的一个读模式和多个写模式中 的进一步选定的一个写模式, 来在从所述页式存储器设备到所述第一存储器的传输期间操 纵与每个数据项相关联的存储器地址, 使得写入所述第一存储器的数据项以不同于所述第 一序列和所述第二序列的第三序列进行排列。 6. 根据权利要求 1 所述的片上数字信号处理系统, 其中, 所述页式存储器设备是动态 随机存取存储器。 7. 根据权利要求 1 所述的片上数字信号处理系统, 其中, 所述第一存储器是静态随机 存取存储器。 8. 根据权利要求 1 所述的片上数字信号处理系统, 还包括 : 控制处理器, 所述控制处理 器用于执行一程序, 。

8、所述程序被配置成选择所述多个读模式中的所述一个读模式和所述多 权 利 要 求 书 CN 103677663 A 2 2/3 页 3 个写模式中的所述一个写模式以供所述地址生成器使用, 并将这些选择提供给所述地址生 成器。 9. 根据权利要求 1 所述的片上数字信号处理系统, 其中, 所述数字信号处理系统还包 括 : 多个硬件外围设备, 每个硬件外围设备连接到所述直接存储器存取控制器, 并且每个硬 件外围设备被配置成经由所述直接存储器存取控制器从所述第一存储器读取数据, 对所述 数据执行一个或多个操作, 并经由所述直接存储器存取控制器将数据写入所述第一存储器 设备。 10. 根据权利要求 1 所。

9、述的片上数字信号处理系统, 其中, 所述第一序列中的所述多个 数据项被定义为排列成具有多个行和列的网格。 11. 根据权利要求 1 所述的片上数字信号处理系统, 其中, 所述第一序列中的所述多个 数据项被定义为排列成具有多个行和列的元素网格, 每个元素包括一组来自所述第一序列 的连续数据项。 12. 根据权利要求 10 所述的片上数字信号处理系统, 其中, 所述多个读模式中的所述 选定的一个读模式和所述多个写模式中的所述选定的一个写模式一起配置所述地址生成 器, 以操纵每个数据项的存储器地址, 使得所述第二序列基于所述网格的转置。 13. 根据权利要求 10 所述的片上数字信号处理系统, 其中。

10、, 所述多个读模式中的所述 选定的一个读模式和所述多个写模式中的所述选定的一个写模式一起配置所述地址生成 器, 以操纵每个数据项的存储器地址, 使得所述第二序列基于所述网格的转置, 其中, 对一 个或多个列或行的元素应用了位置移位。 14. 根据任一前述权利要求所述的片上数字信号处理系统, 其中, 所述多个读模式中的 所述选定的一个读模式和所述多个写模式中的所述选定的一个写模式一起配置所述地址 生成器, 以在所述传输期间操纵与每个数据项相关联的存储器地址, 使得所述第二序列等 价于对所述第一序列执行的卷积解交织操作的至少一部分。 15. 一种使用直接存储器存取控制器来在数字信号处理系统中执行交。

11、织或解交织操作 的方法, 所述直接存储器存取控制器包括可配置的地址生成器, 其中, 所述直接存储器存取 控制器耦合到用于存储以第一序列排列的多个数据项的存储器, 每个数据项具有所述存储 器上的相关联的地址, 所述方法包括 : 选择所述地址生成器的读模式和写模式 ; 在所述地址生成器处, 根据所述读模式计算存储器读地址序列, 并根据所述写模式计 算存储器写地址序列, 使得在读地址和相应的写地址之间存在非线性关系 ; 使用所述直接存储器存取控制器读取与所述读地址序列中的第一地址相关联的数据 项 ; 使用所述直接存储器存取控制器将该数据项写入所述写地址序列中的第一地址 ; 以及 对于所述读地址序列和。

12、所述写地址序列中的每个后续地址, 重复所述读取步骤和所述 写入步骤, 使得所述多个数据项在所述存储器上以不同于所述第一序列的第二序列进行排 列。 16. 根据权利要求 15 所述的方法, 其中, 所述存储器是片上系统存储器。 17. 根据权利要求 15 所述的方法, 还包括 : 在所述读取步骤之后并且在所述写入步骤 之前, 将数据项存储在耦合到所述直接存储器存取控制器的页式存储器设备上。 权 利 要 求 书 CN 103677663 A 3 3/3 页 4 18. 根据权利要求 15 所述的方法, 其中, 根据所述读模式计算存储器读地址序列的步 骤包括以下中的一个或多个 : 基于起始地址和预定。

13、整数的模来计算非线性读地址序列 ; 通过将连续的存储器地址子序列重复预定次数来计算非线性读地址序列 ; 以及 通过选择第一预定数量的连续存储器地址, 然后跳过一个或多个存储器地址, 并选择 第二预定数量的连续存储器地址, 来计算非线性读地址序列。 19. 根据权利要求 15 所述的方法, 其中, 根据所述写模式计算存储器写地址序列的步 骤包括 : 基于起始地址和预定整数的模来计算非线性写地址序列。 20. 根据权利要求 15 到 20 中的任一项所述的方法, 其中, 选择读模式和写模式的步骤 是由控制处理器执行的, 所述控制处理器执行用于配置所述数字信号处理系统的操作的程 序。 权 利 要 求。

14、 书 CN 103677663 A 4 1/22 页 5 用于数字信号处理的存储器地址生成 背景技术 0001 数字信号处理在多种多样的应用程序中获得了使用。 这些应用中的很多都是实时 的, 在该意义上, 对于数据的处理存在时间约束, 以便其对于终端用户来说是有意义的或者 有用的。这方面的一个例子是数字广播流, 例如数字电视和数字无线电。数据信号处理系 统需要能够足够快速地对实时流进行处理和解码, 以便使数据能够像其被接收那样快速地 被输出 (除非缓冲) 。 0002 数字信号处理系统除了使用更加通用的数字信号处理器之外, 通常还使用一个或 多个专用硬件外围设备。 这些硬件外围设备是被设计为以。

15、快速和高效方式来执行特定的信 号处理任务的处理模块。例如, 交织和解交织是通常使用硬件外围设备来针对实时数据执 行的操作。交织和解交织是存储器密集型的操作, 执行该操作的硬件外围设备使用相关联 的专用存储器设备对数据进行重新排序。 0003 但是, 不同类型的实时数据的要求变化非常大。 例如, 世界范围内使用的各种不同 的数字电视和无线标准通常具有不同结构的实时数据, 例如, 使用不同的类型或者参数进 行编码、 交织、 均衡等等。如果数字信号处理系统能足够灵活地应用于不同的标准, 那么用 于交织 / 解交织的专用存储器设备必须足够地大, 以便处理具有最大存储器要求的标准。 结果, 与交织 / 。

16、解交织硬件外围设备一起使用的存储器经常是未充分利用的。 0004 下面所描述的实施例并不限于解决已知数字信号处理系统的任何或者所有缺点 的实现。 发明内容 0005 提供该概括以便以简化形式来介绍在下面的具体实施方式中进一步描述的构思 的精华。该概括并不是旨在标识要求保护的主题的关键特征或者必要特征, 也不是旨在用 作帮助确定所要求保护的主题的范围。 0006 描述了用于数字信号处理的存储器地址生成。在一个例子中, 片上数字信号处理 系统利用在系统的功能块之间共享的片上存储器空间。片上直接存储器存取 (DMA) 控制器 包括地址生成器, 其可以生成读存储器地址序列和写存储器地址序列, 以在片上。

17、存储器和 页式存储器设备之间或者在系统中内部地传输数据项。地址生成器是可配置的, 并可以生 成非线性的读和 / 或写地址序列。这使交织 / 解交织操作的方面能够作为内部或页式存储 器之间的数据传输的一部分而被执行。作为结果, 不需要用于交织操作的专用存储器。在 另外的例子中, 地址生成器可以被配置成生成读和/或写地址, 所述读和/或写地址考虑了 在执行交织时特定存储器设备 (例如 DRAM) 的限制。 0007 第一方面提供了一种片上数字信号处理系统, 其包括 : 第一存储器, 存储以第一序 列排列的多个数据项, 每个数据项具有第一存储器上的相关联存储器地址 ; 至少一个数字 信号处理器, 耦。

18、合到第一存储器, 并用于直接对所述第一存储器进行读数据和写数据 ; 以及 直接存储器存取控制器, 耦合到所述第一存储器并包括通往页式存储器设备的端口, 其中, 所述直接存储器存取控制器被配置成将多个数据项直接从第一存储器传输到页式存储器 说 明 书 CN 103677663 A 5 2/22 页 6 设备, 并且其中, 直接存储器存取控制器还包括可配置的地址生成器, 其用于通过使用多个 读模式中的选定的一个读模式和多个写模式中的选定的一个写模式来在传输期间操纵与 每个数据项相关联的存储器地址, 使得写到页式存储器设备的数据项以不同于第一序列的 第二序列进行排列。 0008 多个读模式中的选定的。

19、一个读模式可以用于配置地址生成器以使直接存储器存 取控制器从第一存储器上的非线性的存储器地址序列读取数据项, 并且多个写模式中的选 定的一个写模式以用于配置地址生成器以使直接存储器存取控制器将数据项写到页式存 储器设备上的线性地址序列。 0009 多个读模式中的选定的一个读模式可以用于配置地址生成器以使直接存储器存 取控制器从第一存储器上的线性存储器地址序列读取数据项, 并且多个写模式中的选定的 一个写模式可以用于配置地址生成器以使直接存储器存取控制器将数据项写到页式存储 器设备上的非线性地址序列。 0010 多个读模式中的选定的一个读模式可以用于配置地址生成器以使直接存储器存 取控制器从第一。

20、存储器上的非线性存储器地址序列读取数据项, 并且多个写模式中的选定 的一个写模式可以用于配置地址生成器以使直接存储器存取控制器将数据项写到页式存 储器设备上的非线性地址序列。 0011 直接存储器存取控制器还可以被配置成将多个数据项从页式存储器设备直接传 输到第一存储器, 并且地址生成器可以用于通过使用多个读模式中的进一步选定的一个读 模式和多个写模式中的进一步选定的一个写模式来在从页式存储器设备到第一存储器的 传输期间进一步操纵与每个数据项相关联的存储器地址, 使得写到第一存储器的数据项以 不同于第一和第二序列的第三序列进行排列。 0012 页式存储器设备可以是动态随机存取存储器。 0013。

21、 第一存储器可以是静态随机存取存储器。 0014 片上数字信号处理系统还可以包括控制处理器, 用于执行一程序, 所述程序被配 置成选择多个读模式中的一个和多个写模式中的一个以供地址生成器使用, 并向地址生成 器提供这些选择。 0015 数字信号处理系统还可以包括多个硬件外围设备, 每个硬件外围设备连接到直接 存储器存取控制器, 并且每个硬件外围设备被配置成经由直接存储器存取控制器从第一存 储器读取数据, 对所述数据执行一个或多个操作, 并经由直接存储器存取控制器将数据写 到第一存储器设备。 0016 第一序列中的多个数据项可以被定义为排列成具有多个行和列的网格。 0017 第一序列中的多个数据。

22、项可以被定义为排列成具有多个行和列的元素的网格, , 每个元素包括来自第一序列的一组连续的数据项。 0018 多个读模式中的选定的一个读模式和多个写模式中的选定的一个写模式可以一 起配置地址生成器以操纵每个数据项的存储器地址, 使得第二序列基于网格的转置。 0019 多个读模式中的选定的一个读模式和多个写模式中的选定的一个写模式可以一 起配置地址生成器以操纵每个数据项的存储器地址, 使得第二序列基于网格的转置, 其中 对一个或多个列或行中的元素应用了位置偏移。 0020 多个读模式中的选定的一个读模式和多个写模式中的选定的一个写模式可以一 说 明 书 CN 103677663 A 6 3/22。

23、 页 7 起配置地址生成器, 以在传输期间操纵与每个数据项相关联的存储器地址, 使得第二序列 等价于在第一序列上执行的卷积解交织操作的至少一部分。 0021 第二方面提供了使用包括可配置的地址生成器的直接存储器存取控制器来在数 字信号处理系统中执行交织或解交织操作的方法, 其中直接存储器存取控制器耦合到用于 存储以第一序列排列的多个数据项的存储器, 每个数据项具有存储器上的相关联的地址, 该方法包括 : 选择地址生成器的读模式和写模式 ; 在地址生成器处根据读模式计算存储器 读地址序列, 并根据写模式计算存储器写地址序列, 使得在读地址和相应的写地址之间存 在非线性关系 ; 使用直接存储器存取。

24、控制器读取与读地址序列中的第一地址相关联的数据 项 ; 使用直接存储器存取控制器将该数据项写到写地址序列中的第一地址 ; 以及对于读地 址和写地址序列中的每个后续的地址, 重复读取和写入的步骤, 使得数据项在存储器上以 不同于第一序列的第二序列进行排列。 0022 存储器可以是静态随机存取存储器。 0023 存储器可以是片上系统存储器。 0024 该方法还可以包括 : 在读取步骤之后并且在写入步骤之前, 使用耦合到直接存储 器存取控制器的硬件外围设备来对一个或多个数据项执行一个或多个操作。 0025 该方法还可以包括 : 在读取步骤之后并且在写入步骤之前, 将数据项存储在耦合 到直接存储器存取。

25、控制器的页式存储器设备上。 0026 第一序列中的多个数据项可以被定义为排列成具有多个行和列的网格。 0027 第一序列中的多个数据项可以被定义为排列成具有多个行和列的元素的栅格, 每 个元素包括来自第一序列的一组连续的数据项。 0028 读地址和相应的写地址之间的非线性关系可以使得第二序列基于网格的转置。 0029 读地址和相应的写地址之间的非线性关系可以使得第二序列基于网格的转置, 其 中, 对一个或多个列或行中的元素应用了位置偏移。 0030 根据读模式计算存储器读地址序列的步骤可以包括 : 基于起始地址和预定整数的 模来计算非线性读地址序列。 0031 根据写模式计算存储器写地址序列的。

26、步骤可以包括 : 基于起始地址和预定整数的 模来计算非线性写地址序列。 0032 根据读模式计算存储器读地址序列的步骤可以包括 : 通过将连续的存储器地址子 序列重复预定的次数来计算非线性读地址序列。 0033 根据读模式计算存储器读地址序列的步骤可以包括 : 通过选择第一预定数量的连 续存储器地址, 然后跳过一个或多个存储器地址, 并选择第二预定数量的连续存储器地址, 来计算非线性读地址序列。 0034 选择读模式和写模式的步骤可以由控制处理器执行, 控制处理器执行配置数字信 号处理系统的操作的程序。 0035 本申请所描述的方法可以由机器可读形式的软件执行, 其中该软件以例如计算机 程序的。

27、形式存储在有形存储介质上, 计算机程序包括计算机程序代码模块, 当程序运行在 计算机上时并且在计算机程序可以体现在计算机可读介质上的情况下, 所述计算机程序代 码模块用于执行本文描述的任意方法的所有步骤。有形 (或非临时性) 存储介质的例子包括 磁盘、 指状驱动器、 存储卡等等, 其不包括传播的信号。软件可适合于在并行处理器或者串 说 明 书 CN 103677663 A 7 4/22 页 8 行处理器上执行, 使得这些方法步骤可以按照任何适当的顺序执行, 或可以同时地执行。 0036 本申请承认固件和软件可以是有价值的可单独交易的商品。 旨在涵盖在 “哑” 或标 准硬件上运行或对 “哑” 或。

28、标准硬件进行控制以执行期望功能的软件。还旨在涵盖 “描述” 或定义硬件的配置的软件, 例如 HDL(硬件描述语言) 软件, 如用于设计硅芯片, 或用于配置 通用编程芯片, 以执行期望功能。 0037 优选的特征可以适当地组合, 这对于技术人员将是显而易见的, 并且可以与本发 明的任意方面进行组合。 附图说明 0038 通过示例的方式, 参照下面的附图来描述实施例, 其中 : 0039 图 1 示出了可配置的数字信号处理系统 ; 0040 图 2 示出了 DMA 控制器的示意图 ; 0041 图 3 示出了非线性地址生成过程的流程图 ; 0042 图 4 示出了使用 DMA 控制器对两个数据块执。

29、行的行 - 列操作的例子 ; 以及 0043 图 5 示出了图 4 的行 - 列操作的例子, 其具有抵消 DRAM 设备的限制的增强措施。 0044 贯穿附图使用共同的参考数字来指示类似的特征。 具体实施方式 0045 下面仅仅是通过例子的方式来描述实施例。 这些例子代表了申请人当前已知的将 这些实施例付诸于实践的最佳方式, 虽然这些最佳方式并不是能够实现本发明的仅有的方 式。描述给出了例子的功能以及用于构造和操作例子的步骤的序列。然而, 可以通过不同 的例子来实现相同的或等同的功能和序列。 0046 下面描述了利用通用数字信号处理器以及专用硬件外围设备的可配置的数字信 号处理系统。为了实现存。

30、储器的有效使用, 系统的不同元件能够访问共享的片上存储器。 可以通过直接存储器存取 (DMA) 控制器将数据项写入片上存储器或从片上存储器读取数据 项。在一些例子中, DMA 控制器也可以具有通往另一存储器设备 (例如页式存储器设备) 的 端口。 0047 本文中使用术语页式存储器设备来描述以下这样的任何类型的存储器设备 : 其 中, 当某个范围的存储单元 (定义页) 被激活 (即, 该页被打开) 时, 对该范围的单元内的多个 存储单元进行读和 / 或写是高效的。这旨在涵盖例如动态随机存取存储器 (DRAM) 和其任 何变形, 例如同步 DRAM(SDRAM) 和双数据率 (DDR) SDRA。

31、M, 以及使用连续存储器单元的突发 高效地访问的任何存储器设备。 0048 DMA 控制器具有可配置的地址生成器, 其可以被配置成根据不同的模式对片上存 储器 (和 / 或页式存储器设备) 进行读取数据项和写入数据项。不同的模式允许从存储器读 取非线性 (即, 非连续) 数据项序列和 / 或向存储器写入非线性数据项序列。这使得能够对 数据项 (例如在交织或解交织中使用的数据项) 执行重新排序操作。这些操作是即时执行 的, 同时数据项在存储单元之间传输或从一个存储器传输到另一存储器。这避免为了结合 交织或解交织使用而在数字信号处理系统上包括专用 (非共享) 存储器的需要, 从而减少了 芯片面积和。

32、费用。 。不同的模式也可以被配置成抵消某些类型的存储器设备 (例如 DRAM) 的 说 明 书 CN 103677663 A 8 5/22 页 9 性能限制。 0049 在本文中使用与读取 / 写入数据项序列有关的术语 “线性” , 以表示读取 / 写入连 续的 (或邻接的) 数据项。相反, 在本文中使用与读取 / 写入数据项序列有关的术语 “非线 性” , 以表示读取 / 写入非连续的 (或非邻接的) 数据项, 并且下面描述非线性序列的例子。 0050 首先参考图 1, 其示出了示例性可配置片上数字信号处理系统 100 的结构。系统 100 包括片上存储器 102, 其用于数据项的存储。片上。

33、存储器 102 可以是任何适当形式的随 机存取存储器 (RAM) , 例如 (但不限于) 静态 RAM(SRAM) 。 0051 连接到片上存储器 102 的是一个或多个数字信号处理器 (DSP) 104。DSP104 是可 编程来对数据执行信号处理计算 (例如快速傅立叶变换和均衡) 的处理器。当不考虑通用处 理器时, DSP104 比下面描述的硬件外围设备是更可配置的。DSP104 执行程序代码 / 指令以 从片上存储器 102 读取数据, 对数据执行信号处理操作, 并将数据写回到片上存储器 102。 0052 也连接到片上存储器 102 的是 DMA 控制器 106, 其为多个硬件外围设备。

34、 108 提供 对片上存储器 102 的访问。DMA 控制器 106 提供多个存储器访问通道 (例如 DMA 通道) , 这些 通道可由硬件外围设备108使用以实现从片上存储器102读数据或将数据写到片上存储器 102。 0053 如上所述, 硬件外围设备 108 是特殊的、 专用固定功能硬件模块, 其配置为执行特 定的信号处理任务。例如, 一个硬件外围设备可以是专用的 Viterbi 解码模块, 另一个可以 是专用的 Reed-Solomon 解码模块。此外, 这些硬件外围设备还可以称为加速器。这些硬件 外围设备中的每一个彼此之间独立地操作。可以对硬件外围设备进行充分地配置, 以便提 供特定。

35、于它们的任务的操作参数, 但不能对它们进行充分地配置来改变它们的任务 (例如, 不能将 Viterbi 模块重新配置成 Reed-Solomon 模块) 。因此, 与 DSP104 相比, 硬件外围设 备更加专用于特定的任务。但是, 硬件外围设备被布置为以非常快速和高效的方式来执行 它们的特定任务。此外, 通用控制处理器 110 也连接到片上存储器 102, 其中通用控制处理 器 110 可以用于初始化、 配置和控制该数字信号处理系统的操作。 0054 上面所描述的数字信号处理系统提供信号处理操作方面的灵活性。例如, 该系统 可以配置为进行操作, 使得不同的DSP104和硬件外围设备108以任。

36、何期望的配置或者序列 对数据进行处理。每一个硬件外围设备或 DSP 可以对一块或多块数据 (本申请还将其称为 数据缓冲区) 进行操作, 其中所述一块或多块数据由系统的其它部件提供并存储在片上存 储器 102 中, 每一个硬件外围设备或 DSP 生成和存储由该系统的其它元件使用的一个或多 个数据缓冲区。这使该数字信号处理系统能用于多种不同类型的信号, 例如用于不同的广 播 / 电信标准。 0055 使用片上存储器 102 所提供的公共存储空间, 能减少在该片上系统 100 中提供的 存储器存贮的总量。在不使用公共存储空间的情况下, 向每一个处理元件提供其自己的专 用存储器。例如, 每一个 DSP。

37、104 都可以具有它们自己的工作空间存储器, 通用控制处理器 110 具有用于存储执行代码和数据的另一个单独的存储器, 硬件外围设备 108 具有单独的 输入和输出缓冲区, 并且可以使用一个或多个另外的存储器来在这些处理元件之间交换数 据。 0056 由于可对该数字信号处理系统进行配置, 以与多个不同的标准一起使用 (即, 以便 允许实现不同的通信标准) , 因此针对具体的标准 (其中该标准对于任何给定的存储器都具 说 明 书 CN 103677663 A 9 6/22 页 10 有最大要求) , 需要对这些单独的存储器中的每一个单独地确定大小。换言之, DSP 存储器 需要足够的大, 以便适。

38、应对于 DSP 存储器具有最大要求的标准。类似地, 硬件外围设备缓冲 器也需要足够的大, 以便适应对于硬件外围设备缓冲器具有最高要求的标准 (其与具有较 高 DSP 存储器要求的标准不相同) 。结果, 非常大量的存储器通常并不被处理元件中的一些 使用。 0057 但是, 如果由片上存储器 102 提供公共存储空间的话, 那么可以将不同标准的存 储器需求作为一个整体进行考虑 (而不是它们对于系统的各个元件的需求) 。换言之, 片上 存储器 102 需要足够的大, 以便适应这些标准的最大整体、 总存储器需求。这具有对标准 之间的不同存储器需求进行平均的效果 (例如, 一种标准可能需要更多的 DSP。

39、 存储器、 但更 小的缓冲器, 而另一种标准可能则是相反的) 。这具有只需要显著的更低的总存储器量的效 果, 并因此节省了硅片面积。 0058 因此, 片上存储器 102 所提供的公共存储空间可以保存该系统所使用的所有不同 类型的数据, 例如, 数字信号处理器工作空间、 用于通用控制处理器的执行代码和数据、 用 于硬件外围设备中的一个或多个的输入和输出缓冲区、 用于在处理器之间交换数据的一个 或多个缓冲区、 以及用于该数字信号处理系统的其它配置数据。 0059 图 1 还示出了连接到 DMA 控制器 106 的页式存储器设备 112。在一些例子中, 页式 存储器设备 112DRAM 形式的, 。

40、其可提供大量的相对廉价的但易失性的存储。页式存储器设 备112在它不能在与片上系统100相同的硅上形成的意义上来讲, 可被考虑为外部存储器, 或在一些例子中, 存储器设备 112 可以是在与片上系统 100 相同的硅上形成的嵌入式 DRAM 的一块, 但在它不可直接由 DSP 访问的意义上来讲仍然在外部。页式存储器设备也可以形 成例如存储与数字信号处理系统有关的数据以及 MPEG 或其它视频流相关的数据的另一共 享存储器空间。 0060 现在参考图 2, 其示出了 DMA 控制器 106 的示意图。DMA 控制器 106 包括 : 内部端 口 202, 其用于连接到片上存储器 102 ; 以及。

41、外部端口 204, 其用于连接到页式存储器设备 112。DMA 控制器 106 还包括多个外围设备端口 206, 每个外围设备端口 206 用于连接到相 关联的硬件外围设备 108。内部端口 202、 外部端口 204 和外围设备端口 206 都连接到交叉 线 (crossbar) 208, 交叉线 208 使这些端口中的任一个能够连接到这些端口中的任何其它 端口。 0061 DMA 控制器 106 还包括地址生成器 210, 其耦合到内部端口 202 和外部端口 204, 并用于生成用于连接到内部端口 202 和外部端口 204 的存储器中的任一个或两个的读和 / 或写地址序列。地址生成器 。

42、210 是可配置的, 并可被编程为以多个不同的模式进行操作, 其 例子在下文被更详细地概述。例如, 通用控制处理器 110 可以用于将一个或多个命令发送 到地址生成器 210, 以便为地址生成器 210 选择一个或多个操作模式。通用控制处理器 110 可以通过执行一程序来选择模式, 所述程序用于根据期望标准在一个或多个模式中配置地 址生成器。 0062 通过生成读和 / 或写地址序列, 地址生成器可以对存储在连接到 DMA 控制器 106 的端口之一的存储器上的数据项执行非线性重新排序。例如, 图 2 示出了如何在传输到页 式存储器设备 112 期间, 对片上存储器 102 上所存储的第一数据。

43、项序列 212 进行重新排序。 在图 2 的示例中, 在片上存储器 102 上有八个数据项, 它们存储在被表示为 0 到 7 的存储器 说 明 书 CN 103677663 A 10 7/22 页 11 地址。在其它示例中, 存储器地址可以从不同于零的基地址开始, 和 / 或每一个单独数据项 可以比存储器设备上的单个存储单元更大。在该示例中, 将这些数据项传输到页式存储器 设备, 但按照与第一序列 212 不相同的第二序列 214 进行排序。为了清楚说明起见, 在页式 存储器设备 112 上, 将第二序列 214 中的数据项存储在被表示为 0 到 7 的存储器地址, 但在 其它示例中, 这些地。

44、址也可以从不同于零的基地址开始。 0063 在第一例子中, 地址生成器 210 可以生成线性读序列 0、 1、 2、 3、 4、 5、 6、 7, 并将该 读序列提供到内部端口 202。地址生成器 210 也可以生成非线性写序列 3、 6、 4、 1、 2、 7、 0、 5, 并将其提供到外部端口 204。这使内部端口 202 首先从读序列中的第一地址 (地址 0) 读 取数据项, 其在本例中为数据项 “A” 。该数据项通过交叉线 208 传递到外部端口 204, 外部 端口 204 将该数据项写到写序列中的第一存储器地址 (地址 3) 。这导致数据项 “A” 从第一 序列 212 中的第一数。

45、据项被重新排序到第二序列 214 中的第四数据项。对于在读序列中编 址的每一个后续数据项, 重复该操作, 每一个后续数据项被写入写序列中的相应地址。 作为 该操作的结果, 来自第一序列 (被表示为 A、 B、 C、 D、 E、 F、 G) 的数据项现在以第二序列 (G、 D、 E、 A、 C、 H、 B、 F) 存储在页式存储器上。 0064 在第二例子中, 通过地址生成器 210 生成非线性读序列 6、 3、 4、 0、 2、 7、 1、 5 和线 性写序列 0、 1、 2、 3、 4、 5、 6、 7, 也可以实现数据项的相同的重新排序。在本例中, 首先从片 上存储器上的地址 6 读取数据。

46、项 “G” , 并将其写入到页式存储器上的地址 0, 其后从片上存 储器上的地址 3 读取数据项 “D” , 并将其写入到页式存储器上的地址 1, 等等。类似地, 在第 三示例中, 通过地址生成器 210 生成非线性读序列以及也是非线性的写序列, 也可以实现 对数据项的相同的重新排序。这种方式的一个示例可以是读序列 0,2,4,6,1,3,5,7 和写 序列 3, 4, 2, 0, 6, 1, 7, 5。 0065 在上述例子的每个中, 从第一序列到第二序列的重新排序是通过 DMA 控制器 106 在数据项从片上存储器102到页式存储器设备112的直接传输期间被即时地执行的。 注意, 从片上存。

47、储器 102 到页式存储器设备 112 的传输仅仅是例子。在其它例子中, 也可以通过 将第一数据项序列从片上存储器 102 的一部分传输到片上存储器 102 的另一部分, 并在该 传输期间操纵数据项的地址以形成第二数据项序列, 来在片上系统内部执行类似的重新排 列操作。还注意, 也可以针对从页式存储器设备 112 到片上存储器 102 的传输, 并且也可以 针对去往或来自硬件外围设备和片上存储器 102 或页式存储器设备 112 的传输, 来执行类 似的操作。 0066 上面的示例还示出了在执行传输之前, 完全地生成读地址序列和写地址序列。但 是, 这也可以与传输一起并发地执行, 例如, 通过。

48、在对一个或多个之前数据项进行读 / 写时 生成一个或多个读地址和写地址。 0067 现在参考图 3, 其示出了用于使用地址生成器对数据项重新排序的更一般的过程 的流程图。在本例中, 数据项是从片上存储器 102 被读取的, 并以不同的序列被写回到片上 存储器 102。在其它例子中, 数据可以是从页式存储器 112 读取的, 和 / 或它可以被写到页 式存储器 112。在步骤 300 中, 选择可配置的地址生成器 210 的读模式和写模式。如上所 述, 可以使用一般的控制处理器 110 根据配置程序和传递到地址生成器的命令或信号来选 择读模式和写模式。 0068 在步骤 302 中, 地址生成器。

49、 210 根据选定的读模式计算具有 n 个读地址的序列, 其 说 明 书 CN 103677663 A 11 8/22 页 12 中 n 是在该序列中传输的数据项的数量。注意, 虽然 n 个数据项被传输, 但是可能存在更多 或更少的不同的数据项 (即, 一个或多个数据项可能被传输多于一次, 或根本不被传输) 。在 步骤 304 中, 地址生成器 210 根据选定的写模式计算具有 n 个写地址的序列。读地址序列 和写地址序列中的一个或两个可以被计算为非线性 (即, 非连续或非邻接) 序列。下面提供 用于计算读和 / 或写地址序列的各种示例性算法。 0069 在步骤 306 中, DMA 控制器 106 依次地遍历读和写序列中的 n 个地址中的每个地 址, 并在每次迭代 i 执行图 3 的方框内的操作。对于第一次迭代而言, 在步骤 308 中, DMA 控制器 106(经由内部端口 202) 从片上存储器 102 读取由读序列中的第一地址寻址的数据 项。随后, 在步骤 310 中, 可以。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1