이번 게시글은 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 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
'Digital Design > 논리회로' 카테고리의 다른 글
[논리회로] Decoder (Design with Verilog) (1) | 2023.01.02 |
---|---|
[논리회로] Full Subtractor (Design with Verilog) (1) | 2023.01.02 |
[논리회로] Full Adder (Design with Verilog) (1) | 2022.12.29 |
[논리회로] Half Adder (Design with Verilog) (1) | 2022.12.29 |
[논리회로] 여러가지 게이트(Gate) 2 (1) | 2022.12.29 |
댓글