SoC设计复杂度不断增加但设计周期却显著缩短,设计的软件可编程特性要求越来越明显。作为可自由配置和灵活扩展的嵌入式微处理器, Xtensa LX处理器不但能满足控制任务的要求,而且能够完成密集计算型数据任务。该处理器具有独特的设计流程,含括了从处理器配置到具体硬件实现的完整过程。本设计针对Xtensa LX处理器的强大功能,利用Tensilica提供的设计技术完成对根升余弦滤波器的设计实现,并且对不同实现方法进行比较。
当今,在通信与多媒体领域,SoC设计越来越复杂,设计周期越来越短,而且为了适应市场需求及各种应用协议标准不断变化的要求,SoC设计必须灵活且性能优越,这就使SoC朝着软件可编程化发展,保证在激烈的竞争中把产品迅速推向市场,满足消费者的不同需求。
图1:Xtansa LX处理器开发流程。 |
然而,针对以密集计算性数据处理为目标的应用,如图象处理、语音识别、包交换通信等领域,通用的数字信号处理器(DSP)往往缺乏足够的灵活性来执行复杂且高带宽要求的数据处理任务,因为通用DSP有固定大小和带宽的指令结构集和寄存器,不能针对不同的应用而灵活地调整,使得这种DSP的运行非常缓慢达,不到设计要求。并且,一些应用领域并不能够充分利用通用DSP提供的全部特性,这样导致DSP的资源不必要的浪费。但是,如果针对专有应用而开发专用集成电路(AISC),其灵活性也受到很大的限制,而且这种设计方法开发周期长、风险高,并不适合于算法复杂且灵活变化的应用。
不同于传统的嵌入式通用DSP,Tensilica的Xtensa LX处理器可以自由配置、可以灵活扩展并且能够自动生成。设计者能够根据特殊的应用灵活配置处理器,即对处理器结构进行相应的裁减,使处理器性能和特殊应用达到完美的匹配。同时,利用Tensilica指令扩展(TIE)技术,加入设计者自定义的硬件辅助执行单元,可以得到与硬件设计相媲美的性能、面积和功率特性。
Xtensa LX处理器设计流程
作为面向特殊应用的可灵活配置和扩展的嵌入式微处理器,Xtensa LX处理器有其独特的设计流程,该流程包括从处理器配置到具体硬件实现的完整过程。其中,基于Xtensa LX处理器设计的一个重要特点就是需要借助Tensilica提供的处理器生成器(XPG)来自动产生用户自定义的处理器软件和硬件开发环境。该生成器位于Tensilica公司的服务器上,用户在设计过程中需要与其交互才能开发出满意的专有应用处理器。
Xtensa LX处理器完整设计流程包括软件开发与硬件实现阶段,即处理器探索、生成以及实现三个步骤。并且针对不同的设计阶段,Tensilica提供统一的开发环境Xtensa Xplorer,设计者利用该工具能够进行单处理器与多处理器的开发。图1显示了利用XPG和Xtensa Xplorer开发专用应用处理器的完整设计流程。
首先,根据算法的特点和复杂度,设计者可灵活配置处理器并生成处理器配置文件(Xtensa Configuration File, XCF),该文件除了包括Xtensa LX处理器的基本指令集结构以外,还含有针对特殊算法所用到的配置功能,如乘累加运算模块、各种调试接口以及外围总线接口等。然后,设计者需要把该文件上传给XPG作自动处理,经过一段时间XPG把处理的结果又自动下载给设计者。在该阶段,XPG根据用户选择的硬件实现技术(目前130或180nm)来估计该配置处理器的面积、功耗以及运算频率等,方便用户设计。同时,XPG根据XCF还能自动生成适合于自定义处理器的各种软件开发工具,包括编译器、汇编器、连接器、调试器以及指令集仿真器等。
在这些工具基础之上,设计者就能实现算法的各种编译、调试和仿真等软件开发工作。在软件开发阶段的另外一项重要工作就是设计者根据处理器指令集的特殊结构以及算法的特点,利用指令扩展技术开发出设计者自定义的执行单元,辅助处理器的运算,大规模提高处理器的处理性能。如果该自定义处理器的性能、面积、功耗以及运算频率等满足用户的设计要求,配置文件XCF和TIE文件就固定下来,利用它们完成处理器的硬件实现。如果该处理器不满足设计要求,则可重新开始设计流程的第一步,不断反复设计优化,直至开发出设计者满意的自定义处理器内核。
图2:RRC滤波器实现结构。 |
对于Xtensa LX处理器的硬件实现,XPG需要利用设计者确定的配置文件XCF和TIE文件,自动生成后端实现所需要的各种参数和模块,包括:RTL仿真模型、处理器网表、各种实现脚本、静态时序模型、硬件设计接口、指令集仿真器、软硬件协同仿真模型等等。当然,处理器的仿真以及实现还需要借助各种EDA工具,如NC -Verilog、Design Compiler、PrimeTime、Seamless等。
根升余弦滤波器的设计实现
根据第三代合作伙伴计划(3GPP)规定,在TD-SCDMA终端通信系统中需要使用根升余弦(Root Raised Cosine, RRC)滤波器来实现数据的接收和发送。在终端系统中,RRC滤波器需要处理大量数据,通常其算法的实现都是用硬件来完成的。而Xtensa
表1:RRC滤波器特性。 |
1. 根升余弦滤波器算法
根升余弦滤波器的冲击响应可表示为
|
其中Tc表示码片周期,(为滚降因子。通过大量仿真可以得到,用矩形窗函数法实现的RRC滤波器就能够充分满足TD-SCDMA通信系统的要求。该滤波器的特性见表1。
通过公式1和表1,可以先计算出滤波器的65点冲击响应值,在实现输入数据的滤波时就可以直接通过查表法快速地提取该响应,方便计算。
2. 根升余弦滤波器实现
RRC滤波器对输入数据的滤波可用下式表示:
|
式中,N为滤波器冲击响应参数,h(n)表示滤波器冲击响应,x(n)表示输入数据,y(n)表示经滤波后的输出数据。根据公式2的卷积特性,RRC滤波器能用图2所示的典型结构实现。
由图2结构可以看出,该滤波器的实现包括两个操作:输入数据x(n)的移位运算,输入数据x(n)与滤波器冲击响应h(n) 的乘累加运算。在通用的DSP中,输入数据的每次移位只能有一个数据参加操作,且数据的乘累加被分开运算,即先做乘法再做加法,同时DSP还要完成对大量数据的存取操作,这些因素使基于通用DSP实现的RRC滤波器运算非常缓慢。而利用Tensilica提供的处理器扩展功能,设计者能够方便地加入自定义的执行单元辅助处理器完成运算工作,加快RRC滤波器的运算,达到与硬件实现相媲美的处理性能。基于Xtensa LX处理器的RRC滤波器实现,利用Tensilica提供的独特的处理技术,有两种方法可以完成设计,下面分别论述。
a. 实现方法一
在通用的DSP中,每次只能一个数据参加移位操作,当大量数据需要处理时移位操作会消耗大量处理时间。而TIE技术提供单指令多数据(SIMD)功能,该功能允许在一个处理器指令内同时对多个数据进行操作。在RRC滤波器的移位操作中利用该技术,我们可同时对多个数据进行移位,从而缩短处理器的执行时间,提高处理器的性能。
表2:方法一Xtansa LX处理器性能。 |
在RRC滤波器处理过程中,乘累加操作也是主要运算工作,如何减少该操作的执行时间也是提高处理器性能的有效途径之一。 TIE技术也提供融合(fusion)功能,该功能允许设计者把多个连续的指令加入到一个指令中,即用一个指令就能执行多个连续的处理动作。对于乘累加操作,在传统的通用DSP设计之中,总是先进行乘法运算再作加法运算,它们是两个连续的操作,需要两个处理器指令。而利用融合技术,可以把乘法和加法这两个连续的指令融合在一个指令中,使得处理器在一个时钟周期内就能够完成乘累加操作,从而加快处理器的执行。同时,结合SIMD技术可同时对多个输入数据和冲击响应进行乘累加操作,进一步减少处理器的运算时间,提高处理器性能。利用方法一实现RRC滤波器的Xtensa LX处理器性能见2。
b. 实现方法二
在方法一中,虽然运用了融合和SIMD技术提高RRC滤波器处理性能,但DSP对数据的存取依然花费了大量的时间,这是因为 DSP总线带宽有一定限制,同时对多个数据进行读写操作不能实现。为了加快处理器执行速度,提高对多个数据进行同时处理的并行性,Tensilaca的 TIE技术通过提供特殊的寄存器(state)和用户自定义的寄存器(regfile),可以显著的减少处理器在执行过程中对储存器操作所花费的大量时间。
在方法一中实现的RRC滤波器乘累加操作必须等待移位操作完成之后才能进行,而且需要反复对储存器读和写。可以运用 state和regfile这两种用户自定义的特殊寄存器,在state寄存器中存放乘累加的结果,在regfile寄存器中存放移位操作结果,这样,利用融合技术可以在移位的同时进行乘累加操作,而且不再需要对储存器读写而是直接调用寄存器操作,在减少DSP存取操作的同时提高数据处理的并行性。
利用上述方法,可节省大量的处理器运行时钟数,其性能见表3。
c. 各种实现方法比较
方法一只从计算的角度考虑RRC滤波器用到移位和乘累加操作,利用Tensilica提供的融合与SIMD技术把二者结合起来,加快处理器的执行。然而,该方法在减少计算量的同时并没有考虑到处理器读写储存器所花费的时间。实际上,按照这种方法所设计的滤波器,处理器执行过程中的数据运算部分已经足够精简,大部分处理时间都花在了对储存器的操作上。
方法二正好把数据运算与存储操作结合起来,利用Tensilica独特的用户自定义寄存器功能,可以减少对储存器的操作,从而加快处理器的运算。该方法比前者性能提高将近12倍左右,但因为这种方法利用TIE定义了更多的辅助执行单元,所以用此方法实现的处理器面积更大,这就需要设计者有明确的目标,在性能和面积上作适当的选择。当然,如果工程师花更多时间理解和研究Tensilica开发工具,相信还能为算法找到更好的方案。
表3:方法二Xtenasa LX处理器性能。 |
同时,我们也已经通过ASIC设计方法实现了RRC滤波器。利用这种方法处理相同长度的输入数据共需要2,748个执行时钟,所用门数在2,700左右。可见,方法二实现的滤波器性能已经接近硬件设计,二者性能只相差3倍左右。但是,因为Xtensa LX处理器不只含有用户自定义的执行单元,还包含有最基本的指令结构集,使处理器面积不可能做到专用ASIC那么大小。并且算法和应用越复杂才越能充分利用Xtensa LX处理器的基本资源,使处理器不仅性能而且面积也接近ASIC实现,这样才更能体现LX处理器设计灵活、可自由配置和弹性扩展的优势。
本文小结
Tensilica能够针对用户专用算法,不但提供独特的可自由配置和灵活扩展的Xtensa LX处理器,而且还自动产生适合于该处理器的一系列软件工具和硬件实现模型。同时,运用Tensilica提供的TIE技术,工程师可以方便快速地开发出自定义执行单元辅助处理器的运行,大幅度提高处理器性能,满足用户的需要。但需要注意的是,作为辅助执行单元,TIE技术会增加处理器的面积,执行频率也会受到影响,所以设计者应该明确自己的目标,需要在性能与面积及速度中做出折中的选择。
从以上比较中可以看出,运用Tensalica的Xtensa LX处理器实现的RRC滤波器性能接近硬件实现,而且这种处理器开发周期明显缩短,设计灵活具有软件可编程特性,在超大型复杂应用中更能体现其强大的优势。并且当复杂功能的SoC经过多个Xtensa处理器实现后,比传统(CPU+DSP+RTL)的实现方式更经济也是有可能的,在开发速度上新方法则有明显优势。
参考文档
1. Tensilica, "Xtensa(r) LX Microprocessor Data Book", Sept. 2004
2. Tensilica, "Xtensa(r) LX Microprocessor Overview Handbook", Sept. 2004 3. Tensilica, "Xtensa(r) Instruction Extension (TIE) Language User's Guide", Sept. 2004
4. Tensilica, "Xtensa(r) Instruction Set Architecture (ISA) Reference Manual", Sept. 2004
5. 3GPP TS 25.102, "UE Radio Transmission and Reception (TDD)(Release 4)", V4.7.0, 2002-12
6. 丁玉美,高西全,西安电子科技大学出版社“数字信号处理(第二版)”,2001年1月
7. 周炯槃,庞沁华,续大我,吴伟陵,北京邮电大学出版社,“通信原理(上)”,2003年6月