• OFDM 十六讲 4 -What is a Cyclic Prefix in OFDM


    参考   

         

        OFM 里面重点是ISI,ICI, CP.这里面重点讲解一下CP. Cyclic prefix,循环前缀

    也有很多博客文档讲过这个,外文有专门的一本书讲CP,这篇主要是初步了解CP,

    如果有兴趣可以把CP 跟 各种 调制模式,以及星座图结合起来分析,多普勒效应结合起来研究。

    之前在Bilibili 也看过爱立信的专家有用机器学习去做这块模型研究的。

    目录:

    1: single - carrier situation

    2: multi - carrier situation

    3  DFT & IDFT code

    4:  常用三角函数公式


    一  single -carrier 

        1.1 BPSK 译码问题

         

          这里面我们以BPSK modulation 为例,发送两个symbols,

    接收方想要译码出symbols 2 的时候,由于多径传输问题

      假设原始发射的信号为:

       s(t)=sinwt

       收到的信号为

        r(t)=sinwt + sin(wt+\theta)

       根据和差化积公式

        r(t)=2 sin (wt+\frac{\theta}{2})cos \frac{\theta}{2}

      我们放到星座图里面看

     1.2  星座图

     \varphi =\frac{\theta}{2}

      通过星座图可以看到:相位和幅度都发生了变化。

      如果相位超过90度,会导致译码出错。

    1.3   解决方案

     每个发送符号的前面加一个循环前缀,发送的信息格式  cp+msg

     解码只解码msg 部分,cp部分discard.

    缺点:

         循环前缀长度越长,信道效率越低。

     cp: 是发送symbols 1周期或几个周期的的组成

    1.4  symbol 1 译码

      如上图,symbols 1:

      发送信息 : cp+msg

      译码的时候:

               在采样窗口,第二个周期泄露掉的功率通过cp 泄露出来的功率补上了。

    1.5 symbol2

       

        原始信息是2个周期的正弦波,加上一个一个周期的cp

        解码的时候,cp 部分丢弃

        在采样窗口内,最后一个周期泄露出的能量,通过cp  部分能量补上了。


    二   multi-carrier situation for ofdm

         

        OFDM 通过离散傅里叶逆变换把输入的频域信息转换为时域信息

         x(t)=\frac{1}{N}\sum_{k=0}^{N-1}F(k)e^{j\frac{2\pi k}{N}t}

       因为信号是叠加后的信号,没有单载波的周期了。解决方案,是把信号的后面一部分

    拿到前面做为CP。

       译码的时候跟single-carrier 是一样的,如下 后面leak out 的energy, 通过前面的

    cp 部分补上来。

     译码的时候,首先要重组,先把采样周期内CP 的长度拿到后面去


    三  DFT & IDFT

       DFT  公式

       F(k)=\sum_{t=0}^{N}x[t]e^{\frac{-j 2\pi k}{N}t}

       IDFT 公式

       x(t)=\frac{1}{N}\sum_{k=0}^{N}F(k)e^{\frac{2\pi k}{N}t}

    1. # -*- coding: utf-8 -*-
    2. """
    3. Created on Tue Aug 2 11:51:23 2022
    4. @author: chengxf2
    5. """
    6. import numpy as np
    7. #离散傅里叶变换#
    8. def DFT(X):
    9. N = len(X)
    10. real =[] #傅里叶变换的实部 cos
    11. img=[] #傅里叶变换虚部 sin
    12. for k in range(N):
    13. w = -(2*np.math.pi/N)*k #角频率
    14. i = 0
    15. q = 0
    16. for t in range(N):
    17. x = X[t]
    18. theta = w*t #相位
    19. i = i+x*np.cos(theta)
    20. q = q+x*np.sin(theta)
    21. i = np.round(i,2)
    22. q = np.round(q,2)
    23. real.append(i)
    24. img.append(q)
    25. print(real)
    26. print(img)
    27. return real,img
    28. #离散傅里叶逆变换#
    29. def IDFT(real, img):
    30. N = len(real)
    31. for t in range(N):
    32. im = 0
    33. for k in range(N):
    34. w = (2*np.math.pi/N)*k #角频率
    35. theta = w*t
    36. a = np.cos(theta)*real[k]
    37. b = np.sin(theta)*img[k]
    38. im += (a-b)
    39. #b = b+q
    40. im= im/N
    41. im = np.round(im,1)
    42. #b = b/N
    43. #print("\n 时域信息 X[%d] = %d "%(t,im))
    44. X =[1,2,3,4,5,6,7,8,9]
    45. real,img =DFT(X)
    46. IDFT(real,img)

     

  • 相关阅读:
    【软件安装】docker 安装 elasticsearch 和 kibana
    论文精读(2)—基于稀疏奖励强化学习的机械臂运动规划算法设计与实现(内含实现机器人控制的方法)
    岛屿问题,矩阵:DFS+标记剪枝+回溯
    Zabbix
    【Numpy总结】第三节:Numpy创建数组
    WPF 笔迹算法 从点集转笔迹轮廓
    HTML5七夕情人节表白网页制作【唯美3D相册】HTML+CSS+JavaScript
    NewStarCTF2023 Reverse Week3 EzDLL WP
    Roson的Qt之旅 #120 QNetworkCacheMetaData详细介绍
    Cat1模组蓄“光”发展,广和通全场景助力光伏行业零碳发电
  • 原文地址:https://blog.csdn.net/chengxf2/article/details/126097622