• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

伪随机序列发生器电路的仿真程序,应该怎么编程?

zzgege 2017-05-08 浏览量:1111



设计的伪随机码发生器,产生m序列伪随机码。系统采用AT89S51单片机作为控制芯片,控制使用LCD12864显示处理器产生的m序列伪随机码,并且可通过按键对参数修改,设置初始码及m序列长度。单片机根据设定的初始码及m序列长度,按照约定的逻辑运算关系,循环往复的产生0或者1。

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 提供一个 MATLAB版本的 楼主参考借鉴一下~

    Matlab生成M序列的伪随机码

         伪随机编码中较常用的是m序列,它是线性反馈移位寄存器序列的一种,其特点是在相同寄存器级数的情况下输出序列周期最长。线性反馈移位寄存器的工作原理是,给定所有寄存器一个初始值,当移位脉冲到来时,将最后一级寄存器的值输出,同时将第 i级的寄存器内容存储到第 i+1 级中,此外将每一级的寄存器输出按照一定的线性运算规则计算出一个值,并将该值存入第一级寄存器中。随着移位脉冲的累加,线性反馈移位寄存器的输出可以组成一个序列,称之为移位寄存器序列[71]。

    图3.5 线性反馈移位寄存器

     

    MATLAB生成M序列伪随机码函数如下:

    % 在MATLAB命令窗口输入以下: % fbconnection=[0 1 1 0 1 0 0 0 0 0 0 0 0 0 0

    % 1];本原多项式系数:[d0,d1,d2...di];其中di为本原多项式前的系数
    % mseq=m_sequence(fbconnection); % mseq 
    %m_sequence.m功能是生成伪随机序列
    %time:2016_1_13
    %edit by:柴宁
    function[mseq]=m_sequence(fbconnection)
    n=length(fbconnection); 
    N=2^n-1;
    % register=[zeros(1,n-1) 1];
    register=[1 1 0 1 0 0 0 0 1 0 1 1 1 1 0 1];%移位寄存器的初始状态 ,[r(i),r(i-1),r(i-2),...r(0)];
    mseq(1)=register(n); 
    %m序列的第一个输出码元 
    for i=2:N 
    newregister(1)=mod(sum(fbconnection.*register),2); 
    for j=2:n, 
    newregister(j)=register(j-1); 
    end; 
    register=newregister; 
    mseq(i)=register(n); 
    end

    • 发布于 20小时前
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:2
  • 代码你得自己写,思路能给你,通常使用间隔微秒的时间种子+按键触发就能产生随机数,而且是真随机数,不是伪随机数。

    • 发布于21小时前
    • 举报
    • 评论 0
    • 0
    • 0

  • 请参考一下这个文章

    https://wenku.baidu.com/view/a535d9d976a20029bd642dc5.html​

    • 发布于21小时前
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

伪随机序列发生器电路的仿真程序,应该怎么编程?