DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1216|回复: 0
打印 上一主题 下一主题

[待整理] OFDM信道调制解调的仿真及其FPGA设计

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-12 19:39:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
OFDM(正交频分复用)是一种高效的多载波调制技术,其最大的特点是传输速率高,具有很强的抗码间干扰和信道选择性衰落能力。OFDM最初用于高速MODEM、数字移动通信和无线调频信道上的宽带数据传输,随着IEEE802.11a协议、BRAN(Broadband Radio Access Network)和多媒体的发展,数字音频广播(DAB)、地面数字视频广播((DVB-T)和高清晰度电视((HDTV)都应用了OFDM技术。  OFDM利用离散傅立叶反变换/离散傅立叶变换(IDFT/DFT)代替多载波调制和解调,调制解调的核心是快速傅立叶运算单元,在进行蝴蝶运算时,不可避免的要进行大量的乘法运算。由于FPGA具有强大的并行处理和计算能力,以及丰富的存储资源和逻辑运算资源,因此在FPGA器件上实现OFDM调制解调结构,具有很好的通用性和灵活性。
  OFDM与系统框图
  OFDM的多个载波相互正交,一个信号内包含整数个载波周期,每个载波的频点和相邻载波零点重叠,这种载波间的部分重叠提高了频带利用率。OFDM每个子信道的频谱均为sinx/x形,各子信道频谱相互交叠,但在每个子信道载频的位置来自其他子信道的干扰为零,如图1所示。



  OFDM系统如图2所示,OFDM系统的调制和解调分别由IFFT和FFT完成。首先将串行输入数据d0,d1...,d(N-1)变换成并行数据,接下来进行编码和星座图映射,得到频域数据。经过IFFT后相当于调制到正交的N个f0,f1,...,fN-1子载波,完成正交频分复用。接下来加入循环前缀,进行并/串转换,数/模转换,再调制到高频载波上发送。如果是基带传输,则不需要进行载波调制。
  在接收端进行相反的操作,使用N个相同的子载波进行N路解调,再将这N路解调信号并串输出,复现发送的原始信号。经过FFT变换后的数据相当于将时域数据再转换成频域数据,即完成了OFDM信号的解调。
  OFDM调制原理虽然是用N个正交的载波分别调制N路子信道码元序列,但实际中很难独立产生N个正交的载波。所以OFDM多采用VLSI技术,用FFT代替多载波调制和解调。当子信道数目比较多的时候,采用FFT可以大大减少系统的复杂度。而FPGA的并行乘法器和加法器结构容易硬件实现OFDM的核心运算,有效地提高了OFDM调制解调速度。
  软件仿真与设计
  随着FPGA和VLSI的发展,大量的EAB(嵌入式阵列块)、LE(逻辑单元)、内嵌乘法器和高速FIFO存储器带来了OFDM/COFDM的实用化,为OFDM提供了硬件支持。软件上可以采用MATLAB、硬件描述语言VHDL、QuartusⅡ等软件进行仿真与设计。
  仿真过程中采用了随机信号作为输入信号,经过4QAM编码映射后进行再IFFT调制,然后进入信道进行数据传输,每帧信号为512点;同时采用简单的11点数字离散信道,其值为:[0.05 -0.063 0.088 -0.126 -0.25 0.9047 0.25 0 0.126 0.038 0.088]。
  在一般OFDM系统中为使IFFT和FFT前后的信号功率保持不变,当N=2m(m为正整数)时,作如下定义:
  
  采用16位定点算法,这便意味着要考虑溢出问题。对于基-2 FFT,为了防止溢出,可以采用以下办法:将每一个蝶算后的数据右移1bit,即相当于将该数做除2处理。这样,加入总衰减比例因子,将比例因子分散到各步计算中。这种情况下,输出不是原来定义的离散傅里叶变换,而是它的。而对于基-2 IFFT,这个比例因子正是公式中需要的,所以FPGA实现的IFFT便是最终结果。
  图3和图4分别是信道h(n)的FFT值(倒数)和第二帧输入数据(迭代次数10)。


  调制过程中Matlab的IFFT结果同FPGA结果比较如表1所示。


  表1  IFFT结果比较
  经过FPGA的IFFT在非主频率点上有一些小的误差。这是因为在计算IFFT的时候,同样因为舍入问题,在本该为零的点产生一些极小的数值,从而在信号显示时出现这些毛刺。
  对于表1,FFT峰值结果的误差,是因为FPGA采用的是16bit定点算法,在程序中有很多舍位处理带来的误差。至于Sine信号峰值的不同,那是因为将FPGA实现的IFFT结果再进行Matlab的fft()计算,而IFFT的那些毛刺,必然在时域上产生影响。
  在FPGA实现时,一般是在完成IFFT以后将结果暂时存放在RAM中,然后在从RAM里读出数据时,采取部分重复读取的方式,将一部分数据重复复制,从而形成循环前缀。这样可以对连续的数据流进行变换处理,满足系统的实时性要求。


  解调过程中Matlab的FFT结果同FPGA结果比较如表2所示。
  表2  FFT结果比较
  从表2可以看出,FPGA的结果同Matlab的结果基本相同,只是FFT峰值有些不同。这也因为FPGA采用的是16bit定点算法,在程序中有很多舍位处理。但 FPGA的结果是将原小数信号变成整数后再进行处理的,当最后再转换成小数后,结果将是一致的。


  结语
  OFDM信道调制解调的关键是一对离散傅里叶变换。程序可以由Verilog HDL模块进行设计,用相应的模块仿真程序TESTBENCH进行功能仿真,经过波形仿真和结果验证后,将程序下载到FPGA中实现。同时,Verilog HDL仿真结果与MATLAB中函数fft()以及ifft()的输出结果进行比较(采用的是浮点运算),得出图形和数据的比较结果。
  结果表明,用FPGA实现OFDM信道调制解调与MATLAB仿真结果基本一致,具有良好的性能和较高的效率。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-7-24 06:04 , 耗时 0.104902 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表