写点什么

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

作者:timerring
  • 2023-02-08
    山东
  • 本文字数:1317 字

    阅读完需:约 4 分钟

⭐本专栏针对 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 序列的周期不仅与移位寄存器的级数有关,而且与线性反馈逻辑和初始状态有关。


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



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


共有个状态



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


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



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



特征多项式系数决定了一个 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 是断开的,其电路如图所示。



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}; //移位endendmodule
复制代码


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






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

发布于: 刚刚阅读数: 4
用户头像

timerring

关注

公众号【AIShareLab】 2022-07-14 加入

公众号【AIShareLab】

评论

发布
暂无评论
m序列码产生电路设计与仿真_FPGA_timerring_InfoQ写作社区