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

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

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

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

共有23−1=72^3-1=7个状况

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

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

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

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

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

f(x)=C0x0+C1x1+C2x2+⋯+Crxrf(x)=C_{0} x^{0}+C_{1} x^{1}+C_{2} x^{2}+\cdots+C_{r} x^{r}

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

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):

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

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


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