首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >8位加法器工作不正常

8位加法器工作不正常
EN

Stack Overflow用户
提问于 2016-11-06 09:52:32
回答 1查看 3.1K关注 0票数 0

我正在编写一个Verilog代码,用8全加器构造一个8位加法器。该8位加法器应在8位总线中每个增加2个输入。以下是单全加器的代码:

代码语言:javascript
复制
module FullAdder(
input a_,
input b_,
input cin_,
output sout_,
output cout_
);
wire temp1, temp2, temp3;

assign sout_ = a_ ^ b_ ^ cin_;
assign cout_ = ((a_ & b_) | (b_ & cin_) | (cin_ & a_));

endmodule

这是8位加法器护城河的代码,它将调用全加器8次。

代码语言:javascript
复制
module EightBitAdder(
input [7:0] a,
input [7:0] b,
//input cin,
output cout,  //carry; will be sent as OP, but won't be further used.
output [7:0] sout  //sum, sent as OP
);

wire try;

begin 
FullAdder mg0(.a_(a[0]), .b_(b[0]), .cin_(0), .cout_(try), .sout_(sout[0]));
FullAdder mg1(.a_(a[1]), .b_(b[1]), .cin_(try), .cout_(try), .sout_(sout[1]));
FullAdder mg2(.a_(a[2]), .b_(b[2]), .cin_(try), .cout_(try), .sout_(sout[2]));
FullAdder mg3(.a_(a[3]), .b_(b[3]), .cin_(try), .cout_(try), .sout_(sout[3]));
FullAdder mg4(.a_(a[4]), .b_(b[4]), .cin_(try), .cout_(try), .sout_(sout[4]));
FullAdder mg5(.a_(a[5]), .b_(b[5]), .cin_(try), .cout_(try), .sout_(sout[5]));
FullAdder mg6(.a_(a[6]), .b_(b[6]), .cin_(try), .cout_(try), .sout_(sout[6]));
FullAdder mg7(.a_(a[7]), .b_(b[7]), .cin_(try), .cout_(try), .sout_(sout[7]));
end
endmodule

问题是输出没有正确显示。它总是显示第一个位,然后用“不关心”(X)填充其余的位。这里有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-06 13:11:30

相同的try线是由所有8个满加法器驱动的,所以这很可能会产生一个X值,如果两者都由01驱动,则由全加器执行。

考虑制作一条执行电线,例如:

代码语言:javascript
复制
wire [7:0] cout;

并为不同的满加法使用不同的位元,例如:

代码语言:javascript
复制
FullAdder mg0(.a_(a[0]), .b_(b[0]), .cin_(0), .cout_(cout[0]), .sout_(sout[0]));
FullAdder mg1(.a_(a[1]), .b_(b[1]), .cin_(cout[0]), .cout_(cout[1]), .sout_(sout[1]));
...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40447997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档