数据分配装置、信号处理装置及其数据分配方法与流程

文档序号:12363679阅读:188来源:国知局
数据分配装置、信号处理装置及其数据分配方法与流程

本发明涉及一种数据分配方法,尤其涉及一种用于对实数快速傅立叶转换(Real-valued Fast Fourier transform;以下简称RFFT)输出数据的数据分配装置、信号处理装置及其数据分配方法。



背景技术:

快速傅立叶转换(Fast Fourier transform;以下简称FFT)已被广泛地应用于各种实数信号处理技术中,例如,人工耳蜗(cochlear implant;以下简称CI)、助听器及癫痫抑制等生医信号处理。在前述应用范例中,由于对信号的要求皆为实数,因此需要通过例如是复数快速傅立叶转换(Complex Fast Fourier transform;以下简称CFFT)运算方法来实现实数傅立叶转换。而为了提升运算效率及减轻硬件成本,诸如管线式(pipeline)架构等其他特定的算法还被提出,藉以改进CFFT运算方法。

由于运算FFT输出的振幅,通常需要实部(real part)数据及对应的虚部(imaginary part)数据两者皆产生后才能进行运算,因此当仅有实部数据或虚部数据产生时,需要先将其存储并等待相对应的虚部数据或实部数据产生。在现有的信号处理装置中,用于存储实部数据或虚部数据的存储单元(例如,寄存器(register)、缓冲器(buffer)等)的数量通常会设计成与FFT的运算点数相同。然而,前述设计架构恐耗费硬件制作成本且运作效率较低。



技术实现要素:

本发明提供一种数据分配装置、信号处理装置及其数据分配方法,其可提高实数快速傅立叶转换中输出排序的重整效率及运算效率,并减低其复杂度。

本发明提供一种数据分配方法,适用于信号处理装置,且此方法包括下列步骤。提供依序排列的多个存储单元。取得实数快速傅立叶转换 (Real-valued Fast Fourier transform;以下简称RFFT)输出数据中的单周期输出数据。根据生存期分析,判断单周期输出数据是否在RFFT输出数据当中具有最长的存储时间,其中此存储时间是RFFT输出数据存储在存储单元中的时间。将具有最长的存储时间的单周期输出数据输入至存储单元中的第一存储单元,其中第一存储单元在存储单元中排列在最后。将不具有最长的存储时间的单周期输出数据依序输入至存储单元中的第二存储单元,其中第二存储单元排列在第一存储单元之前。

本发明提供一种数据分配装置,此数据分配装置包括存储单元及控制单元。各存储单元依序排列。控制单元耦接各存储单元,分别传送控制信号至各存储单元以控制存储单元。控制单元取得RFFT输出数据中的单周期输出数据。控制单元根据生存期分析,判断RFFT输出数据中的单周期输出数据是否在RFFT输出数据当中具有最长的存储时间,其中存储时间是RFFT输出数据存储在存储单元中的时间。控制单元将具有最长的存储时间的单周期输出数据输入至存储单元中的第一存储单元,并将不具有最长的存储时间的单周期输出数据依序输入至存储单元中的第二存储单元。第一存储单元在存储单元中排列在最后,且第二存储单元排列在第一存储单元之前。

本发明提供一种信号处理装置,此信号处理装置包括RFFT运算模块、存储单元及控制单元。RFFT运算模块用以输出RFFT输出数据。各存储单元依序排列。控制单元耦接各存储单元,分别传送控制信号至各存储单元以控制存储单元。RFFT运算模块输出RFFT输出数据中的单周期输出数据。控制单元根据生存期分析,判断RFFT输出数据中的单周期输出数据是否在RFFT输出数据当中具有最长的存储时间,其中存储时间是RFFT输出数据存储在存储单元中的时间。控制单元将具有最长的存储时间的单周期输出数据输入至存储单元中的第一存储单元,并将不具有最长的存储时间的单周期输出数据依序输入至存储单元中的第二存储单元。第一存储单元在存储单元中排列在最后,且第二存储单元排列在第一存储单元之前。

基于上述,本发明实施例所提出的数据分配装置、信号处理装置及其数据分配方法,其根据生存期分析,依序判断RFFT输出信号是否会在存储单元中存储最长的存储时间,并将具有最长存储时间的RFFT输出信号输入至排序在最后的存储单元,且将不具有最长存储时间的RFFT输出信号依序输 入至最后的存储单元之前。据此,本发明实施例可提供较低复杂度的控制方法来达到RFFT输出信号的数据分配,进而提升运作效率。

为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。

附图说明

图1是依据本发明一实施例的信号处理装置的电路方块图;

图2A~图2F是运算模块的架构范例示意图;

图3是依据图2A的架构的生存期表;

图4是存储单元的电路方块图范例;

图5是依据本发明一实施例说明一种数据分配方法的流程图。

附图标记说明:

100:信号处理装置;

110:实数快速傅立叶转换运算模块;

150:数据分配装置;

151:存储单元;

151_1~151_6:第二存储单元;

151_7、151_8:第一存储单元;

155:控制单元;

211、212、213:蝴蝶运算模块;

214:相位旋转器;

215:开关单元;

216、217、218:乘法器;

219:置换器;

IN1、IN2:输入端;

OUT1~OUT4:输出端;

S1~S6:运算阶段;

S510~S590:步骤。

具体实施方式

在多种实数快速傅立叶运算的架构(例如,两倍并行(two parallel)RFFT架构等)中,在一个时钟周期内并不会将所有的输出数据同时输出,因此需要通过存储单元(例如,寄存器、缓冲器等)将一个时钟周期输出的部分输出数据暂存。而为了提升RFFT输出数据在存储单元中的排序效率及降低信号处理装置的复杂度,本发明实施例根据生存期分析,判断部分输出数据会存储于存储单元中的存储时间,并将具有最长存储时间的部分输出数据直接输入至排序在最后的存储单元,而其余的输出数据则依序输入至排序在这些后端存储单元前方的存储单元。以下提出符合本发明的精神的多个实施例,应用本实施例者可依其需求而对这些实施例进行适度调整,而不仅限于下述描述中的内容。

图1是依据本发明一实施例的信号处理装置的电路方块图。请参照图1,信号处理装置100包括实数快速傅立叶转换(RFFT)运算模块110及数据分配装置150。信号处理装置100可应用于人工电子耳、脑波监控装置、神经信号分析仪等电子装置,本发明不限制其应用方式。

依据不同设计需求,实数快速傅立叶转换(RFFT)运算模块110可包括(但不仅限于)处理单元(例如,中央处理器、微处理器等)、存储单元(例如,寄存器、缓冲器等)、加法器、多路复用器、乘法器等硬件元件、模块或单元。在本发明实施例中,RFFT运算模块110用以输出RFFT输出数据(或输出值)。

举例而言,图2A~图2F是文献[1]所提出产生RFFT输出数据的RFFT运算模块110的架构范例。(文献[1]:M.Garrido,K.K.Parhi and J.Grajal,“A pipeline FFT architecturefor Real-Valued Signals,”IEEE Trans.Circuits Syst.-IReg.Papers,Vol.56,No.12,2009年12月)请先参照图2A,RFFT运算模块110可包括蝴蝶(Butterfly)运算模块211、212、213、相位旋转器214、开关单元215、乘法器216、217、218及置换器219。输入信号(即,X(k),k为整数)输入至RFFT运算模块110,并经过RFFT运算模块110中数个运算阶段S1~S6运算后,即可依序输出RFFT输出数据。请参照图2A~图2D,不同运算阶段(例如,S1~S6)中蝴蝶运算模块211、212、213可分别由一个或多个加法器(图中以“⊕”表示)、一个或多个多路复用器MUX所组成。请继续参照图2A、图2E、图2F,乘法器216、218也可由一个或多个加 法器(图中以“⊕”表示)、一个或多个多路复用器MUX及一个或多个乘法单元所组成,并通过处理单元(未绘示)传送控制信号CTRL来对多路复用器MUX进行控制。

需说明的是,图2A~图2F所示仅为RFFT运算模块110的一种实施范例(两倍并行RFFT架构),依据设计需求,应用本发明实施例者可自行调整架构(例如,4倍、8倍等并行架构、2、4、16等基底架构等),然不以局限本发明。此外,在其他一些实施例中,RFFT运算模块110也可仅包括处理单元及存储单元,而处理单元可自存储单元载入软件(或固件)程序及RFFT输入值/信号,以将图2A中全部或部分硬件元件(例如,蝴蝶运算模块211、212、213、相位旋转器214等)的运算程序以程序化方式运行。

数据分配装置150包括一个或多个存储单元151及控制单元155。存储单元151可以是任何形态的固定或可移动随机存取存储器(random access memory;RAM)、快闪存储器或类似元件的寄存器、缓冲器、闩锁器等存储单元。在本发明实施例中,各存储单元151依序排列。例如,相互并联或串联的多个存储单元151可以组成一个缓冲电路、延迟电路等各种类型的电路。

在本发明实施例中,存储单元151的数量是根据生存期分析,并对RFFT运算模块110所输出的所有RFFT输出数据进行分析所决定。通过生存期分析来计算存储单元151的最少数量,可至少参考文献[2](K.K.Parhi,“Systematic synthesis of DSP data format converters using life-time analysis and forward-backward register allocation,”IEEE Trans.Circuits Syst.II,Express Briefs,vol.39,no.7,pp.423-440,1992年7月)的相关说明。例如,存储单元151的最少数量可表示成方程式(1):

<mrow> <munder> <mi>Max</mi> <mi>l</mi> </munder> <mo>[</mo> <mi>I</mi> <mrow> <mo>(</mo> <msub> <mi>T</mi> <mi>lat</mi> </msub> <mo>+</mo> <mi>l</mi> <mo>)</mo> </mrow> <mo>-</mo> <mi>O</mi> <mrow> <mo>(</mo> <msub> <mi>T</mi> <mi>lat</mi> </msub> <mo>+</mo> <mi>l</mi> <mo>)</mo> </mrow> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>

其中,I(n)及O(n)分别表示时间单位为n的情况下可变输入及输出的数量,Tlat为转换器的时间延迟,而l为时钟周期。

举例而言,图3是依据图2A的架构的生存期表。请参照图3,假设运算点数为64(即,64点实数傅立叶转换)。在图2A的两倍并行的架构下,每隔一个时钟周期所输出的单周期输出数据的数量为2。A0至A31表示RFFT的32个数据样本输出(即,RFFT输出数据),其中黑点表示实部数据,而虚线圆框表示相对应的虚部数据。每个数据样本(实部数据或虚部数据)可 能在相同或不同时钟周期中产生(即,RFFT运算单元110输出此数据样本),并且需要等到对应的虚部数据或实部数据产生后,才可将这组复数数据(即,实部数据及对应的虚部数据)输出并进行后续运算。而每个数据样本自RFFT运算单元110产生到最后输出所经过的时间区间可称为“活着(live)”的存储时间。

对照于生存期表中左栏的时钟周期数可得知,每个数据样本的产生及输出所对应的时钟周期。例如,数据样本A1的实部数据在第9时钟周期产生,并在第11时钟周期中,由于对应虚部数据的产生,而使得数据样本A1的实部数据及对应的虚部数据同时在第12时钟周期被输出。另一方面,对照于生存期表中右栏可表示,各时钟周期中分别需要存储单元151的数量。例如,在第11时钟周期中,需要6个存储单元151。而第6、10、14时钟周期中,具有最多“活着”的数据样本(即,8个)。因此,图2A的架构在运算点数为64的条件下,至少需要8个存储单元151(假设一个存储单元151存储一个数据样本)。

需说明的是,依据不同RFFT运算模块110的设计架构及运算点数,在不同实施例中,数据分配装置150所需要存储单元151的最少数量可能不同,且本发明实施例不以此为限。

在本发明实施例中,依据不同耦接方式,存储单元151可区分为第一存储单元及第二存储单元。第一存储单元在存储单元151中排列在最后,而第二存储单元排列在第一存储单元之前。

在一实施例中,第i个第二存储单元耦接于第i+N个第二存储单元,N为单周期输出数据的数量,且i介于1至第二存储单元的数量除以N所得的商数之间。例如,单周期输出数据的数量N为4且第二存储单元的数量为12,则i介于1到3之间,其中第1个第二存储单元耦接于第5个第二存储单元,其余依此类推。

需说明的是,单周期输出数据表示RFFT运算模块110每隔一个(其处理单元的)时钟周期所输出的部分RFFT输出数据。这些单周期输出数据的数量N是大于0的正整数(例如,2、3、4等)。依据不同RFFT运算模块110的设计架构,单周期输出数据的数量N也可能不同,且本发明实施例不以此为限。

举例而言,图4是存储单元151的电路方块图范例。请参照图4,图4中存储单元151的数量(即,8)是依据图2A的架构及运算点数为64的条件进行生存期分析所决定的。依据不同耦接方式,存储单元151可区分成第一存储单元151_7、151_8及第二存储单元151_1~151_6,第一存储单元151_7、151_8排列于第二存储单元151_1~151_6之后。假设图2A的RFFT运算模块110每隔一个时钟周期所输出的单周期输出数据的数量为2,则RFFT运算模块110的两个输出端分别连接至第二存储单元151_1、151_2的输入端,且可依据控制单元155所传送的控制信号(或是通过开关单元等)选择性地分别连接第一存储单元151_7、151_8的输入端。第1个第二存储单元151_1耦接于第3个第二存储单元151_3,而第3个第二存储单元151_3耦接于第5个第二存储单元151_5,其余依此类推。第一存储单元151_7、151_8及第二存储单元151_1~151_6的输出端可依据控制信号(或是通过开关单元等)选择性地分别连接数据分配装置150的输出端OUT1~OUT4。

控制单元155可以是CPU、微处理器、微控制器、系统单晶片(system on chip;以下简称SoC)或其他类似元件的处理单元,控制单元155分别传送控制信号(例如,时钟信号、开关切换信号、选择信号等)至各存储单元151(例如,图4中的第一存储单元151_7、151_8及第二存储单元151_1~151_6)以控制存储单元151。例如,存储单元151为移位寄存器,而控制单元155传送时钟信号的控制信号至存储单元151,以使收到此时钟信号的存储单元151将其所存储的RFFT输出数据输入至其耦接的另一个存储单元151。

需说明的是,依据不同设计需求,控制单元155可与RFFT运算模块110耦接,而RFFT运算模块110可传送相关于时钟周期的时钟信号,以使RFFT运算模块110及控制单元155可同步运作。

而为了方便理解本发明实施例的运作,以下举一实施例说明运作流程。图5是依据本发明一实施例说明一种数据分配方法的流程图。请参照图5,本实施例的方法适用于图1的信号处理装置100。下文中,将搭配信号处理装置100中的各元件说明本发明实施例所述的方法。本方法的各个流程可依照实施情形而随之调整,且并不仅限于此。

在步骤S510中,信号处理装置100根据生存期分析提供依序排列的存储单元151。存储单元151的排列方式可参照图1中存储单元151、图3的生存 期表及图4中电路的相关说明,于此不再赘述。值得注意的是,为了减少硬件制作成本并提升运作效率,在本发明实施例中,存储单元151的数量是依据生存期分析来决定最少所需要的数量(即,在所有时钟周期中,信号处理装置100至少需要多少存储单元151来存储RFFT输出数据)。

在步骤S530中,数据分配装置150自RFFT运算模块110取得RFFT输出数据中的单周期输出数据。以图2A为例,RFFT运算模块110输出两个单周期输出数据,则每隔一个时钟周期,数据分配装置150可取得两个单周期输出数据。

在步骤S550中,控制单元155根据生存期分析,判断单周期输出数据是否在RFFT输出数据当中具有最长的存储时间,其中此存储时间是RFFT输出数据存储在存储单元151中的时间。以图3为例,RFFT输出数据A8、A24的实部数据R8、R24需要经过8个时钟周期,其相对应的虚部数据才会产生。也就是说,RFFT输出数据A8、A24的实部数据R8、R24需要存储在存储单元151的存储时间为8,且在图3中所有RFFT输出数据A0~A31当中为最长的。

接着,控制单元155例如可记录此最长的存储时间以及对应的RFFT输出数据,并判断取得的单周期输出数据是否为此记录的RFFT输出数据。或者,例如是图3的生存期表可得知所有RFFT输出数据的产生(或RFFT运算模块110的输出)时间,控制单元155可事先记录产生出这些具有最长存储时间的RFFT输出数据所对应的时钟周期,并在这些时钟周期到达时,控制单元155可判断此时产生的RFFT输出数据所需存储时间为最长。或者,RFFT运算模块110例如可直接传送相关于存储时间的控制信号至控制单元155,以使控制单元155可藉以判断单周期输出数据是否具有最长的存储时间。

在步骤S570中,若数据分配装置150在当次时钟周期所取得的单周期输出数据具有最长的存储时间,则控制单元155将具有最长的存储时间的单周期输出数据输入至存储单元151中的第一存储单元。例如,控制单元155将具有最长的存储时间的单周期输出数据分别输入至图4中的第一存储单元151_7、151_8。

另一方面,在步骤S590中,若数据分配装置150在当次时钟周期所取得 的单周期输出数据不具有最长的存储时间,则控制单元155将不具有最长的存储时间的单周期输出数据依序输入至存储单元151中的第二存储单元(例如,图4中的第二存储单元151_1、151_2)。

在一实施例中,控制单元155将第二存储单元中的第i个第二存储单元中RFFT输出数据其中之一输出至第i+N个第二存储单元,并将取得的(不具有最长的存储时间)单周期输出数据分别输入至第1个第二存储单元至第N个第二存储单元。例如,以图4为例,单周期输出数据的数量N为2。若第二存储单元151_1、151_2中已存在其他RFFT输出数据,则控制单元155会先将第1个第二存储单元151_1中的RFFT输出数据输入至第3个第二存储单元151_3,而第2个第二存储单元151_2中的RFFT输出数据输入至第4个第二存储单元151_4。接着,控制单元155将取得的单周期输出数据分别输入至第1个第二存储单元151_1及第2个第二存储单元151_2。

此外,控制单元155判断存储单元151中是否存在一组复数数据,其中此组复数数据包括RFFT输出数据中的多个实部数据其中之一及对应的多个虚部数据其中之一,并将此组复数数据自存储单元151中输出。以图4为例,假设RFFT输出数据A15的实部数据R15存储在第一存储单元151_7,而RFFT输出数据A15的虚部数据I15存储在第二存储单元151_1,则控制单元155将RFFT输出数据A15的实部数据R15及虚部数据I15作为一组复数数据,并将此复数数据(即,实部数据R15及虚部数据I15)自数据分配装置150的输出端OUT1及OUT2输出。

而若第一存储单元中的RFFT输出数据不为此组复数数据,则控制单元155将第一存储单元中的RFFT输出数据继续存储于第一存储单元中。以图4为例,假设RFFT输出数据A24的实部数据存储在第一存储单元151_7,但当次时钟周期下所取得的当次输出数据并不是RFFT输出数据A24的虚部数据,则控制单元155继续将RFFT输出数据A24的实部数据存储在第一存储单元151_7。

为了让熟悉本领域的技术人员能轻易理解本发明的实施例,以下将另举一范例说明。表(1)是依据数据分配的范例。请同时参照表(1)、图3及图4,表(1)是依据图2的架构且运算点数为64的数据分配表。当在第1时钟周期时,数据分配装置150自RFFT运算模块110取得RFFT输出数据A8的实部数据 R8及RFFT输出数据A24的实部数据R24。而依据图3的生存期表,RFFT输出数据A8、A24的实部数据R8、R24具有最长的存储时间(即,8个时钟周期),因此控制单元155将RFFT输出数据A8的实部数据R8及RFFT输出数据A24的实部数据R24分别输入至图4中第一存储单元151_7及第一存储单元151_8。

表(1)

另一方面,当在第2时钟周期时,数据分配装置150取得RFFT输出数 据A4的实部数据R4及RFFT输出数据A28的实部数据R28。而依据图3的生存期表,RFFT输出数据A4、A28的实部数据R4、R28不具有最长的存储时间,因此控制单元155将RFFT输出数据A4的实部数据R4及RFFT输出数据A28的实部数据R28分别输入至图4中第二存储单元151_1及第二存储单元151_2。当在第4时钟周期时,由于RFFT输出数据A4、A28的虚部数据I4、I28也不具有最长的存储时间,因此控制单元155将RFFT输出数据A4的实部数据R4及RFFT输出数据A28的实部数据R28分别输入至图4中第二存储单元151_3及第二存储单元151_4,且将RFFT输出数据A4的虚部数据I4及RFFT输出数据A28的虚部数据I28分别输入至图4中第二存储单元151_1及第二存储单元151_2。

此外,当在第4时钟周期时,由于第二存储单元151_1~151_4存在两组复数数据(即,RFFT输出数据A4的实部数据R4及虚部数据I4、RFFT输出数据A28的实部数据R28及虚部数据I28),因此控制单元155可将这两组复数数据输出。需说明的是,其余RFFT输出数据的输入、输出及位移方式依此类推,于此不再赘述。

综上所述,本发明实施例的数据分配装置、信号处理装置及其数据分配方法根据生存期分析,提供最少所需数量存储单元的架构,并将具有最长存储时间的RFFT输出数据直接输入排序在最后的存储单元,且将不具有最长存储时间的RFFT输出数据依序输入排序在前方的存储单元。藉此,本发明实施例可适用于具有实数输出要求的多种生医平台,并提供低复杂度与高硬件运作效率的实现手段,从而有效降低硬件成本并缩短运算时间。此外,相较于文献[2]所述的前推后推寄存器分配法,本发明实施例更能减少功耗及硬件面积。并且,本发明实施例的输出排序也具有固定特性,进而较容易实现。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1