[英]BCD adder in Verilog (with gates)
My goal is coding a BCD adder in Verilog with gates.我的目标是用门在 Verilog 中编写 BCD 加法器。 I have some issues:
我有一些问题:
1- How can I select bits from first "four bit adders" outputs. 1-如何从第一个“四位加法器”输出中获得 select 位。 My sum is
S
.我的总和是
S
。 After I used S
in first adder, can I select bits like S[0]
or is there another way?在第一个加法器中使用
S
后,我可以使用 select 位,如S[0]
还是有其他方法?
2- How can I specify inputs, especially if I have a module for four_bit_adder
and it takes one element like A
(4 bits)? 2- 如何指定输入,特别是如果我有一个用于
four_bit_adder
的模块并且它需要一个像A
(4 位)这样的元素? I tried to specify some bits, but I couldn't handle it.我试图指定一些位,但我无法处理它。
For example, A[3]
and A[1]
needed to be 0 or 1 regarding the some situations, but my module takes one element.例如,对于某些情况,
A[3]
和A[1]
需要为 0 或 1,但我的模块需要一个元素。
My trial is below:我的试验如下:
`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
I added a Cout
output to your bcd_adder
, driven by your or
gate.我在您的 bcd_adder 中添加了一个
Cout
bcd_adder
,由您的or
门驱动。 I changed connectors
to [1:0]
.我将
connectors
更改为[1:0]
。
I created a wire for the binary sum ( sumb
), driven by your 1st 4-bit adder.我为二进制和 (
sumb
) 创建了一条线,由您的第一个 4 位加法器驱动。 This is different from your BCD sum S
.这与您的 BCD 总和
S
不同。 sumb
is connected to the A
input of the 2nd 4-bit adder. sumb
连接到第二个 4 位加法器的A
输入。
For the B
input to the 2nd adder, I concatenate 4 bits like this:对于第二个加法器的
B
输入,我像这样连接 4 位:
{1'b0,Cout,Cout,1'b0}
Here is the completed module:这是完成的模块:
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; // floating
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.