0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文解析Matlab如何实现移位寄存器

h1654155282.3538 来源:网络整理 2018-04-26 09:28 次阅读

本文主要介绍Matlab如何实现移位寄存器,首先介绍的是移位寄存器的原理及作用,其次介绍了m序列的生成原理及m序列的matlab 仿真实现,最后介绍了Matlab如何实现移位寄存器的代码。

移位寄存器的原理及作用

1、移位寄存器原理

移位寄存器不仅能寄存数据,而且能在时钟信号的作用下使其中的数据依次左移或右移。

四位移位寄存器的原理图如图所示。F0、F1、F2、F3是四个边沿触发的D触发器,每个触发器的输出端Q接到右边一个触发器的输入端D。因为从时钟信号CP的上升沿加到触发器上开始到输出端新状态稳定地建立起来有一段延迟时间,所以当时钟信号同时加到四个触发器上时,每个触发器接收的都是左边一个触发器中原来的数据(F0接收的输入数据D1)。寄存器中的数据依次右移一位。

一文解析Matlab如何实现移位寄存器

2、移位寄存器作用

移位寄存器是一种存储器,存在里边的数据可以从低位向高位移动或从高位向低位移动。例如一个8位的移位寄存器,存在其中的数据为11001010,如果向左(高位)移动一次,就变成1001010X,原来的最高位的1移出,最低位的X可以是新移入的数据,也可以是0(不同型号的移位寄存器对此有不同的规定)。

m序列的定义及原理

1、m序列的定义

m序列是由n级线性移位寄存器产生的周期为1的码序列,是最长线性移位寄存器序列的简称。

关于m序列的基本生成原理网上介绍很多了,其主要步骤就是寄存器的移位和异或运算。即:特定位置寄存器(由反馈系数决定)的值取出来进行异或运算(也就是或者全部相加后模2的运算),寄存器中的值往输出端移位,最后一位输出,第一个寄存器放刚才异或运算中得到的值。

2、m 序列的产生原理

产生 m 序列的线性反馈移位寄存器由寄存器加上反馈产生,n 阶线性移位寄存器的产生原理框图如图 1 所示。

一文解析Matlab如何实现移位寄存器

图 1 中 a0,a1, … ,an-1 为 n 个移位寄存器某时刻的状态,c0,c1,… ,cn 为移位寄存器的反馈系数,对应位置 ci 等于 1 表示有反馈,等于 0 表示无反馈,加法器采用模 2 相加。

反馈系数决定了反馈移位寄存器产生的 m 序列码型,对于图 1 中反馈移位寄存器,反馈逻辑为 c0,c1,…,cn,则

{an}=c1an-1+c2an-2+…+cna0

只要反馈逻辑 ci 确定,寄存器产生的序列就确定了。n 级移位寄存器产生的伪随机序列,其最长周期为 2n-1。

生成 m 序列的首要问题是要求得移位寄存器的特征多项式, 特征多项式必须为本原多项式, 本原多项式可以用matlab 软件编程求得,也可以直接查表获得,

m序列生成函数的MATLAB代码

一文解析Matlab如何实现移位寄存器

m 序列的 matlab 仿真实现

用 matlab 编程求本原多项式

本仿真中采用四级移位寄存器, 产生周期为 15 的 m 序列。 对应 n=4 的 m 序列的本原多项式求解程序如下:

n=4;

x=gfprimfd(n,‘all’);

for i=1:size(x);

gfpretty(x(i,:))

end;

运行程序,得到 n=4 时的所有本原多项式如下:

x =

1 1 0 0 1

1 0 0 1 1

1+x+x4,1+x3+x4

simulink 搭建 m 序列产生器

找到了本原多项式,可以搭建仿真模型。 此处选择 3.1 节获得的第二种本原多项式进行仿真,反馈分别为 1 0 0 1 1搭建的仿真模型如图 2 所示。

一文解析Matlab如何实现移位寄存器

图 2 中采用四个长度为 1 的 Queue 充当移位寄存器,构 成 15 位 m 序 列 发 生 器。 它 能 与 matlab 中 得 PN SequeueGenerator 模块产生相同的 PN 码,PN Sequeue Generator 的初始设置为 Generator polynomial [1 0 0 1 1 ],Initial states[0 0 01]。 对应的图 2 中移位寄存器模型的反馈系数为 c0=1,c1=0,c2=0,c3=1,c4=1,寄存器初始状态为 a0=1,a1=a2=a3=0。2.2.2 第一个寄存器 Queue 的 Trigger Type 设为 Either edge,其余为 Rising edge。

后两个队列输出进行 XOR 运算, 然后反馈给第一个移位寄存器的输入,对应于反馈系数 1 0 0 1 1 中的三个 1。

一文解析Matlab如何实现移位寄存器

运行仿真模块,得到的伪随机序列如图 3 所示。 产生的m 序列取其一个完整的周期,长度为 15,码型为 1 0 0 0 1 0011010111 。该 m 序列波形与 PN Sequeue Generator 模块产生的波形一 致,PN Sequeue Generator 模 块 产 生 的 m 序列的相位必须手动设置,而该仿真模型产生的为随机序列的相位可以通过图 2 中来自 In1 的脉冲进行自动调整,具有很大的灵活性。

m序列产生函数

function [mseq] = m_sequence (fbconnection);

n = length (fbconnection);

N = 2ˆn - 1;

register =[ones (1,n-1) 1];%定义移位寄存器的初始状态

mseq(1)= register(n)

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;

存储为m_sequence.m

主函数:

clc;

clear all;

fbconnection = [0 0 1 0 1];

mseq = m_sequence(fbconnection);

存储为mxulie.m

输出结果为:mseq =

Columns 1 through 21

1 1 1 1 1 0 0 0 1 1 0 1 1 1 0 1 0 1 0 0 0

Columns 22 through 31

0 1 0 0 1 0 1 1 0 0

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • matlab
    +关注

    关注

    175

    文章

    2917

    浏览量

    228412
  • 移位寄存器
    +关注

    关注

    2

    文章

    180

    浏览量

    22008
收藏 人收藏

    评论

    相关推荐

    带输出寄存器的8位移位寄存器74LVC594A产品数据表

    电子发烧友网站提供《带输出寄存器的8位移位寄存器74LVC594A产品数据表.pdf》资料免费下载
    发表于 02-25 09:37 0次下载
    带输出<b class='flag-5'>寄存器</b>的8位<b class='flag-5'>移位寄存器</b>74LVC594A产品数据表

    移位寄存器可降低LED设计的尺寸和成本

    在使用 LED 的设计中,移位寄存器非常有用。例如,如果系统包括七段显示器、单个指示器或形成网格或面板的 LED 阵列,则可以使用标准 8 位移位寄存器来允许低引脚数微控制器驱动多个LED。
    发表于 01-30 15:14 123次阅读
    <b class='flag-5'>移位寄存器</b>可降低LED设计的尺寸和成本

    如何在CAN PSOC 6的PSoC Creator顶级设计中实现移位寄存器

    如何 CAN PSOC 6的PSoC Creator顶级设计中实现移位寄存器? 目标设备是 CY8C6347BZI-BLD43
    发表于 01-29 08:23

    移位寄存器的工作原理 移位寄存器左移和右移怎么算

    移位寄存器是一种用于在数字电路中实现数据移位操作的基本电路元件。它由多个触发器以及相关控制电路组成,具有存储、接受和移动数据的功能。移位寄存器可以分为两种类型:串行
    的头像 发表于 01-18 10:52 1361次阅读

    labview移位寄存器如何清零

    LabVIEW中的移位寄存器(Shift Register)是一种用于存储和移动数据的功能性块。它类似于传统计算机中的寄存器,可以用于在循环中保留变量的状态。但与传统寄存器不同的是,移位寄存器
    的头像 发表于 01-05 13:49 709次阅读

    基于VHDL的移位寄存器实验

    非常实用的基于VHDL的移位寄存器实验
    发表于 09-25 08:06

    什么是移位寄存器?数字电路中的寄存器类型有哪些呢?

    移位寄存器是一种时序逻辑电路,能够存储和传输数据。它们由触发器组成,这些触发器的连接方式使得一个触发器的输出可以作为另一个触发器的输入,具体取决于所创建的移位寄存器的类型。
    的头像 发表于 09-20 10:44 3791次阅读
    什么是<b class='flag-5'>移位寄存器</b>?数字电路中的<b class='flag-5'>寄存器</b>类型有哪些呢?

    使用移位寄存器构建环形计数器电路

    移位寄存器是一种重要的数字电路元件,可用于构建各种电路,包括环形计数器。在这篇文章中,我们将介绍如何使用移位寄存器来构建一个环形计数器电路。
    的头像 发表于 07-09 11:42 2234次阅读

    移位寄存器连接方法及类型

    移位寄存器在一条线上接收传输的4位和8位信号,并一一发送出去。反之亦然,它的作用是将海量的数据分拣到每一位,进行转换和传输数据,移位寄存器允许高速传输大量信号而无需大量布线。在本文中将解释此类移位寄存器
    的头像 发表于 07-07 10:50 1637次阅读

    使用移位寄存器构建一个环形计数器电路

    移位寄存器可用于各种电路。例如,如果您稍微修改串行输入 – 并联输出移位寄存器,则可以创建一个环形计数器电路,如下所示:
    的头像 发表于 06-29 11:24 790次阅读
    使用<b class='flag-5'>移位寄存器</b>构建一个环形计数器电路

    什么是移位寄存器移位寄存器的用途是什么?

    移位寄存器是数字电子学中的常见构建模块,用于存储和移动位,例如,从串行数据转换为并行数据,反之亦然。
    的头像 发表于 06-29 11:21 4694次阅读
    什么是<b class='flag-5'>移位寄存器</b>?<b class='flag-5'>移位寄存器</b>的用途是什么?

    移位寄存器复位与不复位的区别在哪?

    下图是ISE14.7实现后的结果如下图所示,编译器直接把他综合进了一个SRL16里面,也就是专用的移位寄存器模块,只需要一个LUT就可以实现16bit以内的移位
    的头像 发表于 06-28 14:58 858次阅读
    <b class='flag-5'>移位寄存器</b>复位与不复位的区别在哪?

    Arduino 74hc595移位寄存器

    电子发烧友网站提供《Arduino 74hc595移位寄存器.zip》资料免费下载
    发表于 06-14 10:03 3次下载
    Arduino 74hc595<b class='flag-5'>移位寄存器</b>

    基于移位寄存器TDM的实现方式

    设计中两片FPGA分割边界的数据Sig1、Sig2、Sig3、Sig4……等一大波的信号被并行地加载到传输时钟的上升沿上的移位寄存器中,并用相同的时钟移出。
    发表于 05-26 14:08 119次阅读
    基于<b class='flag-5'>移位寄存器</b>TDM的<b class='flag-5'>实现</b>方式

    基于移位寄存器的TDM的实现方式

    设计中两片FPGA分割边界的数据Sig1、Sig2、Sig3、Sig4……等一大波的信号被并行地加载到传输时钟的上升沿上的移位寄存器中,并用相同的时钟移出。
    发表于 05-23 15:42 201次阅读
    基于<b class='flag-5'>移位寄存器</b>的TDM的<b class='flag-5'>实现</b>方式