基于NI LabVIEW软件和USRP搭建2X2 MIMO系统
)。左下方的两个星座图显示的是两个Rx NI USRP收发器接收到的信号。右下星座图显示的是重构后的星座图。
使用LabVIEW搭建2x2 MIMO系统
图4显示的是此范例的实现框图(LabVIEW图形化程序)。以下部分描述的是该系统的一些主要应用领域。
图4. 2x2QAMAlamouti.vi LabVIEW框图由三部分组成。左上部分的代码用于合成传输信号。中间靠下部分的代码用于启动NI USRP硬件的Tx/Rx操作。右上部分的代码用于处理接收的信号并显示接收的波形。
传输信号准备
传输信号准备的第一步是从LabVIEW调制工具包中调用子VI(子路径)。调用MT Generate Bits将会生成用作信息位的PN序列。这些信息位通过调用MT Map Bits to Symbols映射为符号。
然后根据Alamouti编码方案对上一步生成的符号(图 5)进行编码。结果产生一个包含两个数据流的二维符号阵列,每个数据流对应一个发射机。
图5. subApplyAlamoutiCode.vi的框图,该子VI简单明了,采用了Alamouti编码,通过几次阵列处理生成所需的二维符号阵列。符号编码后,该应用将训练符号序列置于每个数据流之前。接收机通过训练序列实现同步和通道估计。
训练序列加法运算将同一的序列置于每个数据流之前,并对数据进行排列,使得序列先由其中一个Tx NI USRP收发器传输,然后再由另一个收发器传输——例如,两个Tx NI USRP收发器中的其中一个收发器传输序列时,另一个收发器为静止状态。而另一个收发器传输相同的序列时,前一个收发器就处于静止状态。
发射/接收信号之前信号合成的最后一步是以Tx过采样控件中指定的速率对即将传输的符号空间样本进行上采样,然后通过脉冲整形滤波器对上采样信号进行滤波。
信号恢复
在接收端,USRP Fetch Rx Data VI恢复为接收信号的二维阵列,每一行代表从每根天线接收的信号样本的数据流。
在信号恢复的第一步,用户需要从接收端的数据帧中提取接收的数据包。采用能量检测算法来确定数据包的起始点,并丢弃数据帧中剩下的非数据包部分。
然后,使用匹配滤波器对每个数据流进行滤波,并对接收的二维阵列的两行数据之间的能量进行比较,确定较强的信号。最后,对信号较强的那一行进行符号同步,并在两行数据上加上所计算的偏移量。
图6. 图中显示的是接收到的四个波形—来自两根Rx天线的I和Q波形。 接收的数据包的起始部分可进行放大,方便用户观察从每个Tx天线接收的训练序列。帧同步较为复杂,且取决于发送端的两个训练序列结构。在此情况下,两个发射机使用的是相同的训练序列,但序列之间存在偏移,因此当序列重叠时,看起来就像是一串两倍长的连续训练序列。该应用通过搜索接收信号中两个包含T个符号的连续符号集(每个训练序列的长度为T)之间关联性最高的部分来实现帧同步。在接收到的二维阵列的两行数据上加上所计算的帧补偿量。
针对信道估计,有四个不同的信道可供选择。二维阵列的每一行包含两个训练序列(每个序列对应一个发射机)。因此,通过对每行的每个训练序列进行信号估计,就可估计四个信道的参数。
这些参数估计对于下一步非常重要,因为在下一步中用户将会对Alamouti编码方案进行解码,执行MRC,从而将二维符号阵列转化为正确的一维符号阵列。用户可分开执行最后两步,或者在此应用中使用单矩阵乘法。单矩阵乘法方法比大型MIMO系统更容易普及。
结果
图3显示的是由四个NI USRP收发器组成的2x2 MIMO系统测试运行时的两个Rx信号星座图。最右边的图显示的是执行Alamouti解码、MRC和信道均衡后的最终信号星座图。该图表明此范例运行正常。