CN101300572A - 快速傅里叶变换旋转乘法 - Google Patents

快速傅里叶变换旋转乘法 Download PDF

Info

Publication number
CN101300572A
CN101300572A CNA2006800134832A CN200680013483A CN101300572A CN 101300572 A CN101300572 A CN 101300572A CN A2006800134832 A CNA2006800134832 A CN A2006800134832A CN 200680013483 A CN200680013483 A CN 200680013483A CN 101300572 A CN101300572 A CN 101300572A
Authority
CN
China
Prior art keywords
numerical value
fft
row
butterfly computation
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2006800134832A
Other languages
English (en)
Inventor
K·S·库森纽
R·克里希纳穆斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN101300572A publication Critical patent/CN101300572A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Mobile Radio Communication Systems (AREA)
  • Complex Calculations (AREA)

Abstract

一种FFT引擎,用于实现一种在多级中应用旋转乘法的循环计数方法。当实现多级FFT时,中间数值需要乘以各种旋转因子。在高效的流水线中,FFT引擎使用最少个数的乘法器来执行旋转乘法。基于FFT基数和存储器的每一行中数值的数量来优化复数乘法器的数量这一做法允许用合理的存储空间量和数目最少的循环来执行FFT功能。这些数值的战略排序和分组允许以个数更少的循环来执行FFT运算。

Description

快速傅里叶变换旋转乘法
有关申请的交叉参照
本申请要求2005年3月11日提交的题为“FAST FOURIER TRANSFORM”的临时申请60/660,855的优先权,该临时申请已转让给本申请的受让人并且明确引用在此作为参考。
本申请还涉及2006年3月10日提交的题为“FAST FOURIERTRANSFORM PROCESSING IN AN OFDM SYSTEM”的非临时美国专利申请,代理标签号是050507IUI,该专利申请明确引用在此作为参考。
技术领域
本申请涉及无线通信和无线通信信号处理的领域。更具体地讲,本申请涉及正交频分复用(OFDM)信号的快速傅里叶变换(FFT)处理。
背景技术
正交频分复用(OFDM)是一种多载波调制技术,它将整个系统带宽划分成多个(N个)正交的子带。这些子带也被称为频调、副载波、槽(bin)以及频道。使用OFDM时,每一个子带都与可能用数据来调制的各个副载波相关联。
在无线通信系统中,射频(RF)调制信号可以通过许多信号通道从发射机前进到接收机。如果这些信号通道具有不同的延迟,则接收机处所接收到的信号将包括多个其增益和延迟不同的发送信号的实例。无线信道中的这种时间分散引起了频率选择性衰减,其特征在于在系统带宽上频率响应不断变化。对于OFDM系统,这N个子带可能由此经历不同的有效信道,并且因此可能与不同的复合信道增益相关联。
与其它通信系统中对接收到的信号的处理相比,OFDM系统的处理可能复杂得多。就处理能力而言,所需的大处理量给接收机带来了很大的负担。期望能够增大OFDM接收机中的处理能力,以允许使用调制方案的通信系统迅速扩大。
发明内容
本文描述了用于OFDM接收机的FFT处理器以及用于在OFDM系统中处理接收到的码元的方法。FFT处理器包括多个相互关联的操作块,配置这些操作块以便对OFDM码元执行数据解调、信道估计以及精确定时获取。FFT处理器包括一种使用与信道估计和解调块共享的存储器体系结构的流水线化FFT引擎。共享存储器结构与流水线化FFT操作的组合能够在捕获下一个接收到的码元所用的时间内完成信道估计和解调处理。
共享存储器可以排列成多个存储体,这些存储体与它们所支持的功能块相关联。FFT处理器的定时规定了存储体、用于寻址各种存储体的数据与控制复用器的操作。
流水线化FFT引擎是FFT处理器的骨干,并且用在由FFT处理器执行的信道估计和时间获取过程中。在接下来处理基础数据的过程中,使用了信道估计数值。
描述了一种FFT引擎,它实现了在多级中应用旋转乘法(twiddlemultiplication)的循环计数方法。当实现多级FFT时(比如一种基于基数-8芯的实现方式),中间数值需要乘以各种旋转因子(twiddle factor)。在有效的流水线中,上述FFT引擎使用最少数目的乘法器来执行旋转乘法。基于FFT基数和每一行存储器中数值的数量来优化复数乘法器的数量这一做法允许用合理的存储空间量和最少的循环次数来执行FFT函数。这些数值的战略性排序和分组允许以更少的循环次数来执行FFT操作。
一个方面包括一种FFT处理装置,该装置包括:样本存储器,存储许多样本数值,每行存储等于FFT的基数的样本数值;转置存储器;蝶形运算芯(butterfly core),它被配置成接收来自样本存储器的一行数值、对这些数值执行蝶形运算操作、并将结果写到转置存储器的列中;以及乘法器模块,它被配置成从转置存储器中检索预定数目的相邻数值并且使每一个这样的数值都乘以旋转因子。
另一方面包括一种FFT处理装置,该装置包括:样本存储器,它适于在每一行中存储8个复数样本数值;转置存储器,它排列成8×8个存储单元;基数-8蝶形运算芯,它适于检索一行数值、执行基数-8蝶形运算操作、并将输出数值按列写入转置存储器中;旋转存储器,它适于在每一行中存储四个旋转数值;以及具有四个复数乘法器的乘法器模块,它适于检索来自旋转存储器的一行和来自转置存储器的四个相邻数值、利用来自旋转存储器行中的数值对来自相邻转置存储单元的四个数值执行复数乘法、以及将乘积回写到四个相邻转置存储单元。
另一方面包括一种用于执行FFT处理操作的方法。该方法包括:读取多行样本存储器,每行等于FFT的基数;针对一行样本存储器中的数值确定蝶形运算蝶形并且将这些蝶形运算数值按列写入转置存储器中;检索一行旋转因子,该行存储了多个旋转因子数值;在单次循环中使多个蝶形运算数值乘以旋转因子数值以产生经旋转的蝶形运算数值;以及将经旋转的蝶形运算数值回写到上述多个蝶形运算数值的存储单元。
另一方面包括一种FFT处理装置,包括:用于存储许多样本数值的装置,每一行中所存储的个数等于FFT的基数;用于转置多个数值的装置;用于计算蝶形运算数值的装置,该装置被配置成接收来自样本存储器的一行数值、对这些数值执行蝶形运算操作、并将结果写入转置存储器的列中;以及用于使来自转置存储器的预定数目的相邻数值乘以相应的旋转因子的装置。
另一方面包括计算机可读介质,用计算机程序对该计算机可读介质进行编码以执行如下步骤:读取等于FFT基数的多行样本存储器,每行的个数等于FFT的基数;针对一行样本存储器中的数值确定蝶形运算蝶形并将这些蝶形运算数值按列写入转置存储器中;检索一行旋转因子,该行中存储了多个旋转因子数值;在单次循环中使多个蝶形运算数值乘以旋转因子数值以产生经旋转的蝶形运算数值;以及将经旋转的蝶形运算数值回写到上述多个蝶形运算数值的存储单元。
附图说明
下文结合附图从详细描述中能更清楚地看到本发明各实施方式的特点、目标和优点,其中相同的元件用相同的标号来表示。
图1是无线通信系统的一个实施方式的功能框图。
图2是OFDM接收机的一个实施方式的简化功能框图。
图3是用于OFDM系统的FFT处理器的一个实施方式的简化功能框图。
图4是用于OFDM系统的FFT处理器的一个实施方式的简化功能框图。
图5是OFDM交织处理的一个实施方式的简化功能框图。
图6是在OFDM处理器中共享存储器使用情况的简化时间线。
图7是导频信道处理的一个实施方式的简化功能框图。
图8是逻辑信道控制逻辑的一个实施方式的简化状态图。
图9是FFT处理器的一个实施方式的简化状态图。
图10是FFT引擎的一个实施方式的简化功能框图。
图11是基数-8FFT蝶形运算的一个实施方式的简化功能框图。
图12是基数-8FFT蝶形运算的前两个状态的实施方式的简化功能框图。
图13是一级基数-8FFT蝶形运算的一实施方式的简化功能框图。
图14是基数-8FFT中的旋转乘法顺序的简化表示。
图15是流水线化基数-8FFT操作的简化时序图。
图16是流水线化256-点FFT的简化时序图。
图17是一种用于处理OFDM信号的方法的简化流程图。
图18是一种用于对码元样本进行解调的方法的简化流程图。
图19是一种用于处理OFDM信号的方法的简化流程图。
图20是FFT处理器的简化功能框图。
图21是FFT引擎的简化功能框图。
具体实施方式
图1是无线通信系统100的一实施方式的简化功能框图。该系统包括可与用户终端110进行通信的一个或多个固定元件。用户终端110可以是例如无线电话,将其配置成根据一种或多种通信标准来进行工作。例如,用户终端110可以被配置成接收来自第一通信网络的无线电话信号,并且可以被配置成接收来自第二通信网络的数据和信息。
用户终端110可以是便携式单元、移动的单元、或固定的单元。用户终端110也可以被称为移动单元、移动终端、移动站、用户设备、便携电话等。尽管图1只示出了单个用户终端110,但是应该理解,典型的无线通信系统100能够与多个用户终端110进行通信。
用户终端110通常与一个或多个基站120a或120b进行通信,此处这些基站被描绘成分地区的蜂窝塔。用户终端110通常将与在用户终端110内的接收机处提供最强信号强度的那个基站(例如120b)进行通信。
基站120a和120b各自可以耦合到基站控制器(BSC)140,该控制器将通信信号路由到合适的基站120a和120b并且路由来自合适的基站120a和120b的通信信号。BSC 140耦合到移动交换中心(MSC)150,可以配置MSC以使其充当用户终端110和公共交换电话网络(PSTN)150之间的接口。还可以配置MSC以使其充当用户终端110和网络160之间的接口。例如,网络160可以是局域网(LAN)或广域网(WAN)。在一个实施方式中,网络160包括互联网。因此,MSC 150耦合到PSTN 150和网络160。MSC 150也可以耦合到一个或多个媒体源170。例如,媒体源170可以是由系统供应商提供的媒体库,用户终端110可以访问得到。例如,系统供应商可以提供视频或一些其它形式的媒体,用户终端110可以按需要来访问。还可以配置MSC 150以与其它通信系统(未示出)协调系统之间的移交切换。
无线通信系统100还可以包括广播发射机180,配置该广播发射机以将信号发送到用户终端110。在一个实施方式中,广播发射机180可以与基站120a和120b相关联。在另一个实施方式中,广播发射机180可以不同于并且独立于含基站120a和120b的无线电话系统。广播发射机180可以但不限于音频发射机、视频发射机、无线电发射机、电视发射机等、或这些发射机的某种组合。尽管无线通信系统100中只示出了一个广播发射机180,但是无线通信系统100可以被配置成支持多个广播发射机180。
在重叠覆盖区域,多个广播发射机180可以发送信号。用户终端110可以同时接收来自多个广播发射机180的信号。多个广播发射机180可以被配置成广播完全一样的、不同的、或相似的广播信号。例如,其覆盖区域与第一广播发射机的覆盖区域相重叠的第二广播发射机也可以广播由第一广播发射机所广播的信息的子集。
广播发射机180可以被配置成接收来自广播媒体源182的数据,并且可以被配置成对该数据进行编码、基于编码后的数据调制信号、并将调制后的数据广播到终端用户110可接收到该数据的服务区域。
在一个实施方式中,基站120a和120b之一或两者以及广播发射机180发送正交频分复用(OFDM)信号。OFDM信号可以包括被调制到预定工作波带处一个或多个载波上的多个OFDM码元。
OFDM通信系统将OFDM用于数据和导频传输。OFDM是一种多载波调制技术,该技术将整个系统带宽划分成多个(K个)正交频率子带。这些子带也被称为频调、载波、副载波、槽以及频道。使用OFDM时,每一子带与可用数据对其进行调制的各副载波相关联。
OFDM系统中的发射机(比如广播发射机180)可以向无线设备同时发送多个数据流。这些数据流本质是可以是连续的或脉冲的,可以具有固定的或可变的数据速率,并且可以使用相同的或不同的编码和调制方案。发射机也可以发送导频以帮助无线设备执行许多功能,比如时间同步、频率跟踪、信道估计等。导频是一种发射机和接收机都事先知道的传输。
广播发射机180可以根据交织子带结构来发送OFDM码元。OFDM交织结构包括总共K个子带,其中K>1。U个子带可以被用于数据和导频传输并且被称为可用子带,其中U<K。其余G个子带没有被使用并且被称为防护子带,其中G=K-U。作为一个示例,系统可以利用总共有K=4096个子带的OFDM结构,其中U=4000个可用子带和G=96个防护子带。为了简化,下文假定所有K个总共的子带都是可用的并且被分配有指数0到K-1,所以U=K且G=0。
总共K个子带可以排列成M个交织或非重叠子带集。这M个交织是非重叠的或不连续的,因为总共K个子带中的每一个子带只属于一个交织。每一个交织包含P个子带,其中P=K/M。每一个交织中的P个子带可以均匀分布在总共K个子带上,使得该交织中连续的子带彼此都间隔了M个子带。例如,交织0可以包含子带0、M、2M等,交织1可以包含子带1、M+1、2M+1等,并且交织M-1可以包含子带M-1、2M-1、3M-1等。对于上述K=4096的典型OFDM结构,可以形成M=8个交织,并且每一个交织可以包含P=512个子带,这些子带彼此均匀间隔了8个子带。由此,每一个交织中的P个子带都与其它M-1个交织中的每一个交织的P个子带交织在一起。
通常,广播发射机180可以实现任何OFDM结构,其总子带数、可用子带数和防护子带数都可任选。也可以形成任何数目的交织。每一个交织可以包含任何数目的子带以及总共K个子带中的任一个子带。这些交织可以包含相同或不同数目的子带。为了简化,下文的大部分描述都涉及M=8个交织且每一个交织包含P=512个均匀分布的子带这样一种交织子带结构。这种子带结构提供了若干个优点。首先,实现了频率分集,因为每一个交织包含了在整个系统带宽上取出的子带。其次,无线设备可以通过执行部分P-点快速傅里叶变换(FFT)而非完整K-点FFT(这可以简化无线设备处的处理),从而恢复在给定的交织上所发送的数据或导频。
广播发射机180可以在一个或多个交织上发送频分复用(FDM)导频,以允许无线设备执行各种功能,比如信道估计、频率跟踪、时间跟踪等。导频是基站和无线设备都事先知道的调制码元构成的,它们也被称为导频码元。用户终端110可以基于接收到的导频码元和已知的发送过的导频码元来估计无线信道的频率响应。用户终端110能够在用于导频传输的每一个子带处对无线信道的频谱进行采样。
系统100可以在OFDM系统中定义M个插槽(slot)以便于将数据流映射到多个交织。每一个插槽可以被视为一个传输单元或一个用于发送数据或导频的装置。用于数据的插槽被称为数据插槽,用于导频的插槽被称为导频插槽。M个插槽可以被分配有指数0到M-1。插槽0可以用于导频,插槽1到M-1可以用于数据。数据流可以在插槽1到M-1上进行发送。使用具有固定指数的插槽可以简化插槽到数据流的分配。每一个插槽可以被映射到一个时间间隔中的一个交织。基于能实现频率分集以及良好的信道估计和检测性能的“插槽-交织”映射方案,M个插槽可以被映射到不同时间间隔中的M个交织中不同的交织。通常,时间间隔可以横跨一个或多个码元周期。下面的描述假定时间间隔横跨一个码元周期。
图2是可实现于图1所示用户终端中的OFDM接收机200的简化功能框图。接收机200可以被配置成实现本文所描述的FFT处理块以便对接收到的OFDM码元进行处理。
接收机200包括接收机RF处理器210,它被配置成通过RF信道接收已发送的RF OFDM码元、处理这些码元并且将它们频率转换成基带OFDM码元或基本上将它们转换成基带信号。如果离基带信号的频率偏移是信号带宽的分数,或者如果信号处于足够低的中频处以允许直接处理该信号而无需进一步作频率转换,则信号可以基本上被称为基带信号。来自接收RF处理器210的OFDM码元耦合到帧同步器420。
帧同步器420可以被配置成使接收机200与码元定时同步。在一个实施方式中,帧同步器可以被配置成使接收机同步到超帧定时并且同步到超帧内的码元定时。
帧同步器220可以被配置成:基于为使插槽-交织映射不断重复所必需的码元数量,确定一个交织。在一个实施方式中,插槽-交织映射可以每14个码元之后就重复一次。帧同步器220可以从码元计数中确定模数-14码元指数。接收机200可以使用该模数-14码元指数来确定导频交织以及与所分配的数据插槽相对应的一个或多个交织。
帧同步器220可以基于许多因素并利用任何技术来使接收机定时同步。例如,帧同步器220可以对OFDM码元进行解调,并且可以从解调后的码元中确定超帧定时。在另一个实施方式中,例如在开销信道中,帧同步器220可以基于一个或多个码元内所接收到的信息来确定超帧定时。在另一个实施方式中,帧同步器220通过经不同信道接收信息(比如通过对不同于OFDM码元而接收到的开销信道进行解调),使接收机200同步化。当然,帧同步器220可以使用用于实现同步的任何方式,并且用于实现同步的方式并不必然地限制用于确定模数码元计数的方式。
帧同步器220的输出耦合到样本映射230,样本映射230可以被配置成对OFDM码元进行解调并且将码元样本或码片从串行数据通路映射到多个并行数据通路中的任一个。例如,样本映射220可以被配置成将OFDM码片中的每一个码片映射到与OFDM系统中的子带或副载波的数目相对应的多个并行数据通道之一。
样本映射230的输出耦合到FFT模块240,该模块240被配置成将OFDM码元变换成相应的频域子带。FFT模块240可以被配置成基于模数-14码元计数来确定与导频插槽相对应的交织。FFT模块240可以被配置成将一个或多个子带(比如预定的导频子带)耦合到信道估计器250。导频子带可以是例如一个或多个等间隔的OFDM子带的集合,它们横跨OFDM码元的带宽。
信道估计器250被配置成使用导频子带来估计对接收到的OFDM码元有影响的各种信道。在一个实施方式中,信道估计器250可以被配置成确定与每一个数据子带相对应的信道估计。
来自FFT模块240的子带以及上述信道估计都耦合到副载波码元去交织器260。码元去交织器260可以被配置成基于对一个或多个所分配的数据插槽的了解来确定上述交织,并且还确定与已分配的数据插槽相对应的经交错的子带。
码元去交织器260可以被配置成例如对与已分配的数据交织相对应的每一个副载波进行解调并且从解调后的数据中产生串行数据流。在另一个实施方式中,码元去交织器260可以被配置成对与已分配的数据交织相对应的每一个副载波进行解调并且产生并行的数据流。在另一个实施方式中,码元去交织器260可以被配置成产生与已分配的插槽相对应数据交织的并行数据流。
码元去交织器260的输出耦合到基带处理器270,基带处理器270被配置成进一步处理接收到的数据。例如,基带处理器270可以被配置成将接收到的数据处理成具有音频和视频的多媒体数据流。基带处理器270可以将经处理的信号发送到一个或多个输出设备(未示出)。
图3是OFDM系统中所用的接收机的FFT处理器300的一实施方式的简化功能框图。FFT处理器300可以用在例如图1的无线通信系统中或者用在图2的接收机中。在一个实施方式中,FFT处理器300可以被配置成执行图2所示接收机的帧同步器、FFT模块以及信道估计器的全部或部分功能。
FFT处理器300可以实现于单IC基片上的集成电路(IC)中,以提供用于OFDM接收机设计的处理部分的单芯片解决方案。或者,FFT处理器300可以实现在多个IC或基片上并且包装成一个或多个芯片或模块。例如,FFT处理器300可以在第一IC上执行其处理部分,并且这些处理部分可以与位于不同于第一IC的一个或多个存储设备上的存储器进行交互作用。
FFT处理器300包括解调块310,它耦合到存储器体系结构320,存储器体系结构320使FFT计算块360和信道估计器380互连起来。对数似然比块350可以任选地作为FFT处理器300的一部分包括在内,或者可以实现在一个不同的块之内,该不同的块可能实现在与FFT处理器300相同或不相同的基片或IC上。
解调、FFT、信道估计以及对数似然比等模块对样本数值执行各种操作。存储器体系结构320允许任何这些模块在给定的时间访问任何的块。通过在时间上划分存储体,便简化了切换逻辑。
存储器的一个存储体被解调块310反复使用。FFT计算块320访问当前正被处理的存储体。信道估计块380访问当前正被处理的存储体的导频信息。对数似然比(LLR)块350访问含最旧的样本的存储体。
解调块310包括耦合到系数ROM 314的解调器312。解调块310处理经时间同步的OFDM码元以恢复导频和数据交织。在上述示例中,OFDM码元包括被分成8个不同交织的4096个子带,每一个交织具有在整个4096个子带上均匀间隔的子带。
解调器312将输入的4096个样本组织成8个交织。解调器使每一个输入样本旋转 w ( n ) = e - j 2 π n 512 , n表示交织0到7。前512个数值经旋转后再被存储在每一个交织中。对于随后的每一组512个样本,解调器312使这些数值旋转,然后再添加这些数值。每一个交织中的每一个存储单元将具有累加的8个经旋转的样本。交织0中的数值不经旋转,仅仅经累加。与用于表示输入样本的位数相比,解调器312可以用更多个位来表示经旋转和累加的数值以适应因累加和旋转而导致的增长。
系数ROM 314被用于存储复数旋转系数。每一个输入样本需要7个系数,因为交织0不需要任何旋转。系数ROM 314可以是上升沿触发的,这可能导致从解调块310接收到该样本时起有1个循环延迟。
解调块310可以被配置成登记从系数ROM 314中检索出的每一个系数数值。在这些系数数值自身可以被使用之前,登记系数数值的行为添加了另一个循环延迟。
对于每一个输入样本,使用7个不同的系数,每一个系数都具有不同的地址。使用7个计数器来查找不同的系数。每一个计数器按其交织号增加;例如,对于每一个新样本,交织1增加1,而交织7增加7。通常,创建ROM映像以保存单行所需的全部7个系数是不切实际的,或者使用7个不同的ROM也是不切实际的。因此,解调流水线始于当新样本到达时取系数数值。
为了减小系数存储器的大小,只存储了在0和π/4之间的COS和SIN数值。未被发送到该存储器的该系数地址的三个最高有效位(MSB)可以被用于将这些数值引导至合适的象限。由此,从系数ROM 314中读出的数值没有被立刻登记。
存储器体系结构320包括输入多路复用器322,它耦合到多个存储体324a-324c。存储体324a-324c耦合到存储器控制块326,该控制块326包括能将来自存储体324a-324c的数值路由到各种模块的多路复用器。
存储器体系结构320还包括用于导频观察处理的存储器和控制。存储器体系结构320包括输入导频选择多路复用器330,用于将导频观察耦合到多个导频观察存储器332a-332c中的任一个。所述多个导频观察存储器332a-332c耦合到输出导频选择多路复用器334,以允许选择任何存储器的内容以便于处理。存储器体系结构320也可以包括多个存储器部分342a-342b,以存储从导频观察中确定的经处理的信道估计。
用于产生OFDM码元的正交频率可以用傅里叶变换(比如FFT)来方便地进行处理。FFT计算块360可以包括许多元件,它们被配置成执行一个或多个预定维度的有效FFT和反向FFT(IFFT)操作。通常,维度是2的乘方,但是FFT或IFFT操作并不限于2的乘方的维度。
FFT计算块360包括蝶形运算芯370,它可以对从存储器体系结构320或转置寄存器364中检索出的复数数据进行操作。FFT计算块360包括蝶形运算输入多路复用器362,它被配置成在存储器体系结构320和转置寄存器354之间进行选择。蝶形运算芯370与复数乘法器366和旋转存储器368一起工作以执行蝶形运算操作。
信道估计器380可以包括导频解扰码器382,导频解扰码器382与PN序列发生器384一起工作以对导频样本进行解扰。相位斜坡模块386用于使导频观察从导频交织旋转到各种数据交织中的任一个数据交织。相位斜坡系数存储器388被用于存储相位斜坡信息,这种信息是将样本旋转到期望的频率所需的。
时间滤波器392可以被配置成在多个码元上对多个导频观察进行时间滤波。来自时间滤波器392的经滤波的输出在返回到存储器体系结构320以便用在对数似然比块350(该块350执行基础子带数据的解码)中之前,可以被存储在存储器体系结构320中并且进一步由阈值器(thresholder)394对其进行处理。
信道估计器380可以包括信道估计输出多路复用器390以将各种信道估计器输出数值(其中包括中间的和最终的输出数值)连接到存储器体系结构320。
图4是相对于OFDM接收机中的其它信号处理块而言FFT处理器400的一个实施方式的简化功能框图。TDM导频获取模块402产生用于FFT处理器400的初始码元同步和定时。输入的同相(I)和正交(Q)样本耦合到AGC模块404,该模块404用于实现增益和频率控制环路,这些环路用于将信号维持在期望的振幅和频率误差之内。
FFT处理器400可以用于将定时和频率信息提供给精细频率获取模块406,以维持比用AGC模块404的AFC功能所能获得的还要更准确的码元频率。控制处理器408执行FFT处理器400的高水平控制。例如,控制处理器408可以是通用处理器或精简指令集计算机(RISC)处理器,比如由ARMTM设计的那些处理器。例如,通过控制码元同步、将FFT处理器400的状态选择性地控制到活动或睡眠状态、或控制FFT处理器400的工作情况,控制处理器可以控制FFT处理器408的工作过程。
FFT处理器400内的控制逻辑410可以被用于连接FFT处理器400的各种内部模块。控制逻辑410也可以包括用于与FFT处理器400外部的其它模块相连的逻辑。
I和Q样本都耦合到FFT处理器400,更具体地讲,耦合到FFT处理器400的解调块310。解调块310用于将这些样本分离成预定数目的交织。解调块310与存储器体系结构320相连,以存储用于处理的样本并将这些样本传递到对数似然比块350以便于基础数据的解码。
存储器体系结构320可以包括存储器控制器412,用于控制对存储器体系结构320内的各种存储体的访问。例如,存储器控制器412可以被配置成允许行写入各种存储体内的位置。
存储器体系结构320可以包括用于存储FFT数据的多个FFT RAM420a-420c。另外,多个时间滤波器存储器430a-430c可以被用于存储时间滤波器数据,比如用于产生信道估计的导频观察。
单独的信道估计存储器440a-440b可以被用于存储来自信道估计器380的中间信道估计结果。信道估计器380可以在确定信道估计时使用信道估计存储器440a-440b。
FFT处理器400包括FFT计算块,它被用于执行FFT操作的至少一些部分。在图4的实施方式中,FFT计算块是8-点FFT引擎460。8-点FFT引擎460可以有利于处理上述OFDM码元结构的说明性示例。如上所述,每一个OFDM码元包括4096个子带,它们被划分成8个交织,每一个交织有512个子带。每一个交织中的子带数目即512是8的立方(83=512)。由此,可以在使用基数-8FFT的三个级中执行512-点FFT。事实上,因为4096是8的四次方,所以可以仅仅用一个附加的FFT级来执行4096-点FFT,这样总共有四个级。
8-点FFT引擎460可以包括蝶形运算芯370和转置寄存器364,它们适于执行基数-8FFT。归一化块462被用于使由蝶形运算芯370所产生的乘积归一化。归一化块462可以用于限制存储单元的位增长,这种增长是为了表示FFT的每一级之后的蝶形运算芯所输出的数值所需的。
图5是OFDM交织处理的一个实施方式的简化功能框图。图3或4的FFT处理器可以被配置成执行图5所示的OFDM交织处理。该简化功能框图示出了两个数据交织处理器510k和510j以及单个导频交织处理器510p。然而,FFT处理器可以根据OFDM码元中的交织的个数,来实现任何数目的交织处理器。例如,为了处理上述OFDM码元实施方式,FFT处理器可以包含7个数据交织处理器(比如510k)以及一个导频交织处理器510p。
数据交织处理器510k、510j以相似的方式排列并且可以有效地对任何数据交织进行操作。数据交织处理器510k、510j分别包括旋转器514k、514j,它们被配置成使输入的样本的相位旋转。该相位旋转有效地使每一个交织旋转到用于处理的一个公共的交织。每一个数据交织处理器510k、510j对每组连续M个样本中的一个样本进行操作,其中M表示交织的总数。
各旋转器514k、514j的输出耦合到累加器520k、520j,它们累加8个交织上的样本。对于具有4096个子带和8个交织的OFDM码元,每一个交织包括512个子带,并且累加器520k、520j将8个由512个样本构成的实例加起来。在上述OFDM码元示例中,针对每一个交织旋转并存储前512个数值。对于每一个由后来的512个样本构成的组而言,旋转器514k、514j使这些样本旋转,并且累加器520k、520j将这些数值加到先前存储的样本。每一个交织中的每一个512存储单元将累加8个经旋转的样本。
数据交织处理器510k、510j包括存储器530k、530j,用于存储累加的样本、或累加的样本的中间值。在一个示例中,各个存储器530k、530j可以存储512个样本或累加的样本。在每一个码元的开始处,存储单元被重设或者用第一组数据交织样本来覆写。
计数器540可以被用于指向存储器530k、530j中的位置,其中输入数值被访问并且累加的数值将被返回。尽管图5只示出了一个耦合到导频样本存储器530p的模数-512计数器540,但是计数器540可以将计数数值提供给存储器530k、530j,这些存储器被用于存储累加的数据样本。或者,各数据交织处理器510k、510j可以包括单独的计数器或一个或多个数据交织处理器510k、510j,可以共享一个与导频交织处理器510p所使用的计数器540相同或不同的计数器。
在一个实施方式中,计数器540在每一个码元的开始处被重设。相似的是,数据存储器530k、530j以及导频样本存储器530p可以在每一个码元的开始处被重设或清空。旋转器514k、514j使期望的交织样本旋转预定的相位并且将旋转后的样本耦合到相关联的累加器520k、520j。累加器520k、520n包括加法器522k、522j,它们从存储器530k、530j中读取由计数器540所指向的先前累加的数值。
加法器522k、522j将检索到的数值与来自旋转器514k、514j的数值加起来。累加器520k、520j将该和载入寄存器524k、524j中,然后再将它回写入用来将输入提供给加法器522k、522j的同一存储单元。
在所有交织已处理过一个样本之后,计数器540才增长。由此,对于历经全部交织的每一次循环(包括导频交织),该计数可以保持不变。
FFT模块550k、550j对存储器530k、530j中已存储的累加的交织数据执行FFT。在图5的示例中,FFT模块550k、550j对上述512个累加的样本执行512-点FFT。512-点FFT模块550k、550j的输出代表了数据交织的子带。
512-点FFT模块550k、550j的输出耦合到相关联的对数似然比(LLR)块580k、580j,其中可以对每一个具有信息的子带进行解码。尽管在此所述的FFT处理器和数据交织处理器510k、510j实现了LLR块580k、580j以便于对子带进行解码,但是其它FFT处理器可以使用其它类型的解码器。选择用于FFT处理器的解码器的类型可以部分取决于发射机处所使用的编码过程。例如,如果数据是卷积编码的,则FFT处理器可以使用维特比(Viterbi)解码器。
LLR块580k、580j可以利用部分由导频交织处理器510p所产生的信道估计对子带数据进行解码。在图5所示的示例中,导频交织处理器510p包括旋转器510p和累加器520p,就像每一个数据交织处理器510k、510j那样。
累加器520p在存储器530p中累加导频样本,其方式如同数据交织处理器510k、510j中所实现的那样。FFT模块550p对累加的导频样本执行512-点FFT,以将时域表达变换成频域导频子带。
FFT模块550p的输出耦合到导频提取和解调模块560。OFDM系统可以在频率子带定义的带边附近定义预定的防护频带以确保传输不超过所分配的带宽。在防护频带内的子带上不传输任何导频或数据信息。
导频外插和解调模块560可以将这些数值外插到导频子带中,以估计防护频带的子带中的导频数值。外插可以先于导频解调而进行,在导频解调过程中对导频子带进行解调以恢复信道估计。导频子带是用已知的码元或序列进行调制的。可以用伪随机序列对已知的码元或序列进行扰频,并且导频外插和解调模块560可以在解调过程中对导频子带进行解扰。
经解调、外插的导频子带代表了导频子带中的原始信道估计。IFFT模块560对这些原始信道估计进行操作以将这些信道估计变换成信道脉冲响应。在图5的示例中,IFFT模块562执行512-点IFFT,由此产生了512-抽头信道脉冲响应。
信道脉冲响应耦合到旋转器564,该旋转器564所执行的旋转与在导频交织处理器510p中的初始旋转器514p所执行的旋转基本上相反。旋转器564的输出耦合到时间滤波器566,其中信道脉冲响应可以经时间滤波。时间滤波器566可以被配置成部分基于当前的信道脉冲响应和附加的信道脉冲响应数值对上述信道脉冲响应进行滤波。附加的信道脉冲响应数值可以包括过去的信道脉冲响应数值以及将来的信道脉冲响应数值,其中将来的信道脉冲响应数值代表了基于后续接收到的OFDM码元的信道脉冲。
FFT处理器可以存储多个码元样本并且可以确定每一个已存储的码元的信道脉冲响应。通过存储足够数目的OFDM码元并确定它们各自的信道估计,时间滤波器566由此可以实现一种非因果滤波器。由此,时间滤波器可以对过去充分确定的信道估计进行操作,以允许对后续码元进行采样和处理,相对于经滤波的信道脉冲响应而言这些后续码元代表了“将来的”码元。
当然,时间滤波器566可以实现几乎任何类型的滤波器,其中包括FIR、IIR、或其它类型的滤波器。另外,时间滤波器566可以实现因果或非因果滤波器响应。
经时间滤波的导频脉冲响应耦合到数据交织处理器510k、510j,此处根据涉及单个数据交织的参数对它作进一步的滤波或处理。导频滤波器572k、572j可以部分基于该特定的数据交织来截取导频脉冲响应或对各种脉冲响应抽头定阈值。
导频滤波器572k、572j的输出耦合到旋转器574k、574j,该旋转器使导频脉冲响应旋转到特定的数据交织。旋转器574k、574j的输出耦合到FFT模块576k、576j,其中在数据交织频率处将最终信道脉冲响应变换成信道频率响应估计。信道频率响应估计耦合到LLR块580k、580j,以便用于对数据交织的子带进行解码。
图6是在OFDM处理器中共享的存储器使用情况的简化时间线600。FFT处理器的存储器体系结构可以排列成多个存储体。在FFT处理器的一个实施方式(比如图3或图4的FFT处理器)中,存储器可以排列成8个不同的存储体。存储体1、2和3用于输入的样本。存储体4、5和6存储导频信息。存储体7存储精细频率结果,并且存储体8存储信道估计结果。时间线600规定了存储体地址、数据和控制多路复用器的工作情况。
时间线600示出了输入样本流610的示例帧结构。输入样本流610可以按特定的顺序排列。每一个信息的码元(比如612)与相邻的码元隔开了循环前缀614。一些码元可以包括横跨整个码元周期的数据,而其它码元可以具有能在少于整个码元周期内捕获的数据。
输入的样本存储装置620将输入的样本620引导至存储体1、2或3之一。初始TDM导频和开销(OIS)信息被存储在存储体1中。之后,输入的样本在存储体1、2和3中循环。
解调620对用于存储当前输入的样本的存储体进行操作。FFT引擎640在捕获到码元之后再进行操作,并且利用存储体1且循环经过存储体4、5和6。
精细定时操作650出现在TDM导频2码元的一半期间并且利用存储体1和7进行工作。信道估计操作660对存储体4、5和6中的FFT结果进行操作,并且还将存储体8用于该结果。LLR块670循环经过用于输入样本的那些存储体。
时间线600示出了在FFT处理器的多个操作中是如何共享这些存储体的。时间线600示出了上述多个操作的定时是如何彼此相互依赖的。
样本存储器控制逻辑确定是否应该处理用于一码元的任何数据。如果没有数据要处理,则用于该码元时间的输入样本将不会被解调、存储、或处理。然而,在所期望的数据的开始之前的那个码元中,对导频信号进行解调以便于信道估计。
FFT处理器中的各种操作的定时产生了大量的数据相关性。FFT和精细定时块必须在OIS信息开始之前就完成。具体来讲,精细定时块必须在接收到第一个OIS码元数据之前的一个循环就准备好。FFT、信道估计以及LLR块必须在比输入样本填满存储体所用时间要少的时间内完成。
FFT处理器具有足够大的存储器以保存三个数据码元。信道估计算法需要来自下列码元的导频信息:在当前进行数据处理的那个码元之前、期间和之后的码元。这些样本包括与串行到达的导频数据交织的数据数值。在整个码元都被接收到之前,不执行任何处理。因此,需要足够大的存储器来保存三个数据码元。
三个存储器块可以被用于以如下方式捕获输入码元。第一存储器(比如存储体1)收集来自AFC块的输入样本。第二存储器(比如存储体2)保存数据数值。该存储器被FFT处理单元中不同的计算引擎使用-FFT芯和信道估计块。第三存储器(比如存储体3)保存码元交织数据。该存储器被用于执行大部分的计算。
接收到的样本以特定顺序按列存储,以优化FFT处理。4096个样本被划分成8个块。块0包含导频信息,而块1到7可以包含数据。
基数-8FFT引擎需要将8个样本输入到其蝶形运算电路中。通过将这8个样本分组到单个存储器行中,基数-8FFT引擎可以每一个循环都计算数值。
对于输入的样本数据,读取存储体中合适的行。八个数值组成的行中的一个数值在被回写之前先进行更新。基数-8执行512-点FFT共需要三个级。对存储器中不同的由8个行所构成的集合进行存取以执行512-点FFT。
除了上述样本存储器以外,信道估计块使用5个附加的存储器。每一个存储器在大小方面都是512个样本,其中有64个行,每一行有8个样本。三个信道估计存储器保存过去的、当前的以及将来的导频观察。其它两个信道估计存储器保存用于两个时间滤波器电路的输出。信道估计块的最终输出被往回存储到样本存储器的现用存储体的导频交织中。
图7是利用共享存储器的导频处理的简化功能框图。从用于存储样本存储器导频交织的存储器710中读取导频数据。该导频数据在旋转器720中经旋转之后再被存储到三个信道估计存储器740之一中。计数器在有现用数据时每一个码元就增加1,并且向多路复用器730指出要将导频数据存储到上述三个信道估计存储器740中的哪一个之中。
信道估计存储器740中所存储的信道估计被用在时间滤波器750中以产生经时间滤波的信道估计。时间滤波器750可以产生多个经时间滤波的信道估计,并且可以将上述多个经时间滤波的信道估计存储到相应的经滤波的信道估计存储器760中。
第二旋转器770可以组合或以其它方式选择经滤波的信道估计并且可以使这些经组合的信道估计发生旋转。所得的信道估计被返回到样本存储器的存储体中。
图8是信道处理状态机的简化状态图800。信道处理状态机可以使用寄存器设置以确定何时以及如何作用于输入的数据码元。对于任何给定的码元,信道处理状态机可以确定FFT处理器将要执行多个功能中的任一个。
用于信道处理器的状态机可以从空闲状态转变到操作确定状态801,随后对输入样本进行解调。信道处理状态机可以转变到如下状态:提取用于信道估计和信道估计的计算的导频观察803,向IFT块请求动态时间跟踪调节(DMTT)811;用于7个数据插槽中任何/全部的插槽的数据处理802;将数据从7个数据插槽中任何/全部的插槽发送到LLR块810;以及用于特殊帧0码元的特殊处理,比如WIC 809、LIC 813和TDM2精细定时处理804。
图9是FFT处理器的一个实施方式的状态图900。该状态图示出了执行导频处理、信道估计、LLR处理和FFT处理的各种状态转变。从该状态图可以看出,在整个状态机中可以使用FFT和IFFT操作,并且许多状态转变到或经历FFT操作或IFFT操作。
图10是FFT引擎1000的一个实施方式的简化功能框图。因为FFT和IFFT操作具有相似性,所以FFT引擎1000可以被配置成执行FFT操作或IFFT操作。FFT引擎是在512-点FFT的背景中进行描述的。然而,FFT引擎1000并不限于这种实施方式,并且FFT引擎1000的各种元件的变化可以允许它执行其它FFT维度。
FFT引擎1000被配置成执行利用频率抽选所实现的512-点FFT。频率抽选和时间抽选之间的差异是旋转存储器系数。FFT引擎1000有利地利用基数-8FFT,使得512-点FFT可以在三个级中进行。当然,其它基数数值或基数数值的组合可以被用在FFT引擎1000中。例如,FFT引擎1000可以使用基数-2、基数-4、基数-8FFT或不同基数FFT的组合。
FFT引擎1000包括样本存储器1010,用于存储对其执行FFT操作的复数样本。如上所述,该样本存储器可以在多个块中被共享,并且经处理的FFT结果以及中间数值都可以被存储在样本存储单元中以便于其它模块来访问。
FFT引擎1000包括用于访问样本存储器的寄存器1020以便将这些样本逐行读取到蝶形运算芯1030中。样本存储器行也可以被直接读取到转置存储器1040的行中,该转置存储器1040可以是寄存器存储器。设置蝶形运算芯1030以执行FFT或IFFT,并且可以将它们作为单基数-8计算或双基数-4计算来进行计算。
每一次蝶形运算操作的结果都按列写入转置存储器1040,例如,该转置存储器1040可以包括8×8配置的转置寄存器。按行或列读取来自转置存储器1040的结果,并且将这些结果按行写入样本存储器1010中。按列写入后按行读使得存储器中的内容发生转置。
用于FFT的每一级的旋转因子可以被存储在旋转存储器1070中,该存储器1070可以是旋转ROM。这些旋转因子可以排列成在存储器的每一行中有四个旋转因子。
包括四个复数乘法器的乘法器模块1060可以利用旋转因子使转置存储器1040中的数值发生旋转。这四个复数乘法器与旋转存储器1070的单行中的旋转因子的个数一致,以允许单次循环中有四次复数乘法。
在归一化寄存器1050中使转置存储器1040中的加权值归一化,之后再回写到样本存储器1010的原始位置。
图11示出了用于基数-8FFT的完整的蝶形运算操作。通过调节区域A和B中的旋转乘法数值,便可以改变蝶形运算芯以执行基数-8点IFFT。为了执行基数-4计算,使用第二级加法器的结果(图11中的Out4),而非最终求和(图11中的Out8)。
从存储器中读取的所有数值都可以被立即登记。图11示出了当该蝶形运算芯以基数-8模式工作时所使用的寄存器。当蝶形运算芯作为2个基数-4段来操作时,输入数值来自寄存器转置块中的寄存器,因此,不需要被再次登记。
在第一组加法器之前,对这些输入进行位-反转。对于基数-8操作,这是全3-位反转:0->0,1->4,2->2,3->6,4->1,5->5,6->3,7->7。对于基数-4操作,每一组的四个输入使用2-位反转:0->0;1->2;2->1;3->3;4->4;5->6;6->5;7->7。
当这些数值通过每一组加法器前进时,它们的位宽增大1以防止饱和。输入数值由9位来表示。第一种和是用10位表示的。Out4数值是用11位表示的,并且Out8数值是用12位表示的。
如图11所示,A区域中的第4个和第8个和必须乘以w(2)以便进行FFT。对于IFFT,该数值变为w(6)。旋转因子W(k)的确定过程由下式确定:W(k)=exp(-j2πk/8)。
上述w(*)乘法按以下方式来实现:
w0等于(I+jQ)*(1+j0)=I+jQ,从而消除了任何修正需求。
w1等于(I+jQ)*(l/sqrt(2)-j/sqrt(2))。需要一个复数乘法器。对于l/sqrt(2)的数值,使用9位带码元常数。
w2等于(I+jQ)*(0-j1)=Q-jI。不再对该输入的实部执行2补码求反并随后作加法,而是令该实部的数值保持不变并且将后面的加法器变为减法器以解释上述码元变化。
w3等于(I+jQ)*(-l/sqrt(2)-j/sqrt(2))。需要一个复数乘法器。对于l/sqrt(2)的数值,使用9位带码元常数。
w4等于(I+jQ)*(-1+j0)=-I-jQ。然而,该数值不用于任何FFT计算。
w5等于(I+jQ)*(-1+j/sqrt(2))。需要一个复数乘法器。对于l/sqrt(2)的数值,使用9位带码元常数。
w6等于(I+jQ)*(0+j1)=-Q+j1。不再对该输入的虚部执行2补码求反并随后作加法,而是令该虚部的数值保持不变并且将后面的加法器变为减法器以解释上述码元变化。
w7等于(I+jQ)*(l/sqrt(2)+j/sqrt(2))。需要一个复数乘法器。对于l/sqrt(2)的数值,使用9位带码元常数。
图12是基数-8FFT蝶形运算的前两种状态的一个实施方式的功能框图。部分蝶形运算芯1200包括从图11所示的蝶形运算芯蝶形1100的Out4的计算。
两组减法器被用于第四和第八求和过程。一组计算w(2),而另一组计算w(6)。fft_ifft_n信号控制究竟使用哪一个求和过程。
图13是基数-8FFT蝶形运算的最后一级的一个实施方式的功能框图。部分蝶形运算芯1200包括从图11所示的Out4到蝶形运算芯1100的输出的计算。
对于B区域中的第六和第八数值,需要真正的复数乘法器。
当执行FFT时,它们是w(1)和w(3)。
当执行IFFT时,它们分别是w(7)和w(5)。
对于w(1)/w(7),乘积和是:
P=l/sqrt(2),
W(1)=PI+PQ+j(-PI+PQ)
W(7)=PI-PQ+j(PI+PQ)
使用fft_ifft_n信号以便控制输入数值到加法器和减法器,并且控制上述和与差至其最终目的地。这种实现方式只需要两个乘法器和两个加法器(一个加法器和一个减法器)。
对于w(3)/w(7),乘积和是:
P=l/sqrt(2),
W(3)=-PI+PQ+j(-PI-PQ)
W(5)=-PI-PQ+j(PI-PQ)
不再使用P,fft_core将R=-l/sqrt(2)用于这些乘积和。通过使用R,这些方程变为:
W(3)=RI-RQ+j(RI+RQ)
W(5)=RI+RQ+j(-RI+RQ)
这些乘积和是20位宽,携带了两个码元位。当加上这些乘积和时,它们变为20位宽,携带了一个码元位。然后,通过舍入8个最低有效位(LSB)并使一个MSB饱和,便将这些和归一化到11位。
使用信号fft_ifft_n以便控制输入数值到加法器和减法器,并且控制上述和与差至它们的最终目的地。如上,只需要两个乘法器和两个加法器(一个加法器和一个减法器)。
区域B中的平凡的乘法w(2)或w(6)以与区域A相同的方式来进行处理。
为了符合定时,在不包括多余硬件的情况下所有这些计算通常都无法在单个时钟周期中完成。添加了一组寄存器以捕获Out4数值中的大部分数值。用于第六和第八的Out4数值在被登记之前要与常数P和R相乘。寄存器的这种排布以如下方式平衡了用于最不利路径的计算:
第一循环:多路复用器=>加法器=>加法器=>多路复用器=>乘法器
第二循环:加法器=>多路复用器=>加法器=>加法器
最后,使用fft512_4_n信号以便发出Out4或Out8数值。Out4数值从11位码元扩展成12位。
FFT块使用三次穿过基数-8蝶形运算芯以执行单个512点FFT。为了实现这一点,来自前两次穿过的结果必须使其数值中的一些乘以旋转数值并使它们归一化。因为存储器的单行中存储了8个数值,所以读取这些数值的顺序不同于回写这些数值的顺序。如果执行2k I/FFT,则存储器数值必须在被发送到蝶形运算芯之前先被转置。
基数-8FFT使用8×8个寄存器。所有64个寄存器接收来自蝶形运算芯的输入。其中的56个寄存器接收来自复数乘法器的输入。32个寄存器接收来自存储器体系结构中的主存储器的输入。每一个寄存器可以在其输入处具有2∶1或3∶1的多路复用器。来自主存储器的输入被写到一行寄存器。来自蝶形运算芯的输入被写入多列寄存器。来自复数乘法器的输入是分多组来进行的。
所有64个寄存器都通过归一化计算和寄存器将输出发送到主存储器。对于I/FFT的每一种类型和级,归一化的顺序都是不同的。
所有64个寄存器都可以将输出发送到复数乘法器。56个寄存器需要旋转乘法,32个寄存器需要平方运算。32个寄存器让其值发送到蝶形运算芯。
这些数值被逐行发送到归一化电路以便于下列操作:数据FFT,信道估计FFT,WIC/LIC处理,以及精细定时IFFT。
这些数值被逐列发送以便于信道估计IFFT、导频FFT和IFFT。
当这些数值被发送到蝶形运算芯时,它们是逐列被发送的。当这些数值被发送到复数乘法器时,它们是分组实现的。
图14是用于显示基数-8FFT中的旋转乘法顺序的转置存储器1400的简化表示。为了减小执行整个基数-8FFT所必需的循环的总数,FFT运算是高度流水线化的。一旦这些数值被从蝶形运算芯中输出并被登记在转置存储器1400中,则它们可以被发送用于旋转乘法。
旋转乘法的排序基于:对来自蝶形运算芯的数值进行逐列登记;以及将经旋转乘法的数值逐行发送到存储器。对于整个基数-8FFT运算,最少需要8个读取加8个写入循环。如果至少有16个循环可用,则将四个复数乘法器用于旋转操作需要14个循环。任何更少的乘法器都将使存储器回写操作停止,而任何附加的乘法器都将是多余的硬件即至少对于一半的流水线而言将是空闲的,从而浪费资源。在图10所示的实施方式中,整个基数-8FFT运算需要21个循环。
图14的转置存储器1400的第一列中的数值不需要旋转乘法。一旦第二列被写入,则分组1中的数值就可以被发送到复数乘法器。这一过程不断重复直到分组7。前7个分组中所有的数值都是按列相邻的。此时,前4行已准备好被发送到主存储器,而最底下4行则被旋转相乘。
其余分组的数值都是以按行分组的方式进行检索的。每一按行分组都可以被视为相邻的行数值,其中这些数值以循环方式相邻。由此,在分组9中,数值[4,0]循环地邻接到最后一个数值n即行[4,7]。
图15是流水线化的基数-8、512-点、FFT运算的简化定时图。图15中的流水线时线1500示出了用于基数-8计算的蝶形运算计算、旋转计算和归一化计算的重叠本性。
在循环0期间,存储器的第一行中的8个数值中的第一个数值被读取(图14中的数值0)。来自存储器的数值可用于下一个循环的FFT。来自存储器的数值在被作用之前先被登记。这导致存储器访问的一个循环的延迟。由此,直到cycle_count=2,这些输入芯寄存器才具有有效用于第一存储器行的数据。为了符合定时要求,蝶形运算计算花了两个循环。当cycle_count=3时,对于第一存储器行而言已执行了一半的蝶形运算计算。当cycle_count=4时,蝶形运算计算已完成并且这些结果被记录在转置寄存器存储体中。
为了在cycle_count=4时已准备好正确的旋转系数数值,当cycle_count=3时就必须驱动旋转存储器的地址即rw_addr。这些系数在cycle_count=4时都已被记录好并且可在cycle_count=5时用于乘以第二组蝶形运算结果。
当cycle_count=11时,用于分组7的数值被回写到转置寄存器。此时,图14的前四行都已完成并且可以被归一化和回读到存储器。
当cycle_count=12时,第一行寄存器被读取且这些数值被归一化。归一化后的数值被存储在归一化寄存器中,它与包括转置寄存器在内的上述64个寄存器是分开的。当cycle_count=13时,来自归一化寄存器的数值被回送到主存储器。在任何I/FFT的第三级期间没有发生任何旋转乘法。由此,用该流水线定时来进行逐列回写(用于数据FFT)没有任何问题。
图16是流水线化的2048-点FFT的简化定时图1600。流水线的定时图1600示出了从一组512-点FFT结果开始的用于执行2048-点FFT的各项操作。
2048-点FFT的操作与512-点FFT非常相似。然而,因为2048不是8的幂,所以该FFT对512-点FFT的结果执行基数-4操作。
当执行2048-点I/FFT时,四个不同的512点I/FFT的结果经历了基数-4操作。从上述四个交织中的每一个交织处读取一行,512个数值都经历了512-点I/FFT。
存储器体系结构允许将交织数值用作多路复用器而非地址,该多路复用器在正被讨论的四个不同的交织中进行选择。结果,当cycle_cnt=1时,来自用于所有4个交织的存储单元0的数值都已准备好,并且fft_intl被用于选择到合适的数值。当cycle_cnt=5,所有四个行都已被读取并且前两列被发送到蝶形运算芯。蝶形运算芯在一个循环中执行两个基数-4计算并且将该数值返回到转置寄存器。为了减小各寄存器输入的复杂性,在它们源自的那一列的最底下四个寄存器中捕获了每一对中用于第二列的四个数值。然后,通过使用用于执行旋转乘法的样本复数乘法器,使基数-4结果作平方运算。当cycle_cnt=6时,平方后的数值在被回写到存储器之前已准备好进行归一化。因位宽限制,对平方后的数值执行不同的归一化。这些归一化后的数值被写入初始精细定时块即IFT。
在存储器中组织旋转系数,使每一行上有四个数值。可能有利的是,在存储器中与FFT特定的级相关联的多个行中存储旋转数值,而非试图计算这些数值或者存储一组非多余的旋转数值并试图寻址所期望的数值。
56次乘法在每一个循环中执行4次,由此需要14个循环。为了确定各种旋转系数的位置,需要用图14所给出的乘法顺序来覆盖512-点和64-点系数矩阵。当一行数据完成时,它被回写到存储体。
在前8行(0、8、16等)被回写之后,读取接下来的8行。对于第一级,它们是行1、9、17等。在行7、15、23等被处理之后,FFT将推进到第二级。对于第二和第三级,按顺序地访问这些行。
寄存器数值是12位宽。旋转系数是8位宽。所得的20位乘积在被存储到转置寄存器之前先舍入到12位。当执行信道估计的第一或第三级时,出现了舍入。向12个MSB添加第13位。对于所有其它情况,不执行舍入并且所有归一化都留了下来直到后来。简单地返回12个MSB。
使用相同的12×8乘法器来执行平方运算。在基数-4操作之后,寄存器数值是11位宽。对于一个乘法器输入,将寄存器数值码元扩展到12位。为了获得用于其它乘法器输入的8位,寄存器数值将其两个LSB舍去并且接下来对照MSB进行饱和检查。然后,上述20位乘积被舍入到14位并且经饱和检查降至11位。这11位数值被发送到IFT块以便于进一步的计算。
图17是用于处理OFDM信号的方法1700的简化流程图。例如,该方法可以由图3或4的FFT处理器或图1的系统的用户终端来执行。
方法1700始于框1710,此时FFT处理器接收样本,其中这些样本是接收到的OFDM码元或接收到的OFDM码元码片的复数样本。FFT处理器继续到框1720并且对每一个接收到的样本进行解调。FFT处理器继续到框1730并且将解调后的样本存储到存储器中,例如存储到图3所示存储器体系结构的样本存储体中。
FFT处理器继续到框1740并且从解调后的样本中确定出信道估计。在一个实施方式中,解调后的样本是作为多个交织样本被存储的,并且FFT处理器基于导频交织来确定信道估计。
FFT处理器继续到框750并且确定与一个或多个数据交织相对应的数据子带。每一个子带可以在其上具有解码后的数据,并且FFT处理器或相关的模块可以执行子带数据的解码。在一个实施方式中,上述子带数据与用于交织中的每一个子带的信道估计一起在LLR模块中被处理。
图18是对码元样本进行解调的方法1720的简化流程图。方法1720可以对应于图17所示方法中所执行的解调动作。对样本进行解调的方法1720可以由图3或图4的FFT处理器来执行。更具体地讲,对码元样本进行解调的方法可以由图3的解调块来执行。
解调块可以包括许多计数器,并且可以通过在上述码元的开始处使所有计数器都复位从而开始方法1720。上述码元的开始可以改变一小量,但是如果开始时间的误差小于任何OFDM循环前缀的持续时间,则对于解调的方法1720的目的而言上述小量可能是可忽略的。
解调块继续到框1820并且从OFDM码元内的多个交织中确定一个交织。例如,解调框可以用模数-M计数器来跟踪该交织,其中数字M对应于交织的个数。最初,该计数器可以被设为零并且可以在每一个样本之后将增加1。
解调块继续到框1830并且使接收到的样本旋转。在一个实施方式中,解调块使接收到的码元旋转了一个基于上述交织而确定的固定值。由此,对于具有8个交织的OFDM码元而言,输入的样本将旋转8个相位之一。
在使样本旋转之后,解调块继续到框1840并且累加经旋转的样本。解调块可以被配置成累加P个交织数值的M个经旋转的样本。即,当OFDM码元包括M个交织时,在每一个交织都具有P个子带的情况下,解调块可以使前P个样本旋转并且存储它们,然后旋转并累加模数-P配置中的样本,直到码元的全部样本都已被接收到、经旋转且经累加。
在每一次累加之后,解调块继续到确定框1850以确定是否所有的码元样本都已经被解调了。例如,通过确定第M个交织的第P个数值已累加了M个数值,解调块可以确定码元样本的完成。
如果这些码元样本都经过解调,则解调块继续到框1860并且用码元解调来实现。解调块可以继续到下一个码元解调。如果在确定框1850处该解调块确定并未处理过所有的码元样本,则解调块继续回到块1820以确定下一个到达的码元样本的交织。
图19是用于处理OFDM信号的方法1900的简化流程图。方法1900可以由图3和4所示的FFT处理器来执行。特别是,方法1900可以由图10的FFT引擎来执行。
方法1900始于框1910,此时FFT引擎读取样本存储器的多行。在一个实施方式中,FFT引擎记录从样本存储器中读取的每一个数值。
FFT引擎继续到框1920并且对一行中的数值执行蝶形运算。有利的是,样本存储器的每一行都存储许多样本数值,其个数等于FFT基数数值。由此,单行读取可以载入用于单基数-R FFT的所有数值。
FFT引擎继续到框1930并且从旋转存储器中检索一行旋转因子。旋转因子行可以具有比样本存储器行较少的数值。在一个实施方式中,样本存储器的每一行都包括8个样本数值,并且旋转存储器在每一行中存储了四个旋转因子。
FFT引擎继续到框1940并且使蝶形运算数值乘以旋转因子。在一个实施方式中,复数乘法器的个数等于旋转存储器的一行中的旋转因子的个数,并且旋转因子乘法可以在一个循环中执行。因为有比旋转因子更多的蝶形运算数值,所以为了完成基数-R FFT的每一级,可能需要执行不止一个乘法步骤。对于FFT的每一级,每一个蝶形运算数值通常只与一个旋转因子相乘。一些蝶形运算数值可能不需要复数乘法函数,因为旋转因子可以在没有乘法的情况下被执行。
在使蝶形运算数值乘以旋转因子之后,FFT引擎将经旋转的数值回写到存储器或回写到寄存器,并且该行数值的处理便完成了。由此,FFT引擎可以执行基数-R FFT,比如基数-8FFT,只从存储器中读取了8次。
图20是FFT处理器2000的简化功能框图。FFT处理器包括用于解调的装置,它耦合到用于存储数据的装置。在各种模块中共享该用于存储数据的装置。用于变换样本的装置可以耦合到用于存储数据的装置。用于估计信道的装置也可以耦合到用于存储数据的装置并且可以对已存储的数据进行运算。对用于变换样本数值的装置所产生的子带信息进行解码的装置可以对经变换的样本数值进行操作。
图21是FFT引擎2100的简化功能框图。FFT引擎2100包括用于存储样本的装置,这些样本可能是经解调的OFDM码元样本。用于存储样本的装置耦合到用于计算蝶形运算的装置。用于处理的装置可以被配置成将来自用于存储样本的装置的数值载入寄存器中以便于用于计算蝶形运算的装置进行操作。
用于计算蝶形运算的装置被配置成对检索到的样本计算蝶形运算数值,将计算后的蝶形运算数值写入用于使数值转置的装置。这些数据可以按列被写入用于使数值转置的装置,并且按行对这些数据进行读取,以能够使这些数值发生转置。
用于存储系数的装置可以被用于将旋转因子存储到多行中。用于使数值归一化的装置可以被用于使来自用于使数值转置的装置的数值归一化。
上文已描述了许多FFT处理器、FFT引擎以及用于处理OFDM码元的方法。利用共享存储器体系结构使多个模块整合在一起便可以极大地简化OFDM接收机设计。FFT引擎可以按这样一种方式进行实施从而极大地减少了FFT循环计数,同时不会使任何昂贵的资源(比如复数乘法器)利用不足。
在本文中,术语耦合或连接用于指非直接耦合和直接耦合或连接。当两个或更多个块、模块、设备、或装置耦合时,在上述两个相耦合的块之间可能有一个或更多个中间的块。
结合本文所揭示的各实施方式加以描述的各种说明性逻辑块、模块以及电路可以与下列各种设备一起实现或执行:通用处理器,数字信号处理器(DSP),精简指令集计算机(RISC)处理器,专用集成电路(ASIC),现场可编程门阵列(FPGA)或其它可编程逻辑器件,分立的门或晶体管逻辑,分立的硬件组件,或者用于执行本文所描述的各种功能的上述设备的任意组合。通用处理器可以是微处理器,但在替代方案中,该处理器可以是任何处理器、控制器、微控制器、或状态机。处理器可以被实现成各种计算设备的组合,例如,DSP和微处理器的组合,多个微处理器,与DSP芯相结合的一个或多个微处理器,或者任何其它这样的配置。
结合本文各实施方式所描述的方法、过程、或算法的诸多步骤可以直接以硬件、处理器所执行的软件模块、或这两者的结合来实施。方法或过程中的各步骤或动作可以按所示的顺序来执行,或者可以按另一种顺序来执行。另外,一个或多个过程或方法的步骤可能省略,或者一个或多个过程或方法的步骤可以被添加到上述方法和过程中。附加的步骤、块、或动作可以被添加到上述方法和过程的开始、结束、或中间。
上文描述了所公开的各种实施方式,以使本领域普通技术人员能够重现或利用本发明。这些实施方式的各种修改对于本领域的技术人员而言都是很明显的,在不背离本发明的精神或范围的情况下本文所定义的一般原则可以应用于其它实施方式。由此,本发明并不限于本文所示的各种实施方式,而是符合与本文所揭示的原理和新颖特征相一致的最宽的范围。

Claims (20)

1.一种快速傅立叶变换(FFT)处理装置,所述装置包括:
样本存储器,所述样本存储器的每一行中所存储的样本数值的个数等于所述FFT的基数;
转置存储器;
蝶形运算芯,它被配置成接收来自所述样本存储器的一行数值、对这些数值执行蝶形运算操作、并将结果写入所述转置存储器的一列中;以及
乘法器模块,它被配置成从所述转置存储器中检索预定数目的相邻数值并且使每一个这样的数值都乘以旋转因子。
2.如权利要求1所述的装置,其特征在于,所述预定数目的相邻数值是按列相邻的数值。
3.如权利要求1所述的装置,其特征在于,所述预定数目的相邻数值是按行相邻的数值。
4.如权利要求1所述的装置,其特征在于,所述预定数目的相邻数值是按行循环相邻的数值。
5.如权利要求1所述的装置,其特征在于,所述蝶形运算芯适于执行基数-RFFT,并且所述转置存储器包括R×R寄存器。
6.如权利要求1所述的装置,还包括旋转存储器,它被配置成在同一行内存储其个数等于单个时钟周期中可执行的复数乘法的次数的旋转因子。
7.如权利要求1所述的装置,其特征在于,所述乘法器模块包括多个复数乘法器。
8.如权利要求1所述的装置,其特征在于,所述乘法器模块包括多个复数乘法器,其个数基于旋转运算的最大数目以及等于蝶形运算基数数值两倍的时钟周期的最小数目。
9.一种快速傅立叶变换(FFT)处理装置,所述装置包括:
样本存储器,它适于在每一行中存储8个复数样本数值;
转置存储器,它排列成8×8个存储单元;
基数-8蝶形运算芯,它适于检索一行数值、执行基数-8蝶形运算、并将输出数值按列写入所述转置存储器;
旋转存储器,它适于在每一行中存储4个旋转数值;以及
具有4个复数乘法器的乘法器模块,所述乘法器模块适于检索来自旋转存储器的一行以及来自转置存储器的4个相邻数值、用来自旋转存储器行的数值对来自相邻转置存储单元的4个数值执行复数乘法运算、并将乘积回写到所述4个相邻的转置存储单元。
10.如权利要求9所述的装置,其特征在于,所述相邻的转置存储单元包括按列相邻的存储单元。
11.如权利要求9所述的装置,其特征在于,所述相邻的转置存储单元包括按行循环相邻的存储单元。
12.如权利要求9所述的装置,其特征在于,所述相邻的转置存储单元包括用于一周期子集的按列存储单元以及用于一不同周期子集的按行循环相邻存储单元。
13.一种用于执行快速傅里叶变换(FFT)处理操作的方法,所述方法包括:
读取样本存储器的多个行,其每行样本个数等于所述FFT的基数;
针对样本存储器的一行中的数值确定蝶形运算,并且将蝶形运算数值按列写入转置存储器中;
检索一行旋转因子,所述的行中存储有多个旋转因子数值;
在单个周期内使多个蝶形运算数值乘以所述旋转因子数值以产生经旋转的蝶形运算数值;以及
将所述经旋转的蝶形运算数值回写到所述多个蝶形运算数值的存储单元。
14.如权利要求13所述的方法,还包括从所述转置存储器中的相邻寄存器中检索多个蝶形运算数值。
15.如权利要求14所述的方法,其特征在于,所述相邻的寄存器包括按列相邻的寄存器。
16.如权利要求14所述的方法,其特征在于,所述相邻的寄存器包括循环相邻的按行寄存器。
17.如权利要求13所述的方法,其特征在于,检索一行旋转因子包括:从具有基于最大FFT维度而确定的多个行的旋转存储器中检索一行。
18.如权利要求13所述的方法,其特征在于,乘以多个蝶形运算数值包括:执行所述旋转因子与所述蝶形运算数值的复数乘法。
19.一种快速傅里叶变换(FFT)处理装置,所述装置包括:
用于在每一行中存储许多样本数值的装置,每一行中所存储的样本数值的个数等于所述FFT的基数;
用于使多个数值转置的装置;
用于计算蝶形运算的装置,它被配置成接收来自样本存储器的一行数值、对这些数值执行蝶形运算操作、并将结果写入转置存储器的一列中;以及
用于使来自转置存储器的预定数目的相邻数值乘以相应的旋转因子的装置。
20.一种计算机可读介质,它编码有计算机程序以执行如下步骤:
读取样本存储器的多个行,每行的样本数等于FFT的基数;
针对样本存储器的一行中的数值确定蝶形运算,并且将蝶形运算数值按列写入转置存储器;
检索一行旋转因子,所述的行中存储有多个旋转因子数值;
在单个周期内使多个蝶形运算数值乘以所述旋转因子数值以产生经旋转的蝶形运算数值;以及
将经旋转的蝶形运算数值回写到所述多个蝶形运算数值的存储单元。
CNA2006800134832A 2005-03-11 2006-03-13 快速傅里叶变换旋转乘法 Pending CN101300572A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US66085505P 2005-03-11 2005-03-11
US60/660,855 2005-03-11
US11/373,433 2006-03-10

Publications (1)

Publication Number Publication Date
CN101300572A true CN101300572A (zh) 2008-11-05

Family

ID=39892279

Family Applications (2)

Application Number Title Priority Date Filing Date
CNA2006800134832A Pending CN101300572A (zh) 2005-03-11 2006-03-13 快速傅里叶变换旋转乘法
CNA2006800135271A Pending CN101258488A (zh) 2005-03-11 2006-03-13 在ofdm系统中的快速傅里叶变换处理

Family Applications After (1)

Application Number Title Priority Date Filing Date
CNA2006800135271A Pending CN101258488A (zh) 2005-03-11 2006-03-13 在ofdm系统中的快速傅里叶变换处理

Country Status (1)

Country Link
CN (2) CN101300572A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101753509A (zh) * 2008-12-10 2010-06-23 中兴通讯股份有限公司 一种fft模块内部去直流的方法和装置及fft模块
CN102339271A (zh) * 2010-07-15 2012-02-01 中国科学院微电子研究所 一种基8的快速傅立叶变换实现系统及方法
CN101937423B (zh) * 2009-07-01 2012-06-13 中兴通讯股份有限公司 一种流水式fft/ifft的处理系统
WO2013159361A1 (zh) * 2012-04-28 2013-10-31 华为技术有限公司 数据处理方法和相关装置
CN108154473A (zh) * 2016-12-06 2018-06-12 三星电子株式会社 用于处理图像的方法和装置
CN111221501A (zh) * 2020-01-07 2020-06-02 常熟理工学院 一种用于大数乘法的数论变换电路
CN111404858A (zh) * 2020-03-17 2020-07-10 北京华力创通科技股份有限公司 应用于宽带卫星通信系统的高效的fft处理方法和装置
CN117312733A (zh) * 2023-11-07 2023-12-29 灿芯半导体(上海)股份有限公司 一种动态调整计算速度的fft实现方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101860508B (zh) * 2009-04-13 2013-01-16 中兴通讯股份有限公司 一种fft变换的复用装置及方法
CN102810086A (zh) * 2011-05-30 2012-12-05 中国科学院微电子研究所 快速傅立叶变换蝶型运算处理装置及数据处理方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101753509A (zh) * 2008-12-10 2010-06-23 中兴通讯股份有限公司 一种fft模块内部去直流的方法和装置及fft模块
CN101937423B (zh) * 2009-07-01 2012-06-13 中兴通讯股份有限公司 一种流水式fft/ifft的处理系统
CN102339271A (zh) * 2010-07-15 2012-02-01 中国科学院微电子研究所 一种基8的快速傅立叶变换实现系统及方法
WO2013159361A1 (zh) * 2012-04-28 2013-10-31 华为技术有限公司 数据处理方法和相关装置
CN103493039A (zh) * 2012-04-28 2014-01-01 华为技术有限公司 数据处理方法和相关装置
CN103493039B (zh) * 2012-04-28 2016-06-29 华为技术有限公司 数据处理方法、数据处理装置、接入设备和用户设备
CN108154473A (zh) * 2016-12-06 2018-06-12 三星电子株式会社 用于处理图像的方法和装置
CN111221501A (zh) * 2020-01-07 2020-06-02 常熟理工学院 一种用于大数乘法的数论变换电路
CN111221501B (zh) * 2020-01-07 2021-11-26 常熟理工学院 一种用于大数乘法的数论变换电路
CN111404858A (zh) * 2020-03-17 2020-07-10 北京华力创通科技股份有限公司 应用于宽带卫星通信系统的高效的fft处理方法和装置
CN117312733A (zh) * 2023-11-07 2023-12-29 灿芯半导体(上海)股份有限公司 一种动态调整计算速度的fft实现方法
CN117312733B (zh) * 2023-11-07 2024-04-16 灿芯半导体(上海)股份有限公司 一种动态调整计算速度的fft实现方法

Also Published As

Publication number Publication date
CN101258488A (zh) 2008-09-03

Similar Documents

Publication Publication Date Title
KR100923892B1 (ko) 고속 푸리어 변환 트위들 승산
CN101300572A (zh) 快速傅里叶变换旋转乘法
KR100958231B1 (ko) 직교 주파수 분할 다중 시스템에서의 고속 푸리에 변환처리
CN100585582C (zh) 一种用于部分式快速傅里叶变换fft处理的装置、处理器和方法
CN101553808A (zh) 流水线fft架构和方法
CN106685887B (zh) 一种用于fpga的ufmc发射机的频域实现方法
CN101242383B (zh) 一种信道估计方法
CN101160898B (zh) 用于在局域和广域波形之间的转换处使用指定的tdm导频的定时同步和信道估算的方法和装置
CN100499610C (zh) 一种基于正交序列设计的低复杂度信道估计方法
US20060224651A1 (en) Combined IFFT and FFT system
CN102823187A (zh) 用于导频音辅助式选择映射的系统和方法
CN110061941A (zh) 一种5g多载波通信系统中的信道均衡方法
CN112866159B (zh) 一种基带信号生成方法及相关装置
Sinn et al. Common architectures for TD-CDMA and OFDM based mobile radio systems without the necessity of a cyclic prefix
KR100862350B1 (ko) Drm 수신을 위한 가변 포인트 프라임 팩터 fft 방법
Merlyn FPGA implementation of FFT processor with OFDM transceiver
CN109948112B (zh) 一种用于电力线载波通信芯片的fft运算装置及方法
CN118316766A (zh) 一种mimo系统多参数波形干扰抑制方法
Salih et al. Improvement Model of MC-CDMA in Frequency Selective Fading Channel

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Open date: 20081105