我看你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基本上就是在组合硬件元件
在写之前一定要有一张硬件蓝图在脑中
规划硬件从大至小 写则是从小到大