Как реализовать 4-битный сумматор / вычитатель в verilog - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь определить, как превратить этот код в 4-битный сумматор / вычитатель, используя фулладеру. Сейчас он делает сложение, но я не знаю, как сделать вычитание.

module FullAdd(
      output reg  s,
      output reg  co,
      input  wire a,
          input  wire b,
          input  wire cin,
          );

    always @(*)
        begin   
            s = a ^ b ^ cin;
            co = (a & b) | (a & cin) | (b & cin);
        end

endmodule

Как бы я go выполнил вычитание внутри модуля FA? Спасибо!

1 Ответ

0 голосов
/ 04 февраля 2020

FA не нужно использовать is_sub вход.

Заменить c[0] = 1'b0; на c[0] = is_sub;, а .b(y[i]) на .b(y[i] ^ is_sub).

Это от x - y = x + y '+ 1, где y' означает инвертированный y.

...