余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

基于FPGA的自适应MIMO-OFDM无线基带传输系统的研究

xiyangw 2023-05-14 11:33 14 浏览 0 评论

谭 凯1,彭 端2

(1.广东工业大学 信息工程学院,广东 广州510006;2.广东工业大学 实验教学部,广东 广州510006)

基于FPGA的自适应MIMO-OFDM无线基带传输系统的研究

针对自适应MIMO-OFDM无线基带传输系统,提出了一种并行复用的基4-FFT/IFFT算法的FPGA实现方法,并对其中的自适应数字调制、STBC编码和FFT/IFFT模块进行了FPGA实现研究和仿真。仿真结果表明,该方法实现了模块的功能,且性能良好,具有一定的应用价值。

自适应;MIMO-OFDM;并行复用;FFT/IFFT

中图分类号:TN929.5

文献标识码:A

DOI:10.16157/j.issn.0258-7998.170967

中文引用格式:谭凯,彭端. 基于FPGA的自适应MIMO-OFDM无线基带传输系统的研究[J].电子技术应用,2017,43(10):44-46,51.

英文引用格式:Tan Kai,Peng Duan. Research of adaptive MIMO-OFDM wireless baseband transmission system based on FPGA[J].Application of Electronic Technique,2017,43(10):44-46,51.

0 引言

OFDM(Orthogonal Frequency-Division Multiplexing)技术由于其频谱利用率高和抗频率选择性衰落的优点,已经成为无线通信系统中最受欢迎的调制技术。多输入多输出(Multi Input Multi Output,MIMO)技术采用多根天线实现信号在空域和时域的多重复用,在不增加带宽和天线发送功率的情况下,可以成倍地提高频谱利用率,还能在一定程度上对抗多径衰落。基于以上这些优点,MIMO技术已成为进一步提升OFDM系统性能的关键技术。目前,MIMO-OFDM技术已广泛运用到高速无线通信系统中,比如:LTE、WLAN、WiMAX、微波通信以及未来的5G通信等[1]

自适应调制技术利用无线链路的反馈息,动态地对发射功率、编码方式、调制阶数、载波分配等进行调整,使系统在适应时变信道的同时,尽可能地优化吞吐量、误比特率和发射功率[2]。将自适应调制技术应用于MIMO-OFDM系统中,可以优化系统的资源分配,进一步提升系统的性能,具有很好的应用前景[3]

FPGA具有开发周期短、可并行处理、设计灵活、低成本等优点,用FPGA来验证和实现,是一种很好的开发无线通信系统的方法。

本文设计了一个自适应MIMO-OFDM无线基带传输系统,介绍了系统的关键技术,并对其中的自适应数字调制、STBC编码和FFT/IFFT模块进行了FPGA设计和仿真,分析了仿真结果。

1 系统模型

一个基本的自适应MIMO-OFDM无线基带传输系统如图1所示。信源经过信道编码和交织后被送入数字调制模块,此模块根据接收端反馈回的信道信息选择合适的调制方案。被调制的信号送入STBC编码模块,经过Alamouti空时编码后生成两路正交的码流,再经过串并转换后进入IFFT模块进行OFDM调制。解调端的处理是调制的逆过程,需要注意的是在解调端需要引入信道估计模块,用于采集信道信息以实现系统的同步和发射端的自适应调制。

2 FPGA设计

2.1 自适应数字调制模块

本文采用信噪比参数来衡量信道信息,不同的信噪比取值对应于不同的调制方式。利用信噪比作为参数来配置自适应调制的关键在于确定好每种调制编码模式的判决门限。这就需要通过大量的实验测量在不同信噪比条件下,选择何种调制编码模式能使系统的性能达到最优,以找到不同的参数与调制编码模式的映射关系。信噪比与调制方式的映射关系如表1所示。

自适应调制顶层模块接收到对应的SNR参数后,根据表1的映射规则,选择对应的调制子模块,使其使能端有效以启动此模块。随后,将子模块的数据输入端口连接到顶层模块的信号输入接口,以使外部信源数据输入到子模块,实现对应的调制处理。其实现框图如图2所示。

2.2 STBC编码模块

STBC编码模块接收到来自上一个模块的数据,将数据两个一组保存下来。Alamouti编码模块经过相应的逻辑处理生成两个数据的共轭形式,再将原数据和其共轭形式一起保存到下一级寄存器,最后分成两路数据输出。其设计原理如图3所示。

2.3 FFT/IFFT模块

本文采用基4-FFT/IFFT算法来实现64点OFDM调制解调。常见的的FFT实现方法有流水线和并行阵列方法。此两种方法各自有其优缺点。流水线以牺牲时间来换取逻辑资源花费的减少,这种方法占用的逻辑资源少,但是延时很高。并行阵列方法每一级之间也是采用流水线的设计思想,只不过每一级采用多个蝶形并行运算,只消耗一个蝶形运算时间,这样就极大地节省了运算时间,减少了延时,但是会消耗大量的逻辑资源。本文采用这两种方法折中的方法——并行复用法。64点基4-FFT以4点蝶形运算为基本单元,如图4所示。

输入数据按二进制倒位序4点为一组,送入蝶形单元。值得注意的是,图中的乘以-j只需要交换实部和虚部后,再取虚部的相反数即可实现。因此以上蝶形单元不需要使用乘法器,这就节省了逻辑资源的使用。输出的数据是倒位序,需要经过整序以输出正常排序的数据。64点的FFT需要log464=3级运算,每一级需要64/4=16次蝶形运算。本文的设计总共包含16个蝶形运算单元,每一级处理数据时,同时启动16个蝶形单元并行运算,这样完成整级的运算就只需要1个蝶形运算时间单元。除了最后一级的运算,其余每级运算的输出都要乘以相应的旋转因子。因此在设计之初,可以将所有会用到的旋转因子事先保存下来。图5为FFT模块的基本架构。

串/并模块由一个深度为64的RAM实现,将输入数据经过倒序后4个一组并行输出。每一组数据输入到蝶形运算模块中对应的蝶形单元,模块的16个蝶形运算单元接收到数据后同时启动蝶形运算,只需要一个运算时间单元就能完成一级运算。每一级的输出受控制模块控制,如果为最后一级,则不需要乘以旋转因子,经过整序后就可以直接输出。如果不是最后一级的输出,那输出后的数据还要乘上对应的旋转因子,然后经过相应的整序后,输出数据被重新送到蝶形运算单元作为输入执行下一级的运算。直到最后一级的运算完成并输出后,蝶形运算单元才会等待下一组64点数据的到来,接收并作为新的输入,执行新一轮运算。模块每一级的运算重复利用这16个碟形运算单元,实现了并行复用的思想。运算全程受控制模块控制,采用状态机控制每一级的运行状态,状态图如图6所示。

3 仿真测试

本次设计采用Xilinx全新的FPGA开发软件Vivado作为开发工具,硬件描述语言使用Verilog语言。为了便于时序控制,设计采用同步时序逻辑,系统时钟设置为50 MHz。仿真工具采用Vivado集成的仿真工具。

3.1 自适应数字调制

设置不同的参数,自适应调制能实现阶数不同的调制。图7~图8分别展示了16QAM、64QAM的调制结果。

图中的IM_RE和DM_IM分别表示I、Q两路信号,用带符号8位二进制数表示,保留6位小数,图中以十进制显示。DM_INDEX表示数据的序号。

3.2 STBC编码

图9展示了16QAM调制信号经STBC编码后的仿真结果。

图中RE_OUT0、IM_OUT0和RE_OUT1、IM_OUT1分别表示经过STBC编码后的两路相互正交的信号,STBC_ORDER表示数据序号。

3.3 FFT/IFFT

IFFT的运算结构和FFT相同,只需将数据做简单的共轭处理,就可以利用FFT的运算模块计算IFFT。数据经过STBC编码处理后,再做IFFT变换以实现OFDM调制。FFT实现了IFFT解调,因此输出数据因等于STBC编码的输出。图10~图11分别展示了IFFT、FFT的仿真结果。

通过对比图11和图9可以看出,图11的仿真结果并不完全等于图9,这是由于系统采用的是二进制定点数运算,存在误差。不过从图中可以看出,误差在可接受的范围内。因此,可以认为FFT/IFFT模块正确地实现了调制和解调。

该系统采用Vivado集成的综合工具综合和布局布线,在Xilinx ZYNQ7020上实现,其资源消耗情况如表2所示。

4 结语

本文针对自适应MIMO-OFDM无线基带传输系统的关键技术,研究了基带传输系统的FPGA实现,并对其中的自适应数字调制、STBC编码和FFT/IFFT模块进行了FPGA设计与仿真。针对FFT/IFFT模块的设计,在延时和逻辑资源占有上折中,提出了一种并行复用方法,结合基4FFT/IFFT算法来实现设计。仿真结果表明,自适应数字调制能动态地调整调制方式,STBC编码实现了信号的分集,提高了信号的可靠性。FFT/IFFT模块能正确实现OFDM调制和解调,并在延时和逻辑占有率上取得了平衡,具有一定的应用价值。

参考文献

[1] 阙志达,蔡佩芸,赖以威.MIMO-OFDM无线通信基带接收机设计[M].北京:机械工业出版社,2014.

[2] 葛凡超.无线宽带OFDM自适应调制器设计与实现[D].南京:南京邮电大学,2015.

[3] Nguyen Trung Hieu,Nguyen Thanh Tu,Le Tran Danh,et al.Design and implementation of MIMO-STBC systems on FPGA hardware[C].The 2012 International Conference on Advanced Technologies for Communications(ATC 2012),2012:274-277.

[4] Shaik Qadeer,Mohammed Zafar Ali Khan.Fixed point error analysis of Radix-4 and Radix-8 FFT algorithms[C].2011 International Conference on Multimedia Signal Processing and Communication Technologies,2011:32-35.

[5] SRINANDHINI K,VAITHIANATHAN V.FPGA implementation of MIMO-OFDM Transceiver[C].Intenational Conference on Communication and Signal Processing,2014:353-357.

[6] 刘凤,龚晓峰,张军歌.不同运算机制下FFT计算精度分析[J].电子技术应用,2016,42(12):23-26.

[7] Haring L,Kisters C.Signaling-assisted MAP-based modulation classification in adaptive MIMO OFDM systems[C].Vehicular Technology Conference(VTC Fall),2014 IEEE 80th,2014:1-5.

相关推荐

辞旧迎新,新手使用Containerd时的几点须知

相信大家在2020年岁末都被Kubernetes即将抛弃Docker的消息刷屏了。事实上作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使...

分布式日志系统ELK+skywalking分布式链路完整搭建流程

开头在分布式系统中,日志跟踪是一件很令程序员头疼的问题,在遇到生产问题时,如果是多节点需要打开多节点服务器去跟踪问题,如果下游也是多节点且调用多个服务,那就更麻烦,再者,如果没有分布式链路,在生产日志...

Linux用户和用户组管理

1、用户账户概述-AAA介绍AAA指的是Authentication、Authorization、Accounting,即认证、授权和审计。?认证:验证用户是否可以获得权限,是3A的第一步,即验证身份...

linux查看最后N条日志

其实很简单,只需要用到tail这个命令tail-100catalina.out输入以上命令,就能列出catalina.out的最后100行。...

解决linux系统日志时间错误的问题

今天发现一台虚拟机下的系统日志:/var/log/messages,文件时间戳不对,跟正常时间差了12个小时。按网上说的执行了servicersyslogrestart重启syslog服务,还是不...

全程软件测试(六十二):软件测试工作如何运用Linux—读书笔记

从事过软件测试的小伙们就会明白会使用Linux是多么重要的一件事,工作时需要用到,面试时会被问到,简历中需要写到。对于软件测试人员来说,不需要你多么熟练使用Linux所有命令,也不需要你对Linux...

Linux运维之为Nginx添加错误日志(error_log)配置

Nginx错误日志信息介绍配置记录Nginx的错误信息是调试Nginx服务的重要手段,属于核心功能模块(nginx_core_module)的参数,该参数名字为error_log,可以放在不同的虚机主...

Linux使用swatchdog实时监控日志文件的变化

1.前言本教程主要讲解在Linux系统中如何使用swatchdog实时监控日志文件的变化。swatchdog(SimpleWATCHDOG)是一个简单的Perl脚本,用于监视类Unix系统(比如...

syslog服务详解

背景:需求来自于一个客户想将服务器的日志转发到自己的日志服务器上,所以希望我们能提供这个转发的功能,同时还要满足syslog协议。1什么是syslog服务1.1syslog标准协议如下图这里的fa...

linux日志文件的管理、备份及日志服务器的搭建

日志文件存放目录:/var/log[root@xinglog]#cd/var/log[root@xinglog]#lsmessages:系统日志secure:登录日志———————————...

运维之日志管理简介

日志简介在运维过程中,日志是必不可少的东西,通过日志可以快速发现问题所在。日志分类日志分类,对不同的日志进行不同维度的分析。操作系统日志操作系统是基础,应用都是在其之上;操作系统日志的分析,可以反馈出...

Apache Log4j 爆核弹级漏洞,Spring Boot 默认日志框架就能完美躲过

这两天沸沸扬扬的Log4j2漏洞门事件炒得热火朝天:突发!ApacheLog4j2报核弹级漏洞。。赶紧修复!!|Java技术栈|Java|SpringBoot|Spring...

Linux服务器存在大量log日志,如何快速定位错误?

来源:blog.csdn.net/nan1996jiang/articlep/details/109550303针对大量log日志快速定位错误地方tail/head简单命令使用:附加针对大量log日志...

Linux中查看日志文件的正确姿势,求你别tail走天下了!

作为一个后端开发工程师,在Linux中查看查看文件内容是基本操作了。尤其是通常要分析日志文件排查问题,那么我们应该如何正确打开日志文件呢?对于我这种小菜鸡来说,第一反应就是cat,tail,vi(或...

分享几款常用的付费日志系统,献给迷茫的你!

概述在前一篇文章中,我们分享了几款免费的日志服务器。他们各有各的特点,但是大家有不同的需求,有时免费的服务器不能满足大家的需要,下面推荐几款付费的日志服务器。1.Nagios日志服务器Nagio...

取消回复欢迎 发表评论: