如何在FPGA中生成伪随机数?
如何在FPGA中生成伪随机数?
How to generate pseudo random number in FPGA?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何在FPGA中生成伪随机数?
How to generate pseudo random number in FPGA?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
这已经被涵盖了(我会选择 LFSR):
Spartan-3E 上的随机数生成
This has been covered (I'd go for an LFSR):
Random number generation on Spartan-3E
Xilinx 有一篇关于在 FPGA 中高效生成伪随机数序列的优秀应用说明。 它是XAPP052。
There's an excellent Xilinx application note on generating pseudo-random number sequences efficiently in an FPGA. It's XAPP052.
如果不是用于密码学或其他具有智能对手的应用程序(例如赌博),我会使用 线性反馈移位注册方法。
它只使用异或和移位,因此在硬件中实现非常简单。
If it's not for cryptography or other applications with an intelligent adversary (e.g. gambling) I'd use a linear feedback shift register approach.
It only uses exclusive or and shift, so it is very simple to implement in hardware.
正如其他人所说,LFSR 可用于 FPGA 中的伪随机数。 这是最大长度 32 位 LFSR 的 VHDL 实现。
As others have said, LFSRs can be used for pseudo random numbers in an FPGA. Here is a VHDL implementation of a maximal length 32-bit LFSR.
如果您需要一个随机单词,例如 C rand() 函数,则 LFSR 本身无法完成这项工作。 为此,我制作了一个小型开源 FPGA rand() 模块。
它针对初始状态和输出宽度进行参数化。 它是使用 Xilinx DSP48 内核编写的,运行速度非常快。 与 Mersenne Twister 相比,单个 DSP48 可以提供良好的结果。
如果您需要的话,该项目还包含参数化 LFSR 模块。
If you need a randomized word, like the C rand() function, an LFSR by itself will not do the job. I made a little open-source FPGA rand() module for that purpose.
It is parameterized for initial state and output width. It is written to use the Xilinx DSP48 core and runs very fast. A single DSP48 gives good results compared to the Mersenne Twister.
This project also contains parameterized LFSR modules if that's what you need.