Verilog专题(十七)线性反馈移位寄存器(LFSR)

HDLBits网址:https://hdlbits.01xz.net/wiki/Main_Page

前言

移位寄存器是产生信号和序列的常用设备,它分为线性和非线性两大类。其中,线性反馈移位寄存器(linear feedback shift register, LFSR)是指,给定前一状态的输出,将该输出的线性函数再用作输入的移位寄存器。异或运算是最常见的单比特线性函数:对寄存器的某些位进行异或操作后作为输入,再对寄存器中的各比特进行整体移位。

 

    线性反馈移位寄存器的应用包括生成伪随机数,伪随机噪声序列,快速数字计数器,还有扰频器。线性反馈移位寄存器在硬件和软件方面的应用都非常得普遍。循环冗余校验中用于快速校验传输错误的数学原理,就与线性反馈移位寄存器密切相关。

 

1、5-bit LFSR

题目

The following diagram shows a 5-bit maximal-length Galois LFSR with taps at bit positions 5 and 3. (Tap positions are usually numbered starting from 1). Note that I drew the XOR gate at position 5 for consistency, but one of the XOR gate inputs is 0.

Verilog专题(十七)线性反馈移位寄存器(LFSR)_第1张图片

 

我的设计

    看图设计,直接贴码

module top_module(    input clk,    input reset,    // Active-high synchronous reset to 5'h1    output [4:0] q);    always@(posedge clk) begin        if(reset)             q <= 5'h1;        else begin            q <= {q[0],q[4],q[3]^q[0],q[2:1]};        end     endendmodule

 

2、32-bit LFSR

题目

Build a 32-bit Galois LFSR with taps at bit positions 32, 22, 2, and 1.

 

我的设计

    与上面的原理一样,代码如下:

module top_module(    input clk,    input reset,    // Active-high synchronous reset to 32'h1    output [31:0] q);     always@(posedge clk) begin        if(reset) q <= 32'h1;        else begin            q <= {q[0],q[31:23],q[22]^q[0],q[21:3],q[2]^q[0],q[1]^q[0]};        end            endendmodule

 

微信公众号

     建立了一个微信公众号“Andy的ICer之路”,此公众号主要分享数字IC相关的学习经验,做公众号的目的就是记录自己的学习过程,很多东西回过头来可能就忘记了,为了记住知识和分享知识,希望自己可以保持更新,有兴趣的朋友可以关注一下!

Verilog专题(十七)线性反馈移位寄存器(LFSR)_第2张图片

 

你可能感兴趣的:(HDLBits_Verilog)