OFDM学习之旅
Posted 巴士上的乘客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OFDM学习之旅相关的知识,希望对你有一定的参考价值。
前言:
这些日子开始准备搞OFDM之类的,未动先行matlab仿真,这里我会慢慢更新,基本上是自己学习感悟吧<未完待续>
一、PRBS
PRBS 是 Pseudo Random Binary Sequence 的缩写,即“伪随机二进制序列”的意思。 PRBS 码具有“随机”特性,是因为在 PRBS 码流中,二进制数“ 0 ” 和“ 1 ” 是随机出现的,但是它又和真正意义上的随机码不同,这种“随机”特性只是局部的,即在周期内部,“0”和“1”是随机出现的(码流生成函数与初始码确定后,码流的顺序也是固定的),但各个周期中的码流却是完全相同的,所以我们称其为“”伪随机码。
PRBS 码的周期长度与其阶数有关,常用的阶数有 7 、 9 、 11 、 15 、 20 、 23 、 31 ,也就是我们常说的 PRBS7 、 PRBS9 、 PRBS11 、 PRBS15 、 PRBS20 、 PRBS23 、 PRBS31 。
常用阶数码流参数统计表:
PRBS n | 初始值 | 本原多项式 |
PRBS 7 | 0 0 0 0 0 0 1 | X7+X6+1 |
PRBS 9 | 0 0 0 0 0 0 0 0 1 | X9+X5+1 |
PRBS 15 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 | X15+X14+1 |
PRBS 16 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 | X16+X14+X13+X11+1 |
PRBS 20 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 | X20+X17+1 |
PRBS 21 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 | X21+X19+1 |
PRBS 23 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 | X23+X18+1 |
在对高速信号链路进行误码测试时,基本上都是利用 PRBS 码流来模拟真实的线网码流环境,因为在线网中,所有的数据都是随机出现的,没有任何规律可言,而 PRBS 码流在一定程度上具有这种“随机数据”特性,二进制“ 0 ”和“ 1 ”随机出现,其频谱特征与白噪声非常接近。 PRBS 码流的阶数越高,其包含的码型就越丰富,就越接近真实的线网环境,测试的结果就越准确。
一个 PRBS 序列可以串 / 并转换成多路( 2 、 4 、 8 、 16 …路),每路输出的速率降低,但仍然保持原序列的一切特征;反之,同一时钟源低速率多路( 2 、 4 、 8 、 16 …路)同一 n 数的 PRBS 可以经并 / 串转换成高速率的 n 阶 PRBS 。
PRBS 码型发生器由移位寄存器和异或门 (XOR) 组成,这里举个例子:
代码见下:
% PRBS 生成输入信号 % f(x)=1+x^6+x^7; %% PRBS7_initial = [1 1 1 1 1 1 1]; PRBS7_data = PRBS7_initial; %生成1行 Totbits列的数据 PRBS7_out = zeros(1,Totbits); PRBS_reg = zeros(1,2);%存放异或值 for data_bit =1:Totbits PRBS7_out(data_bit) = PRBS7_data(7); %将第7位赋值给PRBS7_out 所有的数据 %% 利用生成式将6、7位的数据异或后循环右移 PRBS_reg = PRBS7_data(6:7);%第6,7位赋值 PRBS7_data(2:7) = PRBS7_data(1:6);%1-6位的数据往后移一个 PRBS7_data(1) = xor(PRBS_reg(1),PRBS_reg(2));%将6\\7位的异或赋值到第一位的 end PRBS7_data;%即为生成的PRBS7的随机序列
以上是关于OFDM学习之旅的主要内容,如果未能解决你的问题,请参考以下文章
我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段
我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段
我的OpenGL学习进阶之旅NDK开发中find_library查找的系统动态库在哪里?
我的OpenGL学习进阶之旅NDK开发中find_library查找的系统动态库在哪里?
Unity Shader入门精要学习笔记 - 第5章 开始 Unity Shader 学习之旅
我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情