본문 바로가기
Digital Design/논리회로

[논리회로] Half Subtractor (Design with Verilog)

by 스테고사우르스 2022. 12. 30.

이번 게시글은 Half Subtractor (반감산기) 입니다.

 

먼저, Half Subtractor의 진리표부터 보겠습니다.

 

INPUT OUTPUT
X Y Difference Borrow
0 0 0 0
0 1 1 1
1 0 1 0
1 1 0 0

 

Difference = X ⊕ Y

Borrow = X'Y

 

 

이것을 Gate로 나타내면

Half Subtractor

Half Adder에 NOT Gate만 하나 추가해주면 Half Subtractor가 됩니다.

 

 


Verilog Code

Half Subtractor를 Verilog로 설계하였습니다.

 

DUT

`timescale 1ns / 1ps

module half_subtractor(
i_x,
i_y,
o_diff,
o_bor
    );

input i_x, i_y;
output o_diff, o_bor;

assign o_diff =   i_x  ^ i_y;
assign o_bor  = (~i_x) & i_y;

endmodule

 

Testbench

`timescale 1ns / 1ps

module tb_half_subtractor();

reg i_x, i_y;
wire o_diff, o_bor;

half_subtractor hs ( .i_x    (i_x)     ,
                     .i_y    (i_y)     ,
                     .o_diff (o_diff)  ,
                     .o_bor  (o_bor)   );
                     
initial begin
    i_x = 1'b0; i_y = 1'b0;  #10
    i_x = 1'b0; i_y = 1'b1;  #10
    i_x = 1'b1; i_y = 1'b0;  #10
    i_x = 1'b1; i_y = 1'b1;  #10
    $finish;
end
endmodule

 

Simulation

 

 


 

댓글