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在硬件中实现相对简单,因此适用于需要伪随机序列的各种应用。然而,它们的简单性也意味着它们的输出序列可能具有一定的统计特性,不适合用于密码学目的,除非进行额外的处理。在密码学中使用时,通常与其他密码学技术结合使用以增强安全性。

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.

c 复制代码
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
相关推荐
hairenjing11235 小时前
使用 Mac 数据恢复从 iPhoto 图库中恢复照片
windows·stm32·嵌入式硬件·macos·word
模拟IC攻城狮6 小时前
华为海思招聘-芯片与器件设计工程师-模拟芯片方向- 机试题-真题套题题目——共8套(每套四十题)
嵌入式硬件·华为·硬件架构·芯片
IT B业生7 小时前
51单片机教程(六)- LED流水灯
单片机·嵌入式硬件·51单片机
一枝小雨7 小时前
51单片机学习心得2(基于STC89C52):串口通信(UART)
单片机·嵌入式硬件·51单片机
IT B业生8 小时前
51单片机教程(一)- 开发环境搭建
单片机·嵌入式硬件·51单片机
bigbig猩猩9 小时前
FPGA(现场可编程门阵列)的时序分析
fpga开发
海绵波波10710 小时前
Webserver(4.8)UDP、广播、组播
单片机·网络协议·udp
好想有猫猫10 小时前
【51单片机】串口通信原理 + 使用
c语言·单片机·嵌入式硬件·51单片机·1024程序员节
云卓科技10 小时前
无人车之路径规划篇
人工智能·嵌入式硬件·算法·自动驾驶
stm 学习ing11 小时前
C语言 循环高级
c语言·开发语言·单片机·嵌入式硬件·算法·嵌入式实时数据库