我看你4bit adder寫得差不多了 基本概念也就這樣
這裡還是大概講一下題目的硬體要怎麼組合出來
首先當然就是確定in,output
input有a0~3, b0~3, Ci; output有s0~3跟Co
先宣告IO
module decAdder(input a3, a2, a1, a0, b3, b2, b1, b0, Ci,
output s3, s2, s1, s0, Co);
接下來輸入直接連接至4bit adder input
fulladder4bit U0(.A( {a3,a2,a1,a0} ), .B( {b3,b2,b1,b0} ), .Cin(Ci),
這裡{}目的在把a3~a0,b3~b0組成4bit以符合4bit adder的輸入
接下來輸出由於是內部的接線 所以要先宣告 (實際在寫時必須宣告在前面)
wire z3, z2, z1, z0, K;
剛剛的fulladder4bit輸出端則繼續寫完,這裡我們也連接完一個4bit adder
.Z( {z3,z2,z1,z0} ), .Cout(K));
而另外一個4bit adder一樣按圖連接 輸出直接連到output(s3~s0)
fulladder4bit U1(.A( {z3,z2,z1,z0} ), .B( {1'b0,Co,Co,1'b0} ), .Cin(1'b0),
.Z( {s3,s2,s1,s0} ), .Cout());
這樣兩個4bit adder就搞定了 只剩下2個and閘跟1個三輸入xor閘
先宣告兩個and閘的輸出再接線
wire o1, o2;
and U2(o1, z3, z2);
and U3(o2, z3, z1); 這種是邏輯閘層次的寫法
最後的三輸入xor輸出端Co用另外一種寫法
assign Co = K^o1^o2;
endmodule
差不多就是這樣了......verilog基本上就是在組合硬體元件
在寫之前一定要有一張硬體藍圖在腦中
規劃硬體從大至小 寫則是從小到大