Verilog中的BCD加法器(带门)

问题描述 投票:0回答:1

我是初学者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


logic verilog hdl bcd
1个回答
0
投票

我在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
© www.soinside.com 2019 - 2024. All rights reserved.