跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YTM32B1M系列
  4. TRNG 真随机数产生时间计算

TRNG 真随机数产生时间计算

已定时 已固定 已锁定 已移动 YTM32B1M系列
8 帖子 5 发布者 941 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • DigaD 离线
    DigaD 离线
    Diga
    写于 最后由 编辑
    #1

    TRNG 生成时间依据下述公式
    Time = 1/slow bus * ent_dly * samp_size
    例如当前芯片为 YTM32B1ME05,slow bus 时钟为 40MHz,ent_dly 设置为 0xA00,sample size 默认设置为 0x200
    则 Time = 1 / 40M * 0xA00 * 0x200 = 32.768ms
    实际测量时间为 32.99ms,与理论时间符合
    c5d8cb50-6b3f-4f80-8f9b-cd72da1f0fcf-img_v3_02e4_b6f79694-8a6d-432b-82c2-2f8264a141fg.jpg
    864dcbdb-2a8e-47b2-b253-7581615cd2e0-img_v3_02e4_d526cc16-6250-4d66-b4be-4727dc26262g.jpg

    1 条回复 最后回复
    0
    • QiankQ 离线
      QiankQ 离线
      Qiank YunTu
      写于 最后由 编辑
      #2

      1.减小ent_dly的值可以缩减随机数生成时间
      2.后续项目中可以根据项目情况减小sample size的值,最大设置为0x100,也可以缩减时间

      1 条回复 最后回复
      0
      • EnweiE 离线
        EnweiE 离线
        Enwei YunTu
        写于 最后由 编辑
        #3

        Qiank 客户的实际应用,在bootloader中会使用TRNG作为握手通信的一个种子使用,所以客户希望TRNG初始化到产生第一个随机数的时间越短越好,最好能够缩短到5ms以内。

        除了减少sample size,是否还可以加快其工作时钟,比如将其接到Core_CLK?

        QiankQ 1 条回复 最后回复
        0
        • QiankQ 离线
          QiankQ 离线
          Qiank YunTu
          在 回复了 Enwei 最后由 编辑
          #4

          Enwei 因为要保证随机性,所以不能随意更改TRNG的bus clock,设计上要求TRNG内部时钟频率需要>=5*bus clock,TRNG内部时钟频率又和工艺相关,所以改时钟的方式行不通,建议还是改ent_dly或者sample size,另外我们sample size如果设置0x100,TRNG随机数的结果为256bit,如果只需要32bit,则可以设置为0x20,这个可以根据实际需求做调整

          1 条回复 最后回复
          0
          • zhaoqiuhongZ 离线
            zhaoqiuhongZ 离线
            zhaoqiuhong
            写于 最后由 编辑
            #5

            和上述应用场景一致,在bootloader中会使用TRNG作为握手通信的一个种子使用,所以希望TRNG初始化到产生第一个随机数的时间越短越好,最好能够缩短到5ms以内。只需要32bit,但是设置为0x20之后,产生的随机数基本都是重复的,原因是什么呢?

            1 条回复 最后回复
            0
            • houjun_xiaoH 离线
              houjun_xiaoH 离线
              houjun_xiao YunTu
              写于 最后由 编辑
              #6

              TRNG随机数产生后,必须将TRNG_ENT寄存器的数据全部取走, TRNG才能再次产生新的随机数. 所以如果你需要的随机数位数小于TRNG生成数据的默认长度,同样需要将TRNG_ENT寄存器全部都读一次, 使用的时候根据你需要的长度截取即可.

              1 条回复 最后回复
              0
              • zhaoqiuhongZ 离线
                zhaoqiuhongZ 离线
                zhaoqiuhong
                写于 最后由 编辑
                #7

                调用了TRNG_DRV_Get_Ent接口(TRNG_INST, temp),应该是全部读了的对吧,读出来的数组temp[8]里面的值都是一样的。只是把sample size设置为0x20之后随机数出现重复。是不可以这样改吗?

                1 条回复 最后回复
                0
                • houjun_xiaoH 离线
                  houjun_xiaoH 离线
                  houjun_xiao YunTu
                  写于 最后由 编辑
                  #8

                  你说的是这个trngCfgSetting.sampleSize吗? 如果是这个,这不是配值TRNG生成位数的. TRGN模块生成的数据位数是不可修改的, 必须生成RM规定的位数, 读取后软件截取使用需要的位数.

                  1 条回复 最后回复
                  0

                • 云途开发生态介绍

                  快速上手云途开发生态

                • 云途论坛规则/Yuntu Forum Rules

                  发帖前请查看

                • YT CONFIG TOOL调查问卷

                  帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

                • can
                  19
                  demo
                  19
                  uds
                  11
                  lin stack
                  9
                  fbl
                  5
                  md14
                  5
                  yt-link
                  5
                  adc模块
                  4
                  Online Users
                  • 登录

                  • 登录或注册以进行搜索。
                  • 第一个帖子
                    最后一个帖子
                  0
                  • 版块
                  • 最新
                  • 标签
                  • 热门