我是初学者verilog用户。我的目标是使用Gates在Verilog中编码BCD加法器。我有一些问题;
1-如何从第一个“四位加法器”输出中选择位。我的总和是S,在第一个加法器中使用S后,我是否可以选择S [0]之类的位,还是有其他方法?
2-我如何指定输入,尤其是我有一个用于four_bit_adder的模块,它需要一个像A(4位)这样的元素,我试图指定一些位,但是我无法处理。
例如在某些情况下,A [3]和A [1]必须为0或1,但是我的模块使用一个元素...
我的审判在上面,谢谢!
`include "four_bit_adder.v"
module bcd_adder(S,A,B,Cin);
input [3:0]A,B;
input Cin;
output [3:0]S;
wire [2:0]connectors;
//four_bit_adder(S,Cout,A,B,Cin);
four_bit_adder F_A1(S,Cout,A,B,Cin);
and(connectors[0],S[3],S[2]);
and(connectors[1],S[3],S[1]);
or(connectors[2],connectors[1],connectors[0],Cout);
//four_bit_adder F_A2();
endmodule
我在Cout
门的驱动下向bcd_adder
添加了or
输出。我将connectors
更改为[1:0]
。
module bcd_adder(S,Cout,A,B,Cin);
input [3:0]A,B;
input Cin;
output [3:0]S;
output Cout;
wire [1:0]connectors;
wire [3:0]sumb;
wire coutb;
wire cout2;// not needed
four_bit_adder F_A1 (sumb,coutb,A,B,Cin);
four_bit_adder F_A2 (S,cout2,sumb,{1'b0,Cout,Cout,1'b0},1'b0);
and(connectors[0],sumb[3],sumb[2]);
and(connectors[1],sumb[3],sumb[1]);
or (Cout,connectors[1],connectors[0],coutb);
endmodule