HDLbits 刷题记录 3.2.4 More Circuit
3.2.4 More Circuit
3.2.4.1 Rule90
Rule90是一道根据一些有趣规则生成一维序列的题目
规则很简单,一维序列中有0
和1
两种状态
下表更详细地给出了跳变的规则,(可以视为状态转移表),元素下一个状态可以视作输出,输入为元素本身的状态与相应两个相邻元素的当前状态。

对于需要实现的电路,创建一个拥有 512
个元素的序列 q[511:0]
,每个时钟周期按照上述规则变换。load
信号有效时,序列更新 data
信号值为初始值。另外假设所有边界的值为 0
(q[-1]
以及 q[512]
)
从真值表中不难看出,center的下一个状态,是由center左右两个状态异或而得
3.2.4.2 Rule110
在每个时钟上升沿,元素状态发生改变。在rule110
中,元素的下一个状态不仅与当前状态有关,还与当前状态两边的状态有关。
下图给出了更详细的状态变化关系:

在这个电路中,要求创建一个由512的元素组成的系统q[511:0]
,规定每个时钟上升沿前进一步,load
有效是,将所有状态赋值为data[51:0]
,且假设q[-1]
和q[512]
都是0
从真值表中可以看出,输出out = (center ^ right) | (center & (~left))
在开始时,先设定两个变量来存储left
和right
,在load = 0
时,直接套用逻辑表达式即可