Verilog中随机布尔网络的实现

时间:2015-02-19 09:54:22

标签: random boolean verilog

我想在FPGA中实现布尔网络。布尔网络声明如下。

随机布尔网络由N个随机连接的节点组成,每个节点都具有二进制状态:开或关(1或0)。在NK网络中,每个节点都接收从网络中其他节点随机选择的K个输入,并且在大多数情况下允许自连接(图1显示了RBN拓扑的示例)。

Example of RBN

网络中每个节点在时间t + 1的状态由其在时间t的输入状态通过随机生成的布尔函数确定,该布尔函数可以用每个节点的查找表来表示(参见表1) )。通常,布尔函数在整个网络生命周期内不会发生变化。在RBN中,每个节点的布尔函数将2K个可能的输入组合中的每一个映射到输出状态0或1。

通过为每个节点分配值0或1,网络被赋予随机初始状态。下一时间步的每个节点的值使用其输入的状态和每个节点的布尔函数来确定。所有节点同时更新(同步)。生成网络的新状态,然后用于确定下一个状态,依此类推。网络活动的一个例子如图所示。

Example network activity

我真的想在verilog中实现它。任何人都可以给我一些关于RBN的细节吗?

在阅读关于布尔网络的整个陈述之后,我可以将我的问题分成三个步骤 首先,我可能想要实现具有给定节点功能的二进制网络。 其次,我想实现一个随机功能块。  第三 - 整合两者。顺便说一句

每次重置或编译时生成不同的网络

1 个答案:

答案 0 :(得分:0)

随机布尔函数f(d_0, d_1,..,d_(k-1) )可以表示为2^k1多路复用器,其2^k随机数据输入和k"选择&#34 ;从其他多路复用器的N输出中选择的输入。对于时序要求,将锁存器放在线路上。我已经为您绘制了网络的基本块:

Basic RBN block

你需要N个像这样的互联Q's。你必须实现组合生成器" N选择K",根据表示选择号的输入,并将顶部输入连接到某种随机数生成器(编译时与否,您的选择)。