顺序全加器无法处理减法

时间:2019-06-01 02:07:24

标签: verilog modelsim

我在verilog中实现了一组完全加法器,但是当涉及到减法时,我从未得到任何预期的结果。

SW [9]:被忽略,SW [8]:随身输入,SW [7:4]:前4位输入,SW [3:0]:后4位输入,LEDR [3:0] ]:输出,LEDR [4]:最终结转

例如,在我的情况下,将进位值(SW [8])设置为1并在0101和1101之间进行减法运算,我应该得到1000,进位值为0,但实际上是0011,进位值为0。携带1。

module adder (SW, LEDR);

    input [9:0] SW;
    output [4:0] LEDR;
    wire c1, c2, c3;

    FullAdder adder_1(
        .a(SW[4]),
        .b(SW[0]),
        .s(LEDR[0]),
        .cin(SW[8]),
        .cout(c1)
    );

    FullAdder adder_2(
        .a(SW[5]),
        .b(SW[1]),
        .s(LEDR[1]),
        .cin(c1),
        .cout(c2)
    );

    FullAdder adder_3(
        .a(SW[6]),
        .b(SW[2]),
        .s(LEDR[2]),
        .cin(c2),
        .cout(c3)
    );

    FullAdder adder_4(
        .a(SW[7]),
        .b(SW[3]),
        .s(LEDR[3]),
        .cin(c3),
        .cout(LEDR[4])
    );

endmodule

module FullAdder (a, b, s, cin, cout);

    input a, b, cin;
    output s, cout;

    assign s = a ^ b ^ cin;
    assign cout = a & b | (a ^ b) & cin;

endmodule

0 个答案:

没有答案