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

发布时间:2024年01月22日

前言:

? ? ?本篇参考油管? ?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

文章来源:https://blog.csdn.net/chengxf2/article/details/135335187
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。