继续讲解!上堂课给出了例题!让我们一起来看看解题过程。
请注意结论!
下堂课详细讲解汉明码。
汉明码(Hamming Code)是在电信领域的一种线性调试码,以发明者理查德·卫斯里·汉明的名字命名。汉明码在传输的消息流中插入验证码,当计算机存储或移动数据时,可能会产生数据位错误,以侦测并更正单一比特错误。由于汉明编码简单,它们被广泛应用于内存(RAM)。通信领域里面也用它哦,比如:Lora里面就用到了。在本公众号里面有汉明码的编译码程序,欢迎大家前去了解。先了解一下汉明码的历史吧。
1940年,汉明在贝尔实验室(Bell Labs)工作,使用贝尔模型V(Bell Model V)电脑(一个周期时间在几秒钟内的机电继电器机器)。输入端是依靠打孔卡(Punched Card),这不免有些读取错误。在平日,特殊代码将发现错误并闪灯(flash lights),使得操作者能够纠正这个错误。在周末和下班期间,在没有操作者的情况下,机器只会简单地转移到下一个工作。汉明在周末工作,他对于不可靠的读卡机发生错误后,总是必须重新开始项目变得愈来愈沮丧。在接下来的几年中,他为了解决调试的问题,开发了功能日益强大的调试算法。在1950年,他发表了今日所称的汉明码。现在汉明码有着广泛的应用。
再来看看汉明码如何进行检错和纠错?汉明码(Hamming Code)是一个可以有多个校验位,具有检测并纠正一位错误代码的纠错码,所以也仅用于信道特性比较好的环境中,如以太局域网。所以lora通信体制中采用了它。
它的检错、纠错基本思路如下:
(1)将有效信息按某种规律分成若干组,每组安排一个校验位通过异或运算进行校验,得出具体的校验码;
(2)在接收端同样通过异或运算看各组校验结果是否正确,并观察出错的校校组,或者多个出错的校验组的共同校验位,得出具体的出错比特位;
(3)对错误位取反来将其纠正;
想看编译码程序吗?公众号《通信工程师专辑》中可以找到多种编译码的仿真程序!
编译码代码可以在本公众号里面找到!
在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码。在数字系统中,常要求代码按一定顺序变化。例如,按自然数递增计数,若采用8421码,则数0111变到1000时四位均要变化,而在实际电路中,4位的变化不可能绝对同时发生,则计数中可能出现短暂的其它代码(1100、1111等)。在特定情况下可能导致电路状态错误或输入错误。使用格雷码可以避免这种错误。格雷码有多种编码形式。
格雷码(Gray Code)曾用过Grey Code、葛莱码、格莱码、戈莱码、循环码、反射二进制码、最小差错码等名字,它们有的不对,有的易与其它名称混淆,建议不要再使用这些曾用名。请看清楚这两个码的差别,中文名称一样的,但英文不一样哦。注意差别!!!
太常用了!
本公众号已经给出了相关仿真程序!
调制和编码相结合!
译码难度很大,当年读研究生的时候花了好长时间来“咀嚼”这方面的知识!大家看完卷积码的译码知识就知道这方面的难度了!维特比译码函数如何写呢?后面会告知。
维特比译码是一种最大似然译码算法,它不是比较所有可能的2的L次方个发送序列与接收序列之间的距离。考察卷积码的网络图,在稳定状态时,每个节点都有若干个支路归入,所以在译码过程中,不断地考察到达每个节点的支路度量值,将该节点上已不可能获得最大对数似然函数的路径丢弃,然后在剩下的“幸存”路径中重新选择译码路径,一直进行到最后第L级。
由于维特比算法较早地丢弃了那些不可能的路径,从而大大减小运算量。来看看老师编写的程序,感受一下这个算法!
管中窥豹!
%%% 卷积码译码函数模块程序
%%% File: function_trunk_conv_decoder.m %%%
%%% date: 2011-07-06 author: 算法工匠 %%%%%
%%%%%% 函数名 %%%%%%
function decoded_bits = function_trunk_conv_decoder(rx_bits,GenPoly,dect_type,tblen)
%%% 程序说明
% 实现连续方式下软/硬判决Viterbi译码算法。
% 本程序到达回溯深度即开始判决已有比特,
% 输出比特无延时输出,加入输入参量tblen。
% 在确定译码深度的情况下,可以选择输出比特是否有延时输出。
% 本函数默认为无延时输出方式。
% 只针对(2,1,m)方式
%%%% 程序要求
% 软硬判决时,输入数据为-1或1 和 [-2^(n-1) 2^(n-1)-1]
% n为量化比特数 形式,即输入必须为双极性信号;
写出网格图是关键!可以在本公众号的文章里面找到这个程序!同学们慢慢细看和消化!这方面的代码在网上独一份,希望大家能够珍惜!站在我的肩膀上,可以让你的仿真能力快速提升!
程序在文章里面!
维特比译码确实比较复杂,当年花了半年时间才真正的写好维特比译码函数。要考虑的内容比较多,比如什么时候开始进行回溯译码比较合适?维特比译码的性能相比分组码等其他编码的译码性能究竟好在哪里,如何来评估?编码约束度和监督位数量对维特比译码的性能是如何产生影响?这里本来想描述一种优雅高效的卷积码译码方法,它避免我们对N个比特序列的2^N种可能的路径组合做穷举。该方法由Andrew Viterbi 发明,并以他的名字命名。但内容太多,就以后再聊吧。安德鲁·维特比(Andrew J. Viterbi),CDMA之父,IEEE Fellow ,高通公司创始人之一,高通首席科学家。他开发了卷积码编码的最大似然算法而享誉全球。现在知道高通为什么能这么牛了吧?华为正在迎头赶上!无奈经常被掐脖子!通信人要奋起直追啊,我只能喊喊口号了,不过公众号里面的程序是实实在在的技术支持。
再来看看RS码!
注意红色字体!
突发错和随机错的差异!!!
想看译码过程吗?
这里还有级联码的知识点!
复杂度增加了,
优秀的本科生可以学习!
还有香农极限码,它们的代表有Turbo码(TCC码)、Turbo乘积码(TPC码)、低密度校验码(LDPC码)。在码长为107时,非正则LDPC码的性能与香农极限只差0.0045dB,这个性能是目前所有码字中最好的。这些编译码的仿真程序将于2023年在公众号里面推出,敬请期待!
TPC码已作为Intelsat新一代卫星通信地球站的标准(IESS315),并已经出现众多商用设备。LDPC码已作为第二代卫星数字广播系统(DVB-S2)的标准编码方式。 我国通信系统基本上都涉及这些编码方式了。
作业来了。
解释编码增益的概念;编写BCH码结合BPSK的仿真程序;编写卷积码结合BPSK的仿真程序;上交仿真报告。
建议:现在网上找相关的仿真程序,然后慢慢消化。这是掌握知识的捷径。未完,后续更精彩!
Lora知识分享
Lora wan网络结构
终端节点并不与特定的网关连接。由终端发出的数据通常可以被多个网关接收,每个网关再通过TCP/IP网络(可以是GPRS, WIFI、卫星或以太网)将接收到的数据包发往云网络服务器,服务器将通过时间表来剔除多个网关发来的重复数据。如果一个终端是移动的,那么此功能可以保证数据的正常收发,并且可以侦测到静止终端的非正常移动,保证了资产安全,除此之外,服务器还会执行安全检查和自适应数据速率等,将智能性和复杂性转移到服务器,使设备得到简化。
LoRa调制解调器具有两种数据包模式:显示模式和隐式模式。
区别在于,显示数据包模式有一个包含字节数、编码率以及数据包是否启用CRC等信息的报头。如下图所示的数据包结构图,主要包含前导码、可选报头、数据有效负载和负载的CRC校验。
前导码用于保持接收机与接收数据流之间的同步。其长度是一个可通过编程来设置的变量,默认长度为12个符号,设置范围在6到65536之间。在接收数据量较大的应用中,可通过缩短前导码的长度,缩短终端接收的占空比。前导码最小允许长度就可以满足通信需求,其可变长度主要应用在唤醒设备。这些概念很重要!!!
终端会定期检测发射机信号的前导码,接收机只有检测到前导码长度等于自身设定的长度时才会开始接收数据,并向CPU发出中断或者将中断寄存器置1,以供CPU定时查询该寄存器,否则保持休眠态。
修订记录
20190219 完成初稿;
20230111 修订内容v2;
原文标题:卫星通信v2 第四章 传输技术(4)
文章出处:【微信公众号:通信工程师专辑】欢迎添加关注!文章转载请注明出处。
全部0条评论
快来发表一下你的评论吧 !