HDLBits (107) — 4位移位寄存器
本題鏈接:
https://hdlbits.01xz.net/wiki/Shift4
構(gòu)建一個(gè)4位移位寄存器(右移),具有異步復(fù)位、同步加載和啟用功能。
areset: 移位寄存器重置為零。
load: 用data[3:0]代替移位加載移位寄存器。
ena: 右移(q[3]變?yōu)榱?,q[0]移出并消失)。
q: 移位寄存器的內(nèi)容。
如果load和ena輸入都被聲明為(1),則load的輸入具有更高的優(yōu)先級(jí)。

題目

答案

輸出波形


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

異步復(fù)位的優(yōu)點(diǎn):大多數(shù)觸發(fā)器單元有異步復(fù)位端,不會(huì)占用額外的邏輯資源。且異步復(fù)位信號(hào)不經(jīng)過處理直接引用,設(shè)計(jì)相對(duì)簡(jiǎn)單,信號(hào)識(shí)別快速方便。
異步復(fù)位的缺點(diǎn):復(fù)位信號(hào)與時(shí)鐘信號(hào)無確定的時(shí)序關(guān)系,異步復(fù)位很容易引起時(shí)序上 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ù)位簡(jiǎn)介 | 菜鳥教程:
https://www.runoob.com/w3cnote/verilog2-reset.html