在测量控制系统响应的时候,我们经常需要PRBS信号(伪随机二进制序列)来模拟真实世界中的噪声。
那么,PRBS信号是如何生成的?它背后有哪些有趣的数学原理?本篇文章将带你从基本概念入手,逐步深入,了解PRBS信号是如何被生成并应用到实际中的。
什么是PRBS信号?
PRBS信号,中文名字是伪随机二进制序列,英文是Pseudo - Random Binary Sequence,顾名思义,是一种看似随机,但通过确定性算法生成的二进制序列。
它被称为“伪随机”,因为虽然序列的行为看起来像是随机的,但实际上它是由固定的规则生成的,理论上是可以预测的。
PRBS的特点
伪随机性:虽然序列的表现看起来像随机的,但其实可以通过初始状态(Seed)和生成规则完全复现。
周期性:PRBS信号在某个周期后会重复。这个周期的长度与生成序列的位数和反馈规则密切相关。
由于这些特性,PRBS信号被广泛应用于测试设备的性能,例如检查通信系统的误码率、加密系统的安全性等。
那么,如何生成这种伪随机信号呢?其核心工具是线性反馈移位寄存器(LFSR),让我们来看看这个过程。
LFSR(线性反馈移位寄存器Linear Feedback Shift Register)是什么?
LFSR是一种用于生成伪随机序列的数字电路,它由多个寄存器单元组成,每个寄存器单元存储一个二进制位(0或1)。
这些寄存器位通过反馈机制连接,利用时钟信号控制它们在每个周期中进行“右移”。
每次右移时,LFSR会根据特定的规则(即反馈多项式)计算一个新的二进制位,并将其插入到寄存器的最左侧。这种方式可以生成一个伪随机序列。
PRBS_241125
举个例子:
假设我们有一个4位的LFSR,它的寄存器位依次存储
每个时钟周期,寄存器中的值会右移一个位置,同时计算新的反馈位插入最左侧。
计算新反馈位的规则由反馈多项式来决定。
反馈多项式:如何决定哪些位参与计算?
反馈多项式定义了哪些寄存器位将参与计算新的反馈位。假设我们的反馈多项式是
。
这意味着第4位和第3位将参与计算新反馈位,而常数项“1”表示新的反馈位将插入到最左侧的位置。
举个例子:
如果我们设定反馈多项式为
,它告诉我们以下几点:
第4位和第3位是“Tap位”,它们将通过异或操作(XOR)计算新的反馈位。
常数项“1”并不是参与反馈计算的寄存器位,它仅仅表明生成的反馈位将被插入到寄存器的最左侧。
在这个例子中,反馈位是由第4位和第3位的异或结果计算出来的,常数项“1”则确定了反馈位的插入位置。
Tap:哪些寄存器位参与计算反馈?
Tap是指在反馈多项式中参与计算反馈位的寄存器位。它们通过反馈多项式的描述来确定。
例如,反馈多项式
中,第4位和第3位就是Tap位,它们将通过异或操作共同决定新的反馈位。
举个例子:
在一个4位LFSR中,假设寄存器状态是[1, 0, 1, 1]。根据反馈多项式
,第4位和第3位是Tap位。我们将这两个位进行异或计算:
反馈位
这个反馈位将被插入到寄存器的最左侧,更新寄存器的状态。常数项“1”并不会参与反馈计算,它只是告诉我们新反馈位将被插入的位置。
Seed:LFSR的初始状态
Seed指的是LFSR的初始状态,也就是寄存器在启动时的初始值。
Seed的选择对生成的PRBS信号有重要影响,因为不同的Seed值会导致不同的伪随机序列。
Seed为LFSR提供了一个起始点,也就是说,LFSR会从Seed值开始生成序列,而这个序列在每个时钟周期都会根据反馈多项式进行更新。
举个例子:
假设我们有一个3位LFSR,Seed为[1, 1, 1],反馈多项式为
。
这个Seed值决定了LFSR从什么样的状态开始生成伪随机序列。
如果我们选择不同的Seed,比如[0, 1, 0],LFSR生成的序列会完全不同。
因此,Seed的设置对PRBS信号的生成至关重要。
LFSR生成PRBS信号:3位LFSR的具体计算过程
为了更直观地理解PRBS信号的生成,我们来看一个具体的例子。
假设我们使用一个3位LFSR,反馈多项式为
,Seed为[1, 1, 1]。
下面是计算过程的8个步骤:
(计算过程中的
符号代表XOR(异或)运算。)
步骤 1:初始化寄存器
当前寄存器状态:[1, 1, 1]
输出值:1(最右边的值)
根据反馈多项式
,计算反馈位:
反馈位
新的反馈位是,所以:
新寄存器状态:[0, 1, 1]
步骤 2:
当前寄存器状态:[0, 1, 1]
输出值:1
根据反馈多项式计算反馈位:
反馈位
新的反馈位是,所以:
新寄存器状态:[0, 0, 1]
步骤 3:
当前寄存器状态:[0, 0, 1]
输出值:1
计算反馈位:
反馈位
新的反馈位是1,所以:
新寄存器状态:[1, 0, 0]
步骤 4:
当前寄存器状态:[1, 0, 0]
输出值:0
计算反馈位:
反馈位
新的反馈位是,所以:
新寄存器状态:[0, 1, 0]
步骤 5:
当前寄存器状态:[0, 1, 0]
输出值:0
计算反馈位:
反馈位
新的反馈位是1,所以:
新寄存器状态:[1, 0, 1]
步骤 6:
当前寄存器状态:[1, 0, 1]
输出值:1
计算反馈位:
反馈位
新的反馈位是1,所以:
新寄存器状态:[1, 1, 0]
步骤 7:
当前寄存器状态:[1, 1, 0]
输出值:0
计算反馈位:
反馈位
新的反馈位是1,所以:
新寄存器状态:[1, 1, 1]
至此,寄存器状态回到了初始状态,完成了一个循环
生成的序列
根据上述计算,生成的伪随机
序列为:
1, 1, 1, 0, 0, 1, 0
这个序列在7个时钟周期后会重复,因此其周期是7。
4位LFSR的示例
最后,我们来看一个4位LFSR的图片示例,
从上到下是随着时间推进的每一步,
最左侧是XOR计算的结果,
中间是寄存器,
最右侧是输出值,
看过上面3位LFSR的推算过程,这个图片是不是更加直观啦?
总结
PRBS信号的生成依赖于LFSR、反馈多项式、Tap和Seed等概念。通过理解这些概念和如何相互作用,我们能够有效地生成伪随机二进制序列,应用于各种信号分析、测试和加密场景。
领取专属 10元无门槛券
私享最新 技术干货