4bit Adder and Subtractor(4비트 덧셈뺄셈기) Verilog HDL 코드

module Four_bit_adder_subtractor(S,C4,A,B,M);
    input [3:0] A,B;
    input M;
    output [3:0] S;
    output C4;
    reg [3:0]S;
    reg C4;

    always @ (A or B or M)
    begin
      if(M)
        begin
          S = A – B;
   if( A < B)
      C4 = 1’b0;
   else
            C4 = 1’b1;
        end

      else
        begin
          S = A + B;
          if( A+B > 5’b01111 )
            C4 = 1’b1;
          else
            C4 = 1’b0;
        end
    end
endmodule

위 코드는 4비트의 뺄셈과 덧셈이 동시에 가능한 모듈을 Verilog HDL코드로 작성한것으로

Behavior Model(동작수준모델)로 작성한것.

A와 B가 피 연산자 이고 결과는 4비트 S에 저장된다.

모드인 M에 따라서 덧셈 또는 뺼셈이 수행되는데, M이 1이면 뺄셈, M이 0이면 덧셈을 수행한다.

Always구문 안을 보자면

A 또는 B 또는 M이 변화할때 Always안의 블럭을 항상 수행하는데

M이 1이면 S = A – B를수행한다.

이때 A가 B보다 작으면 음수 결과가 나므로 Carry Out은 0 A가 B보다 크면 양수이므로 Carry Out 은 1로 나온다.

M이 0이면 S = A + B를 수행하는데, A와 B의 합이 4bit 1111를 넘어가면 Carry Out은 1

A와 B의 합이 4bit 1111보다 같거나 작으면 Carry Out은 0이다.