M序列原理及代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、m序列

1.1概述

1.1.1实验原理

(1)m序列概念和用途

①概念:

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

②用途:

码分多址系统主要采用两种长度的m序列:一种是周期为P=2^15-1的m 序列,又称为短PN序列;另一种是周期为P=2^42-1的m序列,又称为长PN 序列。

(2)m序列的产生

①4级m序列的码序列发生器

假设初始状态为0001,在时钟作用下,产生的m序列的状态表。

4级m序列的周期P=24-1=15,相应的输出序列为:100010011010111。

②线性移位反馈移位寄存器反馈系数Ci

③m序列特性

均衡性:在一个周期中,m序列中“1”的个数比“0”的个数多1个。

游程特性:长度为k的游程数占游程总数的1/2^k

移位相加特性:一个m序列与其循环移位逐位比较,相同码的位数与不同码的位数相差1位。

自相关特性:表征一个信号与延迟后自身信号的相似性。

④m序列的构造——反馈线性反馈移存器

1.1.2实验意义

m序列是目前广泛应用的一种伪随机序列,在所有的伪随机序列中,m序列是最重要、最基本的一种伪随机序列。它容易产生,规律性强,有很好的自相关性和较好的互相关特性。m序列的生成是接下来的实验的基础,具有指导性的意义。

1.1.3系统的主要功能

设计本原多项式系数为13、23、103、203的m序列。

1.1.4使用方法

输入m后,输出相应的m序列。

1.2程序设计

1.2.1设计思想

由m序列的产生过程,即通过带反馈的移位寄存器产生,容易想到EDA中的结构化的程序设计思想,即以DFF触发器作为底层文件,进行顶层文件设计,获得m序列。此设计的优点是程序思路简单,结构清晰,只要做出一种反馈系数的m序列,容易得到其他反馈系数的m序列;但也存在缺点,那就是结构化的设计使得代码写的过长。

1.2.2软件设计流程及描述

(1)流程图

(2)描述

clk上升沿触发程序,用case语句选择m为13,23,103,203中的哪种情况。做出判断后首先用if语句判断初始状态为全零的特殊情况,即若初始状态为全零则设置为非零状态。之后将最低位到次高位的数值依次右移一位,再将最高位和次高位异或后送到最低位,输出波形。

1.3源程序代码

library ieee;

use ieee.std_logic_1164.all;

entity untitled3 is

port(m:in std_logic_vector(1 downto 0);

clk:in std_logic;

m_out:out std_logic );

end entity untitled3;

architecture behave of untitled3 is

signal out1:std_logic_vector(6 downto 0);

--out1<=”0000000”;

begin

process(clk)

begin

if clk'event and clk='1'then

case m is

when"00"=> --13 m序列

if out1(2 downto 0)="000"then out1(0)<='1';

else

out1(1 downto 0)<=out1(2 downto 1); --右移

out1(2)<=out1(0) xor out1(1);

end if;

when"01"=> --23 m序列

if out1(3 downto 0)="0000"then out1(0)<='1';

else

out1(2 downto 0)<=out1(3 downto 1); --右移

out1(3)<=out1(0) xor out1(1);

end if;

when"10"=> --103 m序列6级

if out1(3 downto 0)="000000"then out1(0)<='1';

else

out1(4 downto 0)<=out1(5 downto 1); --右移

out1(5)<=out1(0) xor out1(1);

end if;

when"11"=> --203 m序列7级

if out1(3 downto 0)="0000000"then out1(0)<='1';

else

out1(5 downto 0)<=out1(6 downto 1); --右移

out1(6)<=out1(0) xor out1(1);

end if;

when others=>null;

end case;

m_out<=out1(0);

end if;

end process;

end architecture behave;

1.4仿真图

3级M序列

4级M序列

6级M序列1.5测试波形

相关文档
最新文档