HDLBits (115) — 有三個(gè)輸入的查找表
本題鏈接:
https://hdlbits.01xz.net/wiki/Exams/ece241_2013_q12
在這個(gè)題目中,你將為一個(gè)8x1存儲(chǔ)器設(shè)計(jì)電路,其中寫入存儲(chǔ)器是通過移位完成的,并且與典型的 RAM 中一樣讀取是“隨機(jī)訪問”。然后,你將使用這個(gè)電路實(shí)現(xiàn)一個(gè)3輸入的邏輯功能。
首先,用8個(gè)D型觸發(fā)器創(chuàng)建一個(gè)8位移位寄存器。標(biāo)記觸發(fā)器輸出從 q [0] ... q [7]。移位寄存器的輸入應(yīng)該叫做 S,由它輸入 Q [0](MSB 先移位)。由enable?輸入控制是否切換。然后,擴(kuò)展電路,使其具有3個(gè)額外的輸入A,B,C和1個(gè)輸出Z。電路的行為應(yīng)如下:當(dāng)ABC為000時(shí),Z=Q[0],當(dāng)ABC為001時(shí),Z=Q[1],依此類推。你的電路應(yīng)該只包含8位移位寄存器和多路復(fù)用器。(PS:該電路稱為有三個(gè)輸入的查找表(LUT))。

題目

答案

輸出波形


向量
當(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