专利名称:数字信号处理装置的制作方法
技术领域:
本发明是关于一种处理数字信号的装置,而且特别是关于一种用于进行快速傅立叶转换等运算的数字信号处理装置。
背景技术:
正交频分复用(Orthogonal Frequency Division Multiplexing,OFDM)技术往往被使用于有线与无线通讯系统(例如ADSL、VDSL、IEEE 802.11a、HIPERLAN/2、DAB以及DVB-T)。进行快速傅立叶转换(Fast Fourier Transformation,FFT)与反快速傅立叶转换(Inverse FastFourier Transformation,IFFT)等运算的处理单元即为正交频分复用技术中的一重要功能模块。由于FFT/IFFT运算量非常大(例如DVB-T通讯系统需进行8192点FFT运算),因此通常适于硬件实现。
传统的固定基数(Fixed-Radix)或变换基数(Split-Radix)的快速傅立叶转换算法(Algorithm)推导,使得快速傅立叶转换能够快速而有效地以硬件来实现。其中变换基数快速傅立叶转换为常用算法中拥有最小的运算复杂度,可惜的是,变换基数快速傅立叶转换算法的信号处理流程图(Signal Flow Graph,SFG)会呈现L型(L-Shape)规则状,这使它在数字信号处理架构的实现上比起有固定蝴蝶运算(Butterfly Operation)架构的固定基数快速傅立叶转换还来得不易。因此,虽然有较大的运算复杂度,但固定基数快速傅立叶转换目前仍广泛为大众采用。其数字信号处理架构包括有管道架构(Pipeline)与单一处理单元架构两种类型,其中管道架构可以让输入输出资料源源不断地进出,其控制信号较为简单,在速度上也领先于单一处理单元架构。但是,管道架构比单一处理单元架构需要更多的硬件,因此增加了生产成本。反观之,单一处理单元架构的优点与特色则是电路面积小、所需的内存也最少,但也因此伴随较复杂的控制信号,例如需搭配该单一处理单元的蝴蝶运算的内存地址产生器,藉此控制资料的写入与读出动作,以利单一处理单元来执行完整的快速傅立叶转换。
图1A是说明16点快速傅立叶转换的信号处理流程图。图1B是说明一般单一处理单元的架构。请同时参照图1A与图1B,信号处理流程图的左边是要进行快速傅立叶转换运算的原始资料(在此以16点为例),右边则是完成快速傅立叶转换运算的目的资料。图中“”表示进行复数加法,“”表示进行复数乘法。进行快速傅立叶转换运算的原始资料需事先存放在内存110中。在进行第一步骤S1时,处理单元120按顺序自内存110中读取资料对[x(0)、x(8)]、[x(1)、x(9)]、[x(2)、x(10)]、…、[x(7)、x(15)]以分别进行一次蝴蝶运算(含加法、减法与乘法运算),并且将每次运算结果写回内存110。等到第一步骤(step)S1完成时,处理单元120开始进行第二步骤,亦即按顺序自内存110中读取第一步骤S1运算结果的资料对[x(0)、x(4)]、…、[x(3)、x(7)][x(8)、x(12)]、…、[x(11)、x(15)]以分别进行一次蝴蝶运算,并且将每次运算结果写回内存110。以此类推,以继续完成步骤S3与S4。因此即可以单一处理单元完成16点快速傅立叶转换运算。同样的方法可以类推至任意长度的快速傅立叶转换运算。
当所设计的快速傅立叶转换模块须支持不同长度运算以满足多种通讯系统标准时,例如在802.11a系统需64点快速傅立叶转换运算,而在802.16系统则需64~4096点快速傅立叶转换运算,如此一来,该快速傅立叶转换模块必须提供长度可扩充的功能,透过实时控制执行在标准所限定的时间内(Latency-Specified)所需的快速傅立叶或反快速傅立叶转换运算。从硬件设计的观点来看,单一处理单元架构比管道架构更能用来设计一可重配置(Re-Configurable)数字信号处理架构。
第一已知技术「Design and implementation of a scalable fast Fourier transformcore」(ASIC,2002.Proceedings.2002 IEEE Asia-Pacific Conference on,6-8 Aug.2002)一文中揭露一种以二个基数-2的快速傅立叶转换处理单元与回授路径的数字信号处理架构,如图2A所示。图2B是说明图2A的内存中存放资料的方法,系利用一无冲突内存寻址技术(Conflict FreeMemory Addressing)来作内存内资料的寻址,以64点快速傅立叶转换为例,图中号码表示进行快速傅立叶转换的信号处理流程图的原始资料位置。请同时参照图2A与图2B,欲进行快速傅立叶转换运算的原始资料很巧妙地安排存放于记忆库RAM-A~RAM-D中,使得在每一步骤所需的资料恰可从记忆库RAM-A~RAM-D同时存取而不会造成资料冲突(Conflict)的情形发生。
若以64点快速傅立叶转换运算为例,在阶段(stage)1中,地址产生器230产生出00、04、08、12的寻址信号给内存210。因此基数-4的处理单元220可以从记忆库RAM-A~RAM-D中分别读取第00、16、32、48个数字资料,并提供给处理单元220内部二个基数-2的蝴蝶运算处理单元进行第一步骤的蝴蝶运算,然后将运算结果回授后继续进行第二步骤的蝴蝶运算。进行完两个步骤的蝴蝶运算后,才将运算结果分别写回记忆库RAM-A~RAM-D中的原来位置(In-place)。重复上述操作,处理单元220从记忆库RAM-A~RAM-D中依序读取[49、01、17、33]、[34、50、02、18]、…、[47、63、15、31]数字资料,并将资料顺序回旋为
、
、…、[15、31、47、63],然后才提供给其内部二个蝴蝶运算处理单元进行第一步骤与第二步骤的蝴蝶运算。每次进行完两个步骤的蝴蝶运算后,即将运算结果分别写回记忆库RAM-A~RAM-D中的原来位置。
然后进行阶段2,重复进行类似上述的操作,处理单元220从记忆库RAM-A~RAM-D中依序读取
、…、
、[28、16、20、24]、…、[19、23、27、31]、[40、44、32、36]、…、[47、35、39、43]、[52、56、60、48]、…、[59、63、51、55]数字资料,并将资料顺序回旋为
、…、
、[16、20、24、28]、…、[19、23、27、31]、[32、36、40、44]、…、[35、39、43、47]、[48、52、56、60]、…、[51、55、59、63],然后才提供给其内部二个蝴蝶运算处理单元进行第三步骤与第四步骤的蝴蝶运算。每次进行完两个步骤的蝴蝶运算后,即将运算结果分别写回记忆库RAM-A~RAM-D中的原来位置。
最后进行阶段3,重复进行类似上述的操作,处理单元220从记忆库RAM-A~RAM-D中依序读取
、
、…、[62、63、60、61]数字资料,并将资料顺序回旋为
、
、…、[60、61、62、63],然后才提供给其内部二个蝴蝶运算处理单元进行第五步骤与第六步骤的蝴蝶运算。每次进行完两个步骤的蝴蝶运算后,即将运算结果分别写回记忆库RAM-A~RAM-D中的原来位置。至此即完成64点快速傅立叶转换运算。
第二已知技术「A low-power,high performance,1024-point FFT processor」(IEEE J.Solid State Circuits,vol.34,pp.380-387,Mar.1999)一文中将高速缓存加入快速傅立叶转换处理单元与主存储器之间,如图3所示。主存储器310存放着欲进行快速傅立叶转换运算的原始资料。高速缓存包括第0组高速缓存(快取0A与快取0B)以及第1组高速缓存(快取1A与快取1B)。在此假设第0组与第1组高速缓存各自具有8笔数据的存放空间,因此可以视处理单元320为基数-8的处理单元。当第0组高速缓存已经从主存储器310加载8笔数字资料(快取0A与快取0B各4笔),并依序将蝴蝶运算所需的数据对提供给处理单元320时,第1组高速缓存开始从主存储器310加载接下来8笔数字资料(快取1A与快取1B各4笔)。待第1组高速缓存开始依序将蝴蝶运算所需的数据对提供给处理单元320时,第0组高速缓存立即将先前的运算结果写回主存储器310的对应地址,并且从主存储器310加载接下来8笔数字资料。
第三已知技术「A dynamic scaling FFT processor for DVB-T applications」(IEEEJ.Solid-State Circuits,vol.39,pp.2005-2013,Nov.2004)一文中揭露一种更加节省高速缓存的数字信号处理装置,如图4所示。图4中,处理单元420是进行基数-8蝴蝶运算的处理器,因此对应地,主存储器410具有8个记忆库,并且高速缓存430为具有8×8个记忆单元的快取矩阵。图5是说明64点快速傅立叶转换运算且基数-8的信号处理流程图。于图5中,每一个基数-8的蝴蝶运算(例如图中圆圈500即表示一个基数-8的蝴蝶运算)可以视为进行三个步骤(step)的基数-2蝴蝶运算。此一数字信号处理装置中,高速缓存430每次从主存储器410读取64笔数据,此64笔数据会依序由列的方向写入高速缓存430。填满完毕后,接下来分8次,每次经由总线BUS,自高速缓存的列的方向提供8笔数据给处理单元420进行基数-8的蝴蝶运算,并经由总线BUS以运算结果更新高速缓存430,此即为图5中的第1级(stage 1)运算。然后进行第2级(stage 2)运算,高速缓存430再将其中更新过的64笔资料以行方向的顺序分8次输出,每次经由总线BUS提供8笔资料给处理单元420进行基数-8的蝴蝶运算,然后将运算结果经由总线BUS与标准化单元(normalized unit)440写回主存储器410。因此,处理单元420与高速缓存430可以视为一个基数-64蝴蝶运算的处理器。
图6A是说明高速缓存430中8×8个记忆单元的快取矩阵存放资料的顺序。图中每一个圆圈表示一个记忆单元,而圆圈中的号码则表示信号处理流程图中输入资料的次序。请同时参照图5与图6A,当处理单元420在进行第1级运算时,高速缓存430逐列(column)输出数据给处理单元420。例如,高速缓存430输出第1列(即第0~7笔数据)给处理单元420,以便进行圆圈500的基数-8蝴蝶运算,以此类推。处理单元420每完成一次基数-8蝴蝶运算后,即将运算结果写回高速缓存430的相对应位置,以更新高速缓存430所储存的数据。
图6B是说明处理单元420在进行第2级运算时,高速缓存430的快取矩阵输出资料的顺序。当处理单元420在进行第2级运算时,高速缓存430逐行(row)输出数据给处理单元420。例如,高速缓存430输出第1行(即第0、8、16、24、32、40、48、56笔数据)给处理单元420以便进行第2级运算中第1个基数-8蝴蝶运算,运算完毕后,处理单元420即将此行的运算结果透过总线BUS经由标准化单元440写回主存储器410,然后高速缓存430输出第2行(即第1、9、17、25、33、41、49、57笔数据)给处理单元420以便进行第2级运算中第2个基数-8蝴蝶运算,以此类推。
当欲处理高点数的快速傅立叶转换时,每次会将快速傅立叶转换的信号处理流程图区分成多组以64点为单位的资料区块,处理程序分成三种组态,主存储器写入高速缓存,高速缓存与处理单元做资料的蝴蝶运算,以及处理单元将运算结果写回主存储器。当主存储器透过总线BUS将数据写入高速缓存时,偶数编号区块一律由高速缓存的行方向依序写入,共分8次(row1,row2,…row8),每次写8笔资料,而奇数编号区块一律由高速缓存的列方向依序写入,共分8次(column1,column2,…column8),每次写8笔资料。接下来,高速缓存与处理单元透过总线BUS交换数据作两级(2 stages,即row operation与columnoperation)运算,对偶数编号区块资料而言,会先依序处理列方向蝴蝶运算(column1,column2,…column8)再接下去完成行方向蝴蝶运算(row1,row2,…row8),对奇数编号区块资料而言则先依序处理行方向蝴蝶运算(row1,row2,…row8),之后再完成列方向蝴蝶运算(column1,column2,…column8)。同样地,当完成第二级的蝴蝶运算后,处理单元即将偶数编号区块的行方向运算结果透过总线BUS依序写回主存储器,每当某行结果写回主存储器完毕后,主存储器即可同时将下一个奇数区块中的8笔数据写入该行的高速缓存,直至高速缓存被新的奇数数据区块填满。而对奇数编号区块而言,处理单元则将列方向运算结果透过总线BUS依序写回主存储器,每当某列结果写回主存储器完毕后,主存储器即可同时将下一个偶数区块中的8笔数据数据写入该列的高速缓存,直至高速缓存被新的偶数数据区块填满。实际运算时亦可将偶数编号区块资料与奇数编号区块资料的行与列处理方向与上述相反。
综上所述,已知技术至少存在下述缺点在上述第一已知技术中,由于其架构没有高速缓存,因此处理单元必须对主存储器进行繁复的数据存取操作。对主存储器进行频繁的存取将导致效能的降低,并增加功率损耗。
在上述第二已知技术中,藉由加入高速缓存,可降低处理单元与主存储器间的数据存取次数,因而减少功率消耗,而使用两组高速缓存更可增加数据处理的平行度,但是付出的代价是占据较多的电路面积、增加制造成本。另外,以乒乓式切换操作二组高速缓存将需要较复杂的控制机制。
在上述第三已知技术中,主存储器藉由行方向或是列方向将区块数据写入高速缓存,处理单元并对该高速缓存的数据做两级(2 stages)的交替运算,之后将区块运算结果由列或是行方向写回主存储器,因为重复利用区块资料蝴蝶运算特性,所以只需一组高速缓存,其功率的消耗会少于第二已知技术。由于处理单元420、高速缓存430与标准化单元440全部耦接至同一组总线BUS,因此将导致其实体制作时的绕线(routing)复杂度大幅增加,相对的亦增加了制造成本。再者,由于几乎其所有的构件都共同耦接至同一组总线BUS,因此需要更复杂的控制机制来管理总线BUS。
发明内容
本发明的目的就是提供一种数字信号处理装置,以较简单的控制机制、单组高速缓存来进行基数-R的数字信号处理。
本发明的再一目的是提供另外一种数字信号处理装置的结构,以实现上述诸目的。
本发明的又一目的是提供另外一种数字信号处理装置的结构,除上述诸目的外,更使处理单元于完成运算后,直接将运算结果写回主存储器而不经由高速缓存,以提升操作效率。
本发明的另一目的是提供另外一种数字信号处理装置的结构,以更简化的构件实现上述诸目的。
基于上述及其它目的,本发明提出一种数字信号处理装置,其包括一主存储器、一处理单元、一高速缓存(cache)以及一回旋缓冲(rotate-buffer)单元。主存储器至少具有R个记忆库,用以储存代表该数字信号的多个资料,其中R为整数。处理单元系为将数据运算处理的处理器。高速缓存耦接于主存储器与处理单元之间。高速缓存至少具有R×R个记忆单元,用以储存主存储器中的部分资料,以提供处理单元运算所需的资料,以及暂存该处理单元的运算结果。回旋缓冲单元耦接于主存储器与高速缓存之间,用以缓冲各记忆库所输出的数据并作回旋位移,以输出至高速缓存;以及缓冲部分记忆单元所输出的资料并作回旋位移,以分别写回至对应的记忆库。
从另一观点来看,本发明提出一种数字信号处理装置,包括一主存储器、一处理单元、一高速缓存、一第一回旋缓冲器以及一第三回旋缓冲器。主存储器至少具有R个记忆库,用以储存代表该数字信号的多个资料,其中R为整数。处理单元系为将数据运算处理的处理器。高速缓存耦接于主存储器与处理单元之间。高速缓存至少具有R×R个记忆单元,用以储存主存储器中的部分资料,以提供处理单元运算所需的资料,以及暂存处理单元的运算结果。第一回旋缓冲器耦接于主存储器与高速缓存之间,用以缓冲各记忆库所输出的数据并作回旋位移,以输出至高速缓存。第三回旋缓冲器耦接于主存储器与高速缓存之间,以及耦接于处理单元与高速缓存之间。第三回旋缓冲器缓冲部分记忆单元所输出的资料并作回旋位移,以分别写回至对应的记忆库。另外第三回旋缓冲器暂存高速缓存的输出以提供处理单元运算所需的数据。第三回旋缓冲器更暂存处理单元的运算结果以写回至高速缓存中对应的位置。
本发明再提出一种数字信号处理装置,包括一主存储器、一处理单元、一高速缓存、一第一回旋缓冲器以及一第四回旋缓冲器。主存储器至少具有R个记忆库,用以储存代表数字信号的多个资料,其中R为整数。处理单元系为将数据运算处理的处理器。高速缓存耦接于主存储器与处理单元之间。高速缓存至少具有R×R个记忆单元,用以储存主存储器中的部分资料以提供处理单元运算所需的资料,以及暂存处理单元的运算结果。第一回旋缓冲器耦接于主存储器与高速缓存之间,用以缓冲各记忆库所输出的数据并作回旋位移,以输出至高速缓存。第四回旋缓冲器耦接于主存储器与处理单元之间,用以缓冲处理单元所输出的运算结果并作回旋位移,以分别写回至对应的记忆库。
本发明另提出一种数字信号处理装置,包括一主存储器、一处理单元、一高速缓存以及一回旋缓冲单元。主存储器至少具有R个记忆库,用以储存代表数字信号的多个资料,其中R为整数。处理单元系为将数据运算处理的处理器。高速缓存耦接于主存储器与处理单元之间。高速缓存至少具有R×R个记忆单元,用以储存该主存储器中的部分资料,以提供该处理单元运算所需的数据。高速缓存暂存处理单元的运算结果,以及将储存于各记忆单元的资料写回至对应的记忆库。回旋缓冲单元耦接于处理单元与高速缓存之间,用以缓冲部分记忆单元所输出的资料并作回旋位移,以提供处理单元运算所需的数据。回旋缓冲单元更用以缓冲处理单元所输出的运算结果并作回旋位移,以分别写回至对应的记忆单元。
本发明的数字信号处理装置由于采用适用于基数-R的快速傅立叶转换处理单元、R×R快取、R个记忆库的算法,并配置回旋缓冲单元于处理单元与高速缓存之间、高速缓存与主存储器之间及/或主存储器与处理单元之间,因此可以适于进行长度可变的快速傅立叶转换运算,具有较低的计算复杂度,且其执行时间可适于各种通讯标准的要求。另外,本发明因使用回旋缓冲单元,因此降低了在实体制作时的绕线(routing)复杂度。除此的外,本发明更具有低功率消耗、高效率与节省存储元件等优点。
为让本发明的上述和其它目的、特征和优点能更明显易懂,下文特举优选实施例,并配合所附图式,作详细说明如下。
附图简要说明图1A是说明16点快速傅立叶转换的信号处理流程图。
图1B是说明一般单一处理单元的架构。
图2A是说明已知以二个基数-2的快速傅立叶转换处理单元与回授路径所构成的数字信号处理架构。
图2B是说明图2A的内存中存放资料的方法。
图3是说明已知具有高速缓存的数字信号处理架构。
图4是说明一种以基数-8的快速傅立叶转换处理单元与高速缓存的数字信号处理装置。
图5是说明64点快速傅立叶转换且基数-8蝴蝶运算的信号处理流程图。
图6A是说明图4的高速缓存中8×8个记忆单元的快取矩阵存放资料的顺序。
图6B是说明图4的处理单元在进行第2级运算时,高速缓存的快取矩阵输出资料的顺序。
图7是依照本发明说明一种数字信号处理装置的实施范例。
图7A是依照本发明说明主存储器、高速缓存与处理单元之间在时间上的操作顺序。
图8是说明图7中记忆库的数据结构。
图9A是依照本发明说明一种需进行8192点FFT运算的DVB-T通讯系统的实施例。
图9B是依照本发明的实施例说明图9A的信号处理流程图。
图9C~9E是依照本发明以另一方式说明进行8192、2048、4096点快速傅立叶转换运算的信号处理流程图(SFG)。
图10~13是依照本发明说明数字信号处理装置的其它实施例。
具体实施例方式
图7是依照本发明说明一种数字信号处理装置的实施例。请参照图7,数字信号处理装置700包括主存储器710、处理单元720、高速缓存(cache)730、回旋缓冲单元740以及数据缓冲器750。为方便说明本发明,于本实施例中是假设处理单元720是进行基数-8快速傅立叶转换运算的处理器,因此主存储器应至少具有8个记忆库MB1~MB8,用以储存代表数字信号的多个资料。实施本发明者当可依照本发明的精神与下述诸实施例的教示,而类推至基数-R(R为整数)的数字信号处理。
于本实施例中,记忆库MB1~MB8可以是单埠内存。亦可以使用双端口内存实施记忆库MB1~MB8。其中,记忆库MB1~MB8中资料的配置方法不拘,熟习此技术者可视其需要而任意安排其数据结构。于本实施例中将使用前述第一已知技术中所揭露配置资料的方法(其配置结果如图8所示),而详细步骤将不在此赘述。
首先说明主存储器710、高速缓存730与处理单元720之间在时间上的操作顺序,如图7A所示,共可分成三种组态组态1、组态2、组态3。其中组态1表示主存储器710将数据依序输出至高速缓存730的行方向或是列方向,组态2表示高速缓存730与处理单元720之间的数据存取,而组态3则表示高速缓存730将完成运算后的数据依列的方向或是行的方向依序存回主存储器710,而高速缓存730每写回一组列数据或是行资料至主存储器后,此时主存储器便可同时搬下一个资料区块的8笔数据覆盖该列或是该行的高速缓存,直至高速缓存被新的数据区块填满。此操作系用以增加数据处理的平行度,所以基本上在某段时间内,组态1与组态3会有操作上的时间重叠,以下的段落为了说明上的方便,省略此重叠叙述,而以组态会依序进行说明本发明实施例的操作原理。
图8是说明图7中记忆库MB1~MB8的数据结构。图中号码表示进行快速傅立叶转换的信号处理流程图(Signal Flow Graph,SFG)的原始资料位置。其中包含了点数小于等于128点的快数傅立叶转换的资料排列方式,欲进行快速傅立叶转换运算的原始资料很巧妙地安排存放于记忆库MB1~MB8中,使得在每次读取所需资料时,其恰可同时从记忆库MB1~MB8读出而不会有资料冲突(Conflict)的情形发生。
由于资料在记忆库中是采用第一已知技术所揭露的回旋排列方式,图7中加入的回旋缓冲器741会将主存储器写入高速缓存的数据做反回旋排列,与回旋缓冲器742将高速缓存存回主存储器的运算结果做回旋排列,如此可简化处理单元720中的蝴蝶运算控制方式、地址产生方式、转动系数产生方式与整个控制机制。此外藉由加入回旋缓冲器741与742,可将绕线复杂度集中在回旋缓冲器与高速缓存之间,于是主存储器710、高速缓存730与处理单元720间便不需透过总线BUS来连接所有的相关组件。
请继续参照图7,回旋缓冲单元740耦接于主存储器710与高速缓存730之间,用以缓冲记忆库MB1~MB8所输出的数据并作回旋位移以输出至高速缓存730,以及用以缓冲高速缓存730中部分记忆单元所输出的资料并作回旋位移以分别写回至对应的记忆库MB1~MB8。于本实施例中,回旋缓冲单元740包括第一回旋缓冲器741与第二回旋缓冲器742。第一回旋缓冲器741耦接于主存储器710与高速缓存730之间,用以进行组态1,亦即缓冲记忆库MB1~MB8所输出的数据并作回旋位移,以输出至高速缓存730。第二回旋缓冲器742耦接于主存储器710与高速缓存730之间,用以进行组态3,亦即缓冲高速缓存730中部分记忆单元所输出的资料并作回旋位移,以分别写回至对应的记忆库MB1~MB8中。其中,第一回旋缓冲器741与第二回旋缓冲器742系将数据向左或向右做位置回旋位移。
高速缓存耦接于主存储器710与处理单元720之间。由于本实施例中R被设定为8,因此高速缓存720至少应具有8×8个记忆单元,以便储存主存储器710的部分资料,以提供处理单元720运算所需的资料,以及暂存处理单元720的运算结果。高速缓存720的各记忆单元中数据的配置方法不拘,熟习此技术者可视其需要而安排其数据结构。于本实施例中将使用前述第三已知技术中所揭露高速缓存的配置资料方法(其配置结果可参照图6A所示)。
例如,请同时参照图7、图8与图6A,藉由控制单元724的控制以及地址产生器723的寻址,高速缓存730经由回旋缓冲器741而分别从记忆库MB1~MB8读取地址0的资料0、1、…、7,并且依序存放在高速缓存730第1列(column)的记忆单元中。接下来,回旋缓冲器741再分别从记忆库MB1~MB8读取下一组(地址1)资料15、8、9、…、14,然后将资料顺序回旋位移为8、9、…、14、15并输出给高速缓存730。高速缓存730即可将所接收的数据8、9、…、14、15依序存放在其第2列的记忆单元中。以此类推,直至高速缓存730中64个记忆单元全部备妥资料,而完成组态1的操作。
数据缓冲器750耦接于处理单元720与高速缓存730之间,用以缓冲高速缓存730的输出以提供处理单元720运算所需的资料,以及缓冲处理单元720的运算结果以写回至高速缓存730中对应的位置。熟习此技术者可以视需要而省去资料缓冲器750,使得处理单元720直接耦接至高速缓存730。
由于本实施例中处理单元720是基数-8快速傅立叶转换运算的处理器,因此处理单元720中运算单元721配置有4个进行基数-2快速傅立叶转换运算的蝴蝶运算单元BU1~BU4。藉由透过转动系数产生器(twiddle factor generator)722的控制,运算单元721即可对所接收的8笔数据进行三步骤(3-steps)的蝴蝶运算,即完成基数-23快速傅立叶转换运算(其信号处理流程图可参照图5所示)。
例如,请同时参照图7、图5、图6A与图6B,当处理单元720在进行第1级运算时,高速缓存730逐列输出数据给处理单元720。例如,高速缓存730输出第1列(即第0~7笔数据)给处理单元720,以便进行基数-8的蝴蝶运算,以此类推。处理单元720每完成一次基数-8蝴蝶运算后,即将运算结果写回高速缓存730的相对应位置,以更新高速缓存730所储存的数据。然后,当处理单元720在进行第2级运算时,高速缓存730逐行(row)输出数据给处理单元720(可以参照图6B)。例如,高速缓存730输出第1行(即第0、8、16、24、32、40、48、56笔数据)给处理单元720以便进行第2级运算中第1个基数-8蝴蝶运算,然后高速缓存730输出第2行(即第1、9、17、25、33、41、49、57笔数据)给处理单元720以便进行第2级运算中第2个基数-8蝴蝶运算,以此类推,而完成组态2的操作。
因此,每从主存储器710中读取64笔数据并存放于高速缓存730,处理单元720即可依照上述的操作方法而完成64点快速傅立叶转换运算。当处理单元720完成64点快速傅立叶转换运算后,即将高速缓存730所存的计算结果写回主存储器710,而完成组态3的操作。然后重复进行组态1的操作,亦即再从主存储器710读出另外一组(64笔)数据并存放于高速缓存730,处理单元720即可重复上述的操作方法而完成另一次64点快速傅立叶转换运算。
若欲计算的资料点数越多(例如DVB-T通讯系统需进行8192点FFT运算),则本实施例数字信号处理装置700效能的提升越显著。
图9A是依照本发明说明一种需进行8192点快速傅立叶转换运算的DVB-T通讯系统的实施例。图9B是依照本发明的实施例说明图9A的信号处理流程图。欲进行快速傅立叶转换运算的8192点资料被拆分为2组资料(各为4096点)910与920,各自处理完成后,最后以基数-2的蝴蝶运算进行合并。
请同时参照图7、图9A与图9B,系可利用一组数字信号处理装置700来实现图9A的8192点的快速傅立叶转换。依照本发明的实施例,其信号处理流程图可画分成第一与第二阶段的256个64点的资料区块SFG1-1~SFG2-128与第三阶段的基数-2蝴蝶运算合并SFG3。首先数字信号处理装置700依序进行64点的蝴蝶运算SFG1-1~SFG1-128,接下来继续完成区块资料SFG2-1~SFG2-128。最后第三阶段的数据处理,并不需透过高速缓存730,而直接于主存储器710与处理单元720间存取,亦即主存储器710直接搬8笔数据到处理单元720,利用四个蝴蝶运算单元BU1~BU4做一步骤的蝴蝶运算,之后将这8笔运算结果直接写回内存710的原来位置,接下来再搬另外8笔数据做类似的处理。完成此基数-2的蝴蝶运算合并后,即完成整个8192点的快速傅立叶转换运算。
图9C是依照本发明以另一方式实现8192点快速傅立叶转换运算的信号处理流程图(SFG)。其中方块0~127分别表示利用数字信号处理装置700进行64点的蝴蝶运算SFG1-1~SFG1-128,方块128~255分别表示进行蝴蝶运算SFG2-1~SFG2-128,而方块256~383分别表示进行蝴蝶运算SFG3-1~SFG3-128。在运算时的顺序应该为先处理第一阶段(方块0~127),之后再处理第二阶段(方块128~255),最后再来处理第三阶段(方块256~383)。方块0~255中分别会进行第1级与第2级的蝴蝶运算(即对高速缓存730的行与列进行运算),而每一级中则包含第1步骤、第2步骤与第3步骤的蝴蝶运算,如图9C所示。方块256~383的处理则不同于图9B,主存储器亦透过高速缓存730与处理单元720做蝴蝶运算,亦即先从主存储器710搬64笔资料依列的顺序依序写入高速缓存730,接下来从高速缓存730依列的顺序依序读取到处理单元720只做第1级运算,而此第1级运算只包含第1步骤蝴蝶运算,运算完毕之后,把高速缓存730的64笔资料依列的顺序依序写回内存710的原来位置。接下来再搬另外64笔资料做类似的操作,以上的操作对于偶数或是奇数编号区块其处理方式皆相同。
图9E是依照本发明说明进行4096点快速傅立叶转换运算的信号处理流程图(SFG)。其中方块0~63与方块64~127分别表示利用数字信号处理装置700进行的64点的蝴蝶运算SFG1-1~SFG1-64与SFG2-1~SFG2-64,在运算时的顺序为先处理第一阶段(方块0~63),之后再处理第二阶段(方块64~127)。图9D则是依照本发明说明进行2048点快速傅立叶转换运算的信号处理流程图(SFG)。其中方块0~31与32~63分别表示利用数字信号处理装置700进行的64点的蝴蝶运算SFG1-1~SFG1-32与SFG2-1~SFG2-32。在运算时的顺序为先处理第一阶段(方块0~31),之后再处理第二阶段(方块32~63),其中蝴蝶运算SFG1-1~SFG1-32与前述实施例相似,故不在此赘述,而SFG2-1~SFG2-32的第一级操作与SFG1-1~SFG1-32的第一级操作相同,但其第二级运算只需进行两步骤的蝴蝶运算。
综上所述,依照本发明进行2048、4096、8192点快速傅立叶转换运算的操作汇整于表1。
表1是说明2048、4096、8192点快速傅立叶转换的操作表
相较于上述第一已知技术,本实施例因具有高速缓存,因此可以大幅降低对主存储器进行的资料存取次数,进而提升效能。相较于上述第二已知技术,本实施例可以只使用单一组高速缓存,因此可以简化控制机制、减少功率消耗、节省电路面积、并降低制造成本。相较于上述第三已知技术,本实施例因处理单元、高速缓存与主存储器之间不存在共同的总线,因此可以大幅减少实体制作时的绕线(routing)复杂度,亦简化了控制机制,相对地降低了制造成本。
以下再举一实施例,以便于清楚说明本发明。图10是依照本发明说明另一种数字信号处理装置的实施例。请参照图10,数字信号处理装置1000包括主存储器1010、处理单元1020、高速缓存1030、第一回旋缓冲器1040以及第三回旋缓冲器1050。主存储器1010至少具有R个记忆库,用以储存代表数字信号的多个资料,其中R为整数(在此R例如等于8)。在此,处理单元1020与主存储器1010分别相似于图7的处理单元720与主存储器710,因此不再赘述。
高速缓存1030耦接于主存储器1010与处理单元1020之间。高速缓存1030至少具有R×R个记忆单元,用以储存主存储器1010中的部分资料以提供处理单元1020运算所需的资料,以及暂存处理单元1020的运算结果。回旋缓冲器1040耦接于主存储器1010与高速缓存1030之间,用以缓冲主存储器1010的各记忆库所输出的数据并作回旋位移,以输出至高速缓存1030。回旋缓冲器1040的操作可以参照图7中回旋缓冲器741的说明。
回旋缓冲器1050耦接于主存储器1010与高速缓存1030之间,以及耦接于处理单元1020与高速缓存1030之间。回旋缓冲器1050缓冲高速缓存1030的部分记忆单元所输出的资料并作回旋位移以分别写回至主存储器1010中对应的记忆库。回旋缓冲器1050更暂存高速缓存1030的输出以提供处理单元1020运算所需的资料,以及暂存处理单元1020的运算结果以写回至高速缓存1030中对应的位置。回旋缓冲器1050的操作可以参照图7中回旋缓冲器742与资料缓冲器750的说明。
图11是依照本发明说明另一种数字信号处理装置的实施例。请参照图11,数字信号处理装置1100包括主存储器1110、处理单元1120、高速缓存1130、第一回旋缓冲器1140、数据缓冲器1150以及第四回旋缓冲器1160。于本实施例中,主存储器1110、处理单元1120、高速缓存1130、第一回旋缓冲器1140以及数据缓冲器1150譬如分别与图7中主存储器710、处理单元720、高速缓存730、回旋缓冲器741与资料缓冲器750相似,因此其相同部分不在此赘述。
处理单元1120在完成第1级运算后即将其运算结果经由资料缓冲器1150写回高速缓存1130中。当处理单元1120在第2级运算时,每完成一个基数-8蝴蝶运算后,即将运算结果送至回旋缓冲器1160,而不再写回高速缓存1130。
回旋缓冲器1160耦接于主存储器1110与处理单元1120之间。回旋缓冲器1160缓冲处理单元1120所输出的运算结果并作回旋位移(其回旋操作相似于图7的回旋缓冲器742),以分别写回至主存储器1110中对应的记忆库。
图12是依照本发明说明一种数字信号处理装置的另一实施例。请参照图12,数字信号处理装置1200包括主存储器1210、处理单元1220、高速缓存1230以及回旋缓冲单元1240。其中,主存储器1210、处理单元1220以及高速缓存1230譬如分别与图7中主存储器710、处理单元720与高速缓存730相似,因此其相同部分不在此赘述。
于本实施例中,高速缓存1230的数据结构并不同于前述诸实施例。高速缓存1230与主存储器1210之间并没有回旋缓冲器,因此储存于高速缓存1230中的资料顺序是相依于主存储器1210所输出资料的顺序。
回旋缓冲单元1240耦接于处理单元1220与高速缓存1230之间。由于高速缓存1230输出R笔数据的顺序尚未回旋,因此需藉由回旋缓冲单元1240缓冲高速缓存1230的部分记忆单元所输出的R笔资料并作回旋位移而调整为正确顺序后,才输出提供处理单元1220运算所需的数据。处理单元1220完成运算后,将R笔运算结果输出至回旋缓冲单元1240。回旋缓冲单元1240将处理单元1220输出的R笔运算结果调整为原先顺序后,输出至高速缓存1230对应的记忆单元以更新其数据。待处理单元1220完成R×R点快速傅立叶转换运算的第1级运算与第2级运算后,高速缓存1230即将其中所存的R×R点运算结果写回主存储器1210。
图13是依照本发明说明一种数字信号处理装置的另一实施例。请参照图13,数字信号处理装置1300包括主存储器1310、处理单元1320、高速缓存1330以及回旋缓冲单元1340。其中,主存储器1310、处理单元1320、高速缓存1330以及回旋缓冲单元1340譬如分别与图12中主存储器1210、处理单元1220、高速缓存1230以及回旋缓冲单元1240相似,因此其相同部分不在此赘述。
其中,处理单元1320更耦接至主存储器1310。如前一实施例所述,处理单元1320在完成第1级运算后即将其运算结果经由回旋缓冲单元1340写回高速缓存1330中。当处理单元1320在进行第2级运算时,处理单元1320每完成一个基数-8蝴蝶运算后,即将运算结果直接写回至主存储器1310中对应的记忆库,而不再写回高速缓存1330。
综上所述,由于在本发明的数字信号处理装置采用适用于基数-R的快速傅立叶转换处理单元、R×R快取、R个记忆库的算法,并配置回旋缓冲单元于处理单元与高速缓存之间、高速缓存与主存储器之间及/或主存储器与处理单元之间,因此可以适于进行长度可变的快速傅立叶转换运算,具有较低的计算复杂度,且其执行时间可适于各种通讯标准的要求。另外,本发明因使用回旋缓冲单元,因此降低了在实体制作时的绕线(routing)复杂度。除此之外,本发明更具有低功率消耗、高效率与节省存储元件等优点。
虽然本发明已以较佳实施例公开如上,但其并非用以限定本发明,任何熟悉此技术者,在不脱离本发明的精神和范围内,当可作些许的变动与修改,因此本发明的保护范围应以本申请的权利要求所界定的范围为准。
权利要求
1.一种数字信号处理装置,包括一主存储器,至少具有R个记忆库,用以储存代表该数字信号的多个资料,其中R为整数;一处理单元,系为将数据运算处理的处理器;一高速缓存,耦接于该主存储器与该处理单元之间,该高速缓存至少具有R×R个记忆单元,用以储存该主存储器中的部分资料以提供该处理单元运算所需的资料,以及暂存该处理单元的运算结果;以及一回旋缓冲单元,耦接于该主存储器与该高速缓存之间,用以缓冲该些记忆库所输出的数据并作回旋位移以输出至该高速缓存,以及用以缓冲部分该些记忆单元所输出的资料并作回旋位移以分别写回至对应的该些记忆库。
2.如权利要求1所述的数字信号处理装置,其中更包括一数据缓冲器,耦接于该处理单元与该高速缓存之间,用以暂存该高速缓存的输出以提供该处理单元运算所需的资料,以及暂存该处理单元的运算结果以写回至该高速缓存中对应的位置。
3.如权利要求1所述的数字信号处理装置,其中该些记忆库分别为单端口内存与双埠内存二者之一。
4.如权利要求1所述的数字信号处理装置,其中该处理单元为一基数-R的处理器。
5.如权利要求1所述的数字信号处理装置,其中该回旋缓冲单元包括一第一回旋缓冲器,耦接于该主存储器与该高速缓存之间,用以缓冲该些记忆库所输出的数据并作回旋位移,以输出至该高速缓存;以及一第二回旋缓冲器,耦接于该主存储器与该高速缓存之间,用以缓冲部分该些记忆单元所输出的资料并作回旋位移,以分别写回至对应的该些记忆库。
6.如权利要求5所述的数字信号处理装置,其中该第一回旋缓冲器与该第二回旋缓冲器系将数据向左或向右做位置回旋位移。
7.如权利要求1所述的数字信号处理装置,其中该处理单元更直接耦接至该主存储器,以便当该处理单元进行基数-2的蝴蝶运算时,使该处理单元不需经过该高速缓存而直接存取该主存储器。
8.一种数字信号处理装置,包括一主存储器,至少具有R个记忆库,用以储存代表该数字信号的多个资料,其中R为整数;一处理单元,系为将数据运算处理的处理器;一高速缓存,耦接于该主存储器与该处理单元之间,该高速缓存至少具有R×R个记忆单元,用以储存该主存储器中的部分资料以提供该处理单元运算所需的资料,以及暂存该处理单元的运算结果;一第一回旋缓冲器,耦接于该主存储器与该高速缓存之间,用以缓冲该些记忆库所输出的数据并作回旋位移,以输出至该高速缓存;以及一第三回旋缓冲器,耦接于该主存储器与该高速缓存之间,以及耦接于该处理单元与该高速缓存之间,用以缓冲该高速缓存中部分该些记忆单元所输出的资料并作回旋位移以分别写回至对应的该些记忆库,用以暂存该高速缓存的输出以提供该处理单元运算所需的数据,以及用以暂存该处理单元的运算结果以写回至该高速缓存中对应的位置。
9.如权利要求8所述的数字信号处理装置,其中该些记忆库分别为单端口内存与双埠内存二者的一。
10.如权利要求8所述的数字信号处理装置,其中该处理单元为一基数-R的处理器。
11.如权利要求8所述的数字信号处理装置,其中该第一回旋缓冲器与该第三回旋缓冲器系将数据向左或右做位置回旋位移。
12.一种数字信号处理装置,包括一主存储器,至少具有R个记忆库,用以储存代表该数字信号的多个资料,其中R为整数;一处理单元,系为将数据运算处理的处理器;一高速缓存,耦接于该主存储器与该处理单元之间,该高速缓存至少具有R×R个记忆单元,用以储存该主存储器中的部分资料以提供该处理单元运算所需的资料,以及暂存该处理单元的运算结果;一第一回旋缓冲器,耦接于该主存储器与该高速缓存之间,用以缓冲该些记忆库所输出的数据并作回旋位移,以输出至该高速缓存;以及一第四回旋缓冲器,耦接于该主存储器与该处理单元之间,用以缓冲该处理单元所输出的运算结果并作回旋位移,以分别写回至对应的该些记忆库。
13.如权利要求12所述的数字信号处理装置,其中更包括一数据缓冲器,耦接于该处理单元与该高速缓存之间,用以暂存该高速缓存的输出以提供该处理单元运算所需的资料,以及暂存该处理单元的运算结果以写回至该高速缓存中对应的位置。
14.如权利要求12所述的数字信号处理装置,其中该些记忆库分别为单端口内存与双埠内存二者的一。
15.如权利要求12所述的数字信号处理装置,其中该处理单元为一基数-R的处理器。
16.如权利要求12所述的数字信号处理装置,其中该第一回旋缓冲器与该第四回旋缓冲器系将数据向左或右做位置回旋位移。
17.一种数字信号处理装置,包括一主存储器,至少具有R个记忆库,用以储存代表该数字信号的多个资料,其中R为整数;一处理单元,系为将数据运算处理的处理器;一高速缓存,耦接于该主存储器与该处理单元之间,该高速缓存至少具有R×R个记忆单元,用以储存该主存储器中的部分资料以提供该处理单元运算所需的资料,暂存该处理单元的运算结果,以及将储存于该些记忆单元的数据写回至对应的该些记忆库;以及一回旋缓冲单元,耦接于该处理单元与该高速缓存之间,用以缓冲部分该些记忆单元所输出的资料并作回旋位移以提供该处理单元运算所需的数据,以及用以缓冲该处理单元所输出的运算结果并作回旋位移以分别写回至对应的部分该些记忆单元。
18.如权利要求17所述的数字信号处理装置,其中该些记忆库分别为单端口内存与双埠内存二者的一。
19.如权利要求17所述的数字信号处理装置,其中该处理单元为一基数-R的处理器。
20.如权利要求17所述的数字信号处理装置,其中该回旋缓冲单元系将数据向左或右做位置回旋位移。
21.如权利要求17所述的数字信号处理装置,其中该处理单元更耦接至该主存储器,用以将该处理单元所输出的运算结果分别写回至对应的该些记忆库。
全文摘要
一种数字信号处理装置,其包括主存储器、处理单元、高速缓存以及回旋缓冲单元(rotate-buffer)。主存储器至少具有R个记忆库以储存代表该数字信号的多个资料。高速缓存耦接于主存储器与处理单元之间。高速缓存至少具有R×R个记忆单元,用以储存主存储器中的部分资料,以提供处理单元运算所需的资料,以及暂存该处理单元的运算结果。回旋缓冲单元耦接于主存储器与高速缓存之间,用以缓冲各记忆库所输出的数据并作回旋位移,以输出至高速缓存;以及缓冲部分记忆单元所输出的资料并作回旋位移,以分别写回至对应的记忆库。
文档编号H04L27/26GK1959666SQ20051011725
公开日2007年5月9日 申请日期2005年10月31日 优先权日2005年10月31日
发明者赖宏吉, 萧雅心 申请人:凌阳科技股份有限公司