用于执行数字调制和解调的灵活方法及装置的制作方法

文档序号:7867692阅读:330来源:国知局
专利名称:用于执行数字调制和解调的灵活方法及装置的制作方法
技术领域
本发明涉及能够传送信号的通信系统。本发明尤其涉及用于执行数字调制和解调的灵活方法及装置。
背景技术
通常,传统的数字通信系统包括基带子系统,其中所接收的信号受到解调而所传送的信号受到调制。已经实施的基带子系统中的解调器利用了专用集成电路(ASIC)或数字信号处理器(DSP)或者这两者的结合。但是,已知的解调器实施方案有显著的缺陷。
图1说明扩频解调器10的传统实施方案。解调器10包括一个合并器12,该合并器合并从指状元件(Finger)1、2直到指状元件N(此后统称为指状元件14)所接收的信号。指状元件14是每个多路径处理实体或者“路径”的硬件逻辑电路的实例。合并器12及时地对来自指状元件14的信号进行去漂移(de-skew)或者定位,并将这些信号加在一起以形成被传送信号值的估计值。一旦达到稳定状态,合并器12的输出即与在天线处的信号接收同步进行。
解调器10有若干缺点。例如,在使用解调器10时的几个缺点起因于基于来自主定时器16的时钟信号的同步处理。另一缺点是解调器10使用了指状元件14的多个静态实例。指状元件14的数量是基于可能的最坏情况的信道状态来选择的,代表所需门电路的最大可能数量。为了支持越来越多的多路径信号并与先进的无线技术如MIMO(多输入多输出天线)兼容,目前的传统体系结构一直在使越来越多的指状元件实例化。指状元件越多则需要的功率越多。
解调器10的另一个缺点是指状元件14的缓慢的分配或去分配导致浪费功率。通过分配和去分配来接通和关断指状元件14是一种相对缓慢的过程。结果,在路径衰耗(path dying)和指状元件的关断之间有显著的延迟。这导致更高的功率消耗而性能上没有相应的提高。
解调器10的又一缺点起因于用于指状元件14的时钟以及各指状元件14并行工作这一事实。所有的指状元件14都是基于一个时钟信号而同步的,不管是否使用(指定)特定的指状元件及其使用多长时间。即使在去分配时,时钟控制的指状元件仍然消耗可观的功率。
甚至当一个指状元件被分配并且正在解调一个所需的强路径,它仍然被时钟控制在远远超过产生有用输出的速率上。因此,功率被浪费了。通常,时钟缓冲器使用1/3的装置功率,即使并没有执行有用的处理。
解调器10还有一个缺陷是静态比特宽度(static bit width)的设计,这种设计是为最坏情况的操作设置的。当不需要解调全部数目的比特时,这一设计造成额外的功率消耗。大多数时候,实际上需要较少比特。
上述解调器的再一个缺陷是从功率角度看,它的构造使得MIMO解决方案成本高而无效。在多输出(MO)的情况下,指状元件的数量必须加倍以取得预定的分集效应。对于多输入(MI)技术,如STS和STTD,必须对每个指状元件附加一个倍增器,且所有指状元件被迫总是处理两个进入的天线流(antenna streams)。这种低效率导致更多的指状元件,而它们只是加重了上面讨论的功率问题。
因此,需要通过使用一种能够以最优方式解调多路径扩频信号的单个解调元件来减少电路的复杂性、门电路数量和功率消耗。此外,需要提供一种改进的解调多路径信号的方法。另外,需要用于执行数字调制和解调的灵活方法和装置。再者,需要有通用的电路,用于数字通信系统中的传送和接收两种操作。

发明内容
一个示范性实施例涉及基于被编程指令来处理数据的方法。所述方法包括通过形成地址和对应于多个缓冲器中的独立缓冲器的正确缓冲器映射来引用存储器中的许多存储单元,以及把数据从存储器中引用的存储单元传给处理单元。处理单元并发地从多个缓冲器中的独立缓冲器接收输入及输出到多个缓冲器中的另一个缓冲器。
另一个示范性实施例涉及可操作处理通信信号的装置。所述装置包括多个缓冲器,一个控制器,控制器包括被配置以通过形成地址和对应于多个缓冲器中的独立缓冲器的正确缓冲器映射来引用存储器中的许多存储单元的编程指令,以及一个处理单元,其并发地从多个缓冲器中的独立缓冲器接收输入及输出到多个缓冲器中的另一个缓冲器。
另一个示范性实施例涉及处理通信信号的系统。所述系统包括通过形成地址和对应于多个缓冲器中的独立缓冲器的正确缓冲器映射来引用存储器中的许多存储单元的装置,以及用于把数据从存储器中引用的存储单元传给处理单元的装置,其中所述处理单元并发地从多个缓冲器中的独立缓冲器接收输入及输出到多个缓冲器中的另一个缓冲器。
在查阅以下的附图、详细描述和所附的权利要求之后,本发明的其他原则特征和优点对于本领域的技术人员将是明显的。


以下将参考附图描述各示范性实施例,其中相同的编号将表示相同的元件,而且图1是一个传统的扩频解调器的图解表示;图2是依据一个示范性实施例的多路径处理系统的图解表示;图3是比较传统解调器与图2所示系统的解调器的操作的图解表示;图4是依据一个示范性实施例的最少缓冲器操作的图解表示;图5是另一个示范性缓冲器操作的图解表示;图6是依据一个示范性实施例的累加最大比值合并(AccumulatedMaximal Ratio Combining,A-MRC)处理操作的图解表示;图7是依据一个示范性实施例的累加最大比值合并(A-MRC)算法处理单元的图解表示;
图8是图7的累加最大比值合并(A-MRC)解扩频器的图解表示;图9是图6的累加最大比值合并(A-MRC)算法的更详细的图解表示;图10是图7的累加最大比值合并(A-MRC)算法处理单元的更详细的图解表示;图11是一个多输入(MI)的传统指状元件的图解表示;图12是一个传统的多输出(MO)接收器的图解表示;图13是依据一个示范性实施例的具有MIMO的累加最大比值合并(A-MRC)的处理器的图解表示;图14是一个示范性窗口搜索过程的第一阶段的图解表示;图15是一个示范性窗口搜索过程的第二阶段的图解表示;图16是依据一个示范性实施例的窗口搜索器实施方案的图解表示;图17是比较一个示范性实施例的频率搜索特征和传统处理的图解表示;图18是依据一个示范性实施例的收敛搜索器操作的图解表示;图19是包含在图18的收敛搜索器操作中的软件合并器操作的图解表示;图20是依据一个示范性实施例的收敛搜索器实施方案的图解表示;图21是描述图18的收敛搜索器实施方案中的操作的状态图;图22是依据一个示范性实施例的通信系统的图解表示;图23是图22中的通信系统的处理器的图解表示;图24是图22中的通信系统的处理器的图解表示;图25是描述图23中的通信系统的控制状态机的操作状态的状态图;图26是依据一个示范性实施例的缓冲器操作的图解表示;图27是图24的地址生成器的图解表示;图28是图23中的处理器的单元A的图解表示;图29是图23中的处理器的输入移位器的图解表示;图30是图23中的处理器的输出移位器的图解表示;
图31是图23中的处理器的单元B的图解表示;图32是图23中的处理器的单元C的图解表示;图33是一个时序图的图解表示;图34是说明图23中的处理器的指令集的操作状态的状态图;图35是依据一个示范性实施例的802.11a/b/g多模式程序的状态机图;以及图36是依据一个示范性实施例的只有传输处理的OFDM状态图。
具体实施例方式
根据至少一个实施例,图2图示说明了一个包括处理器20的多路径通信处理系统,处理器20接收来自样本缓冲器22的子码片样本形式的信号。样本缓冲器22接收来自主定时器24的定时输入和来自接收机26的码片样本(在扩频系统中调制的信号)。接收机26可以是射频(RF)或者中频(IF)类型的接收机。提供给样本缓冲器22的码片样本可以是十中抽一的或者是插值的。控制28给接收机26提供反馈。
样本缓冲器22可以存储被称为“符号组(Symbol Group)”的一定量的数据。有利的是,样本缓冲器22使得处理器20有可能不根据抽样率来同步地定时,因为处理器20可以按需要从样本缓冲器22获得数据。按照这种方式,处理器20的操作更象处理器而不是专用集成电路(ASIC),工作在硅工艺支持的最快时钟速率。
图3与传统的同步实施方案的操作相比较而图解说明处理器20的操作。尽管传统实施方案在输入码片上连续且相对一致地操作,但处理器20以串行方式可得的最快时钟速率来完成所需的处理量。这种速度使处理器20能够在下一个要填充和要求维护的缓冲器所需要的时间,即符号组持续时间(Symbol Group Duration)之前,完成它的处理。处理器20可以被关闭(也就是时钟可以被停止),直到符号组持续时间结束为止。如在图3中也用块段(block sections)宽度显示的,指定的处理量在符号组和符号组之间可能是不同的。
在一个示范性实施例中,处理器20被配置成提供动态的路径处理。这个动态的路径处理可以被称为是一种“虚拟指状元件”特征,因为多路径通信的路径或者指状元件不是实际的硬布线电路,而是使用各种算法来定义的路径。在完成处理和等待样本缓冲器同步填充(阴影区)之间的不活动期间,时钟是停用的。这可以从图3中加阴影的“关闭”区域看出。结果便没有来自处理器20的空载功率损失,这种空载功率损失是因在不活动的电路上的时钟报时信号,导致时钟树(clocktree)上的电容性负载而产生的。在使用ASIC进行解调操作的传统系统中,只有一小部分时钟报时信号产生来自ASIC的有用输出。
作为说明处理时间不同的原因的一个例子,考虑分配三个“指状元件”的情况,但这些“指状元件”中有两个被分配给深度衰落中的多路径成分,以在解调过程中使它们变成非生产性(non-productive)。处理器20有效处理这个块的时间量大约是最坏情况的1/3。指状元件的变化数量仅仅是动态处理能力的一个例子。
处理器20的动态处理能力的另一个例子是比特宽度的动态设定。动态地处理比特是特别有益的,因为与瞬时的最坏情况相比,产生可译码的输出通常需要较少的比特。由于平均处理的比特较少,消耗的功率就较少。
可以象对待路径一样对待比特,其中它们能够受到分别处理,这是因为大多数解调处理(如解扩频、累加、MRC)是线性的,以至于许多比特可以被分成比特的子单元。如果处理器20是以这种方式设计的,那么它就会由小比特宽度的电路组成。出现衰落时,在一个指定路径上必需有更多的比特,相同的路径要被处理若干次,每次在比特的一个不同子单元上(即首先是最低有效比特(LSB)子单元而最后是最高有效比特(MSB)子单元)。每次处理一个子单元时,解扩频输出便被相应地移位并累加到一个符号缓冲器中。这样的处理仅仅是另一种累加最大比值合并(A-MRC)算法,在这种算法中,路径被比特的子单元所替代。
处理器20可以动态设置比特宽度的另一示范性方法是借助于使用可编程的ASIC。如果只需要几个比特,数据便被向右移位,以使得解调器中的双态转换的比特减少。
有利的是,对于已经包含用于各种用途(如语音处理、视频驱动器、MPEG、JPEG)的处理器(如DSP、GSP、ARM)的产品,处理器20可以卸载某些通常是被迫进入到ASIC内的低处理强度操作。处理器20操作的缓冲器性能可以被用来消除严格的实时DSP截止时间,这些截止时间典型地迫使这些操作进入ASIC。由于样本被缓冲,严格的实时处理器截止时间就不再有效。
变量的动态选择——这些变量控制大多数解调功率消耗,显著优化了功率消耗。因此,处理器能够卸载相对非计算密集型任务,包括多路径指状元件分配、相等/插值/MRC抽头加权计算(Tap WeightCalculation)、NCO步幅选择(NCO Stride Selection)、和时间跟踪。将这类功能卸载到处理器20中,表明节省了硅面积,除减少开发风险之外还产生较少的成本。将处理器结合到解调算法中也减少了功率消耗。
图4说明一个示范性缓冲方案的操作。一个“缓冲器”是一个包括两组数据/地址端口的存储单元,一组用于读而另一组用于写。缓冲器不必支持同时的读/写访问。在任一指定的周期或是读,或是写,或是执行这二者。这个示范性缓冲器方案的选择标准是使用少量的RAM用于码片存储,但仍具有非常简单的处理器操作。在任一指定时刻,处理器都在两个缓冲器上处理,这两个缓冲器在逻辑上如同一个缓冲器那样工作。
图4中的状态40显示,在第N次迭代中,缓冲器1和缓冲器2正在作为单一一个逻辑数据源服务。借助于这一方案,所有其最早路径开始于缓冲器1中的符号都被完全处理(所有多路径都被合并),而这需要将缓冲器2中的码片用于这些符号的后面路径。那些其最早路径出现于缓冲器2中的符号则不被处理,直到状态42中的第N+1次迭代为止,如图4所示。
同时,缓冲器3接收在缓冲器1和缓冲器2的逻辑合并的处理过程中出现的样本。在状态42中的第N+1次迭代期间,处理器处理那些其最早路径在缓冲器2中的符号,同时使用缓冲器3的内容作为必要的后面到达路径,它们也必须出现以完成符号处理。有利的是,这些操作允许在任一迭代过程中完成符号处理,该迭代不需要许多状态变量来跟踪迭代之间的部分处理,且不需要更复杂的控制逻辑来允许“快速前进”通过各状态而到达部分符号。
当其他要求使更大的缓冲器成为必要时,就使用更大的样本缓冲器。例如,考虑以下情况对于具有连续导频的协议(如cdma2000、WCDMA),样本缓冲器大小的驱动要求是多路径时延扩展(multi-pathdelay spread),以使得用于符号处理的所有数据对处理器而言都是可同时访问的。对于突发导频(burst-pilot)无线技术如1xEV-DO,突发间隔(burst spacing)是用以确定缓冲器大小的更严格要求。除了用于要执行的信道估计的线性插值的后面的导频突发之外,处理器必须同时访问所有在导频突发之间存储的数据,其中上述后面的导频突发对用于经常存在的自动频率控制(AFC)漂移的解调性能是至关重要的。
图5说明一个使用突发导频的无线技术的示范性缓冲方案。初始时,缓冲器1、2和3作为单一一个逻辑数据源来为处理器20服务(图2)。缓冲器4和5用作捕获从ADC同时到达的样本的单个逻辑存储单元。其最早到达的多路径成分包含在缓冲器1和2中的所有符号都在第N次迭代过程中被完全处理。这个操作使用缓冲器3中的样本来处理后到达的多路径成分。其最早到达的多路径成分包含在缓冲器3中的那些符号的处理则被延迟到第N+1次迭代。因此,在第N+1次迭代中,缓冲器3、4、5作为单个逻辑实体工作来进行处理。
图6说明参考图2所描述的处理器20的累加最大比值合并(A-MRC)过程中的操作。如图所示,操作是顺序执行的。在操作60中,路径的数量N被设定为0。在操作62中,路径N的导频信道被处理,产生一个信道估计值。操作62继续进行,直到所有已知的多路径均被估计为止。有利的是,路径的数量N可以随时间变化。
一旦所有已知的多路径均被估计,一组M个相关多路径的信道估计值便被用于操作64的数据解扩频。应注意,多路径可涉及来自一个基站、其他基站、一个天线或者其他天线的通信信号。在操作64中,路径M的数据被处理且同时乘以信道估计值。操作64继续进行,直到所有信道的所有相关的多路径均被解调为止。在操作66中,处理器休眠,直到下一个符号组可用为止。
图7显示了处理器20的专门用于A-MRC算法的示范性处理单元。主定时器24被用于确定处理间隔的开始。在处理间隔的开始处,处理器20开始子码片样本的处理。
地址产生器52通过对应于所需子码片相位来对缓冲器地址初始化,而对正确速率和相位抽取十分之一的样本。为了保持正确的子码片相位对准,地址产生器52被前移每个码片的子码片数量。解扩频器56和信道估计器58顺序地将路径解扩频并累加到符号缓冲器54中。
图8说明用于A-MRC算法的解扩频器56。当执行信道估计时,解扩频器56通过乘以已知的导频序列并将相关值插入到信道估计器58中来操作。在数据的解调过程中,解扩频器56将相位上子码片(on-phase sub-chip)样本乘以正确的PN和信道化代码,如沃尔什(Walsh)码、正交可变扩频因子(OVSF)码等等,并且以符号率来输出数值。这些复合符号然后乘以得自路径的信道估计值并被累加到符号缓冲器54中。换言之,复合符号被读取、加上当前值并写回符号缓冲器54中。最大比值合并(MRC)估计值在处理相关多路径结束时是有效的,并且准备用于符号处理如去交织、去穿孔(depuncturing)和解码。
图9更详细说明了参考图6描述的累加最大比值合并(A-MRC)过程中执行的操作。在状态62中,一个多路径计数器N被设定为0,该计数器对应于哪个多路径成分要被处理。在状态63中,路径N的导频信道被处理,产生路径N的信道估计值。导频信道处理包括乘以来自样本缓冲器和解扩频序列生成器的值。来自导频信道的样本被累加并输出到中间结果缓冲器。这样便为路径N创建了一个信道估计值。在状态64中,路径N的数据被解扩频并输出到中间结果缓冲器。
在状态65中,路径N的信道估计值乘以路径N的解扩频数据,累加器被绕过,并且输出被送到中间缓冲器。在状态66中,来自路径N的符号随多路径和基站而累加。来自中间缓冲器的符号组(它们被初始化为0以用于第一路径的处理)的当前MRC累加值被加到来自中间缓冲器的解扩频和信道估计的符号,累加器被绕过,并且输出被送到中间缓冲器。状态63~66被重复,直到所有N个相关的多路径和基站均被处理为止——而在这点,当前的MRC累加值就是最终的MRC累加值,且该值被输出到符号处理器。有利的是,当接收机正在解调多个信道的情况下,这个过程可以重复。在那之后,在状态67中,处理器20休眠,直到下一个处理间隔为止。
图10更详细说明了参考图7所描述的专用于A-MRC算法的处理单元。处理器20包括状态机控制器80,其被配置用来改变状态,如参考图8所作的描述。处理器20还包括多路复用器(MUX)82、83和85,它们引导来自样本缓冲器22、中间缓冲器86和解扩频序列生成器88的输入。可绕过的累加器84将符号引导到解码器和中间缓冲器86。可绕过的累加器84能够输出信道估计值、当前的且不完整的累加符号、解扩频数据符号、解扩频导频符号或者特定路径的信道估计数据符号。
在操作中,样本缓冲器22将导频符号输入到MUX 82,且解扩频序列生成器88将解扩频数据输入到MUX83。这些输入被相乘并通过MUX85而被送到可绕过的累加器84。可绕过的累加器84将累加的符号输出到中间缓冲器86。对于在何处输出结果的控制取决于参考图9所描述的状态示意图。
A-MRC算法顺序地累加到正确的MRC值。在此情况下,处理器20的每次迭代抽取单独一个多路径成分fi,n=Σj=1Jc(s(i)+d*j-τn)pj*]]>其中fi,n是第n个多路径的第i个符号的抽取的符号估计值,c(.)是码片样本缓冲器的内容,J是扩展系数,s(i)是第i个符号的相关的开始,τn是多路径时延,d是抽取率(decimation rate),而pj是乘以正交多路化码的伪噪声序列。
这个数值是根据下列递归关系而在处理器20的符号缓冲器54中被加权和累加的si0=0]]>sin+1=sin+αi,n*fi,n]]>其中,αi,n是在第i个符号期间的多路径n的信道估计值。在有用的多路径迭代N次之后,所得到的MRC符号获得其最终值为siN=Σn=1Nαi,n*fi,n]]>基于信道估计值,有许多路径选择的可能标准。例如,标准可以包括在低于最强的瞬时多路径成分时不处理瞬时功率超过T1dB的路径。实质低于最强路径的路径对结果的信噪比(SNR)贡献很少(特别是在干扰占主导的情形中)。另一个标准可以按最强到最弱的瞬时功率顺序把路径分级,并且一旦达到T2的阈值就不处理路径。这表示已经实现可解码并且不需要再处理多路径成分的状态。
借助被称为多输入(MI)的多个基站天线和被称为多输出的多个接收天线(MO)可以实现更大的容量,这二者合在一起就变成为MIMO。多发射(TX)天线和单接收(RX)天线被称为多输入单输出(MISO)。有一个TX天线和多个RX天线被称为单输入多输出(SIMO)。MI在衰落信道中提供实质上的分集增益,MO则除了波束形成增益以外,还提供分集增益。
传统的ASIC实施方案包括用于每个TX和RX天线组合的专用指状元件(也就是发送天线数量和接收天线数量的乘积的实例化数量)。有利的是,处理器20可以处理所有链路。此外,处理器20的动态处理能力可以显著节省功率,因为只有足够强的链路(或者每个链路内的多路径)受到处理。
图11说明了一个支持多输入(MI)天线的传统指状元件。如图所示,这种指状元件不得不包含两个乘法器70和72再加上某种变换逻辑电路以正确地利用分集。这至少导致两个缺点。首先,这就导致每个指状元件增加了一个额外的乘法器和变换逻辑电路的成本。其次,当传统的指状元件启用时,不得不总是处理所有输入的天线路径流(antenna path streams),而这便导致在功率消耗上的低效。
图12说明了一个支持多输出(MO)天线的传统接收机。为了支持MO,将两组传统的解调器初始化和加电,这是因为有两个来自RF而必须被分别解调的输入流。将这两个流相加,举例来说,不是一个可行的解决方案,因为根据定义这些天线相互间有相位差。因此,MO通常使传统实施方案的成本和功率加倍。
图13说明了一个支持高性能MIMO的接收机75。接收机75几乎相同对待发自不同BS天线的路径和来自不同RX天线的路径,都作为另一个多路径。对于MI,接收机75和图7的处理系统相比,唯一的增加部分是为变换器77处理WCDMA中的操作如STTD所必需的。因此,A-MRC算法能够几乎完全应用于MI,不同的是可能要处理两倍数量的路径。对于MO,接收机75和图7的处理系统相比,唯一的增加部分是样本缓冲器22被加倍以支持从两个RF链进入的数据。结果,就产生显著的成本节省。对于MI无需额外的乘法器。对于MO则无需额外的指状元件,这产生显著的成本节省。处理器20不必处理指状元件中发送/接收路径的所有组合。而只需要处理足够强的那些天线路径。
在至少一个示范性实施例中,处理器20被配置用于“突发导频(burst-pilot)”信号的操作,其中,从通信基站所发送的用于估计蜂窝式信道的信息是时分复用的,因此它在不同的时间出现和不出现于前向链路信号中。在至少另一个示范性实施例中,处理器20被配置用于“连续导频(continuous-pilot)”操作,其中,从通信基站所发送的用于估计蜂窝式信道的信息总是出现于由基站发送的前向链路信号中。
以适时方式找到多路径成分以使其能够有助于信号的解调是CDMA接收机实施方案中的一项设计挑战。搜索指的是在一种快速变化的环境中查找多路径成分的过程。处理器20允许强化的搜索器操作。下面参考图18~19描述的收敛搜索器功能涉及一种独特的算法,这种算法能够在快速变化的多路径环境中快速获得多路径成分并且增强CDMA接收机的性能。
处理器20包括不要求单独缓冲来进行窗口搜索操作的方案。如上所述,传统的实施方案一般包括并行地在样本上同步操作的“指状元件”的实例化。处理器20每次顺序地处理一个多路径,其中每次对数据的迭代被称为一个“虚拟指状元件”。另外,传统ASIC硬件所执行的信道估计是由除了解调特定的电路之外的专用硬件来执行的。而处理器20没有这个限制。相同的电路可以同时用于解调和信道估计。
样本被缓冲的方式有助于处理器20的操作。在一个示范性实施例中,使用了一种三个缓冲器的方案,该方案能够利用要被处理器20解调的子码片样本的整个时延扩展。这种最小缓冲方案避免了两个缓冲器方案的时延,其中一旦缓冲器接收的码片完整,两个物理缓冲器就交换角色。此外,这个缓冲方案在每次处理迭代过程中具有完整的多路径扩频,可利用有效的数字样本。在一个替代性实施例中,用单独一个双端口存储器来实现这个缓冲方案。
图14说明一个示范性窗口搜索过程的第一阶段。这个过程使用一组数字复合样本92、94、96、98和100,并且用各种假设确定这些样本的相关性。在第一个阶段,为许多相邻的4码片组计算4个相邻码片(样本92、94、96、98和100)的所有组合。
图15说明一个示范性窗口搜索过程的第二阶段。在第二阶段,从第一阶段计算出的组合被用于查找多个4码片的相关性。这个相关性可以是相干的或者不相干的。在所示例子中,发现了128个相关性。
在一个示范性实施例中,由移位寄存器106接收PN序列104。移位寄存器106引导被处理的码片从PN序列104到多个RAM装置(如RAM 1~32)。RAM装置108包括,例如码片1~4的部分和。RAM装置110包含码片5~8的部分和。RAM装置112包含码片125~128的部分和。使用合并装置124合并来自RAM装置的相关性。
第一阶段的计算通过许多假设可以是折算的(amortized),因此它在分析中变得可忽略。有利的是,计算的数量相对于传统算法变为减少到接近于4分之一——如若要相关的一组PN假设足够多的话。
搜索CDMA多路径的传统技术典型地涉及“窗口”搜索,其中相关是在码片功率已知、查找比规定阈值大的相关性的特定窗口内完成的。这个功能是在被称为搜索器的传统相关器中,用独立的指状元件执行的。
参考图2所描述的处理器20能够执行窗口搜索。被称为收敛搜索器的附加搜索功能在下面参考图20~21描述。现在参考图16,处理器20接收来自样本缓冲器82和84的样本。样本缓冲器82提供偶数相位样本而样本缓冲器84提供奇数相位样本。2×2置换块(permute block)86给解调器88提供接通时间(on-time)样本,以使信号功率最大化。另一组样本缓冲器和搜索器89一起使用。只要搜索器89和解调器88竞争相同的存储块,搜索器89就获得奇数相位或者偶数相位样本,而不管其是否被解调器88使用。
在获得之后,搜索器89在第1/8码片前或者第1/8码片后的样本上操作,但功率上的这种轻微降级只是最低程度地影响搜索器89的操作。
在操作中,窗口搜索器功能完成足够数量的相关,然后关闭,直到一个新数据块可用为止。同样就避免了硬件空闲周期。在频率搜索特征的一个示范性实施例中,缓冲器87被用于存储在与原始频率不同的频率上获得的数字样本。使用一个额外的缓冲器所具有的优点是存储的样本可在后面使用。另外,在不同频率上获得的数字样本能够放在样本缓冲器82和84中用于接收迭代和处理迭代。
图17与传统处理所完成的频率搜索相比较而说明一个示范性实施例的频率搜索特征。在一个示范性实施例中,处理器20允许信号的基带处理,而RF则或是关闭或是调到一个不同频率。这种技术的一个优点是更有效的频率间搜索(inter-frequency search)。
图17显示在初始的缓冲器填充之后,可以在其他频率为基站进行“离线“搜索。一个优点是在调到解调频率时,可以通过相关性的相干和非相干的合并来进行测试各种PN漂移的耗时过程。这样就通过减少为进行其他频率测量所需的时间量,或者在其他频率测量过程中使得因当前频率分配产生的数据损失较少,而潜在地增强了系统性能。
在一个示范性实施例中,频率搜索特征利用了和原始频率一起使用的相同的样本缓冲器。这些样本缓冲器在一次迭代中从新的频率接收数字样本,并在下一次迭代中处理它们。在返回到原始频率之后,样本缓冲器继续使用。在另一个示范性实施例中,将一个独立的缓冲器用于新频率,比如参考图17所描述的缓冲器87。使用独立缓冲器所具有的优点是,甚至在返回到原始频率之后,仍保留在新频率上所接收的数字样本。
图18说明收敛搜索器的操作。接收的码片rn被乘以信道可靠性R以获得信道测量值Schannel。信道可靠性可以由以下公式计算R=4(EcNo)[1Ec]]]>收敛搜索器操作使用导频的有噪声的码片测量值收敛到正确的PN状态。信道测量值被用作软件输入,并且被加到来自软件合并器91的软件输出反馈。这个软件输入被用来计算对数似然函数(log-likelihoods)。软件合并器91对于一组信道测量值Sn-1到Sn-15执行模2加法。软件合并器91能够用参考图19所描述的一系列软件异或(XOR)操作来实施。软件异或(XOR)操作是一种合并操作,其中来自输入S1和S2的输出ST是由以下数学关系定义的ST=ln(eS1+S2(1+eS1)(1+eS2)+e-(S1+S2)(1+e-S1)(1+e-S2)eS1-S2(1+eS1)(1+e-S2)+e-(S1-S2)(1+e-S1)(1+eS2))]]>
在一个示范性实施例中,软件XOR操作是通过一种查找表实现的。
有利的是,图18的收敛搜索器操作类似于传统搜索器,不需要最新已知PN的先验知识就获得PN同步。与窗口搜索器操作相比,收敛搜索器操作能够以较少的操作找到主要的多路径。收敛搜索器操作的其他可能优点包括以下几个第一,当路径快速进入时,这种操作提供了强导频的快速获取,而这是传统的窗口搜索器可能漏掉的;第二,这种操作在空闲模式下能够使邻近组的维护执行得快得多,这导致移动装置的备用时间增加2倍;第三,这种操作提供了快速获取。
图19说明了图18的软件合并器91的一个详细的实施方案。图18的收敛搜索器操作是特定于PN I(同相)序列的,并且由以下递归关系来定义In=In-15+In-10+In-8+In-7+In-6+In-2这个技术的用于快速收敛(大约0dB)的Ec/No比导频当前工作的功率高。在一个示范性实施例中,基站专门占用以100%工作功率来传输导频信号的时隙。
图20说明处理器20的收敛搜索器操作的一个示范性实施方案。收敛搜索器90接收样本,包括来自样本缓冲器22的从样本相减得出的相位旋转,以及来自FIR单元98的已知路径。FIR(有限冲激响应)单元98是一个脉冲成形滤波器。已知路径94是被重调制器96重新调制的,并和信道估计值一起被提供给FIR单元98。
图21展示了一个表明处理器20所执行的收敛搜索器操作的状态图。在操作100和102,当前的已知路径组(在采集过程中是空的)被重新调制和去除。一旦检测到更强的多路径,这种分离有助于发现较弱的多路径。此外,强多路径的瞬时衰落有助于这个过程。
在收敛搜索器单元之前引入相位旋转,是因为多路径的相位旋转是未知的。在操作104中,相位旋转假设是被迭代的。一旦相位旋转与最强的未知导频对准,就指示收敛。在软件决定状态上做出硬件决定,并且这个状态在操作106中被映射到PN相位,被发送到窗口搜索器用于验证和准确的测量。
在一个示范性实施例中,参考图2所描述的处理器20被修改而适用于802.11规范。经过修改的处理器被称为处理器120并参考图22对其进行描述。如本领域专业技术人员所知的,802.11指的是为无线LAN技术开发的一族规范。802.11规定了一个无线客户和一个基站之间或者两个无线客户之间的空中接口(over-the-air interface)。
通常,802.11应用于无线LANs,并使用跳频扩频(FHSS)或者直接序列扩频(DSSS)在2.4GHz频带中提供1Mbps或者2Mbps传输。802.11a规范是对802.11的一个扩展,应用于无线LANs并在5GHz频带中提供高达54Mbps的传输。802.11a使用正交频分复用编码方案而不是FHSS和DSSS。802.11b规范(也称为802.11高速率或者Wi-Fi)是对802.11的一个扩展,应用于无线LANs并在2.4GHz频带中提供11Mbps传输(可下降至5.5、2或者1Mbps)。802.11b只使用DSSS。802.11g规范应用于无线LANs并在2.4GHz频带中提供20Mbps以上的传输。
处理器120包括诸如分支支持(branch support)、通过地址生成器的动态初始化的间接寻址、指令指针、面向向量的指令(vector-orientedinstructions)、可配置的数据路径、和定制的处理单元等特征。面向向量的指令涉及多元操作的执行,由此而避免频繁地访问程序存储器。
处理器120可以包括处理单元,这些处理单元是定制的,用于为解调所固有的通用向量处理。例如,单元A被优化用于卷积运算,其中在每个时钟都计算卷积输出。单元B被优化用于快速傅里叶变换(FFT)功能,其中在每个时钟都执行基数为4的蝶式运算(Radix-4butterfly)。单元C被优化用于其他向量操作,包括解扩频、向量加法、向量减法、点积和分量与分量乘法。优选的是,每个单元有各自的时钟树(clock-tree),当使用一个特定的单元时,这些时钟树由指令集来隐式启用。
图20说明一个结合了处理器120的示范性系统。处理器120执行解调操作。在处理器120内的主控制器从程序RAM取指令,并且通过处理单元A、B和C来执行这些指令。对这些处理单元的输入或者来自包含来自A/D的原始样本的缓冲器,或者来自包含中间结果的缓冲器。
当由存储在程序RAM中的固件完成处理时,通信符号突发进入符号处理器122。符号处理器122执行去映射、去交织和解码,并且在这一点将解码比特传送到MAC(媒体访问控制)124。在传送方,处理器120被用于执行发射机的快速傅里叶变换(FFT)功能。
图23说明处理器120的一部分,包括缓冲器132、单元A134、单元B136、单元C138、主控制器140、程序存储器142、ARM接口144和缓冲器146。主控制器140控制处理器120。例如,主控制器140根据指令指针的顺序递增来控制程序存储器中的指令序列,或者根据程序存储器中的指令来控制有条件/无条件转移。主控制器140还借助于同步样本控制,而且将指令总线中的参数发送到其他单元中的适当位置,来控制处理器120的同步。主控制器140还包含负责执行多周期指令的状态机。
指令指针是一个描述程序存储器中要被执行的当前指令的状态变量。指令指针通过顺序递增或者基于程序流控制来调整。在多周期向量操作的操作过程中,指令指针是停止的。
图24说明处理器120的一部分,包括地址生成器152、交换机154和交换机156。图25显示主控制器的状态机140的操作状态。从状态1(休眠状态),一个信号指示缓冲器已经填满,来开始一次迭代并过渡到状态2(程序RAM存取)。在状态2期间发生以下事件根据指令字段来初始化地址生成器、初始化向量运算长度计数器、启用正确的时钟树、设置合适的存储交换机、且设置合适的存储启用和R/W的正确选择。
在这一点上,输入/合并/输出缓冲器准备就位并且启动以便适当地读/写。地址生成器处在正确的数值上,以便从适合用于正执行的特定向量运算的缓冲器取数据,且这个向量运算的输出被发送到合适缓冲器的正确地址。可选择的是,Max Index和状态时间标记(Status TimeStamps)可被用作代替缓冲器的输入源或者合并源。或者还可选择,以下地址生成器的3个寄存器的其中之一可以是代替缓冲器的输出AG_Input_Initial、AG_Comb_Initial和AG_Comb_Stride。
在状态3期间,每个时钟脉冲都从合适的缓冲器读数据,并且在每个时钟脉冲或是在单元C的抽样速率上,输出缓冲器的输出准备就绪。在状态3期间,输入地址生成器和合并地址生成器可能产生Wrap_Event信号,该信号通过执行3缓冲器方案而更新对于下一个物理缓冲器的样本缓冲器存取。
如果有单元C操作,则额外地便有电路跟踪其输出的最大阈值或者超出阈值的值。在单元C向量运算的结尾,第一次出现超过在指令字段中指定的阈值的值,以及在该值作为时间标记期间的向量运算计数(Vector Operation Count)的内容;或者出现向量指令输出的最大值,以及在该值作为时间标记期间的向量运算计数的内容。状态变量向量运算计数(state variable Vector Operation Count)是每个时钟周期递减的。0表示向量运算是完整的且当前的向量运算已经结束。在这一点,很可能前面的时钟脉冲拥有下一个要执行的有效指令的正确值,在此情况下,程序RAM数据总线包含该正确值,因而不需要过渡到状态2的空闲状态。但是,如果向量运算最后的(或者唯一的)时钟脉冲已经导致更新到所要取的下一个指令(由于在该周期中有效的转移条件),则要求一个时钟脉冲来使有效的指令出现在程序RAM数据总线上(访问状态2)。
在指令中的SLEEP字段设为1表示迭代完成,其中向量指令状态机保持,直到SYNC_WRAP_EVENT被确定为止。
如图26所示,在任一指定时间,处理器120存取逻辑上作为一个缓冲器工作的两个缓冲器。图24所示缓冲方案实质上与参考图4所描述的缓冲方案相同。在N=0的迭代中,缓冲器1和缓冲器2作为处理器120操作的单个逻辑数据源。那些其最早的路径出现在缓冲器2中的符号不被处理,直到第N+1次迭代为止,如图26所示。同时,缓冲器3接收在缓冲器1和缓冲器2的逻辑合并处理期间出现的样本。在第N+1次迭代期间,处理器120处理那些其最早样本处于缓冲器2中的符号,同时使用缓冲器3的内容作为必要的、必须出现以完成符号处理的迟到样本。
各个输入缓冲器对指令集类似于一个连续逻辑缓冲器。因此,主控制器140始终监视着分配给样本缓冲器的地址生成器是否为环绕(wrapped)的。
再次参考图23和24,缓冲器7~10是信道异步缓冲器。这是些指令集特殊引用的缓冲器的子集,并且不和A/D样本一起直接装载。对应这些缓冲器的地址是从地址生成器152产生的。对于其功能(输入/输出/合并)的物理RAM的映射是由交换机154基于处理器120中的字段来设置的。
图24显示用于缓冲器的地址生成器的作用。地址生成器路由器(交换机154)负责将地址生成器的输出路由到正确的RAM。以下是和相应的指令字段结合的可能的路由选项。如图24所示,对于每个RAM的地址线有多种可能(每个可能的源被分配一个介于1至5之间的编号)。这最可能对应每个RAM之前的MUX,其中交换机的设定值执行该图所示的其中一个选项。
地址生成器152被实例化三次地址生成器158用于输入,地址生成器160用于合并,而地址生成器162用于输出。地址生成器152组成的向量可以在MATLAB符号中表示为a:b:c,其含义是a为初始地址,b为通过缓冲器的“步幅(stride)”(地址生成器加上向量运算的每个时钟脉冲的值),而c为结束值,该结束值是向量运算长度的从属参数。
图27展示出地址生成器152的一个更详细视图。地址生成器152可以和特定的初始值和步幅一起被直接装载,此外,地址生成器152可通过前面的单元C操作的输出而具有间接装载的初始值和步幅。指令中的寄存器装载字段被设置成在未来的指令中允许“间接的”地址模式存取。存在内建的环绕功能,当地址生成器152到达某个指定值时,该环绕功能导致地址重置。因此,当设定为启用环绕时,地址生成器152输出a:mod(floor(b/64),wrapping_rate):c。当发生环绕时,在环绕起因于存取逻辑样本缓冲器的情况下,一个指示被发送到主控制器140,以使主控制器140能够更新缓冲器启用和读/写(R/W),从而反映当前的物理缓冲器。此外,可以将一个漂移量加到前面缓冲器的地址输出,该地址输出现在变成a:mod(floor(b/64),wrapping_rate):c+offset。这种漂移量加法可以是最低有效比特(LSB)和最高有效比特(MSB)的一个级联(concatenation),所以加法器可能不是物理上要求的(也就是说,漂移量是2n的整倍数,而n是LSB的数目)。
图28图示说明单元A。单元A134是负责执行卷积(也称为(aka)FIR滤波)的向量指令引擎。一个8抽头FIR在这个模式中作为组成操作来执行。可以有两种模式的单元A操作抽头装载(TapLoading)和FIR操作。在抽头装载中,主控制器140确定用于向量运算的持续时间(将被设成8以装载所有抽头)的信号。这个信号导致抽头值从输入缓冲器移入。在FIR操作中,FIR操作的输入是物理上来自单端口交换机(输入)、且逻辑上根据指令字段而被确定的。这是与抽头卷积的(convolved)数据流。该卷积数据流被附加到来自单端口交换机(合并)的数据流,并且逻辑上由指令字段来确定。
在抽头装载中,主控制器140确定用于向量运算的持续时间的信号Unit_A_FIR。这个信号导致通过数据路径的输入缓冲器内容的移位,且计算出的FIR滤波值出现在输出中。
图29说明输入移位器,该输入移位器允许输入数据左移两个比特、右移5个比特以及在这之间的所有情况。左移操作之后是饱和度检测,用于消除在逆运算时进行饱和度检测的需要。指令的SELECT字段中的比特如图所示直接映射到MUX设置。
图30说明输出移位器,该输出移位器允许数据右移0到7之间(包括0和7)的任意位。指令的SELECT字段中的比特如图所示的直接映射道MUX设置。输出移位器支持移位之后输出不处于10个LSB范围内的情况下的饱和度检测。
图31图示说明单元B。单元B处理快速傅里叶变换(FFT)操作,它从两个四端口RAM的其中之一(缓冲器8或缓冲器9)取得其输入,并输出到两个四端口RAM的其中之一(缓冲器8或缓冲器9)。
单元B的地址实际上能够借助单元B的扩充地址生成来产生。旋转因子(twiddle factors)处于一个独立的ROM中,因为它们要求80比特存取(和实用RAM不同)。
基数4的快速傅里叶变换(FFT)引擎被优化,以便执行8个复加法(complex additions)来产生4个输出。基数4包括两组级联加法器。第一组加法器基于4个复输入(complex inputs)而产生以下部分和P1=X1+X3P2=X1-X3P3=X2+X4P4=X2-X4第二组加法器则基于上述部分和来计算输出
Y1=P1+P3Y2=P2-j*P4Y3=P1-P3Y4=P2+j*P4其中乘以j是通过转换I和Q以及倒置(inverting)I输出来实现的。每个标量旋转因子相乘的输出将被截成11个比特。因此,复乘法器的输出将是12比特。比特[10:1]将被映射到单元B模块的输出。
图32图示说明单元C,该单元用作那些未特定地包含在单元A(FIR功能)和单元B(FFT功能)中的操作的向量指令引擎。单元C中的最大电路跟踪单元C向量运算的最大值和最大值的指数。当超过某个特定向量运算的当前最大值时,便将一个最大值超出(Max ValueExceed)通知发送到主控制器,导致主控制器锁定向量指令计数器的当前值。
下面的表1表示单元C的向量引擎处理。对该引擎的输入来自缓冲器,这些缓冲器被接入作为输入缓冲器和合并缓冲器并且在表中分别表示为X和Y。向量引擎的输出则送到被接入作为输出缓冲器的缓冲器,这些缓冲器在表中表示为Z。在每个时钟脉冲以流水线方式进行乘法运算,这种方式使得每个时钟脉冲处理一组向量输入。中间变量A、A′、A″、B、B″、C、D和D″不直接输出,而是被用来表示单元C向量引擎的处理。
表1单元C向量运算


单元C从图23所示的单端口交换机(输入)的输出端接收其输入流。输入地址生成器被用于检索到合适的缓冲器中,并在上表中通过MATLAB符号X(a1:b1:c1)来表示,该符号含义是a1为初始地址,b1是通过缓冲器的“步幅”(地址生成器在向量运算的每个时钟脉冲所加上的值),而c1为结束值,该结束值是向量运算长度的一个从属参数。
单元C从图20所示的单端口交换机(输入)的输出端接收其合并输入流。合并地址生成器被用于检索到合适的缓冲器中,并在上表中通过MATLAB符号Y(a2:b2:c2)来表示,该符号含义是a2为初始地址,b2为通过缓冲器的“步幅”(地址生成器在向量运算的每个时钟脉冲所加上的值),而c2为结束值,其为向量运算长度的一个从属参数。
向量运算是通过图29所示的主交换机来配置的。以下是单元C所支持的4种类型的向量运算。
向量加法——通常单元C执行输入向量和合并向量的复数加法。
向量减法——通常单元C执行从单元向量减去合并向量的复数减法。
向量乘法——通常单元C执行输入缓冲器和合并缓冲器的复数分量与分量乘法。这个运算还执行合并缓冲器的复共轭内容。
量值——单元C执行来自输入缓冲器的复合量的量值的逐个向量分量(vector component-by-component)的准确近似。在这个模式中不使用合并缓冲器。用于量值的一个良好近似可以是C1=实部(A1″)+虚部(A1″)-1/2(min(实部(A1″),虚部(A1″)))累加是一种高效地执行各种要求的向量运算比如点积、解扩频等等的机制。向量运算的输出随不同数目的时钟脉冲而累加,并且以这个十分之一的速率(decimated rate)输出。
一旦获得符号定时,状态机即调整其时域定时,以便正确处理第一长码同步,该第一长码同步在保护间隔(guard interval)中开始24个码片,或者等同的在T1之前的8个码片。在第一长码被缓冲之后(状态5),状态机调整到第二长码同步定时,在T2之前开始放置8个码片。由于在第一长码之后,第二长码同步信号出现64个码片,所以定时改变,同时处理器120以80个码片的递增被缓冲,因此以16个码片改变了定时。随后对于信头符号和数据符号,定时保持相同,在每个符号之前有8个码片。定时保持不变是因为信头符号和数据符号的开始发生于第二长码同步符号之后的多倍的80个码片中。这两个长同步的样本定时以及信头符号和数据符号显示在图33中。应注意,保护间隔2(Gl2)的1/4等于保护间隔1(Gl1)的1/2,其数值为8个码片。
在频域中(即FFT之后),缓冲器内容不再用码片定时来检索而是用副载波数来检索。副载波数的范围从-32到31,但实际只使用-26到26(也不包括第0个副载波),因为极限频率被设定为0。由于MATLAB只允许正值检索,所以副载波在缓冲器内是从1到64被检索的。如果我们排除0副载波,则所作检索是7到59。所有副载波包含除了-21、-7、7、21之外的导频副载波的调制数据,并且在缓冲器内检索为12、26、40、54。
图34显示在处理器120的指令集中使用的操作状态。状态1~3被用于获得定时信息。特别是,状态1被用于获得子符号定时而状态3被用于获得符号定时。状态4~6继续,主要发生在时域中,其中估计且(通常是)校正频率漂移。只有状态6包含某种频域处理,其中基于被合并长码的副载波值而进行初始副载波信道估计。状态7进行信头处理而状态8进行数据处理。虽然状态7和状态8包括某种时域处理(例如数据的旋转以阻止频率漂移),但是处理主要发生在频域中。特别是在状态8中,剩余频率漂移(residual frequency offset)和定时漂移都根据副载波和在副载波本身内部而受到估计和校正。
在短同步搜索(状态1)中,有10个重复的短同步符号,这些短同步符号由跨度8微秒的AP来传输的。有利的是,处理器120只搜索短同步符号的一部分样本。状态1只涉及在样本缓冲器的尾端搜索短同步符号。由于迭代持续4微秒,所以要求RF/模拟提供至少4微秒清楚有效的短同步序列,以保证短同步序列在至少一次迭代期间存在于其中一个缓冲器的尾端。
在这个状态,处理器120只根据已知的时域短同步符号,执行为找到16个可能的相关性所需的处理。如果其中一个超过了一定阈值,那么就假设一个短同步符号的检测,这给了我们子符号定时,其将被储存供将来使用。如果这些相关性都没有超出阈值,那么处理器120就进入休眠,直到下一次迭代为止。
单元A被用于信道滤波和“匹配滤波器”两种功能,将同时计算所有16个相关性,因为这两种操作都能够支持这个单元的8倍并行。
单元C被用来形成匹配滤波器(I^2+Q^2)的非相干输出,并且计量输入样本的功率,这是为使匹配滤波器输出标准化所要求的。
在状态1期间,处理器120的指令映射包括2的第一次迭代以在缓冲器的尾端创建16抽头短同步匹配滤波器。最后23个复样本像3缓冲器方案确定的那样被输入到单元A中。单元A拖延(hold off)最前面的7个样本的输出(如同脉冲组(box-car)正在填充),并且根据短同步(复量)的下一半输出16个相关性。复数结果存储在缓冲器6的开始。在输出端丢弃当前的10个LSB。
存在2的第二次迭代以在缓冲器的尾端创建16抽头短同步匹配滤波器。同样,最后23个复样本像3缓冲器方案确定的那样被输入到单元A中。单元A拖延最前面的7个样本输出(如同脉冲组(box-car)正在填充),并且这次根据短同步(复量)的上一半输出16个相关性。相关性的输出被与缓冲器6的内容相加,从而建立多至16个完全的样本相关性。复数结果存储在缓冲器7的开始。当前10个LSB在输出端被丢弃。
处理器120计算这16个相关性的非相干值(I^2+Q^2)。短同步符号的相位是未知的——所以在缓冲器7的复内容上计算旋转的不变量(I^2+Q^2)以便清除相位信息。启用最大的跟踪电路以使最大值和在此产生的样本检索存储在寄存器中。
处理器120发现用于基线比较的信号功率。由于可能不理想的AGC功能,被接收信号(或者噪声)的能量不会是已知的,因此匹配滤波器的输出需要按被接收能量水平来标准化。这个功能是由单元C使用最后33个样本,而在每个输入样本上使用非相干函数(I^2+Q^2),并且使用单元C的累加功能来执行的,该累加功能将33个不相干的输出加到一起,并且只输出一单个实数值到缓冲器6的第一个地址。随着输出的动态范围的设置,当前的最后7个LSB将被丢弃,并且还除以所要求的2乘方,使得下一步中的阈值处理导致在高SNR(但可能不是在低SNR)情况下的合适性能。
处理器120确定是否出现“匹配滤波器”峰值。单元C被用于确定在步骤3中发现的最大值是否比步骤4中发现的量更大(该量已经除以2的合适乘方)。这个条件将在状态寄存器中设定合适的比特(它当前没有在模拟中建模),其将被状态屏蔽寄存器(Status MaskRegister)去屏蔽,并造成功能上导致进入状态2的转移。
在状态2,处理器120等待一次迭代,而在状态3,处理器120查找长同步开始。现在若找到一个可能的OFDM(正交频分复用)帧,通过状态1,子符号定时就是已知的。下一步是找到OFDM符号定时。基于短同步序列的已知持续时间和样本缓冲器的长度,长同步的前16个样本在这个点便保证是在样本缓冲器之内。这一状态准确地确定了长同步符号在缓冲器中的何处开始。
查找长同步符号的机制包括,根据已知的短同步时域波形(shortsync time domain waveform),使用子同步符号定时,来执行一系列的相关操作。这会导致将以相对于输入的16倍抽样速率而输出的一系列“峰值”。单元C被用于执行这个操作,因为定时是已知的而且不需要匹配滤波器功能。
类似地,使用相同的定时,在同一组数据上执行相关操作,但这次是对已知的部分长同步(前16个样本)时域波形进行的相关。
从部分长同步的那组相关中减去短同步的那组相关。其中超过0的这个值是长同步符号的开始的标记。计算实际对应于长同步定时的地址包括计算T=16*(V-1)+24=16V+9,其中V是在部分长同步成为赢者(winner)之前的相关性数量。
其中,这个值的出现还指示是否整个长同步出现在缓冲器中——若此值出现得足够早,这就保证整个长同步都出现且进入状态4(与其他状态转移不同,这一转移的发生无需等待下一次迭代来进入数据的下面4微秒)。若此值出现得足够晚,那么就知道下一次迭代将产生完全可存取的第一长同步符号,并且过渡到包括等待下一次迭代的状态5。
处理器120的指令映射包括使用退化模式C的操作来正确地设置地址生成器并存储这个值以供将来使用。必须执行间接寻址以基于此值存取样本。单元C能够输出到地址生成器的初始地址寄存器,而地址生成器管理单元C的输入,所以下一个“按钮”的按下就能够在这个预置的地址开始。这被称为一种“退化”模式,是因为这个按钮的按下不进行任何数据处理,而是被用于为下一个“按钮按下”的数据处理设置正确的操作。在这种情况下,对单元C的输入被选择为最大的索引寄存器,并且输出被存储在指定用于这一目的缓冲器7的存储单元中(目前我们使用地址1000)供将来使用。单元C被配置得使这一操作的输出和输入相同,并且这个输出被用于初始化地址生成器,所用数值对应于子符号定时(换言之,单元C在此指令中充当一条“线路(wire)”)。
处理器120和已知时域短同步符号的已知定时相关联。由于地址生成器被初始化为正确的子符号定时,单元C现在被用于根据短同步时域波形而执行与存储在样本缓冲器中的整个波形的这个定时的相关操作。选择单元C的乘法模式,并且所选择的合并缓冲器是实用缓冲器。与这个合并缓冲器关联的地址生成器被初始化而指向一个向量,该向量包含重复10次的短同步时域波形。单元C的累加器功能被设为16,以执行样本缓冲器的整个内容和存储在实用缓冲器中的短同步训练(short sync train)的连续相关操作。这个操作的复输出包括10个值,在累加后丢弃10个LSB之后,这些值被放置在缓冲器6的开始。
处理器120和已知时域部分长同步符号的已知定时相关联。由于地址生成器被初始化到正确的子符号定时,单元C现在被用于根据部分长同步时域波形(long sync time domain waveform),来执行针对存储在样本缓冲器中的整个波形的这一定时的相关操作。选择单元C的乘法模式,并且所选择的合并缓冲器是实用缓冲器。与这个合并缓冲器关联的地址生成器被初始化而指向一个向量,该向量包含重复10次的部分长同步时域波形。单元C的累加器功能被设为16,以执行样本缓冲器的整个内容和存储在实用缓冲器中的部分长同步训练的连续相关操作。这个操作的复输出包括10个值,这些值被放置在缓冲器6中以地址11开始,因而不盖写(overwrite)步骤2的输出。在输出时丢弃10个LSB。
处理器120在短同步相关上形成不相干计算(I^2+Q^2)。在缓冲器6的开始处的10个值对应于一系列的短同步相关,它们用作对单元C的输入。单元C被配置成执行上述不相干计算,并在丢弃7个LSB之后将这个值输出到缓冲器7的开始。
处理器120在部分长同步相关上形成不相干计算(I^2+Q^2)。在缓冲器6的开始处的10个值对应于一系列的部分长同步相关,它们用作对单元C的输入。单元C执行上述不相干计算,并在丢弃7个LSB之后将这个值输出到缓冲器10的开始。
处理器120查找在何处部分长同步相关超过短同步相关。缓冲器7和10的开始被选择用于单元C的减法模式。从部分长同步相关的10个值减去短同步相关的10个值。单元C的阈值电路被启用,其中实际阈值设定为0。这具有标记功能,标记出哪个样本部分长同步相关超过短同步相关。这个出现值的这个索引被阈值电路放置在寄存器中。
处理器120将索引乘以16。单元C在步骤6被用于选择返回的索引,用实用缓冲器将其乘以16并存储在缓冲器7的开始存储单元中。这是操作中的第一步,用以形成对应于长同步符号定时的地址。目前,实用缓冲器包含的值对应于较小值的输入索引(即地址1包含值1,地址2包含值2等等)。所以不需要实现使寻址模式相乘的复杂度(只需要支持间接操作)。
处理器120对前面的结果加9。单元C被用于选择缓冲器7中由前面的结果而产生的值,用实用缓冲器对这个结果加9,并放置在缓冲器6中。处理器120将此结果加到子符号定时以计算长同步符号定时。目前存储在缓冲器7的存储单元1000中的短同步定时被加到在步骤8中计算出的值上,并且存储在缓冲器6的开始。这个数量目前是存储在缓冲器10的存储单元1000中的。这对应于感兴趣的长同步波形的开始。
处理器120决定整个长同步是否可用。如果9的结果大于96,那么整个长同步便是当前不可用的,并且使用处理器120的转移功能进入状态4。如果结果小于96,则可以通过进入状态5来继续长同步处理,而无需等待下一次迭代。
在状态4,处理器120等待第二长同步成为可用的。由于直到后续的迭代整个长同步符号才可用,就有必要从在状态3计算出的长同步符号定时减去样本的4微秒(当前值为80),从而能够在状态5中正确地寻址第一长同步符号。
处理器120的指令映射从符号定时减去80。使用单元C。缓冲器10中的原始估计模被用作输入,在地址80(其包含数值80)选择实用缓冲器,执行减法且结果被放入缓冲器7的地址1000中。
处理器120写回缓冲器10中的原始存储单元。单元C被用来从缓冲器7转移到缓冲器10。在状态5中,第一长同步符号被缓冲。在这一步必须存储第一长同步符号供以后使用。由于符号定时是已知的,可以确切地抓取(grab)64个样本。处理器120的指令映射设置输入地址生成器。退化模式使用单元C,将缓冲器10的内容放入输入地址生成器的初始值寄存器。
处理器120抓取第一长同步符号并放入缓冲器6中。单元C被用于从64个时钟脉冲的样本缓冲器中抓取其输入,并直接将其输出到缓冲器6。
处理器120在即将发生的迭代中为第二长同步建立地址生成器。第二长同步的开始位于离第二长同步的开始64个地址处。所以,地址生成器被配置成减去16(80-64)来工作,以便在状态6中进行正确的长同步存取。此外,在状态8中存储结果以供将来使用。
在状态6中进行长同步处理。两个长同步符号现在均可用于处理。在这长同步符号之间执行交叉相关操作。这个量的复相位是由于接收机相对于发射机的频率漂移导致的,并且将被用来设置数控旋转器(NCO)的功能特性。这个旋转器然后被应用于这两个长同步符号,以校正上述频率漂移。在这一点,长同步符号被加在一起用于3db SNR增强,并且最终执行FFT,该FFT将产生信道的估计值作为副载波的函数。
处理器120的指令映射包括形成缓冲器6和输入缓冲器的点积。在功能上,这个步骤取第1长码符号(在缓冲器6中发现)的时域样本,并且使其与第2长码符号(在输入缓冲器中发现)的时域样本相关联。相关联意味着缓冲器6逐个样本地与输入缓冲器的复共轭相乘,其后累加。累加发生在每次乘法之后,所以整个步骤占用64个时钟脉冲。由于累加,所以只有一个复相关值被输出到缓冲器10c中。这个最后的输出当前被右移9比特。
处理器120将地址放入一个逆向查找表中。理想的是找到在缓冲器10中发现的步骤2的绝对实输出的逆(inverse)。逆向查找表(inverseLUT)便被用于这一目的。在这个步骤,形成对上述查找表(LUT)的正确地址。为了计算最终的地址,LUT开始的漂移地址和LUT内的地址二者都需要第一个是从实用缓冲器的存储单元101获得的,该存储单元包含漂移地址(目前在1001);第二个则来自在步骤2中写入的样本的绝对实部值。必须设定单元C的输入格式以取得实部的绝对值。这两者被加在一起,并且结果被用于在下一步初始化输入地址生成器。
处理器120从上述查找表获得逆值。由此访问到逆向LUT的地址(通过步骤3的初始化命令),而在该地址的值被写入缓冲器6。实用缓冲器被用作输入缓冲器,因为它包含查找表。
处理器120使用前面的操作来发现商(角的正切)。这个步骤发现缓冲器10(在步骤2中被写入)的虚部和实部之间的商。它使用缓冲器6中的逆值作为输入缓冲器,并且它使用缓冲器10的绝对虚部作为合并缓冲器。单元C的合并缓冲器格式必须被设成虚部的绝对值。单元C被设置到输入缓冲器和合并缓冲器之间的乘法,并且输出被写入缓冲器7,且右移7个比特。
处理器120使地址形成反正切查找表。这个步骤几乎和步骤3完全相同。此处,在缓冲器7中发现的步骤4的输出被用作输入缓冲器,并且在实用缓冲器的存储单元102中发现上述反正切查找表(arctangent LUT)漂移。
处理器120根据查找表来确定角度,并且加上调整值以到达右象限。访问到反正切查找表的地址(通过步骤6的初始化命令),且在该地址的值被利用以写入缓冲器6。“利用”是指必须加上合适的调整值以到达右象限。目前这个过程没有以UE Matlab码建模,所以下面是对应现在的功能描述。在步骤2(缓冲器10)中写入样本的复值需要在选取正确的调整值时使用。如果该复数样本的实部值和虚部值都是正的,那么LUT值可以“按照现在的样子”使用。如果实部值是正的而虚部值是负的,那么应该输出LUT值的负数。如果实部值和虚部值都是负的,就需要从LUT值减去180度。最后,如果实部值是负的而虚部值是正的,那么需要从180减去LUT值。当前缓冲器10是被写入的,但由于确定调整值也需要缓冲器10,所以缓冲器方案可能改变。
除了缓冲器10被写入之外,单元C合并缓冲器步幅也被初始化到输出缓冲器值。这设定了下一步骤中的步幅。
处理器120在第一长同步符号上执行旋转操作。大体上,这个步骤通过选择在实用缓冲器中发现的旋转器查找表(rotator LUT)的选择内容,使来自缓冲器6的第一批64个复样本旋转。因此,缓冲器6被选择作为输入缓冲器,同时实用缓冲器被选择作为合并缓冲器。最终来自缓冲器6的所有64个样本波形必须被单独旋转到缓冲器10中,所以这整个步骤是没有累加的长度为64的向量运算。
由于旋转器查找表开始于实用缓冲器的地址4001,所以合并缓冲器漂移被设为4001。现在描述在每个64时钟脉冲操作的旋转过程。首先,基线合并地址(baseline combination address)被初始化为合并缓冲器的初始值,该值在这里为0。(由于这是第一个要旋转的符号,所以将初始旋转值设为旋转器查找表的开始是有意义的)。其次,上述基线合并地址被用来获得合并缓冲器中的确切地址。更准确地说,它除以64,被最小化(floored),并且与合并缓冲器漂移相加,从而获得最终的合并缓冲器地址。
在这个地址的合并缓冲器的值然后被用于在当前输入缓冲器样本上进行的当前旋转操作。此处,通过单元C乘法运算来使合并缓冲器样本的复共轭值乘以输入缓冲器样本。然后在第一地址将输出写到缓冲器10。
在下一次旋转迭代时,基线合并地址是以合并步幅值递增的,该合并步幅值从步骤6被初始化。然后它便被以和上述相同的方式利用,从而获得下一个最终合并缓冲器地址。同样,进行合并缓冲器样本和输入缓冲器样本的相乘,且输入缓冲器地址递增1。输出然后被写到缓冲器10的下一个地址,并且这个过程总共重复64次。
处理器120设置一个旋转指针并且存储以供将来状态使用。由于缓冲器10 估计每个输入符号样本的AFC偏差,所以将这个值乘以64可表示第一个长码符号和第二个长码符号之间的偏差。因此64*缓冲器 的值被用于第二个长码符号的去旋转是理想的。此外,这个结果值需要存储在缓冲器中以在状态7再次更新旋转指针。
缓冲器10被用作输入缓冲器,并且输入缓冲器的地址当前设置为1003。合并缓冲器被设成为实用缓冲器,由于其中内容被方便地设为64,所以使用其第64个地址。单元C被设置为使输入和合并缓冲器相乘,并且输出被写入缓冲器7的地址单元1003。此外,对用于去旋转第二长同步符号的下一步的这个输出,使单元C中的单元合并地址生成器初始化。
处理器120建立用于数据符号的旋转的输入地址生成器。包含在缓冲器6 中的值被用来建立输入地址生成器,用于下一个步骤中的第二长同步符号的旋转。这个值是包含时域数据的输入缓冲器的适当起始地址。
处理器120在第二长同步符号上执行旋转。这个步骤的进行几乎与步骤7完全相同。此处基线合并缓冲器地址从步骤8被初始化,且输入缓冲器地址从最后的步骤初始化。同样,输出被写入缓冲器6。
处理器120将上述两个长同步符号相加。在此完成这些去旋转的长同步符号的求和运算。输入缓冲器被设为缓冲器6(包含第一长同步符号),而合并缓冲器被设为缓冲器10(包含第二长同步符号)。单元C被设为加法,其使用两个缓冲器按从1到64的地址顺序执行。在右移1之后,输出按从1到64的地址被顺序写入缓冲器8。要完成这操作,单元C必须具有长度为64的向量运算,并且其输出速率(outputrate)必须被设为1,从而使得在所有64个时钟脉冲都有输出写入。
处理器120执行FFT阶段。除了读和写缓冲器不同外,单元B以相同方式处理三个FFT阶段中的每一个。在第一阶段,读缓冲器8而向缓冲器9写入;在第二阶段,读缓冲器9而向缓冲器8写入;第三阶段重复第一阶段。
理解上述FFT操作有两个关键因素1)输入和输出的地址生成,以及旋转因子(twiddle factor)的生成;2)基数蝶式运算(radix butterflyoperatio)。首先,在地址生成中,每个阶段用16个时钟脉冲或者16次迭代来完成。基于UNIT_INPUT计数器的地址生成是迭代的一个函数。此外,旋转因子也是迭代的一个函数,所以它们要从旋转因子ROM(TWIDDLE FACTOR ROM)的不同部分被抓取。一般,基于UNIT_INPUT计数器每个时钟脉冲有8个地址生成(虽然输入和输出地址通常是相同的)。四端口输入RAM和四端口输出RAM(或是缓冲器8或是缓冲器9)各自要求4个地址。
在每次迭代中,有4个样本被输入到基数蝶式运算中。电路执行以下运算(令x对该蝶式运算是输入而y是输出)y1=x1+x2+x3+x4y2=x1+j*x2-x3+j*x4y3=x1-x2+x3-x4y4=x1+j*x2-x3-j*x4重要的是要注意,这个运算不需要乘法器,因为j的乘法只涉及简单地交换复数量的实部和虚部。
下一步是每个y值乘以合适的旋转因子(注意每个时钟脉冲有4个旋转因子从TWIDDLE_FACTOR_ROM中被抓取出来)。
输出1=y1*w1;输出2=y2*w3;输出3=y3*w3;输出1=y4*w4.
第二个FFT阶段类似第一个FFT阶段,但是读写缓冲器不同。第三个FFT状态和阶段12相同。处理器120使FFT输出和长码频域序列相关联。此处包含在缓冲器9中的FFT输出乘以包含在实用缓冲器中的长码频域序列。缓冲器9被设为输入缓冲器,而合并缓冲器被设为实用缓冲器。由于最前6个载波是0,所以初始输入地址被设为7。当前,合并缓冲器的地址501被用作初始地址,因为这是对非零长码序列的地址漂移。由于最后5个副载波也是0,所以乘法在53个连续的时钟脉冲上发生,而没有启用累加。在每次相乘之后,结果便被写进缓冲器7中开始于地址单元7的连续地址单元。
在状态7中执行信头处理。在一个示范性实施例中,这个状态只是建立操作,还不产生信头解调。由于信头符号的长度为80个样本,所以旋转指针被递增80个步幅。因为在状态8该指针移动了这个数量,所以此数量被储存用于未来的更新。
处理器120的指令映射包括确定从这个状态开始移动旋转指针的量。每个符号包含80个时域样本。因此,为了正确计算频率漂移,旋转指针必须移动80倍的单个样本频率漂移估计值,该值由缓冲器10 中的值给出。
缓冲器10被用作输入缓冲器,并且输入缓冲器地址当前被设为1003。合并缓冲器被设为实用缓冲器,由于其中的内容被方便地设为80,所以使用其第80个地址。单元C被设置使输入和合并缓冲器相乘,并且输出被写入缓冲器6的地址单元1005。
处理器120更新旋转指针。由当前旋转指针值加上来自最后一步的结果,来获得新的旋转指针值。缓冲器7被设置成初始地址为1003的输入缓冲器,而缓冲器6被设置成初始地址为1005的合并缓冲器。单元C被设置为加法,且启用364*64的环绕。这意味着得到的和值被取模数364*64。这个结果值被写进缓冲器10的存储单元1004。
在状态8中执行数据解调。这个状态缓冲被符号处理单元使用的频域符号。此外,这个状态缓冲信道估计值,这些信道估计值同样被符号处理单元使用,所以可以说明像定时漂移和频率漂移这样的效果。它在逐符号的基础上操作,直到整个帧准备好用于解调为止。因此,这个状态执行Nsym次,其中Nsym等于载荷中的符号数量。
为了准备用于解调的单个OFDM符号,在状态8中完成若干任务。首先,使用和第二个长码符号相同的起始地址(见状态5的步骤3)正确地从输入缓冲器存取接收的时域符号。然后使用相同的步幅和经过更新的旋转指针,以类似于第二长码的方式来旋转这些符号。(在每个符号处旋转指针必须递增80个旋转步幅。)在旋转之后,执行3阶段FFT操作以产生副载波值。这些数据值被存储在单独的缓冲器中用于解调。另外,如下面所描述的,它们被用来更新也被用于解调的信道估计值。
在上述FFT之后,状态8现在必须校正残留的频率漂移和定时漂移。它使用长码频域副载波作为起始点来估计这两个效应。在第一个符号处计算其导频副载波和长码导频副载波之间的角度。这些角度的平均值将确定残留的频率漂移,其中第一个和第四个之间的差别导出定时漂移。频率漂移校正在所有副载波上是相对不变的,而定时漂移在副载波上引入线性相位。两个估计值被用于以正确的方式旋转长码副载波,以随后补偿两个效应。前者以及根据后者确定的被引入初始线性相位被用来计算旋转器地址。后者被用于计算旋转的步幅。现在以两种方式使用旋转数据。第一,数据副载波值被存储在另一个缓冲器中用于解调。第二,这个旋转数据在下一次符号迭代时取代长码的副载波的工作,而成为新的基线信道估计值。
处理器120的指令映射包括设置要在数据符号的旋转上使用的步幅。单样本频率漂移量被存储在缓冲器10 中。这是旋转器需要在每个符号样本移动的量。这个值通过单元C退化模式读入输出缓冲器中。合并缓冲器步幅被初始化为输出缓冲器值。这一步设置步骤5中的步幅。
处理器120存储旋转指针,从而使其能够被正确地更新。旋转指针必须在每个符号以缓冲器6 中的值递增(见状态7的步骤1)。因此,有必要在更新当前的旋转指针值之前先存储它。缓冲器10被设为输入缓冲器,其地址设为1004。没有合并缓冲器。单元C被设为退化模式,因为没有合,而且输出被写入缓冲器7的地址1003。
处理器120更新旋转指针,并且将其值设置为合并缓冲器的地址用于旋转。旋转指针现在以缓冲器6 中的值递增,该缓冲器包含逐个符号的旋转调整值。因此缓冲器6 被加到缓冲器7 上,并且在取模数360*64之后写入缓冲器10 。此外,这个和被用来设置步骤5的旋转所用的合并缓冲器的初始值。
处理器120在步骤6中为数据符号的旋转而设置输入地址生成器。包含在缓冲器6 的值被用于在步骤6中为数据符号的旋转而设置输入地址生成器。这个值是包含时域数据的输入缓冲器的正确起始地址。
处理器120对于数据符号执行旋转。这一步骤的进行和状态6非常类似。现在所使用的输入缓冲器是其初始地址已经被初始化的样本缓冲器。此处基线合并缓冲器的地址被初始化。输出被写入缓冲器8。
处理器120执行第一个FFT阶段。这和状态6中描述的完全相同。第二个FFT状态的执行和状态6相同,但其不同在于读缓冲器和写缓冲器。第三个FFT阶段在当前的信道估计和导频符号之间进行相关。在功能上,这个步骤将在状态8中前一次符号迭代时写入的信道估计导频副载波样本(缓冲器7)乘以当前符号的导频副载波的复共轭。因此,有4个对应于4个导频副载波的乘法运算。还应注意到,没有累加并且有4个写操作。读地址被初始化为12,对应于第一个导频副载波的存储单元。两个读步幅被设为14,对应于每个导频的副载波分离。但是,写操作被顺序地完成写入缓冲器10中。
处理器120将地址形成为逆向查找表(LUT)。这个步骤类似于状态6的步骤2,其中希望找到步骤9的绝对实部输出的逆。这个步骤共执行4次(见步骤12)。每次使用来自缓冲器10的一个不同读地址。第一次使用地址1,而后读地址递增1。
处理器120得到来自查找表的逆值。这个步骤类似于状态6的步骤3,其中存取对应于逆向查找表的地址。这个步骤共执行4次(见步骤12)。每次使用缓冲器6上的一个不同写地址。第一次使用地址1000,而后写地址递增1。
处理器120将地址形成为逆向查找表,并且三次以上获得来自该查找表的逆值。这些值被用来查找商(也就是角的正切)。这个步骤类似于状态6,其中确定缓冲器6的虚部及其实部之间的商。不同之处在于这个步骤必须确定4个商而不是1个。因此,向量运算的数量是4,而且每次相乘时发生一次写操作。输出被顺序地写入始于存储单元1001的缓冲器7。
处理器120将地址形成为一个反正切查找表(LUT)。这个步骤类似于状态6,并且共执行4次。输入缓冲器的读取地址取决于这个步骤已执行了多少次。如果是0次,那么它就从缓冲器7的存储单元1001读取。后续每次的读取地址单元递增1。
处理器120确定来自LUT的角度,并且加上调整值,从而到达正确的象限。这个步骤类似于状态6,并且共执行4次。写地址取决于这个步骤已执行了多少次。如果是0次,那么缓冲器10的存储单元1000被写入。后续每次的写地址单元递增1。
处理器120将地址形成为一个反正切查找表(LUT),确定来自LUT的角度,并且加上调整值,从而到达正确的象限三次。使用这些角度,来确定定时漂移校正因子。在功能上,这个步骤确定第一次输出的角度和当步骤15第四次被执行时输出的角度之间的差值。这个差值然后被乘以一个非常接近1/42的常数。
输入缓冲器被设为包含4个角度的缓冲器10。因为只需要第一和第四个地址,所以步幅设为3。合并缓冲器被设成实用缓冲器,其中使用的是存储单元601和602。因此,初始合并地址被设成601,而步幅为2。在这些查找表地址的值分别约为8*2^7*1/42和-8*2^7*1/42。“8”存在于查找表中,所以输出包含3个分数比特(fractional bits)。这些分数比特提高了解调器的性能。
单元C能够在2的向量运算上进行相乘和累加。输出被右移7个比特。这个右移消除了存在于查找表中的2^7因子。
使用根据反正切查找表而确定的角度,来确定残留的频率漂移校正因子。在功能上,这个步骤确定四个输出的平均值。因此,来自缓冲器10的每个角元素需要乘以1然后再一起求和。
输入缓冲器被设为包含4个角度的缓冲器10。合并缓冲器被设成实用缓冲器。方便的是,地址1包含被用来乘以所有四个角度的值1。因此,合并初始地址被设成1并且步幅设为0。单元C被设成相乘和累加4个运算。输出被写入缓冲器7的地址1007。
处理器120使定时校正因子乘以26。该定时校正因子并非同样地施加于每个副载波。相反,定时校正因子最终需要乘以副载波数,从而获得用于特定副载波的定时校正值。例如,在副载波-26,定时校正值需要乘以-26。因此,在步骤21中设置的旋转步幅将是定时校正因子。
确定初始旋转指针以确定初始旋转器上的定时漂移效应。由于第一个数据符号出现在副载波-26,所以定时校正因子乘以所述的数。
由于实用缓冲器在相同的地址数包含数值26,此缓冲器就被用作合并缓冲器。单元C被设成相乘且输出被写入缓冲器6的地址1000。虽然需要负数来产生适当的漂移,但这直到步骤19才完成,其中使用的是减法而不是加法。
处理器120从频率漂移校正因子减去定时校正因子的乘法输出,以确定旋转指针的地址。设置初始旋转指针的第二个方面是频率漂移。因为频率漂移在所有副载波上都是常数,所以它只加上定时校正因子的乘法输出的负数。结果然后再除以8。这次除以8并非仅仅右移3比特,因为LSB没有被丢弃。当从UE指令下面的附加MATLAB代码看,这个特殊功能还没有完全在UE内被建模。
处理器120设置要进行的旋转的步幅。合并缓冲器的步幅现在被设成缓冲器7的地址1000中的值除以8。这样除以8并不是仅仅右移3比特,因为LSB没有被丢弃。
处理器120旋转数据以消除定时漂移和残留频率漂移。这一步骤的进行和状态6类似。但是,这里不除以64。此外,由于所关心的只有53个副载波,所以使用53的向量运算而不是64的向量运算。这也意味着起始的输入读地址和输出写地址是7,因为前6个副载波没有内容。此处基线合并缓冲器地址从步骤20被初始化,而旋转的步幅从前一个步骤被初始化。在这个步骤的输出缓冲器中还包括某种转移。输出缓冲器在偶数次迭代时是缓冲器10,而在奇数次迭代时是缓冲器7。
图35说明802.11a/b/g多模式程序的一个示范性状态图。在状态1中,可能执行短同步匹配滤波16次以上以进行OFDM捕获。此外,可以执行巴克同步捕获(Barker Sync acquistion)以启用多模式捕获。
状态1的指令在与阈值相比最大的短同步匹配滤波器能量中结束。如果超过短同步阈值,那么OFDM解调的发生和图34的状态2~8中所描述的完全一样。在图35中,这些状态被重命名为2a~8a以表示802.11a的专有状态。
如果未超过短同步阈值,则执行指令来执行巴克同步捕获(BarkerSync acquisition)。这里以及在任何后续的802.11b状态,信道滤波和插值是通过单元A进行的。插值使用多相位滤波器,其中载入的确切抽头取决于由时间跟踪指令所确定的C×8定时。由于定时是未知的,所以载入对应于无时间漂移的抽头值。信道滤波和插值的输出产生C×2样本。如同在OFDM中一样,单元A被用来执行在样本上进行的匹配滤波。由于巴克长度(Barker length)是11个码片,所以单元A需要三个分开的指令集来建立22个假设。
巴克同步捕获过程的剩下部分类似于OFDM捕获指令。22个匹配滤波器输出的相位是通过单元C的非相干操作来消除的,而且计算出这些值中的最大值。这个最大值和一个阈值比较,以确定巴克同步序列(Barker sync sequence)是否已被发送。在超过上述阈值时,退出这个状态并且设置地址指针(通过单元C指令),所以随后能够产生及时的巴克相关(和匹配滤波相比)。
在状态2b中,使用实用缓冲器作为巴克序列源,通过单元C相乘和累加命令来产生和11个码片的巴克相关。这个指令的输出被馈送到不相干的DBPSK(差分二进制相移键控)指令集中。最近的一组输出(most recent set of outputs)乘以被一组近来的输出(one set of recentoutputs)所延迟的输出的复共轭,以获得比特之间的相位变化。这可以通过单元C的向量乘法运算完成。这些输出的实部的符号可以被用于确定所发送的加扰同步比特(scrambled sync bit)。这个比特被发送到RX符号处理器用于解加扰和SFD检测。这个符号也被用于调制消除(modulation wiping),调制消除其后被用于粗略的频率漂移校正。如果符号是负的,那么复输出即被乘以1并被顺序写入一个缓冲器;否则就照原样写入。这个操作可通过单个转移指令或者通过可以基于当前绝对值(实部(-))电路的一个附加的单元C格式操作来完成。最终,这个缓冲器的内容必须取平均值。
当从RX符号处理器检测到SFD(开始帧分隔符)时退出状态2b。在状态3b中执行SFD处理。除了提供SFD检测指示,RX符号处理器也提供SFD检测的准确定时。这种定时信息被处理器用于了解信头和载荷处理何时开始和结束。通过简单的单元C的复制、相加和比较指令而实现的简单计数器足以正确处理这一定时信息。
状态3b完成粗略的频率估计过程,其中它最初确定被消除数据的最后平均值。然后确定结果的角度。这个角度被用作一个旋转器的步幅,以在巴克相关器输出上进行粗略的频率校正。
最后几个(例如5个)去相关的、去旋转的SFD符号被用于确定后续使用的绝对相位,以进行在相干DBPSK解调中应用的相位跟踪。利用SFD检测、查找表(包含每个符号对第一个符号的相对相位引用)以及向量相乘指令的定时,这些符号可以不被消除。通过前面所描述的单元C指令,取这些符号的平均并计算后续的角度。这个平均角度被用作信头和载荷相干解调的初始相位参考。
在状态4b中,执行信头解调。巴克解扩频数据被再次去旋转。旋转指令使用和前面状态3b中相同的步幅。此外,还需要一个漂移量。这被设成来自状态3b的初始相位的负数加上来自前面的旋转器操作的最后的漂移量。
旋转器输出的实部符号然后被用来确定所发送的加扰信头序列。这个序列被发送给RX符号处理器用于解加扰。此外,这个序列被用于调制消除,以便能够更新绝对相位估计。取被消除序列的平均值和计算角度。代替平均值的是,通过简单的复制和相加指令,同样能够使用1极IIR滤波器(1-pole IIR filter)。这个角度被加到现有角度上,并且映射到180°-180°(通过一个查找表),从而产生被更新的估计相位。
应注意,相位不是被连续更新的。相位只需要每5~10个符号更新一次,这是因为残留的频率漂移是少量的。这样就使处理器能够减少时钟预算(clock budget)(例如去旋转可被施加在解扩频数据的向量上并且只需要每隔几个符号计算相位角)和减少功率消耗。
绝对相位也被用于时间跟踪的锁定方法。每次相位从180°环绕到-180°,环绕计数器就递增,而反之,在相反方向上的一次环绕就使得环绕计数器递减。这可以通过单元C的转移、复制、相加以及相减指令来完成。一旦环绕计数器通过完成多个指令而到达一定数值,馈送到插值抽头值中的地址指针便递增或递减。与相位调整中相同,这组指令不需要在每个去相关的被消除输出之后发生。因为定时漂移是缓慢的,所以它能够每隔N个符号发生,从而使时钟预算减少因而功率也减少。
在状态5b中进行载荷解调。RX MAC给处理器发送关于在这个点所需要的解调类型以及分组长度的指示。如果调制类型是DBPSK,那么这个状态和状态4a几乎完全相同,不同的是被解调符号的数量。如果调制类型是DQBPSK,则调制消除必须被增强。不仅必须使用去相关输出的实部的符号,而且不管实部的符号是否和虚部的符号相同。如果符号相同,即可使用与DBPSK消除相同的逻辑。如果符号不同,那么必须交换实部值和虚部值。
如果调制类型是CCK,那么必须使用单元D。最好是单元D具有特定电路用来实现快速沃尔式变换(Fast Walsh Transform)和最大检出器(max picker)。单元D一次输入8个码片并输出最大检出器的索引以及对应于该索引的复数值。前者可通过合并单元C指令和RX符号处理器逻辑而被用于导出被解调CCK比特。在处理最后一个符号后,处理器返回状态1。
图36说明只有TX处理的OFDM的示范性状态图。在状态0中,处理器在这个状态不进行TX处理。它在退出这个状态之前等待来自MAC的指示。在状态1,处理器5次写短代码到样本缓冲器。由于短代码序列存储在实用缓冲器中,所以这个指令通过单元C复制命令完成,且在实用缓冲器中启用地址环绕。这个状态共进入两次所以所有10个短代码被写入。
在状态2,长代码的64个样本序列也存储在实用缓冲器中。使用结合地址环绕的单元C复制命令,32个长代码保护间隔样本以及第一个长代码的前48个样本被写进样本缓冲器。在状态3,使用结合实用缓冲器中的地址环绕的单元C复制命令,第一个长代码的最后16个样本以及第二个长代码(其等于第一个长代码)的所有64个样本被写入样本缓冲器。
在状态4,处理器通过从实用缓冲器读取而在导频副载波地址中写导频副载波样本,其中加扰的LUT位于实用缓冲器中。需要两组不同的操作,一组用于在地址43和57写导频副载波,而另一组用于在地址7和21写。随后,加扰的地址指针递增。
然后,根据正确的移位地址映射,数据副载波样本作为导频副载波值被写进样本缓冲器。这些数据样本是被TX样本处理器写进样本缓冲器的调制(例如,16-QAM)数据。在能够在数据和导频副载波上执行IFFT(快速傅氏逆变换)之前,远离中心的副载波地址和DC副载波地址被填为0。数据和0填充都是通过一系列的向量化单元C复制指令完成的。
解析的数据用作3阶段IFFT的输入,3阶段IFFT是通过单元B指令完成的。使用地址环绕,IFFT输出的输出被写入包括其预先挂起的保护间隔的样本缓冲器。
虽然以上的实施例已经是关于802.11描述的,但是也可以使用其他的通信协议和技术。此外,系统参数和设计标准能够影响特定的设计而不偏离本发明的范围。本发明不局限于特定的实施例,而是延伸到那些落在所附权利要求的范围和精神内的各种修改、组合和排列。
权利要求
1.一种基于编程指令处理数据的方法,所述方法包括通过形成地址和对应于多个缓冲器中的独立缓冲器的正确缓冲器映射,来引用存储器中的多个存储单元;和将来自被引用的所述存储器中的存储单元的数据传送给一处理单元,其中该处理单元同时从所述多个缓冲器中的独立缓冲器接收输入,并且输出到所述多个缓冲器中的另一个缓冲器。
2.如权利要求1所述的方法,进一步包括选择性地将来自所述独立缓冲器的数据引导到多个处理单元中的一个处理单元,其中所述一个处理单元是被配置用来执行有限冲激响应操作的。
3.如权利要求1所述的方法,进一步包括选择地将来自所述独立缓冲器的数据引导到多个处理单元中的一个处理单元,其中所述一个处理单元是被配置用来执行快速傅里叶变换操作的。
4.如权利要求1所述的方法,进一步包括选择性地将来自所述独立缓冲器的数据引导到多个处理单元中的一个处理单元,其中所述一个处理单元是被配置用来执行向量处理操作的。
5.如权利要求4所述的方法,进一步包括累加连续输出的结果。
6.如权利要求4所述的方法,其中所述向量处理操作包括驱动向量计算的单个指令。
7.如权利要求1所述的方法,进一步包括多个处理单元,所述多个处理单元在使用时被通电,在不使用时被断电。
8.如权利要求1所述的方法,进一步包括多个处理单元,所述多个处理单元在使用时具有一个启用时钟脉冲,在不使用时具有一个禁用时钟脉冲。
9.如权利要求8所述的方法,其中所述多个处理单元包括被配置用来执行有限冲激响应滤波操作的第一处理单元,被配置用来执行快速傅里叶变换操作的第二处理单元,和被配置用来执行向量处理操作的第三处理单元。
10.如权利要求1所述的方法,其中将来自被引用的所述存储器中的存储单元的数据传送给一处理单元包括将数据传送给一比特移位单元,该比特移位单元被配置用来移动被传送数据比特,以及将移位的被传送数据比特传送到所述处理单元。
11.如权利要求1所述的方法,进一步包括将数据从所述处理单元传送给一比特移位单元,该比特移位单元被配置用来根据编程指令而移位被传送数据比特。
12.一种处理通信信号的可操作装置,所述装置包括多个缓冲器;一控制器,其包含编程指令,所述编程指令被配置用来通过形成地址以及对应于所述多个缓冲器中的独立缓冲器的正确缓冲器映射,而引用存储器中的多个存储单元;以及一处理单元,其同时从所述多个缓冲器中的独立缓冲器接收输入,并且输出到所述多个缓冲器中的另一个缓冲器。
13.如权利要求12所述的装置,进一步包括多个处理单元,其包括被配置用来执行有限冲激响应滤波操作的第一处理单元,被配置用来执行快速傅里叶变换操作的第二处理单元,以及被配置用来执行向量处理操作的第三处理单元。
14.如权利要求13所述的装置,其中所述的第一、第二和第三处理单元从所述多个缓冲器选择性地接收信号样本,在所接收的信号样本上执行操作并将所执行操作的结果传送给所述多个缓冲器。
15.如权利要求13所述的装置,其中所述有限冲激响应滤波操作包括卷积运算。
16.如权利要求13所述的装置,其中所述快速傅里叶变换操作包括蝶式运算。
17.一种用于处理被传送通信信号的系统,所述系统包括通过形成地址和对应于多个缓冲器中的独立缓冲器的正确缓冲器映射来引用存储器中的多个存储单元的装置;以及将来自被引用的所述存储器中的存储单元的数据传送给一处理单元的装置,其中所述处理单元同时从所述多个缓冲器中的独立缓冲器接收输入,并且输出到所述多个缓冲器中的另一个缓冲器。
18.如权利要求17所述的系统,进一步包括选择性地将数据引导到以下任何装置之一的装置(a)执行有限冲激响应操作的装置;(b)执行快速傅里叶变换操作的装置;(c)执行向量处理操作的装置。
19.如权利要求18所述的系统,进一步包括控制用于选择性地引导被接收数据的装置的操作状态的装置。
20.如权利要求18所述的系统,进一步包括寻址存储器缓冲器的装置,该存储器缓冲器被配置用来从以下装置接收结果(a)用于执行脉冲成型操作的装置;(b)用于执行快速傅里叶变换操作的装置;(c)用于执行向量处理操作的装置。
21.如权利要求17所述的系统,其中被接收数据包括符合802.11a协议规范的信号样本。
22.如权利要求17所述的系统,其中被接收数据包括符合802.11g协议规范的信号样本。
23.一种基于编程指令处理数据的方法,所述方法包括执行向量处理操作,其中所述向量处理操作包括驱动向量计算的单个指令。
24.如权利要求23所述的方法,进一步包括通过形成地址和对应于多个缓冲器中的独立缓冲器的正确缓冲器映射,来引用存储器中的多个存储单元;和将来自被引用的所述存储器中的存储单元的数据传送给一处理单元,其中该处理单元同时从所述多个缓冲器中的独立缓冲器接收输入,并且输出到所述多个缓冲器中的另一个缓冲器。
25.如权利要求23所述的方法,进一步包括选择性地将来自所述独立缓冲器的数据引导到多个处理单元中的一个处理单元,其中所述一个处理单元是被配置用来执行向量处理操作的。
26.一种基于编程指令处理数据的方法,所述方法包括解调一符合802.11的波形,其中该符合802.11的波形被异步处理成一和所述波形关联的样本速率,并且是基于编程存储器中的编程指令的。
27.一种基于编程指令处理数据的方法,所述方法包括通过形成地址和对应于多个缓冲器中的独立缓冲器的正确缓冲器映射,来引用存储器中的多个存储单元;和将来自被引用的所述存储器中的存储单元的数据传送给一处理单元,其中该处理单元同时从所述多个缓冲器中的独立缓冲器接收输入,并且输出到所述多个缓冲器中的另一个缓冲器,其中缓冲器映射改变,而使得当一指令被执行之后,一被映射为输出的缓冲器被映射成为输入。
28.如权利要求27所述的系统,进一步包括第二处理单元,其中该第二处理单元将一特定缓冲器映射作为输出,且在所述指令执行之后,所述特定缓冲器被映射成为对所述处理单元的输入。
全文摘要
一种基于编程指令处理数据的方法,包括通过形成地址和对应于多个缓冲器中的独立缓冲器的正确缓冲器映射来引用存储器中的许多存储单元,以及把数据从存储器中引用的存储单元传给处理单元。处理单元并发地从多个缓冲器中的独立缓冲器接收输入及输出到多个缓冲器中的另一个缓冲器。
文档编号H04B1/707GK1678973SQ03820931
公开日2005年10月5日 申请日期2003年7月3日 优先权日2002年7月3日
发明者R·W·波伊赛尔, T·J·迈尔斯, T·Q·阮 申请人:科马塞克有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1