Verilog 实现伪随机数生成器(线性反馈移位寄存器)

这篇具有很好参考价值的文章主要介绍了Verilog 实现伪随机数生成器(线性反馈移位寄存器)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考文献1

1,题目

verilog伪随机数发生器,数字IC前端设计工程师走向精通,fpga开发,VerilogIC前端开发
不简单的进行移位,而是在移位的基础上加上异或门,如题目所示,这就相当于每进行一次移位,寄存器中的值会发生改变,一直移动,一直改变,就形成了伪随机数。

2,RTL代码设计


// Verilog 实现伪随机数生成器(线性反馈移位寄存器)
module 	LSFR(clk, rst_n, out);
input   clk;
input   rst_n;
output  out;

reg [4:0] shift_reg;
assign out = shift_reg[0];

always@(posedge clk or negedge rst_n)
   if(!rst_n)
      shift_reg <= 5'b1_1110;
   else 
      begin
      	   shift_reg[4] <= shift_reg[0] ^ 1'b0;
      	   shift_reg[3] <= shift_reg[4];
           shift_reg[2] <= shift_reg[3] ^ shift_reg[0];
           shift_reg[1] <= shift_reg[2];
           shift_reg[0] <= shift_reg[1];
      end
endmodule

3,testbench测试代码


//测试
module 	LSFR_tb;
reg  clk;
reg  rst_n;
wire out;

always #10 clk = ~clk;

initial begin
	  rst_n = 0; clk = 1;
#15;  rst_n = 1;

#123;  rst_n = 0;
#233;  rst_n = 1;
#500;
$stop; 
end

LSFR uu(
.clk(clk),
.rst_n(rst_n),
.out(out)
);

endmodule

4,前仿真,波形验证

verilog伪随机数发生器,数字IC前端设计工程师走向精通,fpga开发,VerilogIC前端开发文章来源地址https://www.toymoban.com/news/detail-696947.html

到了这里,关于Verilog 实现伪随机数生成器(线性反馈移位寄存器)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使用Verilog生成随机数

    输入:时钟信号,复位信号,重新加载信号,种子 输出:随机数 输入一个种子32位,输出16位随机数;选取时钟,复位,重新加载种子。 // 使用32个逻辑单元用于D触发器/加法器和8个DSP块用于32x18=32位乘法 module c_rand (   input clk,         // 时钟输入   input rst,        

    2024年02月03日
    浏览(30)
  • 基于FPGA的LFSR16位伪随机数产生算法实现,可以配置不同的随机数种子和改生成多项式,包含testbench

    目录 1.算法仿真效果 2.算法涉及理论知识概要 3.Verilog核心程序 4.完整算法代码文件 vivado2019.2仿真结果如下:           LFSR(线性反馈移位寄存器)提供了一种在微控制器上快速生成非序列数字列表的简单方法。生成伪随机数只需要右移操作和 XOR 操作。LFSR 完全由其多项式

    2024年02月11日
    浏览(32)
  • iOS MT19937随机数生成,结合AES-CBC加密算法实现。

    按处理顺序说明: 1. 生成随机数序列字符串函数 生成方法MT19937,初始种子seed,利用C++库方法,生成: 2. 对第一部中的随机数序列字符串进行sha256加密,得到64字节的一个数据流函数。  3. AES-CBC加密解密方法 /*     CCCrypt方法提供了CBC 和 ECB 两种AES加密模式,     如果不传

    2024年04月09日
    浏览(37)
  • Unity 中的随机数的基础常用的随机数生成方法

    在 Unity 中,可以使用 Random 类来生成随机数。以下是一些常用的随机数生成方法: Random.Range(min, max):生成一个在[min, max)范围内的随机整数。 Random.value:生成一个在[0, 1)范围内的随机浮点数。 Random.insideUnitCircle:生成一个在单位圆内的随机二维向量。 Random.insideUnitSphere:生成

    2024年02月20日
    浏览(41)
  • JS - 生成随机数的方法汇总(不同范围、类型的随机数)

    (1)使用 random() 方法可以返回一个介于 0 ~ 1 之间的伪随机数(包括 0,不包括 1)。 (2)下面是一个测试样例 (1)这种最简单,因为和 random 的特点保持一致。只需使用如下公式即可: (2)比如下面生成 [10,15) 范围内的随机浮点数。 因为 random 的特点,要取得这几个区间

    2023年04月08日
    浏览(37)
  • 【Verilog】CRC校验码生成器原理及verilog实现

    目录 一、CRC的基本原理  二、CRC生成步骤 2.1举个栗子 三、Verilog实现 四、参考资料 4.1 CRC在线计算器 CRC :Cyclic Redundancy Check循环冗余校验码         将被处理的报文比特序列当做一个二进制多项式A(x)的系数,任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和

    2024年02月11日
    浏览(25)
  • java生成随机数

       bound 必须是正数。 以下代码生成的是 0 到 30 的随机数。 生成区间的随机数:[最小值,最大值] 学的不是技术,更是梦想!!!

    2024年02月07日
    浏览(48)
  • haiku生成随机数

    Haiku 遵循 JAX 的设计,生成的随机数是两个元素组成的列表。其中第一个元素是用于生成伪随机数的状态,第二个元素是用于分发密钥的子键。两个元素分别用于状态和子键,确保在分布式计算或并行计算中,多个随机数生成器的状态可以在一定程度上相互影响,从而提高随

    2024年01月20日
    浏览(48)
  • Flutter 生成随机数

    如何让随机数变化? 我们尝试过的都知道,当你创建出来一个随机数后,调用他他的值是随机的,但是,这时候他的值就会固定住,不管怎么样都是随机出来的那个数,如果想要他每次都不一样的话,我们就想要使用刷新来让他变化了。 我们可以使用这样的方法来使他每次不一

    2024年02月13日
    浏览(29)
  • 生成随机数

    用于产生随机数 boolean nextBoolean() : 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 boolean 值。 void nextBytes(byte[] bytes) : 生成随机字节并将其置于用户提供的 byte 数组中。 double nextDouble() : 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之

    2024年02月03日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包