【MIMO 从入门到精通】[P8][A Detailed Introduction to Beamforming]

前言:

     本篇参考油管   5G Learning 《A Detailed Introduction to Beamforming》

    简单介绍一下波束赋形的原理。

电磁波传播的数学模型如下图:

跟水波几乎是一样的,以圆形的均匀波进行传播

在各个方向上面功率大致相同。

但是我们需要方向性更好的电磁波,在某个方向上面信号特别强,

就像雷达一样测距一样,就要涉及到beamforming 的原理,

设计一个窄波束.

Beamforming 原理跟相控阵天线原理一致,所以这里面

主要结合相控阵天线原理介绍.


目录:

  1.    简介
  2.    接收相控阵天线原理
  3.    发射相控阵天线原理
  4.    Beam Steering 技术


一  简介

      由于小区的用户数量增加,以及用户期望更高的速率,运营商使用了更高的频谱进行传输。

但是高频谱带来了更高的传输损耗,需要使用高增益天线来解决该问题(High-gain)

由此引入了beam-forming技术.

        波束赋形(Beamforming)又叫波束成型、空域滤波.是一种使用传感器阵列定向发送和接收信号的信号处理技术。波束赋形技术通过调整相位阵列的基本单元的参数,使得某些角度的信号获得相长干涉,而另一些角度的信号获得相消干涉。

     根据Antenna 方案的不同,可以分为两种:

       发送波束赋形

       接收波束赋形


二   接收相控阵天线原理

     2.1  波程差

            

          如上图两根接收天线Antenna1, Antennas,之间的距离为d

         电磁波(黄线)沿着绿色的方向传播,先传播到Antenna1,再传播到

Antenna2,这段波程差  dsin\theta

          

        

      2.2 接收模型(这里面的模型不包括移相器)

            

           

              阵元间等间距: d 

              辐射电磁波依次到达: 天线1,天线2,...天线M(红色虚线)

              远场信号平面波入射角:  \theta

              天线阵元M相当于阵元0的波程差为mdsin\theta

              相邻阵元电磁波传播延时为:  \tau =\frac{dsin\theta}{c}

               子载波信号的波长:\lambda=\frac{C}{f}

               

2.3 波束形成(以两根接收电线为例):

信号源:

       s(t)=u(t)cos(w_0t)=Re\begin{Bmatrix} {u(t)e^{jw_0t}} \end{Bmatrix}(欧拉公式展开取实部)

接收的复合信号为:

       y(t)=s(t)+s(t-\tau)

y(t)=u(t)cos(w_0t)+u(t-\tau)cos[w_0(t-\tau)]

          \approx u(t)cos(w_ot)+u(t)cos(w_ot-w_o\tau)

相位差: 

\phi=w_o\tau=2\pi f \frac{dsin\theta}{c}

                  =2\pi f\frac{dsin\theta}{\lambda f}

                  =2\pi\frac{dsin\theta}{\lambda}

所以: 

   y(t)\simeq u(t)cos(w_0t)+u(t)cos(w_0t-\phi)

 为了简写,我们写成下面形式

 y(t)=Re\begin{Bmatrix} u(t)e^{jw_o t}+u(t)e^{jw_0t}e^{-j\phi } \end{Bmatrix}

   通过上面我们可以知道

   y(t)=s_0(t)\sum_{n=1}^{M}e^{-j(n-1)\phi}(取实部)

 定义一个阵列因子:

 AF(\theta)=\sum_{n=1}^{M}e^{-j(n-1)\phi}

   y(t)=s(t)AF(\theta)

 则:  AF(\theta)=\frac{y(t)}{s(t)}

更为普遍的写成下面形式:类似信号放大器作用

2.4 移相器

      第一个移相器:输入信号s_0(t),输出信号s_0(t)

       第二个移相器: 输入信号乘以s_0(t)e^{-j\psi}, 乘以 e^{j\psi},输出信号s_0(t)

       第三个移相器:输入信号s_0(t)e^{-j2\psi},乘以e^{j2\psi},输出信号 s_0(t)

       依次类推

      最后通过加法器得到的信号为

        y=ms_0(t)


三  发射相控阵天线原理

3.1  双天线,不加延时电路场景

利用天线接收,发射互易原理;将信号s_0(t)发射到\theta方向

 如上图,antenna1 anteena2 发送的信号都是s_0(t)

考虑\theta方向(红线)两个信号干涉后得到的信号为

s_0(t)+s_0(t)e^{-j\phi}

 其中\phi=2\pi \frac{dsin\theta}{\lambda}

3.2  增加延时电路场景

 

  x_0(t)=s_0(t)

  x_1(t)=s_0(t)e^{j\phi }

...

  x_{M-1}(t)=s_0(t)e^{j(M-1)\phi }

  因为波程差引起的相位延迟一次为

 e^0, e^{-j\phi},e^{-j(M-1)\phi}

  所以\theta方向干涉得到的信号为

 y(t)=s_0(t)+s_0(t)e^{j\phi}e^{-j\phi}+...+s_0(t)e^{j(M-1)\phi}e^{-j(M-1)\phi}

            =Ms_0(t)


 四  Beam Steering 技术

        波束赋形(beamforming)和波束控制(beam steering)是无线通信中类似的概念,但它们有一些关键的区别。


        波束赋形是一种信号处理技术,可在特定方向上形成无线电波束。这是通过调整多个天线发射的信号的相位和幅度来实现的,以便它们在特定方向上建设性地组合,同时在其他方向上破坏性地抵消。波束赋形可以通过将传输功率集中在预期接收器的方向来提高信噪比并增加无线网络的容量.
        波束控制是一种动态改变波束方向的技术,基于预期接收者的位置。这是通过根据接收器的反馈或接收器的估计位置实时调整每个天线发射的信号的相位和幅度来完成的。波束控制可以通过使波束适应不断变化的环境来提高链路质量并减少干扰。
总之,波束赋形在固定方向上形成波束,而波束控制则在不同方向上引导波束。这两种技术可以一起使用来提高无线网络的性能。
 

该模型主要是增加了延时电路

如上图 绿色为信号传播方向,一次到达天线0,1,2

则传播时延依次为 0,\tau,2\tau

其中 \tau =\frac{dsin\theta}{c}

x_0(t)=x(t)cos(w_0t)(无波程差延时)

x_1(t)=x(t-\tau+\Delta T) (波程差延时+延时电路延时)

            =x(t-\tau+\Delta T)cos(w_0(t-\tau+\Delta T))

          \cong x(t)e^{-j(w_0\Delta T-w_0\tau)}

        =x(t)e^{-j(\beta-\phi)}

     其中: 

   \phi: 波程差引起的相位差

  \beta: 延时电路引起的相位差

 原来信号在\phi=0的时候为Main Lobe 主瓣信号

现在跟\beta 有关系


三  Python 仿真

   我们调整天线距离d, 

    远场信号平面波入射角:  \theta

    可以得到不同的增益图形(\theta,gain)

   其中gain 就是AF的db 表示形式

1: 没有加入移相器的效果(beamforming)

    2: 增加移相器的效果(beamSteering)

# -*- coding: utf-8 -*-
"""
Created on Mon Jan 22 11:33:36 2024

@author: chengxf2
"""



import numpy as np
import matplotlib.pyplot as plt


def drawDB(x,y):
    x_ticks = np.arange(-90, 90, 5)#原始数据有13个点,故此处为设置从0开始,间隔为1

    plt.figure(figsize=(14, 6), dpi=80)#设置绘图区域的大小和像素
    ax = plt.axes().set_facecolor('black')
    plt.xlabel('angle')
    plt.ylabel('Gain(db')
    plt.xticks(x_ticks)

    plt.plot(x, y,  color='#00FF00',linewidth=5)
    plt.grid(b=True)
    plt.show()
    #plt.legend()

def angle_rad(angle=30):
    #把角度转换为弧度   
    rad = angle*(np.math.pi/180)
    
    return rad

def calcGain(phaseBias,N):
    #获取天线增益 db
    a = 0.0

    for i in range(N):
        
        phase = i*phaseBias
        a=  a+np.cos(phase)
        #b = b+ np.sin(phase)
        
       
    db = 10*np.log10((a/N)**2+1e-3)
        
    return db

def calcGainSteering(phaseBias,beta,N):
    #获取天线增益 db
    a = 0.0

    for i in range(N):
        
        phase = i*(beta-phaseBias)
        a=  a+np.cos(phase)
        #b = b+ np.sin(phase)
        
       
    db = 10*np.log10((a/N)**2+1e-3)
        
    return db
    
    
    


def get_phaseBias(wavelength=0.1, d=0.01, angle=30):
    '''
    

    Parameters
    ----------
    wavelength : 波长
    d : 天线之间的距离
    angle :发送电磁波的角度,跟天线平面法线夹角

    Returns
    -------
    phaseBias 相位差

    '''
    
    rad = angle_rad(angle)
    
    phaseBias = 2*np.math.pi*(d/wavelength)*np.sin(rad)
    
    return phaseBias


def beamforming(angList,wavelength,dbList,d,N):
    #无移相器
    for angle in angList:
        #波程差引起的相位差
        phaseBias = get_phaseBias(wavelength, d, angle)
        #天线增益
        gain=calcGain(phaseBias, N)
        dbList.append(gain)
        #print("\n angle",angle, "\t phaseBias%4.3f"% phaseBias,"\t db:  %7.3f"%db)
    
    drawDB(angList, dbList) 
    
def beamSteering(angList,wavelength,dbList,d,N,beta):
    #无移相器
    
    radBeta = beta*(np.math.pi/180)
    for angle in angList:
        #波程差引起的相位差
        phaseBias = get_phaseBias(wavelength, d, angle)
        #天线增益
        gain=calcGainSteering(phaseBias,radBeta, N)
        dbList.append(gain)
        #print("\n angle",angle, "\t phaseBias%4.3f"% phaseBias,"\t db:  %7.3f"%db)
    
    drawDB(angList, dbList) 
    
def main():
    
    angList = np.arange(-90, 90,1) #0到360度,间隔10度
    wavelength = 0.1 #波长
    dbList =[]
    d = wavelength*0.5 #天线之间的间隔
    N = 4  #天线个数
    beta = -60
    
    beamforming(angList,wavelength,dbList,d,N)
    #beamSteering(angList,wavelength,dbList,d,N,beta)
    
    

if __name__ == "__main__":
      main()
    


参考:

2.波束成形简介_哔哩哔哩_bilibili

【Matlab应用】:相控阵天线方向图合成及波束扫描算法实现 - 知乎

天线基本原理(Dipole推导) - 百度文库

天线理论与设计笔记3--(天线阵列) - 知乎

波束成形_百度百科

beamforming_360百科

https://www.youtube.com/watch?v=HKpQP8H4JRc

相控阵雷达阵列天线仿真计算_雷达天线方向图仿真-CSDN博客

相控阵雷达的工作原理,阵列间波束形成(DBF)(含matlab仿真) - 知乎

CST仿真相控阵天线波束指向随参数变化而变化的小技巧_哔哩哔哩_bilibili

使用2个元素天线阵列波束成形仿真_哔哩哔哩_bilibili

7.相控阵天线的基本工作原理_哔哩哔哩_bilibili7.相控阵天线的基本工作原理_哔哩哔哩_bilibili

有源电扫相控阵雷达原理演示_哔哩哔哩_bilibili

阵列天线波束形成原理,相位差φ、方向角θ有啥关系?_哔哩哔哩_bilibili

  • 23
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Massive MIMO(大规模多输入多输出)是一种新兴的无线通信技术,它利用大量的天线进行信号发送和接收,以提高系统的容量和覆盖范围。Beamforming(波束成形)是一种将发射的无线信号聚焦在特定方向上的技术,以提高信号传输的性能。 进行Massive MIMO Beamforming的实验仿真可以帮助评估该技术在不同情况下的性能。仿真过程通常分为以下几个步骤: 1. 设置仿真场景:确定天线的位置和数量、用户的位置和数量、传输信道的模型等。 2. 生成信号:根据设定的场景和模型,生成待发送的信号。 3. 波束成形设计:确定合适的波束权重和相位来优化信号传输的方向性和增益。 4. 信号传输:利用波束成形的技术将信号发送到接收端。 5. 信号接收和处理:接收端利用大量的天线接收信号,并进行解码和处理。 6. 计算性能指标:根据接收到的信号质量和性能要求,计算系统的容量、误码率等性能指标。 7. 优化算法:根据仿真结果,优化波束成形的算法和参数,以进一步提高系统的性能。 通过实验仿真,我们可以评估Massive MIMO Beamforming在不同信道和干扰条件下的性能表现,找出改进的空间,并为实际部署提供参考。此外,也可以通过与其他无线通信技术进行比较,评估Massive MIMO Beamforming的优势和劣势。 综上所述,Massive MIMO Beamforming的实验仿真是研究和评估该技术性能的有力工具,可以帮助我们理解其工作原理,并为实际应用提供指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值