HDLBits (114) — 移位寄存器
本題鏈接:
https://hdlbits.01xz.net/wiki/Exams/2014_q4b
考慮如下所示的 n 位移位寄存器電路:

假設(shè) n = 4,為移位寄存器編寫(名為 top _ module 的)頂級 Verilog 模塊。在頂級模塊中實例化 MUXDFF 子電路的四個副本。假設(shè)你要在 DE2板上實現(xiàn)這個電路。
將R的輸入連接至SW開關(guān),
clk 連接到?KEY[0],
E?連接到?KEY[1],
L?連接到?KEY[2], and
w?連接到?KEY[3].
將輸出連接到紅燈?LEDR[3:0].
(重新使用?exams/2014_q4a?中的MUXDFF。)

題目

答案

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

異步復(fù)位的優(yōu)點:大多數(shù)觸發(fā)器單元有異步復(fù)位端,不會占用額外的邏輯資源。且異步復(fù)位信號不經(jīng)過處理直接引用,設(shè)計相對簡單,信號識別快速方便。
異步復(fù)位的缺點:復(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