首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Verilog 2补码加法器/减法器

Verilog 2补码加法器/减法器
EN

Stack Overflow用户
提问于 2020-10-31 05:31:10
回答 1查看 1.1K关注 0票数 0

在Verilog中设计一个四位加法器/减法器,并将其显示在七段显示器上。

然而,当我需要一个负数的减法时,我的大部分代码都在起作用,它会产生错误的结果。

例如,5-7应该会导致2,但我会收到E。

下面是我的代码:

代码语言:javascript
运行
复制
module fullAdder (a0,a1,carry_in,s,carry_out);

    input a0,a1,carry_in;
    output s, carry_out;

    assign s = (a0 ^ a1) ^ carry_in;
    assign carry_out = (a0 & a1 & carry_in)|(a0 & a1 & ~carry_in)|(a0 & ~a1 & carry_in)|(~a0 & a1 & carry_in);

endmodule

module Lab3(a0,a1,s,cout);

    input s;
    input  [3:0] a0, a1;
    output [3:0] cout;
    
    wire c,d,e,f;
    wire input1, input2, input3, input4;
    
    xor(input1, s, a1[0]);
    xor(input2, s, a1[1]);
    xor(input3, s, a1[2]);
    xor(input4, s, a1[3]);
    
    //a0,a1,carry_in,s,carry_out    
    fullAdder fa0(a0[0],input1,s,cout[0],c);
    fullAdder fa1(a0[1],input2,c,cout[1],d);
    fullAdder fa2(a0[2],input3,d,cout[2],e);
    fullAdder fa3(a0[3],input4,e,cout[3],f);

endmodule 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-31 13:02:01

E是正确的结果,因为它是-2在4位2的补码。

从负二的补值到正的技巧,如果你还没有涵盖它,那就是倒置并加一个。

  • E是二进制

中的1110

  • 1110倒置为0001

  • 0001 +1是0010 (2)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64618720

复制
相关文章

相似问题

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