prn码

PRN码确保了不同的卫星信号之间不会相互干扰,能够被接收机同时接收且解析

伪随机噪声序列

1. 随机序列

以码周期为$T_{c}$随机二进制序列,序列长度无限,即序列中只有-1或者1的代数值(或者0和1的逻辑值)。自相关性计算即是在每个码周期代数域乘的总和,总和越大,自相关性越好。即

​ $R_{xx} = \frac{1}{NT_{c}}\int_{0}^{NT_{c}}S(t)S(t+\tau)dt$

具有的特性是:

  • 零延时的自相关性为1,即为最大值
  • 固定延时$\tau$为$T_{c}$整数倍时,因为码片之间完全随机(随机+1或-1),自相关值为0
  • 固定延时$\tau$不到一个码片长度时,每个码片时间$T_{c}$上只有$T_{c} - \tau$的时长相同码片相乘,因为自相关值为$1 - \frac{\tau}{T_{c}}$
  • 固定延时$\tau$大于一个码片长度时但不是整数倍,因为码片之间完全随机(随机+1或-1),自相关值为0

2. 伪随机序列

PRN码在有限长度内随机,并将此随机有限序列无限循环。PRN码码片数$N$,码周期为$T_{c}$,PRN码重复周期为$NT_{c}$。码速率即为产生码片的频率,$R_{c} = \frac{1}{T_{c}}$。

1. 最大长度PRN序列

也叫做移位寄存器码,m位移位寄存器在适当反馈下能够产生长度为$2 ^ m -1$长度的PRN码。

解释:也就是PRN码通过m位移位寄存器产生,由于m位移位寄存器最多只有$2 ^ m -1$个状态(除开全0状态),从某个初态开始,移位寄存器输出一位并更新状态,在设计最好的情况下,遍历所有状态后回到初始态,继续生成同样的序列。通过移位寄存器的方式,产生重复的PRN码。

特性:

  1. 1比0的数量多1,即-1的数量比1的数量多1
  2. 序列与移位后的序列异或,将产生不同移位的相同序列,即$s(t + N_{1}T_{c}) \oplus s(t + N_{2}T_{c}) = s(t + N_{3}T_{c})$

不懂为什么:TODO

  • 固定延时$\tau$为$T_{c}$整数倍时,因为码片长度固定,自相关值很小,但不为0,具体值取决于PRN序列。自相关值为:$R_{xx}(NT_{c}) = \frac{1}{NT_{c}}\int_{0}^{NT_{c}}S(t)S(t+\tau)dt = -\frac{1}{N}$

    可从特性2推断出。当N越大时,PRN序列接近于随机序列。

2. PRN码的生成

可以通过伽罗华域(Galois Field)来生成PRN码

1. 有限域基础

https://www.cnblogs.com/xdyixia/p/12576437.html

  • 有限域的一个重要特性是在加法和乘法上具有封闭性。也就是说对域中的元素进行加法或乘法运算后的结果仍然是域中的元素。
  • 单位元:加法单位元和乘法单位元。对应地,在域中的单位元有:对于加法单位元,所有元素加上单位元e,等于其本身。对应乘法单位元,所有元素乘上单位e,等于其本身。
  • 逆元:加法逆元和乘法逆元。逆元就像数学上的倒数,两个元素互为对方的逆元。如果元素a和b互为加法逆元,那么就有 a + b = e。若互为乘法逆元,那么就有a * b = e

逆元和单位元取决于具体的加法和乘法的定义。

1. 有限域GF(P)

模P域,即加法和乘法结果均模P后输出,结果均位于[0, p-1]之间。加法单位元为0,乘法单位元为1。

对于GF(7),5 + 6 = 11 % 7 = 4, 5 * 6 = 30 % 7 = 2。

求5的加法逆元,(5 + x) % 7 = 0, x = 2

求5的乘法逆元,(5 * x) % 7 = 1, x = 3(欧几里得辗转相除法)

2. 有限域GF(p^n)

多项式域上定义的加法和乘法和一般的加法与乘法不同。不同于模P域,GF(p^n)需要模上本原多项式(本原多项式不能表示为其他两个多项式相乘的乘积)。

GF(2^3)元素推导,合并同类项时,系数们进行异或操作,不是平常的加法操作,本原多项式为$ x ^ 3 + x + 1$

元素 多项式表示 备注 二进制数
$ x ^ 0$ 1 1
$ x ^ 1$ $ x ^ 1$ 2
$ x ^ 2$ $ x ^ 2$ 4
$ x ^ 3$ $ x + 1$ $ x ^ 3 mod\ p = x + 1$ 3
$ x ^ 4$ $ x ^ 2 + x$ 6
$ x ^ 5$ $ x ^ 2 + x + 1$ $ (x ^ 3 + x ^ 2) mod\ p = x ^ 2 + x + 1$ 7
$ x ^ 6$ $ x ^ 2 + 1$ $ (x ^ 3 + x ^ 2 + x) mod\ p = x ^ 2 + 1$ 5
$ x ^ 7 = x ^ 0$ 1 $ (x ^ 3 + x) mod\ p = 1$ 1
0 0 加法元 0

生成元:生成元是域上的一类特殊元素,生成元的幂可以遍历域上的所有元素。域中所有的元素都可以表示为生成元的幂次。

3. 查表法快速计算

正表:二进制数对应到多项式系数

反表:多项式系数对应二进制数

GF(p^n)上的计算会讲二进制数映射到多项式乘法后再映射回到二进制数

$i$ $gflog[i]$ $gfilog[i]$
0 - 1
1 0 2
2 1 4
3 3 3
4 2 6
5 6 7
6 4 5
7 5 -

比如:计算4 * 5

  • 转到多项式,此时计算的是x的系数,乘法变加法:gflog[4] + gflog[5] = (2 + 6)% 7 = 1
  • 转到二进制,从x的一次方查表得到二进制数为:gfilog[1] = 2
  • 得到4 * 5 = 2

比如:计算 4 / 5

  • 转到多项式,此时计算的是x的系数,乘法变减法:gflog[4] - gflog[5] = (2 - 6)% 7 = 3

  • 转到二进制,从x的三次方查表得到二进制数为:gfilog[3] = 3

  • 得到4 * 5 = 3

2. 伽罗华域生成PRN码

如GF(2^3)可以有7种不同的状态,对应7种PRN生成器的状态,每种状态下产生1bit。因此可以生成7位的PRN码。需要设计触发方式,使得生成器从初始态遍历所有状态后回到初始态。

  1. $ a_{j} \implies a_{j+1}$
  2. $ a ^ n = a ^ 0, n = 2 ^ m -1$

初始态任意选择,并确定一个不可约多项式,根据GF(2^m)的特性,在$ 2 ^ m - 1$次后将回到初始态。

通过对每一个状态做映射,可以得到循环码。

对于每个不可约多项式,都能得到一个码序列。如GF(2^3)有两个码序列,不可约多项式分别为$ x ^ 3 + x ^ 2 + x$和 $ x ^ 3 + x + 1$,因此有两个PRN码序列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 计算不可约多项式对应的PRN码
import math


def shift(register: list, feedback: list, output: list) -> int:
"""Shift Register

:param list feedback: which positions to use as feedback
:param list output: which positions are output
:returns output of shift register:
"""
outs = [register[i] for i in output]
out = sum(outs) % 2 # one bit each state

# update the register with GF
msb = register[-1]
for i in reversed(range(len(register)-1)):
register[i+1] = register[i]
register[0] = 0

# feedback is Primitive Polynomial
for i in feedback:
register[i] = register[i] ^ msb
return out


num_states = 7
# shift register initial state
register = [1 for _ in range(int(math.log2(num_states)) + 1)]
for _ in range(num_states):
# Primitive Polynomial x^3 + x + 1
out = shift(register=register, feedback=[0, 1], output=[-1])
print(out, register)
print("--------")

for _ in range(num_states):
# Primitive Polynomial x^3 + x^2 + 1
out = shift(register=register, feedback=[0, 2], output=[-1])
print(out, register)

3. Gold码

随着比特数增加,ML PRN码的数量急剧增加,但是ML PRN码之间有一定的互相关性,不能用于导航系统中。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!