HDLBits (26) — 加法器2
本題鏈接:
https://hdlbits.01xz.net/wiki/Module_fadd
在本練習(xí)中,你將創(chuàng)建具有兩個(gè)層次的回路。您的top_module將實(shí)例化add16的兩個(gè)副本(已提供),每個(gè)副本將實(shí)例化add1的16個(gè)副本(您必須編寫)。因此,您必須編寫兩個(gè)模塊:top_模塊和add1。
與module_add類似,你將獲得一個(gè)執(zhí)行16位加法的module add16。必須實(shí)例化其中兩個(gè)才能創(chuàng)建32位加法器。一個(gè)add16模塊計(jì)算加法結(jié)果的低16位,而第二個(gè)add16模塊計(jì)算結(jié)果的高16位。您的32位加法器不需要處理進(jìn)位(假定為0)或進(jìn)位(忽略)。
將add16模塊如下圖所示連接在一起。提供的模塊add16具有以下聲明:
在每個(gè)add16中,實(shí)例化16個(gè)全加器(模塊add1,這里未提供)以實(shí)現(xiàn)加法。必須編寫滿足一下條件的全加器模塊:
top_module - 包含兩個(gè)...的頂級(jí)模塊
add16提供 - 一個(gè)16位加法器模塊,由16個(gè)組成...
add1 - 一個(gè)1位全加法器模塊。
如果提交的內(nèi)容缺少模塊add1,將收到一條報(bào)錯(cuò),顯示錯(cuò)誤(12006):節(jié)點(diǎn)實(shí)例“user_fadd[0].a1”的實(shí)例化未定義實(shí)體“add1”。


題目
提示:
全加器公式:
sum = a ^ b ^ cin
cout = a&b | a&cin | b&cin

答案

輸出波形


模塊是 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