m序列的原理以及verilog实现

m序列原理以及verilog实现
定义
m序列是最长线性反馈移位寄存器序列的简称。它是由带线性反馈的移存器产⽣的周期最长的序列。⼀般来说,⼀个n级线性反馈移存器可能产⽣的最长周期等于(2^n -1)。
m序列是⼀种典型的伪随机序列。在通信领域有着⼴泛的应⽤,如扩频通信、卫星通信的码分多址(CDMA),数字数据中的加密、加扰、同步、误码率测量等领域。
线性反馈移位寄存器原理⽅框图
与产⽣m序列有关的3个⽅程
1)递推⽅程
它给出了状态ak和前⾯n个状态的关系。
2)特征⽅程(⼜叫特征⽅程式)
它决定了移存器的反馈连接和序列的结构。式中x^i仅指明其系数(1或0)代表ci的值,x本⾝的取值并⽆实际意义。
3)母函数
它表⽰反馈移存器的输出序列{ak}。
本原多项式
若⼀个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:代码实现依据原理⽅框图和特征多项式。
<span >module m_sequence(
1. input sclk,
2. input rst_n,
3. output wire m_seq
4. );
5. parameter POLY = 8'b10001110;//由本原多项式得到
6.
7. reg [7:0] shift_reg;
8.
9. always@(posedge sclk or negedge rst_n)
0. begin
1. if(rst_n == 0)begin
2. shift_reg <= 8'b11111111;//初值不可为全零
3. end
4. else begin
5. shift_reg[7] <= (shift_reg[0] & POLY[7])^
6. (shift_reg[1] & POLY[6])^
7. (shift_reg[2] & POLY[5])^
8. (shift_reg[3] & POLY[4])^
9. (shift_reg[4] & POLY[3])^
0. (shift_reg[5] & POLY[2])^
1. (shift_reg[6] & POLY[1])^
2. (shift_reg[7] & POLY[0]);
3. shift_reg[6:0] <= shift_reg[7:1];
4. end
5. end
26.
7. assign m_seq = shift_reg[0];
28.
9. endmodule</span>
仿真截图:
注:从图中黄线处开始得到新值,黄线前⾯是初始化的值。

本文发布于:2024-09-21 19:39:21,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/394240.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:反馈   序列   线性   存器   原理   得到   状态   移位
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议