这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 具有可配置逻辑块的伪随机数生成器

共2条 1/1 1 跳转至

具有可配置逻辑块的伪随机数生成器

高工
2025-04-11 16:57:06     打赏

随机性在许多嵌入式应用中扮演着至关重要的角色,从加密安全到游戏和模拟。
但是您知道您可以使用可配置逻辑块(CLB)直接在8位微控制器上实现基于硬件的伪随机数生成器(PRNG)吗?
在本文中,我们将探讨如何创建一个利用 CLB 和 SPI 外设的 PRNG。这种硬件驱动的方法以最小的CPU开销实现了高效和连续的随机数生成。

什么是 PRNG ?

伪随机数生成器(Pseudo-Random Number Generator, PRNG)通过确定性算法生成模拟真正随机性的数字序列,这些序列是可重复的,因此非常适合资源受限的环境,在这些环境中,高效和可控的随机性对您的设计至关重要。
第一个图说明了 PRNG 整体操作所需的逻辑。第二张图强调了8位左反馈移位寄存器所需的逻辑,这是负责生成伪随机序列的关键组件。


image

image865×437 71.3 KB
图 1 :使用 LFSR 、 CLB 和 SPI 实现 PRNG 的概念概述。



image

image865×189 29.4 KB
图 2:PRNG LFSR 配置框图。


原理图

PRNG通过以下方式实现:

    PRNG 以非零种子值初始化,确保连续运行并防止执行期间锁定。

    实现概述

    硬件需求

    带有CLB和SPI外设的单片机 PIC16F13145Curiosity Nano 开发板带有 CLB 和 SPI 外设的微控制器(例如PIC16F13145)

    用于配置的 MPLAB ® 代码配置器( MCC )

    配置步骤


      image

      image865×189 29.4 KB


      代码示例

      PRNG输出通过SPI (SS, SDI, SCK)和UART验证伪随机数,由板载开关使用

      int main(void) {  SYSTEM_Initialize();  SPI_Open(CLIENT_CONFIG);
        __delay_ms(100);  while (1) {    if (SWITCH_GetValue() == 0) {      if (SPI1_IsRXReady()) printf("\n\rRead byte: %x", SPI1_ByteRead());
          }
        }
      }

      测试及结果

      通过UART或示波器观察SPI引脚上的输出来验证PRNG。生成的序列表现出一致的伪随机行为,如下所示:


      image

      image865×371 79 KB


      图 3 :在测试期间捕获的样本 PRNG 输出。

      基于 CLB 的 PRNGs 应用

      加密功能数据爬游戏的算法仿真和建模

      通过利用基于硬件的逻辑,这种方法减少了 CPU 工作负载,简化了系统设计。





      关键词: 有可     配置     逻辑     随机数    

      专家
      2025-04-11 20:45:15     打赏
      2楼

      感谢分享


      共2条 1/1 1 跳转至

      回复

      匿名不能发帖!请先 [ 登陆 注册 ]