一种基于FPGA的多种分布随机数生成装置的制作方法

文档序号:19878183发布日期:2020-02-08 06:40阅读:594来源:国知局
技术简介:
发现FPGA随机数生成效率低、分布调整灵活性差的问题,提出基于振荡环阵列与组合逻辑生成高随机性信号,结合存储器分区映射和FIFO缓存机制,实现多种分布随机数实时生成及在线更新的解决方案。
关键词:FPGA随机数生成,多分布实现

本发明属于数字电路设计技术领域,涉及一种基于fpga的多种分布随机数生成装置。



背景技术:

fpga具有处理速度快、并行性强等诸多优点,是通信和信号处理算法实现的优选平台。通信和信号处理算法往往需要多种分布特性的随机数,而现有的fpga随机数生成方法大多用于生成均匀分布的随机数,虽然已有研究人员采用取舍法或其改进方法实现了任意分布随机数的生成,但存在随机数生成效率低、分布特性更改灵活性差等问题,且对多种分布特性随机数同时生成的支持性较差。



技术实现要素:

(一)发明目的

本发明的目的是:针对现有fpga随机数生成实现方式存在的诸多问题,提供一种基于fpga的多种分布随机数生成装置。

(二)技术方案

为了解决上述技术问题,本发明提供一种基于fpga的多种分布随机数生成装置,包括:振荡环阵列、组合逻辑模块、移位寄存模块、地址分配模块、存储器接口、存储器、随机数缓存模块,振荡环阵列输出多个震荡信号,组合逻辑模块对震荡信号使用组合逻辑进行运算,并形成1路振荡信号输出给移位寄存模块;移位寄存模块采集振荡信号并移位寄存,生成随机01序列供地址分配模块使用;所述地址分配模块依据随机数缓存模块提供的fifo新随机数需求选择相应的存储器分区,并根据该分区所使用的地址位数从移位寄存模块中获取等长度的随机01序列,将该序列作为存储器相应分区的地址和分区编号一起输出给存储器接口模块;所述存储器接口模块根据地址分配模块输出的分区编号和分区地址从存储器模块的指定区域读取随机数,存入随机数缓存模块与该分区编号对应的fifo中。

所述振荡环阵列模块包括并列的m个不同的振荡环,每个振荡环是使用奇数个非门和延时电路组成的环形结构,并从环形的某一点抽头引出振荡信号送入后端组合逻辑模块。

所述组合逻辑模块对振荡环阵列模块输出的m个振荡信号使用组合逻辑进行运算,并形成1路振荡信号输出给移位寄存模块;组合逻辑模块可使用简单的纯异或逻辑或复杂的逻辑组合,其用于避免由于单个振荡环不起振、周期振荡等引入的随机性差问题,增强振荡信号的随机性。

所述移位寄存模块对组合逻辑模块输出的振荡信号进行采集,并移位寄存,从而生成随机01序列供地址分配模块使用;移位寄存的位数大于等于地址分配模块所需的最大地址位数。

为保证从存储器中获取随机数的随机性,地址分配模块每次获取的随机01序列不应存在重合部分。

所述存储器接口模块从存储器模块的指定区域读取随机数,并存入随机数缓存模块与该分区编号对应的fifo中的同时可根据更新管理模块的指令对存储器模块的指定分区数据进行更新。

存储器模块包含n个分区,每个分区存储了指定概率分布的随机数,实现由地址到随机数的一一映射;存储器模块中的n个分区与随机数缓存模块中的n个fifo同样存在一一对应关系。

随机数缓存模块由n个fifo构成,每个fifo用于缓存存储器模块对应分区的随机数;当某个fifo需要数据填充时,随机数缓存模块会通知地址分配模块对应该fifo获取新的地址,并通过随机数接口模块从存储器模块中读取相应随机数进行填充。

所述生成装置还包括更新管理模块,可根据外部数据源发送的更新数据,通过存储器接口模块更新存储器模块指定分区的数据,从而实现对相应分区随机数分布特性的更新或调整。

(三)有益效果

上述技术方案所提供的基于fpga的多种分布随机数生成装置,支持多种分布随机数的实时生成和分布特性在线更新,且无需舍去无效随机数,具有随机数生成效率高、分布特性更改灵活性强等优点。

附图说明

图1是本发明一种基于fpga的多种分布随机数生成装置的组成框图。

图2是本发明一种基于fpga的多种分布随机数生成装置的振荡环示例。

具体实施方式

为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

参照图1,本发明一种基于fpga的多种分布随机数生成装置的具体实施例如下:

一种基于fpga的多种分布随机数生成装置,由振荡环阵列、组合逻辑、移位寄存、地址分配、存储器接口、存储器、随机数缓存和更新管理共8个模块构成,其中:

所述振荡环阵列模块由8个不同的振荡环组成,每个振荡环是使用奇数个非门和延时电路组成的环形结构,并从环形的某一点抽头引出振荡信号送入后端组合逻辑模块,其中延时电路可利用fpga内部自身的走线延时,也可利用lcell等缓冲结构,图2是一个3非门振荡环示例,其在fpga内部实现时任意两个非门间存在走线延时。

所述组合逻辑模块对振荡环阵列模块输出的8个振荡信号使用组合逻辑进行运算,并形成1路振荡信号输出给移位寄存模块;组合逻辑模块可使用简单的纯异或逻辑或复杂的逻辑组合。对于纯异或逻辑,即令组合逻辑模块的输出等于8个输入振荡信号异或结果。对于复杂的逻辑组合,设计人员可根据需要使用选择器、异或或其他逻辑进行组合运算。

所述移位寄存模块对组合逻辑模块输出的振荡信号进行采集,并移位寄存,从而生成随机01序列供地址分配模块使用;本实施例的最大地址位数为16,因此移位寄存的位数应大于等于16,即移位寄存模块可并行输出一个大于等于16位的随机01序列。

所述地址分配模块依据随机数缓存模块提供的fifo新随机数需求选择相应的存储器分区,并根据该分区所使用的地址位数从移位寄存模块中获取等长度的随机01序列,将该序列作为存储器相应分区的地址和分区编号一起输出给存储器接口模块。例如,当fifo1非满且剩余随机数数量少于其他fifo时,地址分配模块会收到fifo1的新随机数需求,从而选择分区1,之后根据分区1所使用的地址位数从移位寄存模块中获取等长度的随机01序列,并将该序列作为存储器分区1的地址和分区编号1一起输出给存储器接口模块。

所述存储器接口模块根据地址分配模块输出的分区编号和分区地址从存储器模块的指定区域读取随机数,存入随机数缓存模块与该分区编号对应的fifo中;同时可根据更新管理模块的指令对存储器模块的指定分区数据进行更新。

存储器模块包含4个分区,每个分区存储了指定概率分布的随机数,实现由地址到随机数的一一映射,本实施例每个分区对应分布分别为均匀分布、正态分布、梯形分布和反正弦分布,存储器模块的初始分布数据预先由烧写器写入或在fpga第一次工作时通过更新管理模块写入;存储器模块中的4个分区与随机数缓存模块中的4个fifo同样存在一一对应关系,即分区1对应fifo1、分区2对应fifo2,以此类推。

随机数缓存模块由4个fifo构成,每个fifo用于缓存存储器模块对应分区的随机数;当某个fifo需要数据填充时,随机数缓存模块会通知地址分配模块对应该fifo获取新的地址,并通过随机数接口模块从存储器模块中读取相应随机数进行填充。

更新管理模块可根据外部数据源发送的更新数据,通过存储器接口模块更新存储器模块指定分区的数据,从而实现对相应分区随机数分布特性的更新或调整,例如改变分区1中均匀分布的上下边界等。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 留言:0条
  • 还没有人留言评论。精彩留言会获得点赞!