M序列原理及代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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测试波形