m序列详解及VHDL语言实现
目录
- m序列的产生
- 简介
- 线性反馈移位寄存器
- VHDL语言实现
- 代码
- 仿真图
m序列的产生
简介
m序列是最长线性反馈移位寄存器序列的简称,是由带线性反馈的移位寄存器产生的周期最长的序列。下图是一个4级线性反馈移位寄存器。
假若初始状态为(a3,a2,a1,a0)=(1,0,0,0)(a_3,a_2,a_1,a_0)=(1,0,0,0)(a3,a2,a1,a0)=(1,0,0,0),那么在移位一次时,由a3a_3a3和a0a_0a0模2相加产生新的输入,放到寄存器a3a_3a3中;寄存器a2a_2a2值更新为寄存器a3a_3a3原来的值;寄存器a1a_1a1值更新为寄存器a2a_2a2原来的值;寄存器a0a_0a0值更新为寄存器a1a_1a1原来的值;输出为寄存器a0a_0a0原来的值。移位一次后,新的状态变为(a3,a2,a1,a0)=(1,1,0,0)(a_3,a_2,a_1,a_0)=(1,1,0,0)(a3,a2,a1,a0)=(1,1,0,0)。这样移位15次后又回到初始状态(1,0,0,0)。状态更新如图所示。
如果初始状态为全“0”状态,则移位后得到的仍是全“0”状态。这就意味着在这种反馈移位寄存器中应该避免出现全“0”状态,否则移位寄存器的状态将不会改变。因为4级移位寄存器共有24=162^4=1624=16可能的状态。除全“0”状态外,只剩下15种状态可用。这就是说,由任何4级反馈移位寄存器产生的序列的周期最长为15。一般来说,一个n级线性反馈移位寄存器可能产生的最长周期等于(2n−1)(2^n-1)(2n−1),将这种最长的序列称为最长线性反馈移位寄存器序列,简称m序列。
线性反馈移位寄存器
一般的线性反馈移位寄存器原理方框图如下图所示,图中各级寄存器的状态用aia_iai表示,aia_iai=0或1,i为整数。反馈线的连接状态用cic_ici表示,cic_ici表示此线接通(参加反馈);cic_ici=0表示此线断开。反馈线的连接状态不同,就可能改变此移位寄存器输出序列的周期p。
上文指出,cic_ici的取值决定了移位寄存器的反馈连接和序列的结构,所以cic_ici是一个很重要的参量。现将它用下列方程表示:
f(x)=c0x+c1x2+⋯+cnxn=∑i=0ncixif(x) = c_0x +c_1 x^2 + {\cdots} + c_nx^n = \sum_{i=0}^n c_ix^if(x)=c0x+c1x2+⋯+cnxn=i=0∑ncixi
这一方程成为特征方程(或特征多项式)。式中xix^ixi仅指明其系数代表的cic_ici的值,xxx本身并无实际意义,也不想要计算xxx的值。例如特征方程
f(x)=1+x+x4f(x) = 1 + x +x^4 f(x)=1+x+x4
则它仅表示x0x^0x0,x1x^1x1,x4x^4x4的系数c0c_0c0=c1c_1c1=c4c_4c4=1,其余的cic_ici为0。按照这一特征方程构成的反馈移位寄存器如图所示。
VHDL语言实现
代码
程序用于实现特征方程
f(x)=1+x+x4f(x) = 1 + x +x^4 f(x)=1+x+x4
程序中的组合逻辑产生下一状态的最高位,即a_3;时序逻辑用于生成下一个状态,并输出最低位。
----------------------------------------------------------------------------------
-- Company:
-- Engineer:
--
-- Create Date: 17:29:15 01/29/2019
-- Design Name:
-- Module Name: linear_fsr - Behavioral
-- Project Name:
-- Target Devices:
-- Tool versions:
-- Description: 特征方程f(x) = 1 + x + x^4
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;entity linear_fsr isport(clk : in std_logic;rst_n : in std_logic;data_o : out std_logic);
end linear_fsr;architecture Behavioral of linear_fsr issignal sr : std_logic_vector(3 downto 0);signal tmp : std_logic;begintmp <= sr(3) xor sr(0);process(clk,rst_n)beginif rst_n = '0' thensr <= "1000";data_o <= '0';elsif rising_edge(clk) thensr <= tmp & sr(3 downto 1);data_o <= sr(0);end if;end process;end Behavioral;
仿真图
程序仿真图如下所示
信号sr表示移位寄存器中各个寄存器内部的值。复位时,移位寄存器的初始状态为1000。当复位键拉高之后,在每一个时钟上升沿,移位寄存器内部寄存器值改变,并产生一个输出。对比仿真图与理论推导,结果一致。
m序列详解及VHDL语言实现相关推荐
- 【python】什么是序列,Python序列详解
什么是序列,Python序列详解 概述 序列索引 序列切片 序列相加 序列相乘 检查元素是否包含在序列中 序列相关的内置函数 range 快速初始化数字列表 概述 所谓序列,指的是一块可存放多个值的连 ...
- 图遍历详解(C语言版)
文章目录 一.定义 二.方法 1.深度优先遍历 2.广度优先遍历 三.实现 1.无向图或强连通有向图遍历 2.非连通图遍历 结语 附录 一.定义 从给定图中任意指定的顶点(称为初始点)出发,按照某种搜 ...
- 线索二叉树详解(C语言版)
文章目录 一.定义 二.结构 三.常用操作 结语 附录 一.定义 前面学习了二叉树,在操作过程中发现了几个问题: 问题一:二叉树如何才能实现从一个指定结点开始遍历呢? 问题二:在二叉树 ...
- Sorting 排序详解(c语言实现)
Sorting 排序详解(c语言实现)# 今日突然有任务,明天补充完整. 邮箱:Is_Dmy@163.com期待交流. Hello,各位小伙伴~我是你们的课代表橙橙,今天呢我要给大家分享的是关于内排序 ...
- c语言写程序if else,if else用法详解,C语言if else用法完全攻略
if else 语句是一种选择结构,可以让代码选择执行.所谓选择执行,就是"某些代码可能执行,也可能不执行,有选择地执行某些代码". if 的最简单用法 if最简单的格式是: if ...
- 图之邻接矩阵详解(C语言版)
文章目录 一.定义 二.结构 三.常用操作 结语 附录 一.定义 图的邻接矩阵是一种采用邻接矩阵数组表示顶点之间相邻关系的存储结构.设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为: ...
- C语言return的用法详解,C语言函数返回值详解。 (本次转载仅供学习,感谢原创!!转发自C语言中文网,如有侵权请私信本人删除)
C语言return的用法详解,C语言函数返回值详解 转载:http://c.biancheng.net/view/1855.html 函数的返回值是指函数被调用之后,执行函数体中的代码所得到的结果,这 ...
- 图之邻接表详解(C语言版)
文章目录 一.定义 二.结构 三.常用操作 四.测试 结语 附录 一.定义 图的邻接表是一种顺序与链式存储相结合的存储方式.下面给出一个示例,以便大家能够理解邻接表这种存储方式: 无向 ...
- oracle 序列详解
Oracle 序列详解 一 序列定义 序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).不占用磁盘空间,占用内存. 其主要用途是生成表的主键值, ...
- oracle 修改序列 next number,oracle序列详解
}] //最大值 [{MINVALUE n | NOMINVALUE}] //最小值 [{CYCLE | NOCYCLE}] //循环/不循环 [{CACHE n | NOCACHE}];//分配并存 ...
最新文章
- 中兴交换机查看光纤板支持的类型
- 为何python不好找工作k-为何python不好找工作,seo行业不好转行了
- python3基础语法-Python3 - 基础语法
- mysql php commit_php mysqli_autocommit()使用实例
- 每天一道LeetCode-----在字符串s中找到最短的包含字符串t中所有字符的子串,子串中字符顺序无要求且可以有其他字符
- java技术_2020年最流行的Java开发技术
- wince系统安装软件_精密空调安装泄漏检测系统软件的作用
- OLTP和OLAP的区别
- Uva 11218 - KTV
- jsp页面运行的步骤以及原理
- ubuntu 18.04 卸载 mysql 过程记录
- C# 泛型2---排序
- 二叉树的递归与非递归遍历详解
- java ipv6转换成ipv4,如何映射IPv4的IPv6地址转换为IPv4(字符串格式)?
- 学生用计算机指数函数,指数函数计算器
- 苹果iphone5港版美版与高仿耳机鉴别方法
- MATLAB之物理场可视化
- 国行switch服务器在维护中,国行Switch是否锁区锁服?你关心的问题都将在这里解答...
- Redis教程(上课笔记)
- JS实现国家、省、市
热门文章
- 【解决方案】施工现场如何实现全方位视频监控?EasyGBS视频智能告警分析平台搭建智慧工地
- 深延科技:基于深度学习的智能OCR识别技术大有可为
- 小米手机修改imei教程_小米手机imei码和s/n码以及测试调试界面唤起代码
- C# 把文件和文件夹 放到回收站 (出现Unknown err (0x402) 无法删除 文件:无法读取源文件或磁盘 解决)
- ONVIF协议--ONVIF协议简介
- java网络通信技术示例:简单的聊天小程序
- CS229 Lecture 17
- 机器学习cs229——(一)概要
- SAAS-HRM-day4
- 手机通达信正在连接服务器,通达信服务器全部连接超时