HDLBits (111) — 3位線性移位反饋寄存器
本題鏈接:
https://hdlbits.01xz.net/wiki/Mt2015_lfsr
摘自2015年期中問題5。另請參見問題的第一部分:mt2015_muxdff

為這個時序電路編寫 Verilog 代碼(可以創(chuàng)建子模塊,但是頂層必須命名為 top _ module)。假設(shè)你要在 DE1-SoC 板上實(shí)現(xiàn)這個電路。將 R 輸入連接到 SW 開關(guān),將時鐘連接到 KEY [0] ,L連接到 KEY [1]。連接Q輸出到紅燈 LEDR。

題目
提示:
該電路是線性反饋移位寄存器(LFSR)的一個例子。最大周期LFSR可用于生成偽隨機(jī)數(shù),因?yàn)樗谥貜?fù)之前循環(huán)2n-1個組合。全零組合不會出現(xiàn)在此序列中。

答案

向量
當(dāng)位寬大于 1 時,wire 或 reg 即可聲明為向量的形式。Verilog 支持可變的向量域選擇,
Verillog 還支持指定 bit 位后固定位寬的向量域選擇訪問。
[bit+: width]?: 從起始 bit 位開始遞增,位寬為 width。
[bit-: width]?: 從起始 bit 位開始遞減,位寬為 width。
對信號重新進(jìn)行組合成新的向量時,需要借助大括號。
異步復(fù)位
異步復(fù)位是指無論時鐘到來與否,只要復(fù)位信號有效,電路就會執(zhí)行復(fù)位操作。
異步復(fù)位常常會被綜合成如下電路:

異步復(fù)位的優(yōu)點(diǎn):大多數(shù)觸發(fā)器單元有異步復(fù)位端,不會占用額外的邏輯資源。且異步復(fù)位信號不經(jīng)過處理直接引用,設(shè)計(jì)相對簡單,信號識別快速方便。
異步復(fù)位的缺點(diǎn):復(fù)位信號與時鐘信號無確定的時序關(guān)系,異步復(fù)位很容易引起時序上 removal 和 recovery 的不滿足。且異步復(fù)位容易受到毛刺的干擾,產(chǎn)生意外的復(fù)位操作。
參考內(nèi)容:
?2.3 Verilog 數(shù)據(jù)類型?| 菜鳥教程:
https://www.runoob.com/w3cnote/verilog-data-type.html
5.1 Verilog 復(fù)位簡介 | 菜鳥教程:
https://www.runoob.com/w3cnote/verilog2-reset.html