杰发科技AC7840——真随机数和伪随机数

0. 真随机数和伪随机数

1. CSE_DRV_InitRNG

CSE_DRV_InitRNG****初始化真随机数生成器

2. CSE_DRV_GenerateRND

CSE_DRV_GenerateRND****生成一个128bit真随机数,即16bytes

3. 随机数的重复概率

实测非常小,至少1000w次不会出现同一个值

cpp 复制代码
unsigned int count = 0;
int main(void)
{
    status_t Res;
    uint8_t RNG[16] = {0x00};
    uint8_t OldRNG[16] = {0x00};

    SystemClock_Config();
    InitDebug();
    printf("demo start...\r\n");

    FLASH_DRV_Init(&Flash1_InitConfig, &flash_Config);

    if (flash_Config.flexRAMSize == 0)
    {
        FLASH_DRV_UnlockCtrl();
        Res = FLASH_DRV_Partition(&flash_Config, 0x00, 0x03, 0);
        printf("FLASH_DRV_Partition,Res = 0x%x \r\n", Res);
        NVIC_SystemReset();
    }

    /*initialize CSE*/
    CSE_DRV_Init(&cse_State);

    /*initialize RNG*/
    Res = CSE_DRV_InitRNG();
    printf("CSE_DRV_InitRNG,Res = 0x%x \r\n", Res);

    Res = CSE_DRV_GenerateRND(OldRNG);
    unsigned int countflag = 1000000;
		unsigned int addTimes = 0;
    while (1)
    {
        Res = CSE_DRV_GenerateRND(RNG);

        for (int i = 0; i < 16; i++)
        {

            if (OldRNG[i] == RNG[i])
            {
                count++;
            }
            if (count >= 15)
            {
								printf("RNG: ");
                Numpy_Put(RNG, 16);
            }
        }
        count = 0;
        countflag--;
        if (countflag == 0)
        {
						addTimes++;
						printf("RNG 1000000 times :  addTimes %d \r\n",addTimes);
            countflag = 1000000;
        }
    }
}

4. CSE_DRV_ExtendSeed

此过程应该就是伪随机数了,因为人为操作了

5. 重复情况测试结果

没有扩展种子的测试结果

100 万次×130=130000000(即 1.3 亿)次没有重复值

100w次太快了,6s就算完了

改成1000w次

大概1分钟打印一次

加了扩展种子之后和没加的一起计时

从打印结果来看,加了扩展种子,计算1000w次大约1min40s,没加扩展种子大概1min4s

测试到今早,没有重复值

扩展种子之后413*1000w次无重复

没扩展种子的643*1000w次无重复

相关推荐
EMTime8 天前
玲珑GUI-工程设置
单片机·mcu·ui·用户界面
agathakuan10 天前
從零開始在家開發 IoT: Flash & Run 腳本解析(STM32 + WiFi HaLow)
stm32·mcu·iot
kaisun6410 天前
国内主流大模型采购清单
大模型·国产
sramdram11 天前
基于国民32位MCU的无磁智能水表方案
mcu·32位mcu
十年编程老舅12 天前
读懂 MCU 启动:从上电到程序运行全链路
单片机·嵌入式硬件·mcu·嵌入式·cpu·嵌入式开发·ram
小麦嵌入式13 天前
PCB设计笔记(一):51核心板原理图(电源、晶振、复位)
stm32·单片机·嵌入式硬件·mcu·51单片机·硬件工程·pcb设计
李永奉14 天前
杰理SDK开发-【BUG】软件开启音量同步连接华为、荣耀手机没有自动开启音量同步
单片机·嵌入式硬件·mcu·物联网·智能手机·bug·语音识别
国产芯片设计22 天前
小家电单段码屏项目实战|YL1621 LCD驱动开发与调试心得
驱动开发·stm32·单片机·mcu·51单片机
嵌入式Q22 天前
FreeRTOS源码解析(10)软件定时器
单片机·mcu·freertos
徐怀江24 天前
ModusToolbox for vscode使用小记
ide·vscode·单片机·mcu·infineon