HDLbits 刷題記錄 3.2.4 More Circuit
3.2.4 More Circuit
3.2.4.1 Rule90
Rule90是一道根據(jù)一些有趣規(guī)則生成一維序列的題目
規(guī)則很簡單,一維序列中有0
和1
兩種狀態(tài)
下表更詳細(xì)地給出了跳變的規(guī)則,(可以視為狀態(tài)轉(zhuǎn)移表),元素下一個(gè)狀態(tài)可以視作輸出,輸入為元素本身的狀態(tài)與相應(yīng)兩個(gè)相鄰元素的當(dāng)前狀態(tài)。

對(duì)于需要實(shí)現(xiàn)的電路,創(chuàng)建一個(gè)擁有?512
?個(gè)元素的序列?q[511:0]
,每個(gè)時(shí)鐘周期按照上述規(guī)則變換。load
?信號(hào)有效時(shí),序列更新?data
?信號(hào)值為初始值。另外假設(shè)所有邊界的值為?0
(q[-1]
?以及?q[512]
)
從真值表中不難看出,center的下一個(gè)狀態(tài),是由center左右兩個(gè)狀態(tài)異或而得
3.2.4.2 Rule110
在每個(gè)時(shí)鐘上升沿,元素狀態(tài)發(fā)生改變。在rule110
中,元素的下一個(gè)狀態(tài)不僅與當(dāng)前狀態(tài)有關(guān),還與當(dāng)前狀態(tài)兩邊的狀態(tài)有關(guān)。
下圖給出了更詳細(xì)的狀態(tài)變化關(guān)系:

在這個(gè)電路中,要求創(chuàng)建一個(gè)由512的元素組成的系統(tǒng)q[511:0]
,規(guī)定每個(gè)時(shí)鐘上升沿前進(jìn)一步,load
有效是,將所有狀態(tài)賦值為data[51:0]
,且假設(shè)q[-1]
和q[512]
都是0
從真值表中可以看出,輸出out = (center ^ right) | (center & (~left))
在開始時(shí),先設(shè)定兩個(gè)變量來存儲(chǔ)left
和right
,在load = 0
時(shí),直接套用邏輯表達(dá)式即可