matlab实现移位寄存器,一文解析Matlab如何实现移位寄存器
本文主要介绍Matlab如何实现移位寄存器,首先介绍的是移位寄存器的原理及作用,其次介绍了m序列的生成原理及m序列的matlab 仿真实现,最后介绍了Matlab如何实现移位寄存器的代码。
移位寄存器的原理及作用
1、移位寄存器原理
移位寄存器不仅能寄存数据,而且能在时钟信号的作用下使其中的数据依次左移或右移。
四位移位寄存器的原理图如图所示。F0、F1、F2、F3是四个边沿触发的D触发器,每个触发器的输出端Q接到右边一个触发器的输入端D。因为从时钟信号CP的上升沿加到触发器上开始到输出端新状态稳定地建立起来有一段延迟时间,所以当时钟信号同时加到四个触发器上时,每个触发器接收的都是左边一个触发器中原来的数据(F0接收的输入数据D1)。寄存器中的数据依次右移一位。
2、移位寄存器作用
移位寄存器是一种存储器,存在里边的数据可以从低位向高位移动或从高位向低位移动。例如一个8位的移位寄存器,存在其中的数据为11001010,如果向左(高位)移动一次,就变成1001010X,原来的最高位的1移出,最低位的X可以是新移入的数据,也可以是0(不同型号的移位寄存器对此有不同的规定)。
m序列的定义及原理
1、m序列的定义
m序列是由n级线性移位寄存器产生的周期为1的码序列,是最长线性移位寄存器序列的简称。
关于m序列的基本生成原理网上介绍很多了,其主要步骤就是寄存器的移位和异或运算。即:特定位置寄存器(由反馈系数决定)的值取出来进行异或运算(也就是或者全部相加后模2的运算),寄存器中的值往输出端移位,最后一位输出,第一个寄存器放刚才异或运算中得到的值。
2、m 序列的产生原理
产生 m 序列的线性反馈移位寄存器由寄存器加上反馈产生,n 阶线性移位寄存器的产生原理框图如图 1 所示。
图 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代码
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 所示。
图 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。
运行仿真模块,得到的伪随机序列如图 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实现移位寄存器,一文解析Matlab如何实现移位寄存器相关推荐
- 用Matlab提取图片中泰文,利用Matlab提取图片中的数据
[实例简介] 从事科研或者工程的人员在文档撰写过程中,常需要将文献中的曲线与自己的结果对比,为获取原始数据,一种常用的办法是手动描点,即将原始曲线放大然后打印出来,选取一定数量的点,读出其横纵坐标,然 ...
- matlab如何使用word文档,MATLAB与Word混合使用
MATLAB提供notebook将Microsoft Word和MA TLAB完美结合,即在编辑Word文档时利用MATLAB资源,包括科学计算和绘图功能,这样的文件也叫M-book文档.其工作原理是 ...
- rectpuls函数 matlab,Matlab中的rectpuls函数解析
Matlab中的rectpuls函数解析 Matlab中的rectpuls函数解析 1.先看Matlab中的解释: This MATLAB function returns a continuous, ...
- las文件matlab,基于Matlab的LAS格式数据解析与显示.pdf
您所在位置:网站首页 > 海量文档  > 计算机 > matlab 基于Matlab的LAS格式数据解析与显示.pdf ...
- 开源Math.NET基础数学类库使用(03)C#解析Matlab的mat格式
开源Math.NET基础数学类库使用(03)C#解析Matlab的mat格式 原文:[原创]开源Math.NET基础数学类库使用(03)C#解析Matlab的mat格式 开源Math.NET基础数学类 ...
- MATLAB中fix啥意思,matlab fix函数用法_常见问题解析,matlab
matlab syms什么意思_常见问题解析 matlab中syms的意思是定义多个变量,可以用来创建符号变量x和y,语法是"syms x y":也可以创建一些符号变量.函数和数组 ...
- stem什么意思matlab,matlab中stem函数用法_常见问题解析,matlab
matlab中如何自定义图例_常见问题解析 matlab中自定义图例的方法:首先打开matlab软件:然后点击勾选按钮,新建一个文件并输入代码为"x = 0:pi/50:2*pi;" ...
- matlab tcpip数据解析,Matlab数据输出、从MATLAB 以tcpip形式传输数据到 vvvv
Matlab数据输出..从MATLAB 以tcpip方式传输数据到 vvvv 想要使用vvvv进行控制,但是数据是从matlab里算出的 就想到tcp/ip方式连接 查找很多资料,可大多数都是在MAT ...
- 彩色matlab代码拷贝到word研究,matlab编辑器合并_彩色MATLAB代码拷贝到WORD研究
公众号:理念世界的影子 文不可无观点,观点不可无论据. 转载请注明出处 结果简单,重在过程 有时将彩色Matlab代码拷贝到Word中,可能出现彩色消失.中文乱码.没有行号.字体不佳等问题.已有的措施 ...
最新文章
- [C] 图的广度优先搜索——最少转机
- c语言中delay找不到标识符,51单片机的c语言,请问哪里错了?延时没有效果,但是编译又不报错。delay应该怎么写,怎么引用啊?...
- Windows下Go语言的安装和运行
- Java主方法引用传递_java方法中的参数传递是值传递还是引用传递(转)
- android进程间通信:使用AIDL
- getlasterror返回57怎么解决_王者荣耀:用时最短职业比赛?3分57秒结束,解说都看呆了!...
- 安装visual studio code(VS Code)并修改为中文
- 算法训练 P1101(java)
- 维护人员工具_确保丝印机顺畅使用的维护事项有哪些?
- 通过aspnetpager为DataList分页
- java实训心得体会3篇_java实训心得体会3篇
- html超链接为变量,如何向超链接添加变量值
- learnopengl——HDR——完结
- 第一次软工作业(构建之法)
- 说一说用户思维!!!
- 执行 this.$destroy()后原生DOM事件也无法执行
- DCDC--Burst Mode和Pulse Skipping Mode
- 华为服务体系:ITR流程体系详解
- 计算机系统——信息的表示与处理
- html input禁止驶入,layui form表单 input输入框获取焦点后 阻止Enter回车自动提交 – 执念 – 博客园...