新闻中心

EEPW首页 > 测试测量 > 设计应用 > 基于NI技术的OFDM发射接收系统的设计

基于NI技术的OFDM发射接收系统的设计

作者:时间:2010-05-21来源:网络收藏

  基带处理算法的设计与实现

  基带处理算法的实现

  是基于LabWndows/CVI8.5的软件平台,它是一个交互式开发平台,集成了标准C的编译、链接、调试等,并且采用简单直观的用户界面设计,用户只需在函数面板上直接输入参数,就会以事件驱动回调函数的方式运行整个程序,并可以将数据以图形的形式在界面上显示,提高了整个工程的运行效率。图2为本系统发端和收端的应用界面。

图2 发、收系统界面

  对于单线程系统,一般分为数据的采集模块、分析处理模块、显示存储模块。这三个模块在时间上是顺序执行的,即后一个模块需等待前一个模块数据的到来时才开始工作。然而本系统对实时性要求比较高,比如在收端,USB声卡的播放需要收端的音频译码模块在400ms内处理完一帧,才能及时提供给USB声卡样点连续地播放声音,这就需要音频译码模块前的所有基带处理部分需要在400ms内完成一个物理帧到音频帧的解调。同样在发端,USB声卡每秒采集19200个样点给音频编码模块进行编码,每400ms输出一音频编码帧,FEC、映射及成帧等模块也必须在400ms内处理完成,否则会出现丢帧和覆盖的现象。可以肯定,用单线程这种顺序化的执行方式效率很低,每个模块都要等待前一个模块的数据,对于实时性要求较高和复杂性较高的系统不适用。

  本系统使用的是多线程技术,可以将处理模块拆分成多个线程,使多个线程并行运行,只要保证每个线程的运行时间小于音频处理模块,系统就会正常工作。其中发端算法用3个线程完成音频编码,FEC、映射、成帧等处理,并将OFDM数据写到板卡RAM中。收端算法用6个线程完成从板卡RAM中读取 OFDM基带数据、同步、均衡、FFT、解映射、解FEC等处理,最后由音频译码模块将音频帧送给USB声卡进行播放。

  为了保证线程间数据传递有序进行,CVI还提供了事件通知、安全队列、线程优先级等函数,保证线程间的同步和数据的传递。本系统使用的是全局BUFFER和安全队列回调函数方式使两个线程间获得同步。即两个线程间共享一个BUFFER和安全队列,前一个线程将每次计算得到的数据写到BUFFER中,并产生一标志位 FLAG,写入安全队列,后一线程捕捉到安全队列中的FLAG,判断是否满足回调函数的条件,满足则启动该线程,并将BUFFER中的数据读出,不满足则继续捕捉FLAG。通过对安全队列中FLAG的读写,控制线程启动的时间,使得两线程对数据的读写达到平衡。程序中控制流程如图3所示。图4为由 5671输出到频谱仪E4440A的OFDM频谱。



评论


相关推荐

技术专区

关闭