掌桥专利:专业的专利平台
掌桥专利
首页

用于实现快速傅里叶变换的处理电路、方法和电子设备

文献发布时间:2024-04-18 19:58:53


用于实现快速傅里叶变换的处理电路、方法和电子设备

技术领域

本申请涉及信号处理技术领域,尤其涉及一种用于实现快速傅里叶变换的处理电路、方法和电子设备。

背景技术

快速傅立叶变换(Fast Fourier Transform,FFT)是数字信号处理中最重要的算法之一。FFT在通信、音频处理和图像处理等领域都有广泛的应用,特别是在基于移动设备和低算力嵌入式设备所实现的物联网应用场景中。

目前快速傅里叶变换的处理电路是基于冯洛伊曼的架构,由于存储和计算单元的分离,在处理过程中需要数据在存储和计算单元中不断进行传输和计算,产生了严重的“内存墙”效应。随着数据量的爆炸式增长,基于传统冯洛伊曼架构的FFT处理电路存在高功耗、大面积和低能耗效率的问题,往往难以满足FFT计算的需求。

发明内容

鉴于上述问题,本公开提供了一种用于实现快速傅里叶变换的处理电路、方法和电子设备,能够降低快速傅里叶变换的处理能耗,提高处理速度。

第一方面,本公开通过一实施例提供如下的技术方案:

一种用于实现快速傅里叶变换的处理电路,包括控制子电路、M+1级翻转子电路和M级运算子电路,M≥2且为整数;每一级所述运算子电路包括相同数量的多个计算单元,每个所述计算单元包括阻变存储器阵列;第一级翻转子电路的输入端用于连接输入电路,第i级运算子电路的输入端连接第i级翻转子电路的输出端,第i级运算子电路的输出端连接第i+1级翻转子电路的输入端,i为依次取值1至M的整数;

所述控制子电路被配置为:在第i级运算子电路的阻变存储器阵列中存储快速傅里叶变换矩阵的第i级参数;以及控制第i级翻转子电路将第i翻转序列输出至所述第i级运算子电路;

第i级运算子电路被配置为:根据所述第i级翻转子电路输出的第i翻转序列进行运算,获得第i输出序列并将所述第i输出序列输出至所述第i+1级翻转子电路;

第一级翻转子电路被配置为:对所述输入电路发送的输入序列的元素排序进行翻转,获得第一翻转序列;

所述第i+1级翻转子电路被配置为:对所述第i输出序列的元素排序进行翻转,获得第i+1翻转序列;其中,第M+1翻转序列为所述快速傅里叶变换的结果序列。

在一些实施例中,所述计算单元还包括减法子电路,所述阻变存储器阵列包括2个结构相同的子阵列,一个所述子阵列包括结构相同的第一存储器分组和第二存储器分组,所述第一存储器分组用于存储第i级参数中的第一元素,所述第二存储器分组用于存储第i级参数中的第二元素,所述第一存储器分组和所述第二存储器分组的输出端连接所述减法子电路;

其中,所述第一元素是与所述输入序列或所述第i输出序列中的对应元素的计算结果为正的元素,所述第二元素是与所述输入序列或所述第i输出序列中的对应元素的计算结果为负的元素。

在一些实施例中,所述阻变存储器阵列为4行×8列的阻变存储器阵列,所述计算单元还包括4条字线和8条位线,每一行上的8个存储单元的第一端与同一条字线连接,每一列上的4个存储单元的第二端与同一条位线连接;

所述第一存储器分组包括连接在所述4条字线和所述8条位线中的第一位线、第二位线上的8个存储单元,所述第二存储器分组包括连接所述4条字线和所述8条位线中的第三位线、第四位线上的8个存储单元;

所述快速傅里叶变换矩阵中的矩阵元素包括实部电导和虚部电导,所述输入序列和所述第i输出序列中的序列元素包括实部电压和虚部电压;所述计算单元通过所述4条字线获得两个所述序列元素的实部电压和虚部电压,所述阻变存储器阵列用于存储所述第i级参数中的4个参数的实部电导和虚部电导。

在一些实施例中,所述控制子电路被配置为:

若所述虚部电导和所述虚部电压的乘积为正值,则将所述虚部电导存储至所述第二存储器分组;若所述虚部电导和所述虚部电压的乘积为负值,则将所述虚部电导存储至所述第一存储器分组;

若所述虚部电导和所述实部电压的乘积为正值,则将所述虚部电导存储至所述第一存储器分组;若所述虚部电导和所述实部电压的乘积为负值,则将所述虚部电导存储至所述第二存储器分组;

若所述实部电导和所述实部电压的乘积为正值,则将所述实部电导存储至所述第一存储器分组;若所述实部电导和所述实部电压的乘积为负值,则将所述实部电导存储至所述第二存储器分组;

若所述实部电导和所述虚部电压的乘积为正值,则将所述实部电导存储至所述第一存储器分组;若所述实部电导和所述虚部电压的乘积为负值,则将所述实部电导存储至所述第二存储器分组。

在一些实施例中,所述计算单元还包括4个数模转换子电路和8个模数转换子电路,一个所述数模转换子电路设置在一条字线上,位于所述阻变存储器阵列的输入端,一个所述模数转换子电路设置在一条位线上,位于所述阻变子阵列的输出端;

对于所述第i级运算子电路中的计算单元,所述数模转换子电路用于将所述输入序列或第i输出序列的数字电压信号转换为模拟电压信号;所述模数转换子电路用于将所述第i输出序列的模拟电流信号转换为数字电压信号。

在一些实施例中,所述减法子电路包括第一减法器和第二减法器;所述第一减法器的输入端分别连接所述第一位线和所述第三位线上的所述模数转换子电路的输出端,所述第一减法器的输出端连接所述翻转子电路,用于计算所述第一位线和所述第三位线之间的数字电压差值;

所述第二减法器的输入端分别连接所述第二位线和所述第四位线上的所述模数转换子电路的输出端,所述第二减法器的输出端连接所述翻转子电路,用于计算所述第二位线和所述第四位线之间的数字电压差值。

第二方面,基于同一发明构思,本公开通过一实施例提供如下技术方案:

一种用于实现快速傅里叶变换的处理电路,包括控制子电路、翻转子电路和多个计算单元,所述翻转子电路的一端用于连接输入电路,另一端连接所述多个计算单元;每个所述计算单元包括阻变存储器阵列;

所述控制子电路被配置为:

在所述多个计算单元的阻变存储器阵列中依次存储所述快速傅里叶变换矩阵的第i级参数,以及控制所述翻转子电路输出第i翻转序列至所述多个计算单元,i为依次取值1至M的整数;

所述多个计算单元被配置为:根据所述第i翻转序列进行运算,获得第i输出序列;

所述翻转子电路被配置为:接收所述输入电路发送的输入序列,对所述输入序列的元素排序进行翻转,获得第一翻转序列;以及接收所述第i输出序列,对所述第i输出序列进行翻转,获得第i+1翻转序列;其中,第M+1翻转序列为所述快速傅里叶变换的结果序列。

第三方面,基于同一发明构思,本公开通过一实施例提供如下技术方案:

一种快速傅里叶变换的处理方法,应用于第一方面实施例提供的处理电路,所述方法包括:

在初始化阶段,在第i级运算子电路的阻变存储器阵列中存储快速傅里叶变换矩阵的第i级参数,i为依次取值1至M的整数;

在计算阶段,控制所述第一级翻转子电路对所述输入电路发送的输入序列的元素排序进行翻转,获得第一翻转序列并将所述第一翻转序列输出至第一级运算子电路,以使所述第一级运算子电路根据所述第一翻转序列进行运算,获得第一输出序列;以及控制第j级翻转子电路对第j-1级运算子电路输出的第j-1输出序列的元素排序进行翻转,获得第j翻转序列并将所述第j翻转序列输出至第j级运算子电路,以使所述第j级运算子电路根据所述第j翻转序列进行运算,获得第j输出序列并将所述第j输出序列输出至第j+1级翻转子电路,j为依次取2至M的整数;其中,第M+1翻转序列为所述快速傅里叶变换的结果序列。

第四方面,基于同一发明构思,本公开通过一实施例提供如下技术方案:

一种快速傅里叶变换的处理方法,应用于第二方面实施例提供的处理电路,所述方法包括:

在初始化阶段,在所述多个计算单元的阻变存储器阵列中存储所述快速傅里叶变换矩阵的第一级参数;

在第一计算阶段,控制所述翻转子电路对所述输入电路发送的输入序列的元素排序进行翻转,获得第一翻转序列并将所述第一翻转序列发送至所述多个计算单元,以使所述多个计算单元根据所述第一翻转序列进行运算,获得第一输出序列并将所述第一输出序列输出至所述翻转子电路;

在重置阶段,在所述多个计算单元的阻变存储器阵列中存储所述快速傅里叶变换矩阵的第j级参数,j为依次取2至M的整数;

在第二计算阶段,控制所述翻转子电路对第j-1输出序列的元素排序进行翻转,获得第j翻转序列并将所述第j翻转序列输出至所述多个计算单元,以使所述多个计算单元根据所述第j翻转序列进行运算,获得第j输出序列并将所述第j输出序列输出至所述翻转子电路;

输出阶段,控制所述翻转子电路对第M输出序列进行翻转,获得所述快速傅里叶变换的结果序列。

第五方面,基于同一发明构思,本公开通过一实施例提供如下技术方案:

一种电子设备,包括第一方面实施例或第二方面实施例提供的处理电路。

通过本公开的一个或者多个技术方案,本公开具有以下有益效果或者优点:

本公开提供了一种用于实现快速傅里叶变换的处理电路,通过使用阻变存储器构建快速傅里叶变换的存内计算电路,将快速傅里叶变换矩阵或变换矩阵存储到多个计算单元中的阻变存储器阵列,可以直接在阻变存储器阵列中进行快速傅里叶变换的向量矩阵乘法运算,避免了数据在内存与计算单元间的频繁搬运的“内存墙”问题,能够显著减少数据搬运能耗并提高运算速度;同时,根据快速傅里叶变换的每一级运算可以分成相同数量的计算对的特征设计多级的运算子电路,并使每级运算子电路具有相同数量的计算单元,在第i级运算子电路中的计算单元的阻变存储器阵列中存储第i级快速傅里叶变换所需的第i级参数,通过第i+1级翻转子电路对第i级运算子电路的输出序列进行翻转,得到的第i+1翻转序列可直接作为第i+1级运算子电路的输入,有利于提高处理电路进行快速傅里叶变换的处理效率。

上述说明仅是本公开技术方案的概述,为了能够更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为了让本公开的上述和其它目的、特征和优点能够更明显易懂,以下特举本公开的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本公开的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本公开实施例的用于实现快速傅里叶变换的处理电路的框架图;

图2示出了根据本公开实施例在N=8时,快速傅里叶变换的蝶形逻辑示意图;

图3示出了根据本公开实施例的计算单元的框架示意图;

图4示出了根据本公开实施例的计算单元中的详细电路结构示意图;

图5示出了根据本公开实施例的第一级和第二级快速傅里叶变换中的乘法运算的可能情况示意图;

图6示出了根据本公开实施例的在N=8时,第一级运算子电路和第二级运算子电路的框架图;

图7示出了根据本公开实施例的在N=8时,处理电路中的四级序列翻转的示意图;

图8示出了根据本公开实施例的只包括一级运算子电路和翻转子电路的处理电路的框架图;

附图标记说明:

10、控制子电路;20、翻转子电路;30、运算子电路;CU、计算单元;310、阻变存储器阵列;311,312、子阵列;311A、第一存储器分组;311B、第二存储器分组;320、减法子电路;S1、第一减法器;S2、第二减法器;DAC、数模转换子电路;ADC、模数转换子电路。

具体实施方式

以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。

在附图中示出了根据本公开实施例的各种结构示意图。这些图并非是按比例绘制的,其中为了清楚表达的目的,放大了某些细节,并且可能省略了某些细节。图中所示出的各种区域、层的形状以及它们之间的相对大小、位置关系仅是示例性的,实际中可能由于制造公差或技术限制而有所偏差,并且本领域技术人员根据实际所需可以另外设计具有不同形状、大小、相对位置的区域/层。

除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。

为了解决传统的冯洛伊曼架构的快速傅里叶变换(简称FFT)处理电路存在高功耗、大面积和低能耗效率的问题,第一方面,在一个可选的实施例中,请参阅图1~图3,提供了一种用于实现快速傅里叶变换的处理电路,包括:

控制子电路10、M+1级翻转子电路20和M级运算子电路30,M≥2且为整数;每一级运算子电路30包括相同数量的多个计算单元CU,每个计算单元CU包括阻变存储器阵列310;第一级翻转子电路20的输入端用于连接输入电路,第i级运算子电路30的输入端连接第i级翻转子电路20的输出端,第i级运算子电路30的输出端连接第i+1级翻转子电路20的输入端,i为依次取值1至M的整数;

控制子电路10被配置为:在第i级运算子电路30的阻变存储器阵列310中存储快速傅里叶变换矩阵的第i级参数;以及控制第i级翻转子电路20将第i翻转序列输出至第i级运算子电路30;

第i级运算子电路30被配置为:根据第i级翻转子电路20输出的第i翻转序列进行运算,获得第i输出序列并将第i输出序列输出至第i+1级翻转子电路20;

第一级翻转子电路20被配置为:对输入电路发送的输入序列的元素排序进行翻转,获得第一翻转序列;

第i+1级翻转子电路20被配置为:对第i输出序列的元素排序进行翻转,获得第i+1翻转序列;其中,第M+1翻转序列为傅里叶变换的结果序列。

具体的,FFT变换的数学表达如下:

式(1)中的F

因此,处理电路中的运算子电路30的级数可根据输入序列(信号)的长度并结合FFT的原理确定,运算子电路的级数的先后顺序根据数据流的方向确定,例如在图1中,运算子电路和翻转子电路的级数从左向右依次递增。运算子电路30的级数M可以等于log

在处理电路中,每一级运算子电路30包括的计算单元CU的数量相等,输入序列以蝶形方式在每级运算子电路30之间运算和传递。之所以将运算子电路30分成多个计算单元CU,是考虑到FFT变换中的每一级运算均可拆分为多个计算对,每一个计算对中的运算都是输入序列或第i输出序列中的两个元素与下一级输出序列中的两个元素配对。以输入序列(信号)的长度N=8的FFT变换为例,其快速傅里叶变换的蝶形逻辑示意图可参阅图2。可以看出在每一级FFT运算中,两个输出元素对应有两个相同的输入元素,例如在第一级的FFT变换中有:

其矩阵表示为:

因此可将第二级的y

因此,每一级运算子电路30中的计算单元CU的数量可以根据待处理的输入序列的长度确定,例如,若待处理输入序列的N=8,且每两个信号采样组成一个计算对,则计算单元CU的数量可以是4个;若输入序列的N=16,则计算单元CU的数量可以是8个。若输入序列较长,如N=32或64,为了避免电路过于复杂,每一级运算子电路30也可以设置较少的计算单元CU,然后将输入序列分批输入完成FFT变换。

每个计算单元CU包括一阻变存储器阵列310,用来存储每一级FFT变换所需的元素。阻变存储器阵列310包括多个存储单元,一个存储单元对应一个阻变存储器(RRAM)。阻变存储器是一种基于数据信息的非易失性存储器件,其核心特性是近乎线性的电流-电压(I-V)特性,即忆阻特性。因此,可以通过调整RRAM中的材料阻值(电导率)来存储一个参数。得益于RRAM具有的功耗低、存储密度高、速度快等优点,其组成的RRAM阵列可以实现快速向量乘矩阵运算的特性,可以满足FFT算法中大量二维矩阵运算的需求。

对于第i级的运算子电路30,一个计算单元CU中的一个阻变存储器阵列310用于存储快速傅里叶变换矩阵的第i级参数。第i级的运算子电路30的输入端连接第i级翻转子电路20,用于从第i级翻转子电路20获得第i翻转序列,结合第i级参数进行FFT运算,得到第i输出序列,然后将第i输出序列输入第i+1级翻转子电路20进行翻转,得到第i+1翻转序列。

以N=8的信号为例,其输入序列{x

翻转子电路20是用于对输入序列或第i输出序列的元素排序进行翻转,可通过逻辑门电路编程实现。翻转的作用是调整输入序列中的元素的顺序,以满足快速傅里叶变换的运算要求。翻转的方式可以是先对输入序列或第i输出序列中的所有元素按照翻转前的顺序进行二进制编码,以输入序列{x

控制子电路10主要负责在快速傅里叶变换过程中的调度,包括执行快速傅里叶变换矩阵的参数写入到阻变存储器阵列310,以及控制翻转子电路20进行输入序列或第i输出序列的元素翻转,输入运算子电路30进行运算,并可在计算完成后控制第M+1级翻转子电路20输出快速傅里叶变换的结果序列。

故而,本公开实施例提供的处理电路,通过使用阻变存储器构建快速傅里叶变换的存内计算电路,将快速傅里叶变换矩阵或变换矩阵存储到多个计算单元CU中的阻变存储器阵列310,可以直接在阻变存储器阵列310中进行快速傅里叶变换的向量矩阵乘法运算,避免了数据在内存与计算单元CU间的频繁搬运的“内存墙”问题,能够显著减少数据搬运能耗并提高运算速度;同时,根据快速傅里叶变换的每一级运算可以分成相同数量的计算对的特征设计多级的运算子电路30,并使每级运算子电路30具有相同数量的计算单元CU,在第i级运算子电路30的计算单元CU的阻变存储器阵列310中存储第i级快速傅里叶变换所需的第i级参数,并通过第i+1级翻转子电路20对第i级运算子电路30的输出序列进行翻转,得到的第i+1翻转序列可直接作为第i+1级运算子电路30的输入,有利于提高处理电路进行快速傅里叶变换的处理效率。

在一些实施例中,请参阅图3,计算单元CU还包括减法子电路320,阻变存储器阵列310包括2个结构相同的子阵列(311,312),其中,子阵列311包括结构相同的第一存储器分组311A和第二存储器分组311B,第一存储器分组311A用于存储第i级参数中的第一元素;第二存储器分组311B用于存储第i级参数中的第二元素,第一存储器分组311A和第二存储器分组311B的输出端连接减法子电路320;其中,第一元素是与输入序列或第i输出序列中的对应元素的计算结果为正的元素,第二元素是与输入序列或第i输出序列中的对应元素的计算结果为负的元素。

具体的,一个计算单元CU中的阻变存储器阵列310包括两个相同的子阵列,是考虑到在FFT变换的每一个运算对中,两个输出元素对应有两个相同的输入元素。以{y

同时,之所以将一个子阵列分为两个结构相同的第一存储器分组311A和第二存储器分组311B,是考虑到快速傅里叶变换矩阵中的参数

例如,对于式(2),将其改为复数相乘的形式后为:

其中,

根据式(5)可知,快速傅里叶变换中的一个计算对同时涉及乘法和加法运算,而阻变存储器阵列310在进行负值运算时比较困难。而通过在一个子阵列中设置两个相同结构的第一存储器分组311A和第二存储器分组311B,然后再判断参与乘法运算的两个元素的乘积符号,在乘积结果为正时,将快速傅里叶变换矩阵的参数存储到正阵列,即第一存储器分组311A;在乘积结果为负时,将快速傅里叶变换矩阵的参数存储到负阵列,即第二存储器分组311B。例如,对于乘法运算:

需要说明的是:

1)上述存储规则是应用于乘法运算前的符号为正的情况,对于乘法运算之前的符号为负的情况,如

2)快速傅里叶变换矩阵的参数在第一存储器分组311A和第二存储器分组311B中择一存储,例如在将R

另外,根据式(5)可知,FFT变换中的每一个计算对涉及8次乘法运算,至少需要8个RRAM存储单元。而考虑到复数运算,一个计算单元CU对应两个输入元素和两个输出元素,一个输入元素包括1个实部和1个虚部。故而,请参阅图4,阻变存储器阵列310可以是4行×8列的阻变存储器阵列310,计算单元CU还包括4条字线(WL1~WL4)和8条位线(BL1~BL8),每一行上的8个存储单元的第一端与同一条字线连接,每一列上的4个存储单元的第二端与同一条位线连接;第一存储器分组311A包括连接在4条字线和8条位线中的第一位线BL1、第二位线BL2上的8个存储单元,第二阻变存储器组包括连接4条字线和8条位线中的第三位线BL3、第四位线BL4上的8个存储单元;即第一存储器分组311A和第二存储器分组311B均包括4行×2列共8个存储单元。与之相应的,一个阻变子阵列包括4行×4列共16个存储单元,一个计算单元CU中的阻变存储器阵列310包括两个阻变子阵列,即4行×8列共32个存储单元。

在进行计算时,在将快速傅里叶变换矩阵中的元素映射为电导值,输入序列或第i输出序列的元素映射为电压值,也就是说,快速傅里叶变换矩阵中的矩阵元素包括实部电导和虚部电导,输入序列和第i输出序列中的序列元素包括实部电压和虚部电压;计算单元CU通过4条字线获得两个序列元素的实部电压和虚部电压,阻变存储器阵列310用于存储快速傅里叶变换矩阵中的4个参数的实部电导和虚部电导。电压与电导的乘积(V/R)为存储单元中的电流值,通过采集电流值即可得到矩阵向量的乘法结果。

因此,式(4)可转换为:

在式(6)中,电导值G

输入序列(V

对于图4,阻变存储器阵列310存储的是FFT矩阵中的第1级参数:

结合图4的阻变储存器阵列和式(5),在阻变存储器阵列310中存储第i级参数的方案为:

1)若虚部电导和虚部电压的乘积为正值,则将虚部电导存储至第二存储器分组311B;若虚部电导和虚部电压的乘积为负值,则将虚部电导存储至第一存储器分组311A;

2)若虚部电导和实部电压的乘积为正值,则将虚部电导存储至第一存储器分组311A;若虚部电导和实部电压的乘积为负值,则将虚部电导存储至第二存储器分组311B;

3)若实部电导和实部电压的乘积为正值,则将实部电导存储至第一存储器分组311A;若实部电导和实部电压的乘积为负值,则将实部电导存储至第二存储器分组311B;

4)若实部电导和虚部电压的乘积为正值,则将实部电导存储至第一存储器分组311A;若实部电导和虚部电压的乘积为负值,则将实部电导存储至第二存储器分组311B。

其中,情形2)、3)、4)是对应式(5)中相乘元素前的符号为“正”的情况,因此乘积为正时将参数值存储至正阵列:第一存储器分组311A,乘积为负时将参数值存储至负阵列:第二存储器分组311B;而情形1)较为特殊,是对应式(5)中相乘元素前的符号为“负”的情况,因此乘积为正时将参数值存储至负阵列:第二存储器分组311B,乘积为负时将参数值存储至正阵列:第一存储器分组311A。

在具体实施时,对于情形2)、3)、4),乘积的符号判断可通过控制子电路10取数据最高位进行同或运算实现,当结果为1时放入正阵列:第一存储器分组311A,当结果为0时放入负阵列:第二存储器分组311B;而对于情形1)的两虚部的乘积,可通过控制子电路10采用异或运算执行符号判断,当结果为1时放入正阵列:第一存储器分组311A,当结果为0时放入负阵列:第二存储器分组311B。

第一级和第二级FFT变换中的复数乘法的可能情况请参阅图5,其中,R1、I1分别为输入序列中的元素的实部电压和虚部电压,R2、I2为快速傅里叶变换矩阵中的第一级参数的实部电导和虚部电导,R3、I3为快速傅里叶变换矩阵中的第二级参数的实部电导和虚部电导。以第一级参数R2、I2为例,其存储位置如表1所示。

表1:计算过程中的FFT矩阵的参数存储位置

需要说明的是,当一个参数值存储在一个存储器分组后,可将另一个存储器分组中的对应位置上的存储单元置零。以情形1)为例,若将虚部电导存储在第三位线上的存储单元;则将第一位线BL1上的、与之处于同一行字线上的存储单元的值置为0;若将虚部电导存储在第二位线BL2上的存储单元;则将第四位线BL4上的、与之处于同一行字线上的存储单元的值置为0。例如,若第一存储器分组311A中连接字线WL1和第一位线BL1上的存储单元R

在一些实施例中,请参阅图4,计算单元CU还包括4个数模转换子电路DAC和8个模数转换子电路ADC,一个数模转换子电路DAC设置在一条字线上,位于阻变存储器阵列310的输入端,一个模数转换子电路ADC设置在一条位线上,位于阻变子阵列的输出端;对于第i级运算子电路30中的计算单元CU,数模转换子电路DAC用于将输入序列或第i输出序列的数字电压信号转换为模拟电压信号;模数转换子电路ADC用于将第i输出序列的模拟电流信号转换为数字电压信号。

在一些实施例中,请参阅图4,减法子电路320包括第一减法器S1和第二减法器S2;第一减法器S1的输入端分别连接第一位线BL1和第三位线BL3上的模数转换子电路ADC的输出端,第一减法器S1的输出端连接翻转子电路20,用于计算第一位线BL1和第三位线BL3之间的数字电压差值;第二减法器S2的输入端分别连接第二位线BL2和第四位线BL4上的模数转换子电路ADC的输出端,第二减法器S2的输出端连接翻转子电路20,用于计算第二位线和第四位线之间的数字电压差值。

另一方面,本公开实施例也提供了一种应用该处理电路进行快速傅里叶变换的处理方法,应用于控制子电路10,处理方法具体包括:

S11:在初始化阶段,在第i级运算子电路30的阻变存储器阵列310中存储快速傅里叶变换矩阵的第i级参数,i为依次取值1至M的整数;

S12:在计算阶段,控制第一级翻转子电路20对输入电路发送的输入序列的元素排序进行翻转,获得第一翻转序列并将第一翻转序列输出至第一级运算子电路30,以使第一级运算子电路30根据第一翻转序列进行运算,获得第一输出序列;以及控制第j级翻转子电路20对第j-1级运算子电路30输出的第j-1输出序列的元素排序进行翻转,获得第j翻转序列并将第j翻转序列输出至第j级运算子电路30,以使第j级运算子电路30根据第j翻转序列进行运算,获得第j输出序列并将第j输出序列输出至第j+1级翻转子电路20,j为依次取2至M的整数;其中,第M+1翻转序列为快速傅里叶变换的结果序列。

同样以N=8的输入序列为例,根据图2的逻辑蝶形图设计的第一级运算子电路30和第二级运算子电路30的电路框架图可参阅图6,每一个计算单元CU中的电路结构可参阅图4,在快速傅里叶变换的运算阶段,处理电路的工作流程如下:

第一级翻转子电路20通过外部的输入电路获得本次进行FFT变换的输入序列的数字电压信号,然后根据输入序列的元素排序,对{x

将第一翻转序列中的相邻两个元素作为一个计算对输入到第一级运算子电路30的一个计算单元CU中,例如将{x

第二级翻转子电路20可根据

在上述的运算过程中,第一级翻转至第四级翻转的序列重排可参阅图7。控制子电路10的调度过程可通过一有限状态机、一多比特信号N和一多比特数字信号数组L实现。其中,有限状态机可在初始化、计算、输出三种状态中依次切换,初始化时对每一级运算子电路30中的阻变存储器阵列310执行参数写入,将第i级参数中的参数存储至阻变存储器阵列310;在计算状态下执行FFT运算,具体是使第i级翻转子电路20将第i翻转序列输出至第i级运算子电路30进行矩阵向量的乘法运算;在获得FFT变换的结果序列后,执行结果输出,即控制第N+1级翻转子电路20将第i+1翻转序列作为结果序列输出。多比特信号N为执行FFT所需的总级数。信号数组L负责记录处理电路正在计算的当前层级,L数组的长度与处理电路中的运算子电路30的级数相对应,例如,若运算子电路30有三级,则L数组长度为3,分别存储的数据为1、2、3,对应第一级运算子电路30、第二级运算子电路30和第三级运算子电路30。L数组中的数据可作为第i+1级翻转子电路20的控制信号输入,以调整第i输出序列中的元素顺序,获得第i+1翻转序列。

第一方面实施例提供的处理电路包括M级处理子电路和M+1级翻转子电路20,且每一级处理子电路中包括多个计算单元CU,利用计算单元CU中的阻变存储器阵列310来快速实现向量乘矩阵运算的特性;同时,在一个阻变存储器阵列310中设置两个相同的子阵列以存储相同的两个输入序列所对应的不同参数,且一个子阵列中又分为两个相同的存储器分组来分别负责实数乘法结果为正和实数乘法结果为负的运算,再通过减法子电路320进行减法运算,解决了阻变存储器阵列310难以进行负数运算的问题,满足了FFT算法中大量矩阵乘加运算的需求,具有高工作速度和低功耗的优点。

第一方面实施例中的处理电路包括M级处理子电路,在一些需要进一步简化电路结构的应用场景下,也可以只设置一级处理子电路,以反复擦除阻变存储器阵列310中的FFT矩阵的参数的方式实现FFT计算,具体如下:

第二方面,请参阅图8,在另一个可选的实施例中,提供了一种用于实现快速傅里叶变换的处理电路,包括控制子电路10、翻转子电路20和多个计算单元CU,翻转子电路20的一端用于连接输入电路,另一端连接多个计算单元CU;每个计算单元CU包括阻变存储器阵列310;

控制子电路10被配置为:

在多个计算单元CU的阻变存储器阵列310中依次存储快速傅里叶变换矩阵的第i级参数,以及控制翻转子电路20输出第i翻转序列至多个计算单元CU,i为依次取值1至N的整数;

多个计算单元CU被配置为:根据第i翻转序列进行运算,获得第i输出序列;

翻转子电路20被配置为:接收输入电路发送的输入序列,对输入序列的元素排序进行翻转,获得第一翻转序列;以及接收第i输出序列,对第i输出序列进行翻转,获得第i+1翻转序列;其中,第N+1翻转序列为快速傅里叶变换的结果序列。

具体的,多个计算单元CU组成一级运算子电路30,在实施FFT变换时,依次在多个计算单元CU的阻变存储器阵列310中存储第i级参数,然后通过翻转子电路20将第i翻转序列输入到多个计算单元CU中进行第i级的FFT变换,得到的第i级输出序列再返回到翻转子电路20进行翻转得到第i+1翻转序列,此时先擦除阻变存储器阵列310中的第i级参数,再存入第i+1级参数,然后将第i+1翻转序列作为新的输入进行第i+1级FFT变换。

故而,相应的处理方法包括:

S21:在初始化阶段,在多个计算单元CU的阻变存储器阵列310中存储快速傅里叶变换矩阵的第一级参数;

S22:在第一计算阶段,控制翻转子电路20对输入电路发送的输入序列的元素排序进行翻转,获得第一翻转序列并将第一翻转序列发送至多个计算单元CU,以使多个计算单元CU根据第一翻转序列进行运算,获得第一输出序列并将第一输出序列输出至翻转子电路20;

S23:在重置阶段,在多个计算单元CU的阻变存储器阵列310中存储快速傅里叶变换矩阵的第j级参数,j为依次取2至M的整数;

S24:在第二计算阶段,控制翻转子电路20对第j-1输出序列的元素排序进行翻转,获得第j翻转序列并将第j翻转序列输出至多个计算单元CU,以使多个计算单元CU根据第j翻转序列进行运算,获得第j输出序列并将第j输出序列输出至翻转子电路20;

S25:输出阶段,控制翻转子电路20对第M输出序列进行翻转,获得快速傅里叶变换的结果序列。

第二方面实施例提供的处理电路和处理方法,利用翻转子电路20和多个计算单元CU组成的运算子电路30可被复用的特点,通过调整控制子电路10的电路调度逻辑的方式实现了处理电路结构的简化,有利用进一步缩小处理电路的计算能耗和空间占用。

第三方面,在又一个可选的实施例中,提供了一种电子设备,包括第一方面实施例和第二方面实施例的处理电路。该电子设备可以是包括该处理电路的处理器或芯片,也可以是包括该处理电路的手机、电脑、服务器等整机设备。

尽管已描述了本申请的优选实施例,但本领域内的普通技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

相关技术
  • 充电电路、充电处理方法、电子设备及存储介质
  • 用于数字处理器及电路芯片的快速实现傅里叶变换的方法
  • 实现快速傅里叶变换/快速傅里叶逆变换的方法和电路
技术分类

06120116508410