关于fpga:m序列码产生电路设计与仿真

49次阅读

共计 1507 个字符,预计需要花费 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 序列的周期不仅与移位寄存器的级数无关,而且与线性反馈逻辑和初始状态无关。

此外,在雷同级数的状况下,采纳不同的线性反馈逻辑所失去的周期长度是不同的。

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

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

通常,将相似于图所示构造的 m 序列产生器称为简略型码序列发生器(Simple Shift Register Generator,SSRG),它的个别构造如下图所示。

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

对于 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 是断开的,其电路如图所示。

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 解读,我的项目源码,面经总结。

正文完
 0