반응형

산술 회로

덧셈 및 뺄셈과 같은 산술 연산은 프로세서 논리 설계에 자주 사용됩니다. 모든 프로세서의 산술 및 논리 단위(ALU)는 더하기, 빼기, 증가 및 감소 연산을 수행하도록 설계되었습니다. 산술 설계는 원하는 성능을 달성하기 위해 합성 가능한 Verilog 코드로 설명되어야 합니다.

 

가산기

가산기는 두 이진수의 이진수 덧셈을 수행하는 데 사용됩니다. 가산기는 서명되거나 서명되지 않은 덧셈 연산에 사용됩니다.

 

반가산기

두 개의 입력 a_in, b_in을 갖고 단일 비트 출력 sum_out, carry_out을 생성하는 반가산기를 고려하십시오. 여기서 sum_out은 가산기 결과이고 carry_out은 캐리 출력입니다.

 

반가산기의 진리표

a_in b_in sum_out carry_out
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

 

module half_adder ( input a_in, b_in, output sum_out, carry_out );
assign sum_out = a_in ^ b_in;
assign carry_out = a_in & b_in;
endmodule

 

전가산기

전가산기는 덧셈을 수행하는 데 사용됩니다. 이진 입력을 a_in, b_in, c_in으로 간주하고 단일 비트 이진 출력을 sum_out, carry_out으로 간주합니다.

 

전가산기의 진리표

c_in a_in b_in sum_out carry_out
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1

 

module full_adder ( input a_in, b_in, c_in, output sum_out, carry_out );
assign { carry_out, sum_out } = a_in + b_in + c_in;
endmodule

 

뺄셈기

뺄셈기는 두 이진수의 이진수 빼기를 수행하는 데 사용됩니다.

 

반감산기

입력이 _in, b_in이고 단일 출력 diff_out, rider_out을 생성하는 반감기를 고려하십시오. 여기서 diff_out은 차등 출력이고, borrow_out은 차입 출력입니다.

 

a_in b_in diff_out borrow_out
0 0 0 0
0 1 1 1
1 0 1 0
1 1 0 0

 

module half_subtractor ( input a_in, b_in, output diff_out, borrow_out );
assign diff_out = a_in ^ b_in;
assign borrow_out = (~a_in) & b_in;
endmodule

 

완전 감산기

전체 감산기는 빼기를 수행하는 데 사용됩니다. a_in, b_in, c_in으로 명명된 단일 비트 입력과 diff_out, borrow_out으로 단일 비트 이진 출력입니다.

 

c_in a_in b_in diff_out borrow_out
0 0 0 0 0
0 0 1 1 1
0 1 0 1 1
0 1 1 0 1
1 0 0 1 0
1 0 1 0 0
1 1 0 0 0
1 1 1 1 1

 

module full_subtractor ( input a_in, b_in, c_in, output diff_out, borrow_out );
assign { borrow_out, diff_out } = a_in- b_in - c_in;
endmodule

반응형

+ Recent posts