原文作者:FPGA设计论坛

m序列简介

m序列是目前广泛应用的一种伪随机序列,其在通信领域有着广泛的应用,如扩频通信,卫星通信的码分多址,数字数据中的加密、加扰、同步、误码率测量等领域。m序列在所有的伪随机序列里面的地位是最基础同样也是最重要的。它的特点就是产生方便快捷,有很强的规律特性,同时自相关性、互相关特性也很好。在IS-95的反向信道中,选择了m序列的PN码作为地址码,利用不同相位m序列几乎正交的特性来为每个用户的业务信道分配了一个相位 。简单来说,n级反馈移位寄存器的状态最多由2^n 个,同时,在线性的反馈移位寄存器中,全“0”状态永不改变,所以也就是说,它的最长的周期就是 2^n - 1。

由于反馈的存在,移存器的输入端受控地输入信号。不难看出,若初始状态为全“0”,则移位后得到的仍为全“0”,因此应避免出现全“0”状态,又因为n级移存器共有2n-1种可能的不同状态,除全“0”状态外,剩下2n-1种状态可用。每移位一次,就出现一种状态,在移位若干次后,一定能重复出现前某一状态,其后的过程便周而复始了。反馈线位置不同将出现不同周期的不同序列,我们希望找到线性反馈的位置,能使移存器产生的序列最长,即达到周期P=2^n-1。

m序列性质

周期为2^n-1的m序列由以下几个特点:

①随机性

在m序列的一个周期中,0和1出现概率大致相同,0码只比1码多一个。

②移位可加性

某个周期为p的m序列与其经任意延迟移位后的序列模2相加后,其结果仍是周期为p的m序列,只是原序列某次延迟移位后的序列。

③预先可确定性

m序列是由移位寄存器的初始状态和反馈网络唯一确定的。

④游程特性

序列中取值相同的相继元素称为一个游程。游程长度指的是游程中元素的个数。在m序列中,一共有个游程。其中长度为1的游程占总游程数的一半;长度为2的游程占总游程的1/4;长度为k的游程占总游程数的,且在长度为k的游程中,连0与连1的游程数各占一半。另外,还有一个长度为n的1游程和一个长度为(n一1)的0游程。

线性移位反馈寄存器的结构图如下:

①ci的值决定了反馈线的连接状态;

②在上式和后面的公式中都将“”简写为“+”;

③式中xi本身并无实际意义,它仅指明其系数是ci的值。

④特征方程f(x)决定了一个线性反馈移存器的结构,从而决定了它产生的序列的构造和周期。

本原多项式

使一个线性反馈移存器产生最长周期序列的充分必要条件是其特征方程f(x)为本原多项式,最长周期为2^n-1。

本原多项式是指满足下列条件的多项式:

①是既约的,即不能分解因子的;

② 可以整除(x^m + 1),m = 2^n – 1;即是( x^m + 1 )的一个因子;

③ 除不尽( x^q+ 1 ),q < m。

常用本原多项式:(最高位和最低位系数必须都是1),同时n也是多项式最高项的次数和LFSR寄存器个数;

示例如下:

表示上式中仅x0, x1,和x4的系数c0 = c1 = c4 = 1,而其余系数c2 = c3 = 0,则:

n=4,m=2^4-1 g(x)=x^4+x+1;

在最长线性序列移位寄存型计数器中,存在一个“00000”,该状态构成死循环,这会使电路不具有自启动功能,为了解决这个问题,可在反馈方程中加全0校正项 (~Q1)&(~Q2)…..

例如:

此时的反馈函数F= Q1^Q4+(~Q0)&(~Q1)&(~Q2)&(~Q3)&(~Q4);

相应地verilog代码如下:

module m_sequence(input             I_clk,input             I_rst_p,input             en,input  [3:0]      D_init,output            dout                 )wire F;reg  [3:0] m_reg;always@(posedge I_clk)if(I_rst_p)m_reg <= 4'b0;else if(en)m_reg <= D_init;elsem_reg <= {m_reg[2:0],F };assign F=(m_reg[1]^m_reg[4])|(~(|m_reg)) ;assign dout = m_reg[3];endmoduel

FPGA学习-m序列信号发生器相关推荐

  1. m序列产生器(FPGA学习)

    m序列产生器 摘自<Altera FPGA 系统设计实用教程>清华大学出版社 伪随机数在密码邻域的应用无处不在,是很多密码算法和密码协议的基础,常见伪随机数发生器基于线性反馈移位寄存器的伪 ...

  2. 基于 FPGA 的便携式 DDS 信号发生器与示波器

    基于 FPGA 的便携式 DDS 信号发生器与示波器 项目来源:2019年第三届全国大学生FPGA创新设计竞赛 一.设计概述 1.1 设计目的 利用赛灵思公司 A7 系列板卡 EG01.AD9226 ...

  3. FPGA学习之串口篇

    FPGA学习之串口篇 文章目录 FPGA学习之串口篇 前言 二.UART发送代码 三.UART接收代码 三. 总结 前言   UART(Universal Asynchronous Receiver/ ...

  4. 【FPGA入门教程】(二)FPGA学习路线及开发流程

    一.FPGA学习路线 工具使用 -> 语法学习 -> 逻辑设计 -> IP使用 ->接口设计 -> 时序分析 -> 片上系统 1.工具使用 Altera:Quart ...

  5. FPGA学习之 直接数字频率合成器(DDS)

    目录 FPGA学习之 直接数字频率合成器(DDS) FPGA学习之 直接数字频率合成器(DDS) DDS的原理: 直接数字频率合成器(Direct Digital Synthesizer, DDS)是 ...

  6. FPGA学习步骤(打算以后也转FPGA了,毕竟工资比硬件工程师高)

    学习FPGA,在不同层次的人明显有不同的答案.先说一句,说不要开发版的都是菜鸟级选手. 我把FPGA层次划分为,鸡蛋级别,菜鸟级别,老鸟级别,高手级别四类.我是鸡蛋级别的!啥也不会. 1)熟悉语法,其 ...

  7. 用74194设计一个00011101序列信号发生器

    序列信号发生器可由移位寄存器(74194)和反馈逻辑电路构成,如下图所示: 一.列出所要产生的序列(周期为8,最右边信号先输出)与移位寄存器状态的关系 如上图,序列下面的线段所对应的数码表示移位寄存器 ...

  8. FPGA学习笔记(八):ASK调制解调的仿真

    笔记八是ASK调制解调的仿真实现. ASK调制解调的实现原理:首先使用MATLAB产生存储基带波形的coe文件,再让ROM读取coe文件输出基带波形,然后DDS产生正弦波信号作为载波信号,接下来使用乘 ...

  9. oracle两表链接序列跳序,Oracle学习之 序列(Sequence)

    Oracle学习之 序列(Sequence) [Oracle学习]之 序列(Sequence) oracle文档:https://docs.oracle.com/cd/B28359_01/server ...

最新文章

  1. Apache Spark 介绍的演讲ppt (slice),全英文
  2. [Android]Android端ORM框架——RapidORM(v1.0)
  3. #16192董哥授课的CCNP交换部分总结(一)
  4. HDS HDIM背后的小秘密
  5. 【React Native开发】React Native控件之DrawerLayoutAndroid抽屉导航切换组件解说(13)
  6. Mysql运维管理-一主多从宕机从库切换主库继续和从库同步过程16
  7. Linux Shell 编程笔记
  8. python mock server_五、python MOCK SERVER
  9. win10磁盘占用率过高解决办法
  10. 【vuejs】有关UI框架“ydui”中的tabbar底部导航的应用以及tabbar切换激活状态的现实
  11. three.js黑洞穿越动画js特效
  12. jQuery表格新增行
  13. system函数的详细使用
  14. react-native-root-siblings 在应用的根元素之后添加兄弟元素
  15. Unity 引擎 Managed Stripping Level 遇到的坑
  16. <a name=“maodian“>锚点标签
  17. Oracle 技巧总结 (二):nvl() 函数
  18. MACE源码解析【ARM卷积篇(一) 】1*N和N*1卷积实现
  19. 谷歌搜索结果在新标签页中打开
  20. WPS找回未保存文档

热门文章

  1. 建设工程法规专科【4】
  2. markdown如何调整行距_反Markdown试验:用Markdown的思维来使用Word
  3. 什么是机器学习(ML)
  4. C++using用法
  5. 树莓派4B无线鼠标延迟解决办法
  6. 深圳中学老师工资单曝光,秒杀程序员,网友:酸了酸了
  7. 初学者必会的100个编程代码
  8. 可以将matlab安装到u盘吗,如何进行微软的office和matlab以及word等软件导入u盘
  9. CTP开发(1)CTP开发的概述
  10. MYSQL里的DBS是什么_DBS-MySQL:MYSQL获取自增ID的四种方法