数据处理方法、数据处理芯片及电子设备与流程

文档序号:21550653发布日期:2020-07-21 10:58阅读:223来源:国知局
数据处理方法、数据处理芯片及电子设备与流程
本发明涉及数据处理
技术领域
,具体涉及一种数据处理方法、数据处理装置、计算机可读存储介质、数据处理芯片、音频信号处理方法及电子设备。
背景技术
:fft(fastfouriertransform,快速傅里叶变换)以及ifft(inversefastfouriertransform,快速傅里叶逆变换)是两种常用的数据处理方法,广泛应用于信号处理技术等领域。fft和ifft的运算过程均包括倒序处理和蝶形运算,现有的蝶形运算过程需要两个存储器,例如为存储器a和存储器b,在进行一级蝶形运算时,读取存储器a中的两个数据进行蝶形运算,然后将蝶形运算的结果写入存储器b中,因此,对点数为n的数据序列进行处理时需要两个具有n个存储地址的存储器,另外,还有一些运算过程是一边进行倒序处理,一边进行蝶形运算,这样就需要更多的存储器来支持运算,对存储空间的要求会更高。对于存储空间比较有限的应用场合,fft和ifft的运算占用过多的存储空间会影响其他程序的运行。技术实现要素:基于上述现状,本发明的主要目的在于提供一种数据处理方法、数据处理装置、计算机可读存储介质、数据处理芯片、音频信号处理方法及电子设备,以解决现有数据处理方案中存在的上述问题。为实现上述目的,本发明采用的技术方案如下:本发明的第一方面提供了一种数据处理方法,用于对数据序列进行快速傅里叶变换或者快速傅里叶逆变换,其特征在于,所述数据处理方法包括步骤:s1、获取存储于第一存储单元中的数据序列进行倒序处理,倒序后的数据序列按排列顺序存储于第二存储单元中;s2、对所述倒序后的数据序列进行基-2蝶形运算,在进行每次蝶形运算时,根据地址读取规则获得本次蝶形运算的两个需要进行数据读取的地址:第一地址和第二地址,读取所述第二存储单元中的所述第一地址和所述第二地址的数据作为输入数据进行蝶形运算,得到两个输出数据,按地址写入规则分别将两个所述输出数据写入所述第一地址和所述第二地址;其中,所述第一地址为两个所述输入数据中按所述排列顺序在前的输入数据所在的地址,所述第二地址为两个所述输入数据中按所述排列顺序在后的输入数据所在的地址,所述地址读取规则根据基-2蝶形运算的运算规则生成,所述地址写入规则为,蝶形运算中做复数加法计算得到的数据写入所述第一地址,蝶形运算中做复数减法计算得到的数据写入所述第二地址。优选地,步骤s2中,根据地址读取规则获得本次蝶形运算的两个需要进行数据读取的地址的方法为,利用计数器的二进制计数数值生成所述第一地址和所述第二地址。优选地,所述数据序列为n点,n为2的m次幂,m为整数,将位宽为m的计数器作为第一计数器,所述第一计数器由小至大计数,每读取一个数据,所述第一计数器计一次数;步骤s1中,倒序后的数据序列按地址递增的顺序存储于第二存储单元中,步骤s2中,在进行第一级蝶形运算时,所述第一地址和所述第二地址为所述第一计数器的二进制计数数值。优选地,所述数据序列为n点,n为2的m次幂,m为整数,将位宽为m-1的计数器作为第二计数器,所述第二计数器由小至大计数,每进行一次蝶形运算,所述第二计数器计一次数;步骤s1中,倒序后的数据序列按地址递增的顺序存储于第二存储单元中,步骤s2中,在第一级蝶形运算之后的每级蝶形运算中,每次蝶形运算中的所述第一地址和所述第二地址分别采用如下公式计算得到:cnt[l-2:0]+cnt[m-2:l-1]*2l,以及,cnt[l-2:0]+cnt[m-2:l-1]*2l+2(l-1),其中,l为蝶形运算的级数。优选地,步骤s1中,根据倒序地址映射将存储于所述第一存储单元中的数据序列进行倒序处理,所述倒序地址映射为倒序前的地址与倒序后的地址的映射。优选地,所述数据序列为n点,n为2的m次幂,m为整数,所述第二存储单元具有n个存储地址,每个存储地址的位宽大于或等于m。本发明的第二方面提供了一种音频信号处理方法,在基于aac标准对音频信号进行编码时,采用如上所述的数据处理方法对音频信号进行快速傅里叶变换;或者,在基于aac标准对音频信号进行解码时,采用如上所述的数据处理方法对音频信号进行快速傅里叶逆变换。本发明的第三方面提供了一种数据处理装置,用于对数据序列进行快速傅里叶变换或者快速傅里叶逆变换,所述数据处理装置包括:第一存储单元,用于存储待处理的数据序列;第二存储单元,用于存储处理后的数据序列;倒序处理模块,用于获取存储于所述第一存储单元中的数据序列进行倒序处理,以及将倒序后的数据序列按排列顺序存储于所述第二存储单元;蝶形运算模块,用于对所述倒序后的数据序列进行基-2蝶形运算,在进行每次蝶形运算时,根据地址读取规则获得本次蝶形运算的两个需要进行数据读取的地址,两个所述地址分别记为第一地址和第二地址,读取所述第二存储单元中的所述第一地址和所述第二地址的数据作为输入数据进行蝶形运算,得到两个输出数据,按地址写入规则分别将两个所述输出数据写入所述第一地址和所述第二地址;其中,所述第一地址为两个所述输入数据中按所述排列顺序在前的输入数据所在的地址,所述第二地址为两个所述输入数据中按所述排列顺序在后的输入数据所在的地址,所述地址读取规则根据基-2蝶形运算的运算规则生成,所述地址写入规则为,蝶形运算中做复数加法计算得到的数据写入所述第一地址,蝶形运算中做复数减法计算得到的数据写入所述第二地址。优选地,所述蝶形运算模块包括地址生成单元和计数器,所述地址生成单元利用所述计数器的二进制计数数值生成所述第一地址和所述第二地址。优选地,所述数据序列为n点,n为2的m次幂,m为整数,所述计数器包括位宽为m的第一计数器,所述第一计数器由小至大计数,每读取一个数据,所述第一计数器计一次数;所述倒序处理模块用于将倒序后的数据序列按地址递增的顺序存储于所述第二存储单元中;所述地址生成单元用于在进行第一级蝶形运算时获取所述第一计数器的二进制计数数值,并将所述第一计数器的二进制计数数值作为所述第一地址和所述第二地址。优选地,所述数据序列为n点,n为2的m次幂,m为整数,所述计数器包括位宽为m-1的第二计数器,所述第二计数器由小至大计数,每进行一次蝶形运算,所述第二计数器计一次数;所述倒序处理模块用于将倒序后的数据序列按地址递增的顺序存储于所述第二存储单元中;所述地址生成单元用于在进行第一级蝶形运算之后的每级蝶形运算中,按如下公式计算生成每次蝶形运算中的第一地址和第二地址:cnt[l-2:0]+cnt[m-2:l-1]*2l,以及,cnt[l-2:0]+cnt[m-2:l-1]*2l+2(l-1),其中,l为蝶形运算的级数。优选地,所述倒序处理模块用于根据倒序地址映射将存储于所述第一存储单元中的数据序列进行倒序处理,所述倒序地址映射为倒序前的地址与倒序后的地址的映射。优选地,所述数据序列为n点,n为2的m次幂,m为整数,所述第二存储单元具有n个存储地址,每个存储地址的位宽大于或等于m。本发明的第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被执行时实现如上所述的数据处理方法。本发明的第五方面提供了一种数据处理芯片,包括处理器,所述处理器在对数据序列进行快速傅里叶变换或者快速傅里叶逆变换时采用如上所述的数据处理方法。优选地,还包括两个随机存储器,所述第一存储单元和所述第二存储单元分别为所述两个随机存储器之一。本发明的第六方面提供了一种电子设备,所述电子设备包括如上所述的计算机可读存储介质,或者,所述电子设备包括如上所述的数据处理芯片。优选地,所述电子设备为音频设备;其中,所述音频设备在对音频信号进行编码时,采用如上所述的数据处理方法对音频信号进行快速傅里叶变换;或者,所述音频设备在对音频信号进行解码时,采用如上所述的数据处理方法对音频信号进行快速傅里叶逆变换。优选地,所述音频设备为蓝牙音频设备。本发明提供的数据处理方法中,在进行蝶形运算时,将计算得到的数据再存回原读取地址,蝶形运算过程只需要一个存储单元即可完成,在将第一存储单元中的数据序列做倒序处理并写入第二存储单元之后,第一存储单元的空间可以释放以做其他的用途,避免了多余地址空间的浪费,大大提高了存储空间的利用率,尤其适用于存储空间敏感的设备,另外,由于只需要一个存储空间即可完成蝶形运算,一方面节省了物理空间,尤其适用于对物理空间要求极其苛刻的设备,另一方面也保证了运算的准确率,避免发生数据误存的情况;倒序后的数据序列按地址递增的顺序存储于第二存储单元中,并且,地址读取规则根据基-2蝶形运算的运算规则生成,地址写入规则为,蝶形运算中做复数加法计算得到的数据存入两个原读取地址中在前的地址中,蝶形运算中做复数减法计算得到的数据存入两个原读取地址中在后的地址中,如此,按上述的地址读取规则和地址写入规则运算完毕后,第二存储单元中存储的即为变换后的数据序列,无需重新排序,从而简化了数据处理过程,提高了处理效率。附图说明以下将参照附图对本发明的优选实施方式进行描述。图中:图1为本发明具体实施方式提供的数据处理方法的流程图;图2为本发明具体实施方式提供的数据处理方法中一次蝶形运算的流程图;图3为一次蝶形运算的计算过程示意图;图4为本发明具体实施方式提供的数据处理装置的系统框图。图中:1、第一存储单元;2、第二存储单元;3、倒序处理模块;4、蝶形运算模块。具体实施方式以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分,为了避免混淆本发明的实质,公知的方法、过程、流程、元件并没有详细叙述。此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。针对现有的快速傅里叶变换或者快速傅里叶逆变换中蝶形运算占用存储空间较大的问题,申请人发现,基-2蝶形运算由于其运算规则的独特性,利用一个存储单元即可完成运算过程,基于此,本申请提供了一种数据处理方法,用于对数据序列进行快速傅里叶变换或者快速傅里叶逆变换,如图1和图2所示,该数据处理方法包括:s1、获取存储于第一存储单元中的数据序列进行倒序处理,倒序后的数据序列按排列顺序存储于第二存储单元中;s2、对倒序后的数据序列进行基-2蝶形运算,在进行每次蝶形运算时,根据地址读取规则获得本次蝶形运算的两个需要进行数据读取的地址:第一地址和第二地址,读取第二存储单元中第一地址和第二地址的数据作为输入数据进行蝶形运算,得到两个输出数据,按地址写入规则分别将两个输出数据写入第一地址和第二地址;其中,第一地址为两个输入数据中按排列顺序在前的输入数据所在的地址,第二地址为两个输入数据中按排列顺序在后的输入数据所在的地址,地址读取规则根据基-2蝶形运算的运算规则生成,地址写入规则为,蝶形运算中做复数加法计算得到的数据写入第一地址,蝶形运算中做复数减法计算得到的数据写入第二地址。需要说明的是,步骤s1的倒序过程中,为了降低倒序占用的内存,通常是在倒序过程中既要使用第一存储单元又要使用第二存储单元,即第一存储单元的数据序列不是一次性转存入第二存储单元的,而是逐个从第一存储单元中读取数据写入第二存储单元。步骤s1中,倒序后的数据序列按其排列顺序存储于第二存储单元中,可以按地址递增的顺序存储于第二存储单元中,即,存储于第二存储单元的数据序列中,在前的数据的地址数值小于在后的数据的地址数值,例如,在位宽为3、地址数为8的第二存储单元中,点数为8的数据序列i1,i2,i3,i4,i5,i6,i7,i8的存储地址依次为000、001、010、011、100、101、110、111。也可以是按地址递减的顺序存储于第二存储单元中,即,存储于第二存储单元的数据序列中,在前的数据的地址数值大于在后的数据的地址数值,例如,在位宽为3、地址数为8的第二存储单元中,数据序列i1,i2,i3,i4,i5,i6,i7,i8的存储地址依次为111、110、101、100、011、010、001、000。可以理解的是,此处所述的存储于第二存储单元中的数据序列指的是倒序后的数据序列,其按排列顺序存储指的是,倒序后的数据序列在第二存储单元中存储时是按顺序依次排列的。例如,若倒序前的数据序列按顺序依次排列为i1,i2,i3,i4,i5,i6,i7,i8,则倒序后按循序排列的数据序列应为i1,i5,i3,i7,i2,i6,i4,i8,此处所述的按排列顺序存储指的是倒序后的数据序列i1,i5,i3,i7,i2,i6,i4,i8按地址递增或递减的顺序存储于第二存储单元。步骤s2中的地址读取规则根据基-2蝶形运算的运算规则生成的含义为,基-2蝶形运算有特定的运算规则,对于n点的数据序列,需要进行log2n级蝶形运算,每级蝶形运算需要进行n/2次蝶形运算,每一级蝶形运算中,需要进行蝶形运算的数据组合是确定的,地址读取规则即为在每一级的每次蝶形运算中要读取的数据组合的地址,继续以点数为8的数据序列i1,i2,i3,i4,i5,i6,i7,i8且存储地址依次为000、001、010、011、100、101、110、111为例,其需要进行三级蝶形运算,地址读取规则即为,第一级蝶形运算时,各次蝶形运算的数据组合的地址分别为地址000与地址001、地址010与地址011、地址100与地址101、地址110与地址111,在第二级蝶形运算时,各次蝶形运算的数据组合的地址分别为地址000与地址010、地址001与地址011、地址100与地址110、地址101与地址111,第三级蝶形运算时,各次蝶形运算的数据组合的地址分别为地址000与地址100、地址001与地址101、地址010与地址110、地址011与地址111。在每级蝶形运算中,各次蝶形运算的顺序不限,可以顺序、倒序或者其他任意顺序执行,优选地,采用顺序方式执行,例如,在前述的实施例中,第一次蝶形运算中,按地址000与地址001、地址010与地址011、地址100与地址101、地址110与地址111的顺序进行数据的读取和运算,第二级蝶形运算中,按地址000与地址010、地址001与地址011、地址100与地址110、地址101与地址111的顺序进行数据的读取和运算,第三级蝶形运算中,按地址000与地址100、地址001与地址101、地址010与地址110、地址011与地址111的顺序进行数据的读取和运算。一次蝶形运算的运算过程如图3所示,其中的a和b表示两个输入数据,w为旋转因子,地址写入规则中,做复数加法计算得到的数据写入两个地址中的第一地址,蝶形运算中做复数减法计算得到的数据写入两个地址中的第二地址,第一地址为两个输入数据中按排列顺序在前的输入数据所在的地址,第二地址为两个输入数据中按排列顺序在后的输入数据所在的地址,如此,在运算完毕后,第二存储单元中存储的即为变换后的数据序列,无需重新排序,从而简化了数据处理过程,提高了处理效率。可以理解的是,此处的排列顺序指的是数据序列的第一个数据指向最后一个数据的方向,例如,数据序列i1,i2,i3,i4,i5,i6,i7,i8的排列顺序即指的是i1向i8的方向,当该数据序列按地址递增的顺序存储于第二存储单元时,排列顺序在前的输入数据即为位于数值较小的地址中的数据,排列顺序在后的输入数据即为位于数值较大的地址中的数据,而当数据序列按地址递减的顺序存储于第二存储单元时,排列顺序在前的输入数据即为位于数值较大的地址中的数据,排列顺序在后的输入数据即为位于数值较小的地址中的数据。本发明提供的数据处理方法中,在进行蝶形运算时,将计算得到的数据再存回原读取地址,蝶形运算过程只需要一个存储单元即可完成,在将第一存储单元中的数据序列做倒序处理并写入第二存储单元之后,第一存储单元的空间可以释放以做其他的用途,避免了多余地址空间的浪费,大大提高了存储空间的利用率,尤其适用于存储空间敏感的设备中,另外,由于只需要一个存储空间即可完成蝶形运算,一方面节省了物理空间,尤其适用于对物理空间要求极其苛刻的设备中,另一方面也保证了运算的准确率,避免发生数据误存的情况。根据地址读取规则获得需要读取的地址时,可以利用计数器计数的方式获得读取地址,即,利用计数器的二进制计数数值生成读取地址。例如,当数据序列为n点,n为2的m次幂,m为整数时,将位宽为m的计数器作为第一计数器,每读取一个数据,第一计数器计一次数,利用第一计数器来进行第一级蝶形运算的读取地址的生成。具体地,当倒序后的数据序列按地址递增的顺序存储于第二存储单元中时,将第一计数器设置为由小至大计数,在第一级蝶形运算中,第一地址和第二地址为第一计数器的二进制计数数值,即以第一计数器的二进制计数数值作为读取地址从第二存储单元中进行数据的读取,由于每次蝶形运算需要两个地址即第一地址和第二地址的数据,因此对应第一计数器的两次二进制计数数值,具体地,在一次蝶形运算中,首先将当前第一计数器的二进制计数数值作为第一地址,读取第一地址的数据后,第一计数器计一次数,将记一次数后的第一计数器的二进制计数数值作为第二地址,读取第二地址的数据后,第一计数器再记一次数,计数后的第一计数器的二进制计数数值作为下次蝶形运算的第一地址。继续以点数为8的数据序列且其存储地址依次为000、001、010、011、100、101、110、111为例,第一计数器的位宽为3,其初始值为000,则第一级的第一次蝶形运算中,第一个数据的读取地址即为000,在读取了000地址的数据后,第一计数器记一次数,二进制计数数值变为001,则第二个数据的读取地址即为001,在读取了001地址的数据后,第一计数器记一次数,二进制计数数值变为010,在第二次蝶形运算中,第一个数据的读取地址即为010,在读取了010地址的数据后,第一计数器记一次数,二进制计数数值变为011,则第二个数据的读取地址即为011,在读取了011地址的数据后,第一计数器记一次数,二进制计数数值变为100,以此类推完成第一级蝶形运算的各次运算。当倒序后的数据序列按地址递减的顺序存储于第二存储单元中时,则将第一计数器设置为由大至小计数,例如,以点数为8的数据序列且其存储地址依次为111、110、101、100、011、010、001、000为例,第一计数器的位宽为3,其初始值为111,则第一级的第一次蝶形运算中,第一个数据的读取地址即为111,在读取了111地址的数据后,第一计数器记一次数,二进制计数数值变为110,则第二个数据的读取地址即为110,在读取了110地址的数据后,第一计数器记一次数,二进制计数数值变为101,在第二次蝶形运算中,第一个数据的读取地址即为101,在读取了101地址的数据后,第一计数器记一次数,二进制计数数值变为100,则第二个数据的读取地址即为100,在读取了100地址的数据后,第一计数器记一次数,二进制计数数值变为011,以此类推完成第一级蝶形运算的各次运算。进一步地,在第一级蝶形运算之后的每级蝶形运算中,也可以利用计数器的二进制计数数值得到数据的读取地址,例如,将位宽为m-1的计数器作为第二计数器,每进行一次蝶形运算,所述第二计数器计一次数,在第一级蝶形运算之后的每级蝶形运算中,利用第二计数器的二进制计数数值得到数据的读取地址。具体地,当倒序后的数据序列按地址递增的顺序存储于第二存储单元中时,将第二计数器设置为由小至大计数,每次蝶形运算读取的两个数据的地址即第一地址和第二地址分别采用如下公式计算得到:cnt[l-2:0]+cnt[m-2:l-1]*2l,以及,cnt[l-2:0]+cnt[m-2:l-1]*2l+2(l-1),其中,cnt为第二计数器的计数数值,cnt[a:b]的含义为计数器的二进制计数数值中左起第a+1位至第b+1位组成的二进制数的数值,例如,二进制计数数值为0100,cnt[2:1]为计数器的二进制计数数值中的第3位至第2位组成的二进制数的数值,即为10,cnt[1:2]为计数器的二进制计数数值中的第2位至第3位组成的二进制数的数值,即为01。l为蝶形运算的级数。以点数为16的数据序列且其存储地址依次为0000、0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110、1111为例,第二计数器的位宽为3,其初始值为000,m为4,在第二级的第一次的蝶形运算中,l为2,采用前述的第一个公式计算为cnt[0:0]+cnt[2:1]*22=0,则本次蝶形运算的第一个数据的读取地址为0000,采用前述的第二个公式计算为cnt[0:0]+cnt[2:1]*22+21=2,则第二个数据的读取地址为0010,完成第一次蝶形运算后,第二计数器记一次数,二进制计数数值变为001,在第二级的第二次的蝶形运算中,l为2,采用前述的第一个公式计算为cnt[0:0]+cnt[2:1]*22=1,则本次蝶形运算的第一个数据的读取地址为0001,采用前述的第二个公式计算为cnt[0:0]+cnt[2:1]*22+21=3,则第二个数据的读取地址为0011,完成第二次蝶形运算后,第二计数器记一次数,二进制计数数值变为010,以此类推,完成第二级的各次蝶形运算,完成第二级的各次蝶形运算后,第二计数器的二进制计数数值变为000,在第三级的第一次的蝶形运算中,l=3,采用前述的第一个公式计算为cnt[1:0]+cnt[2:2]*23=0,则本次蝶形运算的第一个数据的读取地址为0001,采用前述的第二个公式计算为cnt[1:0]+cnt[2:2]*23+22=4,则本次蝶形运算的第二个数据的读取地址为0100,完成第一次蝶形运算后,第二计数器记一次数,二进制计数数值变为001,在第三级的第二次的蝶形运算中,l为3,采用前述的第一个公式计算为cnt[1:0]+cnt[2:2]*23=1,则本次蝶形运算的第一个数据的读取地址为0010,采用前述的第二个公式计算为cnt[1:0]+cnt[2:2]*23+22=5,则本次蝶形运算的第二个数据的读取地址为0101,以此类推,完成第三级的各次蝶形运算,后续的蝶形运算过程类似,不再详述。当然,可以理解的,当倒序后的数据序列按地址递减的顺序存储于第二存储单元中时,也可以采用上述的计数器计数方式得到读取地址,此时优选将计数器即为由大至小计数,则可沿用前述公式进行计算。本申请通过采用计数器计数的方式获得数据的读取地址,利用一个计数器且利用同样的运算规则即可实现第一级蝶形运算之后的所有蝶形运算的地址的计算,控制过程简单,占用空间小,且利用前述的运算规则使得在运算完毕后,第二存储单元中存储的即为变换后的数据序列,无需重新排序,从而简化了数据处理过程,提高了处理效率。s1中,倒序处理即为对数据存储的地址数值的倒序,例如,对于8点数据序列,倒序前的地址为000、001、010、011、100、101、110、111,则倒序后的地址为000、100、010、110、001、101、011、111,则倒序过程即为,将第一存储单元中地址000的数据写入第二存储单元的000地址,将第一存储单元中地址001的数据写入第二存储单元的100地址,将第一存储单元中地址010的数据写入第二存储单元的010地址,将第一存储单元中地址011的数据写入第二存储单元的110地址,将第一存储单元中地址100的数据写入第二存储单元的001地址,将第一存储单元中地址101的数据写入第二存储单元的101地址,将第一存储单元中地址110的数据写入第二存储单元的011地址,将第一存储单元中地址111的数据写入第二存储单元的111地址。待处理的数据序列在第一存储单元中优选也按排列顺序进行存储,这样有利于倒序操作,例如倒序处理过程采用计数器计数的方式,此时需要一个由小至大计数的第三计数器和一个由大至小计数的第四计数器,每在第一存储单元中读一个数据,第三计数器记一次数,每向第二存储单元写入一个数据,第四计数器记一次数,对于点数为n的数据序列,n为2的m次幂,m为整数,第三计数器和第四计数器的位宽均为m,第三计数器的二进制计数数值即为每次从第一存储单元中读取数据的读取地址,第四计数器的二进制计数数值即为每次向第二存储单元写入数据的地址,这样就需要两个计数器来进行控制,控制比较复杂,占用空间较大,为简化控制过程以及优化空间资源,优选地,根据倒序地址映射将存储于第一存储单元中的数据序列进行倒序处理,倒叙地址映射为倒序前的地址与倒序后的地址的映射,即,先确定好倒叙地址映射,之后按倒叙地址映射直接进行数据的读取和写入即可,具体地,读取第一存储单元中某一地址的数据,然后查找倒叙地址映射,得到对应的倒序后地址,然后按倒序后地址将数据写入第二存储单元,这种方式对数据序列在第一存储单元中的排列顺序没有要求,因此具有更好的适应性。例如,512点数据序列的倒序过程如下(由于因此二进制位数为9位):倒序前地址为0,二进制为000000000,倒序后地址的二进制为000000000,十进制数为0;倒序前地址为1,二进制为000000001,倒序后地址的二进制为100000000,十进制数为256;倒序前地址为2,二进制为000000010,倒序后地址的二进制为010000000,十进制数为128;倒序前地址为3,二进制为000000011,倒序后地址的二进制为110000000,十进制数为384;倒序前地址为4,二进制为000000100,倒序后地址的二进制为001000000,十进制数为64;…以此类推,得到512点数据序列的倒叙地址映射如下表所示。倒序前地址倒序后地址00125621283384...510255511511再例如,64点数据序列的倒序过程如下(由于因此二进制位数为6位):倒序前的为0,二进制为000000,倒序后地址的二进制为000000,十进制数为0;倒序前地址为1,二进制为000001,倒序后地址的二进制为100000,十进制数为32;倒序前地址为2,二进制为000010,倒序后地址的二进制为010000,十进制数为16;倒序前地址为3,二进制为000011,倒序后地址的二进制为110000,十进制数为48;倒序前地址为4,二进制为000100,倒序后地址的二进制为001000,十进制数为8;…以此类推,得到64点数据序列的倒叙地址映射如下表所示。倒序前地址倒序后地址00132216348...62316363为了使得第二存储单元的存储空间得到最大化的利用,优选地,对于点数为n点,n为2的m次幂,m为整数的数据序列,第二存储单元的存储地址为n个,即深度为n,每个存储地址的位宽大于或等于m。当然,可以理解的是,第二存储单元的存储地址也可以大于n,这样在数据处理过程中,存在空闲的点。在实际的应用中,有可能不同的数据序列具有不同的点数,在这种情况下,优选以点数最大的数据序列为准设置第二存储单元的深度和每个地址的位宽,例如,该数据处理方法应用于对点数分别为n1、n2、n3的数据序列进行处理,n1>n2>n3,此时,第二存储单元的存储地址为n1个,即深度为n1。本申请提供的数据处理方法可以应用于任意需要进行快速傅里叶变换或者快速傅里叶逆变换且蝶形运算为基-2蝶形运算的电子设备中,例如应用于音频设备中。基于此,本申请还提供了一种音频信号处理方法,该音频信号处理方法包括对音频信号的编码过程和/或对音频信号的解码处理过程,且处理过程涉及对点数是2的整数次幂的数据序列进行快速傅里叶变换或快速傅里叶逆变换,例如,处理过程基于aac(advancedaudiocoding)标准,具体地,在基于aac标准对音频信号进行编码时,采用上述的数据处理方法对音频信号进行快速傅里叶变换,而在基于aac标准对音频信号进行解码时,采用上述的数据处理方法对音频信号进行快速傅里叶逆变换,可以理解的是,本申请的音频信号处理过程中,仅是对快速傅里叶变换、快速傅里叶逆变换的处理过程的改进,其他处理过程与现有的处理过程相同,在此不再详述。当然,容易理解的是,在基于其他标准的音频处理过程中,凡是涉及对点数是2的整数次幂的数据序列进行快速傅里叶变换或快速傅里叶逆变换的,均可采用上述的方法。优选地,在基于aac标准的编码过程中,时频变换采用长度自适应的mdct(modifieddiscretecosinetransform),对于频率比较稳定的信号,为了得到更高的编码增益,使用2048点的mdct,这样可以提高频域解析度。在信号频率变化较快时,使用256点的mdct,可以提高时域解析度。在基于aac标准解码时,将输入序列通过预处理转换成复数序列,该复数序列乘以旋转因子即得到需要进行快速傅里叶逆变换的数据序列。若编码时使用2048点的mdct,则在解码时的快速傅里叶逆变换的输入为512点的数据序列,若编码时使用256点的mdct,则在解码时的快速傅里叶变换的输入为64点的数据序列,可以理解的是,输入的数据序列的点数可以不同,既可以包含512点的数据序列,又可以包含64点的数据序列,还可以是其他2的整数次幂点的数据序列。进一步地,本申请还提供了一种数据处理装置,用于对数据序列进行快速傅里叶变换或者快速傅里叶逆变换,如图4所示,数据处理装置包括:第一存储单元1,用于存储待处理的数据序列;第二存储单元2,用于存储处理后的数据序列;倒序处理模块3,用于获取存储于第一存储单元1中的数据序列进行倒序处理,以及将倒序后的数据序列按排列顺序存储于第二存储单元2;蝶形运算模块4,用于对倒序后的数据序列进行基-2蝶形运算,在进行每次蝶形运算时,根据地址读取规则获得本次蝶形运算的两个需要进行数据读取的地址:第一地址和第二地址,读取第二存储单元中的第一地址和第二地址的数据作为输入数据进行蝶形运算,得到两个输出数据,按地址写入规则分别将两个输出数据写入本次蝶形运算进行数据读取的两个地址即第一地址和第二地址;其中,第一地址为两个输入数据中按排列顺序在前的输入数据所在的地址,第二地址为两个输入数据中按排列顺序在后的输入数据所在的地址,地址读取规则根据基-2蝶形运算的运算规则生成,地址写入规则为,蝶形运算中做复数加法计算得到的数据写入第一地址,蝶形运算中做复数减法计算得到的数据写入第二地址。进一步地,所述蝶形运算模块包括地址生成单元和计数器,所述地址生成单元利用所述计数器的二进制计数数值生成所述第一地址和所述第二地址。进一步地,所述数据序列为n点,n为2的m次幂,m为整数,所述计数器包括位宽为m的第一计数器,所述第一计数器由小至大计数,每读取一个数据,所述第一计数器计一次数;所述倒序处理模块用于将倒序后的数据序列按地址递增的顺序存储于所述第二存储单元中;所述地址生成单元用于在进行第一级蝶形运算时获取所述第一计数器的二进制计数数值,并将所述第一计数器的二进制计数数值作为所述第一地址和所述第二地址。进一步地,所述数据序列为n点,n为2的m次幂,m为整数,所述计数器包括位宽为m-1的第二计数器,所述第二计数器由小至大计数,每进行一次蝶形运算,所述第二计数器计一次数;所述倒序处理模块用于将倒序后的数据序列按地址递增的顺序存储于所述第二存储单元中;所述地址生成单元用于在进行第一级蝶形运算之后的每级蝶形运算中,按如下公式计算生成每次蝶形运算中的第一地址和第二地址:cnt[l-2:0]+cnt[m-2:l-1]*2l,以及,cnt[l-2:0]+cnt[m-2:l-1]*2l+2(l-1),其中,l为蝶形运算的级数。进一步地,所述倒序处理模块用于根据倒序地址映射将存储于所述第一存储单元中的数据序列进行倒序处理,所述倒序地址映射为倒序前的地址与倒序后的地址的映射。进一步地,所述数据序列为n点,n为2的m次幂,m为整数,所述第二存储单元具有n个存储地址,每个存储地址的位宽大于或等于m。本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被执行时实现如上所述的数据处理方法。需要说明的是,本公开的实施例所述的计算机可读存储介质例如可以为电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。本发明还提供了一种数据处理芯片,该数据处理芯片包括处理器,处理器在对数据序列进行快速傅里叶变换或者快速傅里叶逆变换时采用如上所述的数据处理方法。数据处理芯片还包括两个随机存储器,第一存储单元和第二存储单元优选分别为两个随机存储器之一,数据处理芯片可以置于电子设备例如音频设备中。本申请还提供了一种电子设备,包括如上所述的计算机可读存储介质或上述的数据处理芯片,电子设备可以为任意需要对数据序列进行快速傅里叶变换或快速傅里叶逆变换且其中的蝶形运算为基-2蝶形运算的设备,例如图像处理设备、音频设备等,当电子设备为音频设备时,其采用上述的音频信号处理方法,即,音频设备在基于aac标准对音频信号进行编码时,采用上述的数据处理方法对音频信号进行快速傅里叶变换,音频设备在基于aac标准对音频信号进行解码时,采用上述的数据处理方法对音频信号进行快速傅里叶逆变换。可以理解的是,该音频设备可以为只进行信号的编码操作的设备,也可以是只进行信号的解码操作的设备,还可以为既进行信号的编码操作,又进行信号的解码操作的设备。由于采用前述的数据处理方法,提高了存储空间的利用率,节省了物理空间,尤其适用于存储空间敏感、对物理空间要求苛刻的音频设备,例如蓝牙音频设备,尤其是蓝牙耳机这种结构精巧的设备。音频设备例如为蓝牙音响、蓝牙耳机等。本领域的技术人员能够理解的是,在不冲突的前提下,上述各优选方案可以自由地组合、叠加。应当理解,上述的实施方式仅是示例性的,而非限制性的,在不偏离本发明的基本原理的情况下,本领域的技术人员可以针对上述细节做出的各种明显的或等同的修改或替换,都将包含于本发明的权利要求范围内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1