산술 회로
덧셈 및 뺄셈과 같은 산술 연산은 프로세서 논리 설계에 자주 사용됩니다. 모든 프로세서의 산술 및 논리 단위(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
'프로그래밍 언어 > Verilog' 카테고리의 다른 글
[Verilog 학습] Verilog 구성 및 조합 설계 2 (0) | 2022.04.10 |
---|---|
[Verilog 학습] 다중비트 가산기 및 감산기 (0) | 2022.04.09 |
[Verilog 학습] 논리 게이트 (0) | 2022.04.07 |
[Verilog 학습] Verilog 연산자 3 (0) | 2022.04.06 |
[Verilog 학습] Verilog 연산자 2 (0) | 2022.04.05 |