4-битное полное вычитание с 1-битным полным вычитанием - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь использовать 1-битный полный вычитатель с помощью 4-битного модуля, поэтому я немного застрял в том, куда идти дальше, я не уверен, что происходит под капотом - я подумал, что, возможно, смогуМы выполняем полную подпрограмму в цикле sub4, перебираем каждый бит и обновляем входные и выходные данные, но я не уверен, как это сделать.

module fullSub(x, y, b_in, diff, b_out);
  input x, y, b_in;
  output diff, b_out;
  assign diff=(x^y)^b_in;
  assign b_out = (~(x^y)&b_in) | ((~x)&y);
endmodule

module sub4(x, y, b_in, diff, b_out);
  input [3:0] x, y;
  input b_in; 
  output [3:0] diff;
  output b_out;

  fullSub init[3:0](x, y, b_in, diff, b_out);
  assign b_in = b_out;

endmodule

1 Ответ

0 голосов
/ 01 ноября 2019

Я использовал следующее, и оно работало хорошо - спасибо.

wire [3:0] borrow
genvar i;
generate
for(i=3; i>=0; i=i+1)
  begin: description
    if(i===0)
      fullSub s(x[i], y[i], b_in, diff[i], borrow[i]);
    else
      fullSub s(x[i], y[i], borrow[i-1], diff[i], borrow[i]);
  end
  assign b_out = borrow[3];
endgenerate
...