PN序列发生器
生成伪噪声序列
图书馆
通信源的序列生成器子库
![](http://www.tianjin-qmedu.com/help/releases/R2018a/comm/ref/pnsequenceicon.gif)
描述
PN序列发生器块使用线性反馈移位寄存器(LFSR)生成伪随机二进制数序列。该块使用简单的移位寄存器生成器(SSRG或Fibonacci)配置实现LFSR。伪随机序列可用于伪随机扰频器和反扰频器。它也可用于直接序列扩频系统。
该块可以在模拟过程中输出长度不同的序列。有关可变大小信号的更多信息,请参见可变大小信号基础(万博1manbetx模型)。
PN序列生成器块使用移位寄存器来生成序列,如下所示。
所有r生成器中的寄存器在每个时间步更新它们的值,根据进入移位寄存器的箭头的值。加法器执行模2的加法运算。移位寄存器由发电机多项式参数,它是一个原始的二元多项式zgrzr+ gr 1zr 1+ gr2zr2+……+ g0.系数gk如果从KTH寄存器(如上图所示)到加法器有连接,则为1。前导项gr常数项g0的发电机多项式参数必须为1,因为多项式必须是基元。
您可以指定发电机多项式参数使用以下格式:
一个多项式特征向量包括这个数字
1
,例如,'z^4 + z + 1'
.一种按幂的降序列出多项式系数的向量。第一项和最后一项必须为1。注意,这个向量的长度比生成器多项式的次多一次。
的指数的向量z对于多项式的非零项按幂的降序排列。最后一项必须为
0
.
例如,z^8 + z^2 + 1
,[1 0 0 0 0 0 0 1 0 1]
,[8 20 0]
表示同一个多项式,p(z) = z8+ z2+ 1。
的初始状态参数是一个向量,指定寄存器的初始值。的初始状态参数必须满足以下条件:
所有要素初始状态向量必须是二进制数。
的长度初始状态向量必须等于生成多项式的次。
请注意
的至少一个元素初始状态Vector必须为非零,以便块生成非零序列。也就是说,至少有一个寄存器的初始状态必须是非零的。
例如,下表表示对应于p(z) = z的生成器多项式的两组参数值8+ z2+ 1。
数量 | 示例1 | 示例2 |
---|---|---|
发电机多项式 | G1 = [1 0 0 0 0 0 0 1 0 1] |
G2 = [8 2 0] |
发生器多项式的次 | 8,也就是长度(g1) 1 |
8 |
初始状态 | [1 0 0 0 0 0 0 1 0] |
[1 0 0 0 0 0 0 1 0] |
输出掩码向量(或标量移位值)移位输出序列的起始点。使用此参数的默认设置,唯一的连接是沿着标记的箭头米0,对应0的位移。下面将更详细地描述该参数。
你可以改变PN序列的起始点输出掩码向量(或标量移位值).可以通过以下两种方式指定参数:
表示移位长度的整数
一个二进制向量,叫做掩码向量,其长度等于生成器多项式的次
设置时块输出之间的差值输出掩码向量(或标量移位值)到0,相对于正整数d,如下表所示。
T = 0 | T = 1 | T = 2 | ... | T = d | T = d+1 | |
---|---|---|---|---|---|---|
转变= 0 | x0 | x1 | x2 | ... | xd | xd + 1 |
转变= d | xd | xd + 1 | xd + 2 | ... | x二维 | x2 d + 1 |
或者,您可以设置输出掩码向量(或标量移位值)到一个二元向量,对应于一个多项式z,米r 1zr 1+ mr2zr2+……+ m1Z + m0,阶不超过r-1。位移d对应的掩码向量是表示m(z) = z的向量d模g (z),其中g(z)为生成器多项式。例如,如果生成器多项式的次为4,则d = 2对应的掩码向量为[0 1 0 0]
,表示多项式m(z) = z2.上面的原理图说明了如何做到这一点输出掩码向量(或标量移位值)将其指定为掩码向量时将实现。的默认设置输出掩码向量(或标量移位值)是0
.可以使用“通信系统工具箱™”功能计算掩码矢量shift2mask
.
您可以使用外部信号通过选择将内部移位寄存器的值重置为初始状态非零输入复位.这将在PN序列发生器块中为外部信号创建一个输入端口。
例如:重置信号
假设PN序列发生器块输出[1 0 0 1 1 1 0 1 1]
当没有复位时。然后选择非零输入复位并输入复位信号[0 0 0 1]。下表显示了复位信号对PN序列发生器模块的影响。
复位信号属性 | PN序列发生器块 | 复位信号,输出信号 |
---|---|---|
样品时间= 1 |
样品时间= 1 |
|
PN序列在第4位被重置,因为重置信号的第4位是1和样品时间是1。
最大长度序列
为一个有次的多项式生成一个最大长度序列,r,设置发电机多项式到下表中的值。最大序列长度为2r- 1.看到[1]有关这些多项式所代表的移位寄存器结构的更多信息。
r | 发电机多项式 | r | 发电机多项式 |
---|---|---|---|
2 | [2 10 0] |
21 | [21 19 0] |
3. | [3 2 0] |
22 | [22 21 0] |
4 | [4 3 0] |
23 | [23 18 0] |
5 | [5 3 0] |
24 | [24 23 22 17 0] |
6 | [6 50 0] |
25 | [25 22 0] |
7 | [7 6 0] |
26 | [26 25 24 20 0] |
8 | [8 6 5 4 0] |
27 | [27 26 25 22 0] |
9 | [9 50 0] |
28 | [28 25 0] |
10 | [10 7 0] |
29 | [29 27 0] |
11 | [11 9 0] |
30. | [30 29 28 7 0] |
12 | [12 11 8 6 0] |
31 | [31 28 0] |
13 | [13 12 10 9 0] |
32 | [32 31 30 10 0] |
14 | [14 13 8 4 0] |
33 | [33 20 0] |
15 | [15 14 0] |
34 | [34 15 14 10 0] |
16 | [16 15 13 4 0] |
35 | [35 2 0] |
17 | [17 14 0] |
36 | [36 11 0] |
18 | [18 11 0] |
37 | [37 12 10 2 0] |
19 | [19 18 17 14 0] |
38 | [38 6 5 10 0] |
20. | [20 17 0] |
39 | [39 8 0] |
40 | [40 5 4 3 0] |
47 | [47 14 0] |
41 | [41 3 0] |
48 | [48 28 27 10 0] |
42 | [42 23 22 10 0] |
49 | [49 9 0] |
43 | [43 6 43 0] |
50 | [50 4 3 2 0] |
44 | [44 6 5 20 0] |
51 | [51 6 3 10 0] |
45 | [45 4 3 10 0] |
52 | [52 3 0] |
46 | [46 21 10 10 0] |
53 | [53 6 2 10 0] |
PN序列生成示例
属性的操作PN序列发生器
将库块的输出序列与原始Simulink块生成的输出序列进行比较。万博1manbetx
来打开模型,输入doc_pnseq2
在MATLAB中®命令行。
对于所选的生成器多项式, 时,该模型使用库块和相应的Simulink块生成周期为63的PN序列。万博1manbetx它展示了这两个参数,初始状态而且输出掩码向量(或标量移位值),在后面的原理图中解释。
你可以通过改变的值来试验不同的初始状态初始状态在运行模拟之前。对于所有的值,两个生成的序列是相同的。
使用PN序列发生器块允许您轻松生成大周期的PN序列。
参数
- 发电机多项式
-
多项式,用a表示特征向量或者向量,它决定了移位寄存器的反馈连接。
- 初始状态
-
移位寄存器初始状态的向量。
- 输出掩码源
-
指定如何向块提供输出掩码信息。
当将该参数设置为时
对话框参数
,田野输出掩码向量(或标量移位值)为用户输入启用。当设置为时
输入端口
,一个面具
输入端口出现在块图标上。的面具
输入端口只接受掩码向量。
- 输出掩码向量(或标量移位值)
-
仅当输出掩码源设置为
对话框参数
.整数标量或二进制向量,决定PN序列从初始时间开始的延迟。如果将移位指定为二进制向量,则该向量的长度必须等于生成器多项式的次。
- 输出可变大小的信号
-
如果希望在模拟过程中输出序列的长度不同,则选中此复选框。默认选择输出固定长度的信号。
- 最大输出大小来源
-
指定块如何定义信号的最大输出大小。
当你选择
对话框参数
中输入的值最大输出尺寸参数指定输出的最大大小。进行此选择时,oSiz
输入端口指定输出信号的当前大小,块输出从输入信号继承采样时间。输入值必须小于或等于最大输出尺寸参数。当你选择
从引用端口继承
,块输出从Ref输入端口的可变大小信号继承采样时间、最大大小和当前大小。
该参数仅在选择时出现输出可变大小的信号.默认选择为
对话框参数
. - 最大输出尺寸
-
指定两个元素的行向量,表示块的最大输出大小。向量的第二个元素必须是
1
例如,[10 1]给出了一个10乘1的最大输出信号。该参数仅在选择时出现输出可变大小的信号. - 样品时间
-
输出信号的每一列采样之间的时间。
- 每帧样本
-
输出信号的一个通道中每帧的采样数。
请注意
输出更新之间的时间等于的乘积每帧样本而且样品时间.例如,如果样品时间而且每帧样本等于1时,该块每秒输出一个样本。如果每帧样本增加到10,然后每10秒输出一个10乘1的向量。这确保了等效输出速率不依赖于每帧样本参数。
- 非零输入复位
-
选择后,可以指定一个输入信号,将内部移位寄存器重置为函数的原始值初始状态参数。
- 启用位打包输出
-
选中时,字段封装位数还有选项将位打包的值解释为有符号的启用。
- 封装位数
-
指示每个输出数据字中要打包多少位(允许的范围是1到32)。
- 将位打包的值解释为有符号的
-
指示打包位是作为有符号整型数据值处理还是作为无符号整型数据值处理。选中时,最高位(符号位)中的1表示负数。
- 输出数据类型
-
默认情况下,设置为
双
.当启用位打包输出未选中时,输出数据类型可指定为
双
,布尔
,或最小无符号整数
.当参数设置为时最小无符号整数
中使用的设置选择输出数据类型硬件实现窗格中的“配置参数”对话框。如果ASIC / FPGA
在硬件实现窗格,则输出数据类型为理想的最小位大小,即ufix (1)
.对于所有其他选择,它是一个无符号整数,具有足够容纳一位的最小可用字长,通常对应于char的大小(例如,uint8
).当启用位打包输出时,输出数据类型可指定为
双
或最小的整数
.当参数设置为时最小的整数
时,选择输出数据类型将位打包的值解释为有符号的,封装位数的设置硬件实现窗格中的“配置参数”对话框。如果ASIC / FPGA
在硬件实现窗格中,输出数据类型为理想的最小值n
-bit大小,即,sfix (n)
或ufix (n)
,基于将位打包的值解释为有符号的.对于所有其他选择,它是一个有符号或无符号整数,具有足够大的最小可用字长n
位。
例子
PN扩展与多路径
这个例子模型考虑了单用户系统在多路径传输环境下的伪随机扩展。
在这里打开模型:pn_sequence_block_example1
modelname =“pn_sequence_block_example1”;open_system (modelname);sim (modelname);
在这种情况下,对于三路径信道,由于分集组合而有收益。这是由于所使用的PN序列具有理想的自相关特性。
要进一步实验此模型,请更改PN序列发生器块的参数。此外,对于相同的序列,选择其他路径延迟,以查看性能变化。
close_system (modelname 0);
双用户多路径PN扩展
该模型考虑了多路径环境下双用户组合传输的伪随机扩展。
在这里打开模型:pn_sequence_block_example2
modelname =“pn_sequence_block_example2”;open_system (modelname);sim (modelname);
对于用于传播的两个不同的PN序列,请注意,在相同的信道条件下,单个用户的性能现在已经恶化了(比较上面的139个错误和41个错误)。这主要是由于两个序列之间较高的互相关值,从而阻止了理想的分离。注意,组合还是有优势的,因为多路径+ AWGN信道与RAKE组合的错误率几乎与仅AWGN的情况一样好。
close_system (modelname 0);
HDL代码生成
此块支持使用HDL C万博1manbetxoder™生成HDL代码。HDL Coder提供了影响HDL实现和合成逻辑的额外配置选项。有关HDL代码生成的实现、属性和限制的更多信息,请参见PN序列发生器在HDL编码器文档。
另请参阅
参考文献
[1] Proakis, John G.,数字通信,第三版,纽约,McGraw Hill, 1995。
李,J. S.和L. E.米勒,CDMA系统工程手册,Artech House, 1998。
[3] Golomb s.w.,移位寄存器序列,爱琴海公园出版社,1967年。