Linear Feedback Shift Register

线性反馈移位寄存器(Linear Feedback Shift Register,简称LFSR)是一种数字电路设计和密码学中常用的寄存器类型。它是一种简单而高效的方式,用于生成伪随机的二进制序列,并在数据混淆、错误检测和加密等领域中有应用。LFSR通常用于流密码的生成。

以下是LFSR的关键特性和组成部分:

  1. 移位寄存器:LFSR通常由一组触发器或存储元件连接在一条链上组成,每个触发器存储一个二进制位。

  2. 反馈机制:名称中的“线性反馈”指的是将移位寄存器的特定位以线性方式连接起来的反馈回路。反馈机制涉及对寄存器的某些位进行异或(XOR)运算,并将结果反馈到移位寄存器的输入上。参与反馈回路的位的位置称为“反馈点”。

  3. 时钟信号:LFSR受时钟信号控制,这意味着它们在每个时钟周期中将其内容向右(或向左)移动一位。移位寄存器的输入位通常来自其中一个触发器,该位随后被移动到下一个触发器。反馈机制然后确定输入位的值。

  4. 序列生成:LFSR生成一个二进制位序列,看起来是随机的,但完全由初始状态(种子值)和反馈机制确定。该序列在一定数量的时钟周期后重复,这个数量称为LFSR的周期。周期取决于LFSR的具体配置和大小。

  5. 多项式表示:LFSR的配置通常使用多项式表示。多项式表示了反馈点和它们对应的系数。多项式用于确定反馈机制的反馈点。

  6. 应用领域:

    • 伪随机数生成:LFSR用于生成各种需要伪随机序列的应用,包括计算机科学和工程领域。
    • 错误检测和纠正:LFSR可用于检测数据传输和存储中的错误。它们通常用于循环冗余校验(CRC)算法。
    • 密码学:LFSR在某些加密和解密算法中使用,特别是在流密码中。

LFSR在硬件中实现相对简单,因此适用于需要伪随机序列的各种应用。然而,它们的简单性也意味着它们的输出序列可能具有一定的统计特性,不适合用于密码学目的,除非进行额外的处理。在密码学中使用时,通常与其他密码学技术结合使用以增强安全性。
Linear Feedback Shift Register_第1张图片
Write the Verilog code for this sequential circuit (Submodules are ok, but the top-level must be named top_module). Assume that you are going to implement the circuit on the DE1-SoC board. Connect the R inputs to the SW switches, connect Clock to KEY[0], and L to KEY[1]. Connect the Q outputs to the red lights LEDR.

module top_module (
	input [2:0] SW,      // R
	input [1:0] KEY,     // L and clk
	output [2:0] LEDR);  // Q

    wire b;
    assign b = LEDR[1] ^ LEDR[2];
    submodule module1(KEY[0], KEY[1], {SW[0], LEDR[2]}, LEDR[0]);
    submodule module2(KEY[0], KEY[1], {SW[1], LEDR[0]}, LEDR[1]);
    submodule module3(KEY[0], KEY[1], {SW[2], b}, LEDR[2]);

endmodule
        
module submodule(
    input clk,
    input L,
    input[1:0] in,
    output Q);
    
    always@(posedge clk)begin
        case(L)
            1'b0: Q <= in[0];
            1'b1: Q <= in[1];
        endcase
    end
endmodule

你可能感兴趣的:(fpga开发,单片机,嵌入式硬件)