m序列的原理以及verilog实现
来源:互联网 发布:分答软件下载 编辑:程序博客网 时间:2024/06/15 21:45
定义
m序列是最长线性反馈移位寄存器序列的简称。它是由带线性反馈的移存器产生的周期最长的序列。一般来说,一个n级线性反馈移存器可能产生的最长周期等于(2^n -1)。m序列是一种典型的伪随机序列。在通信领域有着广泛的应用,如扩频通信、卫星通信的码分多址(CDMA),数字数据中的加密、加扰、同步、误码率测量等领域。
线性反馈移位寄存器原理方框图
与产生m序列有关的3个方程
1)递推方程
2)特征方程(又叫特征方程式)
3)母函数
本原多项式
若一个n次多项式f(x)满足下列条件:1)f(x)为既约的;
2)f(x)可整除(x^m +1),m=2^n -1;
3)f(x)除不尽(x^q +1),q<m;
则称f(x)为本原多项式。
为什么要理解本原多项式?因为一个线性反馈移存器能产生m序列的充要条件:反馈移存器的特征多项式为本原多项式。常用的本原多项式由查表得到。
本原多项式表
verilog实现及仿真
m_sequence.v(以x8+x4+x3+x2+1为例) tips:代码实现依据原理方框图和特征多项式。
module m_sequence(inputsclk,inputrst_n,outputwirem_seq);parameter POLY = 8'b10001110;//由本原多项式得到reg [7:0]shift_reg;always@(posedge sclk or negedge rst_n)beginif(rst_n == 0)beginshift_reg <= 8'b11111111;//初值不可为全零endelse beginshift_reg[7] <= (shift_reg[0] & POLY[7])^(shift_reg[1] & POLY[6])^(shift_reg[2] & POLY[5])^(shift_reg[3] & POLY[4])^(shift_reg[4] & POLY[3])^(shift_reg[5] & POLY[2])^(shift_reg[6] & POLY[1])^(shift_reg[7] & POLY[0]);shift_reg[6:0] <= shift_reg[7:1]; endendassign m_seq = shift_reg[0];endmodule
仿真截图:
注:从图中黄线处开始得到新值,黄线前面是初始化的值。
阅读全文
0 0
- m序列的原理以及verilog实现
- Verilog实现m序列发生器
- 用verilog实现m序列生成
- verilog 产生m序列
- m序列生成器的原理与MATLAB及FPGA实现
- 10010序列检测器的verilog实现
- 曼彻斯特码编解码原理以及Verilog实现
- Verilog实现同步整形电路的原理及代码解析
- Verilog实现同步整形电路的原理及代码解析
- m序列的产生原理与matlab代码
- Verilog的I2C实现
- m序列c语言实现
- Hashmap的原理以及实现
- FIFO 同步、异步以及Verilog代码实现
- FIFO 同步、异步以及Verilog代码实现
- 等精度测频法以及Verilog实现
- 流水线技术原理和Verilog HDL实现
- 流水线技术原理和Verilog HDL实现
- Unique Paths
- Java变量类型
- mybatis 使用说明
- C++希尔密码的实现以及运用
- Leetcode之Maximum Product of Three Numbers 问题
- m序列的原理以及verilog实现
- zk应用实例
- PullToRefresh
- 细谈C语言中的strcpy,strncpy,memcpy,memmove,memset函数
- Kotlin-Android-Extensions:不仅仅是替代findViewById
- Caffe 使用Python绘制网络结构图是遇到的错误
- React Native 错误 Module does not exist in the module map
- 购物车MainActivity
- Hbase 常见问题及设置