1 概述
随着微电子技术的快速发展,可编程芯片的处理能力也在不断加强,尤其是DSP芯片正在朝着高速,多指令并行执行的方向发展。DSP处理能力的增强,使得原来运算量很大的算法可以用软件的方式快速实现。由于软件处理的灵活性,这给整体的无线电体系结构带来了深刻的变化。
软件无线电是指一种基于可编程的,具有一定灵活性的高速信号处理平台。处理平台上的设备都可以进行重新配置,将通用化、模块化、标准化的算法单元用软件方式实现,根据系统的实际需要,在软件中添加各种不同算法,可以完成特定的功能,因而可以跨越多种通信标准。当需要从一种标准切换至另一种标准时,处理器能够动态的在软件的主要部分切换[1"5]。
2 系统结构设计
本平台主要针对宽带无线数字通信系统物理层的中频和基带单元的数字信号处理,如图1所示,平台上有两个DSP(ADI,TigerSHARC201),一个FPGA(Xilinx XC2S300E)和一个CPLD(Xilinx XCR3256XL208)。依据信号处理各模块的运算特点,以及器件特点,我们将不同的模块选择在不同的器件中完成。FPGA设置灵活,但是主频很难做高,通常低于120MHz,适合于处理可并行计算的模块;而DSP主频很高,主要以串行方式执行指令,且DSP支持C语言,所以便于处理通信协议。基于以上特点,FPGA适合处理发送端数据以及数字上变频(DUC);在接收端适合处理数字下变频(DDC),匹配滤波器,定时同步等其它基带处理模块。DSP适合定时同步,信道估计,FFT变换,解交织,译码等其它基带处理模块,以及通信协议处理。而CPLD由于其器件特性限制,一般用作主控模块或主控指令翻译器。
现代宽带无线数字通信系统要尽量使用数字信号处理方法来增加可靠性,因此要使用宽带A/D和D/A,但是由于器件性能局限,我们一般情况下选择在中频处使用A/D,D/A。本平台A/D使用12bit的AD9235,最高采样率为65MSPS,如果中频低于65MHz,我们可直接对中频信号进行采样,如果中频频率较高,可以采用带通采样的方法。D/A使用14bi的AD9857,200MSPS,实现中频输出。
图1:平台结构图
宽带无线数字通信系统的一般基带处理算法中主要分为码片级处理和符号级处理,同时还有通信协议处理。码片级信号处理的特点是运算量大,比如定时同步等,所以在以往的系统中大多采用FPGA或ASIC来实现,但是本平台上的高性能DSP中设置了一些特殊单元,完全可以满足码片级处理的要求,表1为DSP处理能力的峰值指标,从此表中我们可以看到其强大的处理能力。符号级处理比如译码等,相对来说处理量不是很大,此DSP还提供了增强的指令,使得Viterbi和Turbo码解码更快。通信协议处理部分需要很多判断,跳转等操作,这部分如果使用FPGA或ASIC处理将使系统开发变得非常慢,而DSP可采用C语言,这点无疑非常适合于通信协议的处理。
表1:DSP处理能力指标
峰值速率
32-bit 浮点性能 3,600 MFLOPS
16-bit算法 执行时间 时钟周期
256点复数FFT(基2) 1.5µs 901
32-bit算法 执行时间 时钟周期
1024点复数FFT(基2) 16.8µs 10,061
注:此表中是DSP工作在600MHz时的数据
FPGA作为DSP的硬件协处理器能够增强功能,改善吞吐量,减小系统成本。本平台上的FPGA较小,只有100万逻辑门,在此平台上主要作为DSP的协处理器。CPLD为主要用于完成主控指令的转换。
2.1 DSP体系结构简介
平台上使用的高性能DSP TigerSHARC201主频600MHz,其主要特点是能够进行多指令并行执行,芯片内部集成了一些专用处理模块,用以保证一些较为复杂的运算指令也能在一时钟周期处理完毕。
TigerSHARC201内部主要模块:(1)两个运算模块,可以并行执行计算,且每个运算模块每周期能完成2条运算指令,大大增强了数字信号处理能力,支持定点和浮点运算;(2)两个整数ALU,能提供强大的地址产生能力和通用的整数操作;(3)六块片内DRAM共24M bit,每块4Mbit,用于存储指令和数据,这种分块DRAM结构使得DSP可以在取指的同时访问数据;(4)三条相互独立的128bit宽片内数据总线,使得指令行能包括4个32bit指令,且提供了许多并行操作以简化编程。例如,一条指令行可以让DSP有条件的在两个运算模块中分别执行乘,加和减操作,且可以同时跳转到程序的其它地方。每条片内数据总线都与六个片内DRAM相连,用以保证片内指令和数据的并行高效传输[6]。
TigerSHARC201外部接口:(1)一个总线接口,数据线可配置为64bit或32bit,地址线32bit;(2)四个Linkport接口,采用LVDS技术,每个接口能提供额外的全复用4bit接收和发送能力,其最大传输速率500Mbytes/s,用于处理器间的点对点高速数据传输,为数据传输提供了又一种途径,Linkport接口也是本平台的最大特点之一[6]。
2.2 数据调度方法
数据调度的原则是:尽量减少芯片间的数据传输量。因为芯片间的数据传输要走PCB板的数据线,其数据传输速率相对较低,而且过于频繁的板级数据传输容易造成系统调度冲突,不便于处理。但是此DSP支持一个特殊的数据传输接口——Linkport接口,可以在很大程度上缓解此问题。
使用DSP的Linkport接口分别实现DSP与DSP,DSP与FPGA之间的点对点高速数据传输,这样可满足数据调度原则,使得系统总体调度变得较为简单。总线接口只要负责控制指令和小量数据的传输就可以了。如果两个DSP要对同一批数据分别进行处理,那么这时候就要走总线接口,使用广播的方式进行数据传递,即两个DSP可以同时接收数据,以减少数据调度。平台上有两个DSP,根据系统运算量需求来确定使用一个或者两个都用。DSP间可以形成了一个处理链,也可以配置成两个DSP并行处理。
为了使得平台便于调度,所以可在平台上将FPGA或者一个DSP设置为从属器件。在FPGA中设置控制寄存器和状态寄存器,在从属DSP中设置控制变量和状态变量,DSP通过总线接口来读写这些寄存器或者变量以达到控制从属器件的目的,这样做相当于硬件平台上只有一个“大脑”,有利于减小硬件平台调度冲突。同时FPGA还要通过总线接口接受CPLD(即主控)的控制。
2.3 控制信息处理机制
控制信息处理机制是指DSP作为硬件平台的核心,如何控制其它从属器件。一般主要有两种方法:查询模式和中断模式。查询模式是指从属器件在特定时刻(一般为某个模块处理完毕后)会主动读取DSP发送来的并已事先存储在缓存中的指令,随后执行。中断模式是指DSP发送的指令以中断的形式强制从属器件立即执行,从而控制整个硬件平台。
CPLD主要用来作为主控或者翻译主控发来的指令,然后将控制信息传递给DSP和FPGA。这里CPLD可以直接通过总线接口控制FPGA,也可以通过DSP间接控制FPGA。
3 应用于直接序列扩频系统
首先将各接收模块信号运算的特点以及FPGA和DSP的特性相结合,找出比较适合于执行此模块的器件,然后进行运算量估计,根据运算量估计结果考虑使用DSP的数量以及芯片间的数据调度方式。本平台采用了如图2所示的处理流程,发送端全部在FPGA内部处理。接收端下变频在FPGA内处理,其它模块全部由DSP处理,两个DSP形成一个处理链关系,
图2:直扩系统处理流程图
数据先进入DSP A,然后由Linkport接口传给DSP B,译码完毕后由DSP B经过总线接口传递给CPLD,通信协议全部在DSP B内部处理。DSPB作为整个平台的处理核心,DSP A和FPGA均为其从属器件。
3.1 发送端
因为发送端数据处理量较小,占用系统资源相比于接收处理基本可以忽略。依据图1所示处理平台结构,将原始数据直接发送给FPGA进行调制和上变频等处理即可[7]。
3.2 接收端
FPGA主要负责数字下变频,因为这部分的运算特点是处理量大,但是不需要繁琐的调度。利用本地数控振荡器(NCO)产生与输入中频信号频率相同的正弦和余弦信号,并与输入信号相乘,然后对运算结果做低通滤波,即可完成对中频信号的下变频操作。具体的参数由主控通过CPLD发送指令到FPGA中的控制寄存器来设定。FPGA中的寄存器又分为两部分,一部分受CPLD控制,这样主机可以通过CPLD发送命令来控制A/D的采样率以及选择数字滤波器的参数等,以适应不同的通信标准;另一部分受DSP控制,执行数据调度操作。
DSP主要完成整个基带数字信号处理,包括定时同步、纠正频偏、信道估计、RAKE接收、数据检测、解扩、解交织、维特比译码等模块。定时同步部分的特点时运算量比较大,且需要一些跳转等控制。因为此DSP有非常强大的FFT运算能力,所以我们采用基于FFT快速相关的方法进行同步。DSP内部代码采用C语言与汇编语言汇合编程的方式,利用两种语言各自的优势进行互补。
C语言开发速度很快,可读性很强,而且方便软件的修改和移植,但是效率较低。汇编语言的效率很高,但是修改和移植能力较差,而且不便于调度。基于这个特点,我们将程序全部模块化,标准的算法模块用汇编语言编写,如FFT模块等,整体的程序框架采用C语言,所以定时同步模块采用DSP。另外,TigerSHARC201 DSP还支持一些专门用于直扩系统的指令,如解扩指令,Viterbi和Turbo译码专用指令等,所以将基带处理部分放在DSP内处理较为合理。
这样处理的另外一个优势是使得系统兼容性更强,在此系统中采用了不同的序列扩频比来抵抗信道衰落造成的影响,大范围变化的扩频比会使系统整体调度发生很大变化。比如当扩频比为16时,所需的RAM较少,这样片内的DRAM就已经够用;而当扩频比为10240时,就必须要使用片外RAM,这样就要用到总线接口,此时两种系统的基带处理模式完全发生了变化,从而导致系统整体调度发生变化。用C语言处理时,可以设定几个不同的工作模式,在处理循环开始的时候进行切换即可。如果采用了不同的通信标准的话,处理就更为繁琐一些。
平台控制信息和状态信息处理机制都采用查询模式,即在执行完一次循环后,DSP都会主动去读取主控发来的控制指令,随后读取FPGA的状态信息,最后根据情况调整工作模式。
4. 结束语
本文作者创新点是提出一种使用新的高速串行接口设计通用软件无线电平台的方法。平台以高性能DSP为数据处理核心,采用了一种新的高速串行接口进行平台数据调度。实践证明,这种方法可以避免一些不必要的调度开销和冲突,简化了系统设计,缩短了开发周期。然后将其应用于直接序列扩频系统,用实际系统设计说明了这种方法的优势所在。