首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

什么是PRBS信号?如何生成?一文读懂

在测量控制系统响应的时候,我们经常需要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等概念。通过理解这些概念和如何相互作用,我们能够有效地生成伪随机二进制序列,应用于各种信号分析、测试和加密场景。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O2T6TRNQ3wPc3s4F-r_i884w0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券