电力载波通信G3PLC标准之编码(二)交织
交织器的设计使得系统可以对两种不同的错误来源提供保护:
几个连续OFDM符号受到突发错误的破坏
一种频率深度衰减,它破坏了大量相邻频率的OFDM符号
为了同时解决以上这两个问题,交织器分两步完成。在第一步中,每一列循环移动不同的次数。因此,一个损坏的OFDM符号被分散到不同的符号上。在第二步中,每一行都被循环移动了不同的次数,这可以防止深度频率衰减破坏整个列。循环移位的量由参数m_i, m_j, n_i和n_j决定,这些参数是根据每个OFDM符号中的子载波数量(m)以及每个间隔中的OFDM符号数量选择的
![](/assets/blank.gif)
输入和输出索引之间的关系由以下关系确定
原始位(i,j) 其中 i=0,1,…,m-1, j=0,1,…,n-1
交错位置(I,J)其中
J = ( j * n_j + i * n_i ) % n
I = ( i * m_i + J * m_j ) % m
注意:只有以下条件可以产生好的交织模型
GCD(m_i,m) = GCD(m_j,m) = GCD(n_i,n) = GCD(n_j,n) = 1.
一个简单的搜索是基于m和n找到一个好的参数集。下图显示了用于交织器的扩展行为
n = 8, m = 10, n_j = 5, n_i = 3, m_i = 3 and m_j = 7
![](/assets/blank.gif)
下面的代码段用于生成良好的交错模式。它需要两个参数,即freqNum(持有数据的子载波的数量)和symbNum (OFDM符号的数量)。在ILV_TBL数组中生成交织表。
volatile int m_i, m_j, n_i, n_j;unsigned int my_gcd(unsigned int a,unsigned int b)
{int r;while(b>0){r=a%b;a=b;b=r;}return a;
}
void Interleaver(unsigned char *pInBitData,unsigned char *pOutBitData,unsigned char freqNum, unsigned int symbNum)
{unsigned int i,j,len,index,J,I;len=freqNum*symbNum;for ( j = 0; j < symbNum; j++ ){for ( i = 0; i < freqNum; i++ ){J = ( j * n_j + i * n_i ) % symbNum;I = ( i * m_i + J * m_j ) % freqNum;index = I + J * freqNum;pOutBitData[index] = pInBitData[i+j*freqNum ];}}
}void DeInterleaver(bit_band_alias *pInBitData,bit_band_alias *pOutBitData,unsigned char freqNum, unsigned int symbNum)
{unsigned int i,j,len,index,J,I;len=freqNum*symbNum;for ( j = 0; j < symbNum; j++ ){for ( i = 0; i < freqNum; i++ ){J = ( j * n_j + i * n_i ) % symbNum;I = ( i * m_i + J * m_j ) % freqNum;index = I + J * freqNum;pOutBitData[i+j*freqNum] = pInBitData[ index];}}
}void InterleaverInit(unsigned char freqNum, unsigned int symbNum )
{volatile int i, j, m, n ;n = symbNum;m = freqNum;n_j = 1; n_i = 1;m_i = 1; m_j = 1;for ( i = 3; i < n; i++ ){if ( my_gcd(n,i) == 1 ){n_j = i;break;}}for ( i++; i < n; i++ )if ( my_gcd(n,i) == 1 ){n_i = i;break;}for ( i = 3; i < m; i++ )if ( my_gcd(m,i) == 1 ){m_i = i;break;}for ( i++; i < m; i++ )if ( my_gcd(m,i) == 1 ){m_j = i;break;}
}
电力载波通信G3PLC标准之编码(二)交织相关推荐
- 电力载波通信收发机设计
摘要: 电力载波通信技术主要实现利用现有电力线作为信号传输信道进行信号的一对一,一对多传输,在本设计中采用了东软公司的ES1642-C电力载波模块实现消息的调制,解调,调制方式是差分二进制相移键控(D ...
- 6.3 Python图像处理之图像编码技术和标准-小波变换编码
6.3 Python图像处理之图像编码技术和标准-小波变换编码 文章目录 6.3 Python图像处理之图像编码技术和标准-小波变换编码 1 算法原理 2 代码 3 效果 1 算法原理 所谓的小波的小 ...
- C++_泛型编程与标准库(二)
C++_泛型编程与标准库(二) 图中标红部分为自己的笔记理解 为什么快?因为是红黑树实现的(高度平衡树)
- 6.1 Python图像处理之图像编码技术和标准-DPCM编码
6.1 Python图像处理之图像编码技术和标准-DPCM编码 文章目录 6.1 Python图像处理之图像编码技术和标准-DPCM编码 1 算法原理 2 代码 3 效果 1 算法原理 预测编码利用的 ...
- AV1标准特色编码工具简介
文章目录 1. 编码单元划分结构 2. 帧内预测技术 3. 帧间预测技术 4. 变换 5. 环内滤波和编码后处理 作为新一代性能优异的开源编码标准,AV1收到越来越多企业的青睐.AV1编码标准继承自G ...
- 窄带电力载波通信电路
本文章主要介绍窄带电力载波的通信电路功能及描述,电路主要由耦合电路.过零检测电路.载波信号接收滤波电路,接收解调电路和驱动放大电路组成 耦合电路 根据上图,AC220-N和AC220-L是电力线的交流 ...
- Python学习笔记: Python 标准库概览二
本文来自:入门指南 开胃菜参考:开胃菜 使用Python解释器:使用Python解释器 本文对Python的简介:Python 简介 Python流程介绍:深入Python 流程 Python数据结构 ...
- python标准库(二)
格式化输出 reprlib 库用来格式化 >>> import reprlib >>> reprlib.repr(set('aabbccddeeeff')) &qu ...
- 图像采样、量化、编码(二十七)
采样;就是把一幅连续图像在空间上分割成M×N个网格,每个网格用一亮度值来表示.一个网格称为一个像素.M×N的取值满足采样定理. 量化;就是把采样点上对应的亮度连续变化区间转换为单个特定数码的过程.量化 ...
- 电力国家(行业)标准目录
1.3-63kV交流高压负荷开关 GB 3804-90 代替 GB 3804-88 2.电气装置安装工程35kV及以下架空电力线路施工及验收规范Code for construction and ac ...
最新文章
- 收藏 | 卷积神经网络中用1*1 卷积有什么作用或者好处呢?
- 页面中如何引用外部的HTML(四种方法)
- 2013校作息时间表暂存
- Python占位符总结:%方式和format方式
- 数据结构基础:栈和队列学习笔记
- Mantis-如何自定义流程状态
- C++学习——const
- windows向linux工作站发送文件
- SSL请求trustStore的两种注册方式
- mysql 获取每天的日期_mysql中获取一天、一周、一月时间数据的各种sql语句写法...
- wintail 中文显示乱码_win7系统出现乱码无法显示中文如何解决【详细步骤】
- 数据库的设计及经典案例
- 夜神模拟器卡在android,夜神安卓模拟器很卡怎么办?模拟器卡顿解决方法分享...
- http状态码200,300,404等是什么意思
- 微信公众平台开发(54)翻板抽奖
- AD19 编译报错:has only one pin 和 floating net label
- Java选择题考试系统
- System services not available to Activities before onCreate()错误解决方法
- MySQL 查询排名
- Java---反射机制