m序列码产生电路设计与仿真

简介: ⭐本专栏针对FPGA进行入门学习,从数电中常见的逻辑代数讲起,结合Verilog HDL语言学习与仿真,主要对组合逻辑电路与时序逻辑电路进行分析与设计,对状态机FSM进行剖析与建模。
🔥文章和代码已归档至【Github仓库: hardware-tutorial】,需要的朋友们自取。或者关注公众号【AIShareLab】,回复 FPGA 也可获取。

m 序列又叫做伪随机序列、伪噪声(pseudo noise,PN)码或伪随机码,是一种可以预先确定并可以重复地产生和复制、又具有随机统计特性的二进制码序列。

伪随机序列一般用二进制表示,每个码元(即构成m序列的元素)只有“0”或“1”两种取值,分别与数字电路中的低电平或高电平相对应。

m 序列是对最长线性反馈移位寄存器序列的简称,它是一种由带线性反馈的移位寄存器所产生的序列,并且具有最长周期。

图所示是一种3位m序列产生器,它将1,3两级触发器的输出通过同或门反馈到第一级的输入端。

其工作原理是:在清零后,3个触发器的输出均为0,于是同或门的输出为1,在时钟触发下,每次移位后各级寄存器状态都会发生变化。

分析该电路得到如图所示的仿真波形图,其中任何一级触发器(通常为末级)的输出都是一个周期序列(或者称为m序列),但各个输出端的m序列的初始相位不同。m序列的周期不仅与移位寄存器的级数有关,而且与线性反馈逻辑和初始状态有关。

此外,在相同级数的情况下,采用不同的线性反馈逻辑所得到的周期长度是不同的。

该电路的状态转换图如图所示。

共有$2^3-1=7$个状态

三位m序列状态转换图

通常,将类似于图所示结构的m序列产生器称为简单型码序列发生器(Simple Shift Register Generator,SSRG),它的一般结构如下图所示。

图中,各个触发器ai(i=1,2,…r)构成移位寄存器,代表异或运算,C0、C1、C2、……、Cr是反馈系数,也是特征多项式的系数。系数取值为1表示反馈支路连通,0表示反馈支路断开。

SSRG电路的结构

对于SSRG结构的m序列发生器,其特征多项式的一般表达式为

$$ f(x)=C_{0} x^{0}+C_{1} x^{1}+C_{2} x^{2}+\cdots+C_{r} x^{r} $$

特征多项式系数决定了一个m序列的特征多项式,同时也就决定了一个m序列。

下表给出了部分m序列的反馈系数,系数的值是用八进制数表示的。

根据多项式的系数可以产生m序列。

例如,想要产生一个码长为31的m序列,寄存器的级数r = 5,从表中查到反馈系数有三个,分别为45、67、75,可以从中选择反馈系数45来构成m序列产生器,因为使用45时,反馈线最少,构成的电路最简单。

45为八进制数,写成二进制数为100101,这就是特征多项式的系数,即 C5 C4 C3 C2 C1 C0=100101

表明C5、C2、C0三条反馈支路是连通的,另外三条反馈支路C4、C3、C1是断开的,其电路如图所示。

五位 m 序列产生器

Verilog HDL程序如下:

module m5(CLK, CLRN, OUT);
    input CLK, CLRN;   //输入端口
    output OUT;        //输出端口
    reg[4:0] Q;        //中间节点
    wire C0;
assign C0 = ~(Q[4] ^ Q[1]);  //反馈
assign OUT = Q[4];           //输出信号
always@(posedge CLK or negedge CLRN)
begin
    if(!CLRN )
         Q[4:0] <= 5'b00000;    //异步清零
    else
         Q[4:0] <= {Q[3:0],C0}; //移位
end
endmodule

仿真波形(m序列长度为31):


欢迎关注公众号【AIShareLab】,一起交流更多相关知识,前沿算法,Paper解读,项目源码,面经总结。

目录
相关文章
|
6月前
|
编解码 算法
m基于码率兼容打孔LDPC码nms最小和译码算法的LDPC编译码matlab误码率仿真
m基于码率兼容打孔LDPC码nms最小和译码算法的LDPC编译码matlab误码率仿真
44 0
|
6月前
|
编解码 算法
m基于码率兼容打孔LDPC码oms最小和译码算法的LDPC编译码matlab误码率仿真
m基于码率兼容打孔LDPC码oms最小和译码算法的LDPC编译码matlab误码率仿真
108 0
|
6月前
|
算法 5G
基于LDPC编译码和FP-MAP球形检测算法的协作MIMO系统误码率matlab仿真
基于LDPC编译码和FP-MAP球形检测算法的协作MIMO系统误码率matlab仿真
|
6月前
|
算法
m基于OFDM+QPSK和LDPC编译码以及MMSE信道估计的无线图像传输matlab仿真,输出误码率,并用图片进行测试
MATLAB2022a仿真实现了无线图像传输的算法,包括OFDM、QPSK调制、LDPC编码和MMSE信道估计。OFDM抗频率选择性衰落,QPSK用相位表示二进制,LDPC码用于前向纠错,MMSE估计信道响应。算法流程涉及编码、调制、信道估计、均衡、解码和图像重建。MATLAB代码展示了从串行数据到OFDM信号的生成,经过信道模型、噪声添加,再到接收端的信道估计和解码过程,最终计算误码率。
70 1
|
25天前
|
编解码 算法 数据安全/隐私保护
基于BP译码的LDPC误码率matlab仿真,分析码长,码率,信道对译码性能的影响,对比卷积码,turbo码以及BCH码
本程序系统基于BP译码的LDPC误码率MATLAB仿真,分析不同码长、码率、信道对译码性能的影响,并与卷积码、Turbo码及BCH编译码进行对比。升级版增加了更多码长、码率和信道的测试,展示了LDPC码的优越性能。LDPC码由Gallager在1963年提出,具有低复杂度、可并行译码等优点,近年来成为信道编码研究的热点。程序在MATLAB 2022a上运行,仿真结果无水印。
54 0
|
6月前
|
算法
m基于BP译码算法的LDPC编译码matlab误码率仿真,对比不同的码长
MATLAB 2022a仿真实现了LDPC码的性能分析,展示了不同码长对纠错能力的影响。短码长LDPC码收敛快但纠错能力有限,长码长则提供更强纠错能力但易陷入局部最优。核心代码通过循环进行误码率仿真,根据EsN0计算误比特率,并保存不同码长(12-768)的结果数据。
91 9
m基于BP译码算法的LDPC编译码matlab误码率仿真,对比不同的码长
|
6月前
|
资源调度 算法
m基于OFDM+QPSK和LDPC编译码以及LS信道估计的无线图像传输matlab仿真,输出误码率,并用图片进行测试
m基于OFDM+QPSK和LDPC编译码以及LS信道估计的无线图像传输matlab仿真,输出误码率,并用图片进行测试
71 2
|
6月前
|
编解码 算法 索引
m基于码率兼容打孔LDPC码ms最小和译码算法的LDPC编译码matlab误码率仿真
m基于码率兼容打孔LDPC码ms最小和译码算法的LDPC编译码matlab误码率仿真
55 0
|
编解码 算法
m基于码率兼容打孔LDPC码BP译码算法的matlab误码率仿真
m基于码率兼容打孔LDPC码BP译码算法的matlab误码率仿真
110 1
|
编解码 算法 异构计算
m基于FPGA的LDPC最小和译码算法verilog实现,包括testbench和matlab辅助验证程序
m基于FPGA的LDPC最小和译码算法verilog实现,包括testbench和matlab辅助验证程序
250 0