HDLBits (24) — 模塊和向量
本題鏈接:
https://hdlbits.01xz.net/wiki/Module_shift8
此練習(xí)是module_shift的擴(kuò)展?,F(xiàn)在端口對(duì)應(yīng)的不再是單個(gè)引腳,而是向量。與Verilog中的其他地方一樣,端口的向量長度不必與連接到端口的線網(wǎng)匹配,但這將導(dǎo)致向量的缺位由零填充或縱橫化。此練習(xí)不與端口長度不匹配的向量連接。
您將獲得一個(gè)模塊my_dff8,該模塊具有兩個(gè)輸入和一個(gè)輸出(可以實(shí)現(xiàn)8 D觸發(fā)器)。實(shí)例化其中三個(gè),然后將它們鏈接在一起,形成一個(gè)長度為3的8位寬移位寄存器。此外,需要?jiǎng)?chuàng)建一個(gè)4:1多路復(fù)用器(未提供),該多路復(fù)用器根據(jù)sel[1:0]:選擇輸出內(nèi)容。在第一個(gè),第二個(gè)和第三個(gè)D觸發(fā)器都會(huì)輸入D的值。(本質(zhì)上,sel選擇延遲輸入的周期數(shù),從零到三個(gè)時(shí)鐘周期。)
你被提供了以下模塊:
module my_dff8 ( input clk, input [7:0] d, output [7:0] q );
這里沒有提供多路復(fù)用器。還有一種可行的編寫方法是在always塊中使用case語句。(參見?mux9to1v)


題目

答案

輸出波形


模塊是 Verilog 中基本單元的定義形式,是與外界交互的接口。
模塊格式定義如下:
模塊定義必須以關(guān)鍵字 module 開始,以關(guān)鍵字 endmodule 結(jié)束。
模塊名,端口信號(hào),端口聲明和可選的參數(shù)聲明等,出現(xiàn)在設(shè)計(jì)使用的 Verilog 語句(圖中 Declarations_and_Statements)之前。
模塊內(nèi)部有可選的 5 部分組成,分別是變量聲明,數(shù)據(jù)流語句,行為級(jí)語句,低層模塊例化及任務(wù)和函數(shù),如下圖表示。這 5 部分出現(xiàn)順序、出現(xiàn)位置都是任意的。但是,各種變量都應(yīng)在使用之前聲明。變量具體聲明的位置不要求,但必須保證在使用之前的位置。

參考內(nèi)容:
5.1 Verilog 模塊與端口?| 菜鳥教程:
https://www.runoob.com/w3cnote/verilog-module-port.html