线性反馈移位寄存器(LFSR)循环码编码原理

   作为知识储备,近日在学习循环码编码的原理,教材为John G.Proakis和Masoud Salehi所著的《数字通信》第五版,循环码编码器对应于课本的第328页,对于利用LFSR实现模2除法书本只给出了大体框架,并没有详细阐述其具体的原理,通过查阅其他书籍和相关博客关于此方面的详细分析也十分少,最终经过一下午的苦思冥想,终于有了一些成果。

1.基本原理

   对于一个 (n,k)循环码可以用一个n-k次的生成多项式g(X)来生成,其消息多项式为u(X)。对于一个(n,k)循环码,n为码字的长度,k为编码的信息序列长度。

   系统循环码(前k个bit的码元为信息位)通过如下的方法产生:
1.将消息多项式u(X)乘以X^(n-k);
2.将X^(n-k)*u(X)除以g(X)得到余式r(X);
3.将r(X)加到X^(n-k)*u(X)。
   使用LFSR进行系统循环码编码的示意图如下所示:编码器的前k比特的输出直接就是k位信息比特,并且由于此时开关①处于闭合位置,这k比特在输出也按时钟频率同步的进入移位寄存器,在k位信息比特全部进入编码器后,两个开关均切换到相反的位置,此时移位寄存器的内容就是n-k位校验比特,它对应于余式的系数,这n-k位校验比特按时钟频率每节拍输出1个比特并送入调制器。

2.举例分析

一个生成多项式g(X)=X^3+X+1的(7,4)循环码,其移位寄存器结构如下图所示:

假设输入消息比特为0110,则移位寄存器的内容随着时钟频率节拍的变化如下表:

输入信息 移位 寄存器内容 C0C1C2
0 000
0 1 000
1 2 110
1 3 101
0 4 100

C3代表余数的高位,g(X)矢量表示为1011,u(X)矢量表示为0110,X^(n-k)*u(X)的矢量表示为0110000,
把0110000理解为0000000+100000+10000+0000,依次对应着线性移位寄存器的4次移位。




总结:可以看到,商的值取决于当前信息比特和上一级运算后余数的最高位C2,两者做异或运算,即两者不同时商为1,相同时商为0,以此来消掉当前输入比特,当商为0时,LFSR简化为单纯的移位寄存器,余数完成移位,当商为1时,LFSR完成g(X)与上一级余数的加运算并移位。在信息比特输入完毕之后,开关切换位置,此时C0C1C2存储的便是余数信息,经过三个时钟周期节拍,监督位跟随信息位输出,最终完成系统循环码的编码。

LFSR线性反馈移位寄存器循环码编码原理相关推荐

  1. LFSR线性反馈移位寄存器Verilog实现

    用Verilog实现如下图所示的线性反馈移位寄存器: The reset should resetthe LFSR to 1 直接写逻辑门的代码 这种写法比较笨拙. 这里寄存器只有5 bits,数量不 ...

  2. 线性反馈移位寄存器LFSR(斐波那契LFSR(多到一型)和伽罗瓦LFSR(一到多型)|verilog代码|Testbench|仿真结果)

    线性反馈移位寄存器LFSR 一.前言 二.LFSR简介 三.斐波那契LFSR和伽罗瓦LFSR 3.1 斐波那契LFSR 3.1.1 斐波那契LFSR 3.1.2 verilog代码 3.1.3 Tes ...

  3. 线性反馈移位寄存器(LFSR)和 Berlekamp-Massey 算法

    应用密码学课上学习了 BM 算法,林老师说期末必考.做课后题时,让求解一个20长序列的 LFSR,本人算了两大页纸,还算错了两遍 (╬ ̄皿 ̄) 这里仔细研究下,谈谈我自己对它的理解. 文章目录 LFS ...

  4. 四类九种移位寄存器总结(循环(左、右、双向)移位寄存器、逻辑和算术移位寄存器、串并转换移位寄存器、线性反馈移位寄存器LFSR|verilog代码|Testbench|仿真结果)

    移位寄存器总结 一.前言 二.简单循环左移/右移/双向移位寄存器 2.1 简单循环左移/右移/双向移位寄存器 2.2 verilog代码 2.3 Testbench 2.4 仿真结果 三.逻辑移位与算 ...

  5. 【数字IC手撕代码】Verilog伪随机数生成器|线性反馈移位寄存器|题目|原理|设计|仿真

    芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球 四社区联合力荐!近500篇数字IC精品文章收录! [数字IC精品文章收录]学习路线·基础知识·总线·脚本语言·芯片求职· ...

  6. 线性反馈移位寄存器(LFSR) ______FPGA产生基于LFSR的伪随机数

    FPGA产生基于LFSR的伪随机数 https://blog.csdn.net/qq_34070723/article/details/89736772 1.概念 通过一定的算法对事先选定的随机种子( ...

  7. HDLBits 系列(21)LFSR(线性反馈移位寄存器)

    目录 5 bit LFSR 3 bit LFSR 32 bit LFSR 5 bit LFSR A linear feedback shift register is a shift register ...

  8. quartus仿真6:74194构建线性反馈移位寄存器计数器LFSR

    扭环形计数器具有8个有效状态,仍然有8个无效状态.进一步提高移位寄存器构建的计数器的有效状态数,可采用线性反馈移位寄存器计数器(Linear Feedback Shift-Register Count ...

  9. 详解线性反馈移位寄存器(LFSR)

    转载于(九)详解线性反馈移位寄存器(LFSR) 文章目录 LFSR的由来 LFSR具体内容 对LFSR的密钥流攻击 延伸 书籍推荐 LFSR的由来 1. 移位寄存器: 移位寄存器(ShiftRegis ...

最新文章

  1. android错误整理——模拟器无法连接网络
  2. windows/ubuntu 文件共享之 Samba 配置
  3. 篝火怎么做_上世纪的“Dyatlov事件”到底是怎么一回事儿,真是未知力量吗?...
  4. 使用Microsoft Unity进行日志记录
  5. JavaScript内置对象Date常用函数
  6. (NO.00003)iOS游戏简单的机器人投射游戏成形记(一)
  7. Onew Ex凝聚共识,维护生态繁荣
  8. python fortran混合编程输入矩阵_如何将动态数组从Python传递到Fortran动态链接库
  9. [日常] nginx与负载均衡
  10. spark wordcount 实例
  11. 宝塔利用同一个ip的不同端口号架设多个网站
  12. windows10怎么卸载计算机,win10系统自带浏览器怎么卸载_win10如何卸载电脑自带的浏览器-win7之家...
  13. 《薛兆丰的经济学课》课程总结5--需要协调
  14. PTA 奇数值结点链表 超详细
  15. 传统产业如何进行数字化转型
  16. android7.0模拟器pc版,安卓9.0模拟器电脑版
  17. 我们总在拒绝别人,又如何能提高得了自己?
  18. ECMAScript 2015 ES6
  19. 解析信用卡提额失败的原因,并制定解决方案
  20. 网络知识 ACL NAT IPv6

热门文章

  1. Fluka 安装及 pydicom
  2. 经验正交函数 (EOF) / 主成分 (PCA) 分解及Python实现
  3. 【luogu P3214】卡农(数学)(DP)
  4. VHDL语言仿真激励文件testbench编写指南
  5. c语言logical转文本,c语言逻辑运算符(C language logical operator).doc
  6. 矩阵乘法分治法c语言,分治法举例之矩阵乘法
  7. 【各种接口】USB接口、rj11和rj45
  8. 【H5/JS】游戏常用算法-碰撞检测-地图格子算法
  9. 【Excel自动化办公Part6】:插入图片、插入柱状图、插入条形图
  10. C/C++代码格式规范(一)