关于verilog的全加器

来源:百度知道 编辑:UC知道 时间:2024/06/24 15:46:56
module halfadder(S,C,A,B);
input A,B;
output S,C;
xor(S,A,B);
and(C,A,B);
endmodule

module fulladder(S,CO,A,B,CI);
input A,B,CI;
output S,CO;
wire S1,D1,D2;
halfadder HA1(S1,D1,A,B);
halfadder HA2(S,D2,S1,CI);
or g1(C0,D2,D1);
endmodule

module _4bit_adder(S,C3,A,B,C_1);
input[3:0] A,B;
input C_1;
output[3:0]S;
output C3;
wire C0,C1,C2;
fulladder FA0(S[0],C0,A[0],B[0],C_1),
FA1(S[1],C1,A[1],B[1],C0),
FA2(S[2],C2,A[2],B[2],C1),
FA3(S[3],C3,A[3],B[3],C2);
endmodule

这各用quartus 编译后的的rtl图的 点fulladder 那个图 发现fulladder里面少了线 是程序错了吗 不过我是书上抄来的
然后仿真就都不对了

是你自己疏忽了,找了半天才找到原因,你在module fulladder(S,CO,A,B,CI);

这个模块下的 or g1(C0,D2,D1); 中的CO 写成了C0。应该是大写字母O。你写成零了,你在定义里写的是大写字母O,保持一致就可以了,我已经调试过了,其他地方没有错,

下面是贴图