基于DSP的OFDM系统设计
扫描二维码
随时随地手机看文章
1、引言
信息化已经成为社会发展的大趋势。信息化是以数字化为背景的,而DSP技术则是数字化最重要的基本技术之一。DSP处理器是专门设计用来进行高速数字信号处理的微处理器。与许多通用的CPU和微控制器(MCU)相比,DSP处理器在结构上采用了许多的专门技术和措施来提高处理速度。DSP处理器与通用微处理器不同,它没有采用将程序代码和数据公用一个公共的存储空间和单一的地址与数据总线的冯诺依曼结构(Von Neumann Architecture),而是毫无例外的将程序代码和数据的存储空间分开,各有自己的地址与数据总线,即所谓的哈佛结构(Harvard Architecture),增大了处理器的数据交换能力。
OFDM(正交频分复用),是直接利用离散傅里叶变换(DFT),实现的一种多载波调制技术,它采用并行传输,将所传送的高速数据分解并调制到多个相互交叠并且正交的子信道中,使得每个子通道的码元宽度大于扩展延时,若在码元之间增加一定长度的保护间隔,则多径传输引起的码间串扰基本被消除。OFDM的上述特点使其特别适于在存在多径传播和有多普勒频移的移动无线传输信道中传输高速数据。目前应用于电力线通信,数字声广播(DAB)和欧洲高清晰度电视传输标准(DVB-T), 无线局域网(WLAN)等业务中。
论文在TMS320C5509DSP上根据系统的总体框图,实现OFDM基带系统的设计,并给出了具体的性能指标。
2、OFDM系统的设计实现
2.1 实现系统的任务流程图
系统每帧可以传送56bits的有效信息,数据的传输速率将达到100kbit/s,并且为了减小传输过程中的信道的不理想,用了BSPK对信源进行编码映射,在传输过程中,传输的是时域的信号,但是实际有用的是这些时域信号的频谱,这些信号在时域中是无规则的随机信号,但在其频谱上的各个子载波携带着需传输的信息。现工作框图如图1:
图1. 系统的任务框图
整个系统由DSP和FPGA、D/A、A/D以及一些其他的硬件共同完成。任务流程是由DSP接受由串/并转换过后的并行数据,在DSP内进行BPSK信源编码,将0和1分别映射为0xbffd 和0x3fff两个十六进制的数,再送入IFFT单元将数据变到时域进行处理,然后把数据加上循环前缀,串行送给FPGA进行处理,由FPGA将数据发送给接收板。接收板上由FPGA接到数据进行一系列处理后,将数据又串行传给接收板的DSP。在接收板的DSP上将接受到的数据移走循环前缀,送入FFT单元将数据还原到频域,然后以0为门限进行判决,映射后得到最早的原始数据。
2.1 任务流程详解
原始数据每帧携带56bit的二进制信息(即只有0和1两种取值),在框图中D/A和A/D部分都是由专门的硬件来完成,项目选用的是ADS828e,和DAC902u。
发送部分:
信源编码部分我们采用的是BPSK,为的是进一步增大信号间的欧式距离,通过计算,我们决定选用0xbffd 和0x3fff两个16进制的数来分别代表0和1。由于FFT变换要求数据是2N个数据,所以将数据插入若干个零来补足。具体做法是,将映射后的第28个数据位置开始插入7个零。由于零频时不能有信号(为了无直流分量),在帧的开始不传信息,将第一个数插入零(不是0xbffd),把56个数变为64个数,在接收板上将把同样位置的16个数去掉。
将编码映射后的16位数进行64点的IFFT,把数据由频域变换到时域,等候下一步处理。
在OFDM系统中,为了防止多径延迟,必须加上循环前缀,而这些循环前缀又不能破坏子信道间的正交性,于是将最后16位数提到前面来形成80个数。具体做法是,在IFFT完成后,要加上循环前缀才能将数据发送给FPGA,将数据的最后16位复制到数据开头(原来的16个数不动),把数据变为80个,送给串口发送给FPGA。
在FPGA上进行FIR滤波,和一系列处理后,发送板的任务完成,接下来就将数据送给接收板。
接收部分:
由接收板上的FPGA接收到发送板送来的数据,经过一系列处理后将数据串行送给DSP等待进一步处理。
接收板的DSP接收到FPGA发过来的80个串行数据后,先将循环前缀去掉,即去掉前16位数,将80位的数据变为64位,交给下一步处理。
在把数据变回为64位后,将数据进行FFT变换,由时域变回频域,交由下一步处理。
在进行判决之前,先要把插入的16个数去掉,将64位数变为56位,然后进行判决,BPSK有一个好处就是判决时可以直接以零为门限。经过判决后,将数据还原成原来的初试值。
综上所述,在DSP部分,共有10项任务,
发送端
1.BPSK编码和插入数据(数据个数由56变为64个)
2.作N=64的IFFT变换,将频域的数据变到时域。
3.加入循环前缀(数据个数由64个变为80个),防止多径延迟。
4.通过DMA将数据送到Mcbsp发给FPGA。
接收端
5.由Mcbsp接到数据通过DMA存入数据空间(此时数据应该与第四步结束时相同)。
6.去掉循环前缀(数据个数又由80个变为64个,此时数据应该与第三步结束时相同)
7.作64点FFT变换(此时结果应该与第一步结束时相同)
8.去掉插入的数据,反映射(数据个数由64个变为56个,此时结果应该与第一步开始时相同)并解码。