본문 바로가기

공부/논리회로

Logic circuit_4: Combination Logic(1)

728x90

논리회로는 combination logic과 sequential logic 2개로 분류할 수 있다.

input이 들어가면 바로 output이 나오는 combination logic에 대해 며칠에 거쳐 포스팅할 예정이다.

또한, 해당 내용 포스팅이 끝나면 관련 몇가지 예시들을 Verilog 코딩을 통해 simulation까지 돌려볼 예정이다.

 

본론으로 돌아와서 회로 설계는 어떻게 할까?

1. Design spec을 확인한다. (input/output bit수 결정 ....)

2. Truth table을 작성한다.

3.  k-map을이용해 최적화를 한다.

4. 최적화한것을 보고 Logic gate를 맞춰 그린다.

위와 같은 과정을 거쳐 회로를 설계하는게 일반적인 방법이다.

 

예시를 통해 한번 따라가보자.

 

1. Design spec확인 

4bit+4bit 2진수 가산기를 생각해보면,

total 출력에는 5bit, LSB에는 계산시 2bit, 출력에 2bit / 나머지 부분 계산시 3bit, 출력에 2bit가 필요한것을 알 수 있다.

즉, LSB는 Half adder, 나머지 부분은 Full adder로 설계를하면된다.

 

 

2. Truth table작성

 

3. k-map이용한 최적화 + 회로 그리기

 

 

여기까지가 half adder, full adder를 설계한 것이고,

원래 목표는 4bit+4bit adder 설계이니 진행해보자.

 

단순하게 생각해보면, 다음과같다. (LSB에서 carry in =0인 full adder = half adder이므로 full adder를 활용했다.)

 

위 그림은 ripple carry adder로 앞에있는 Full adder 3개가 전부 동작하고나서야 output을 얻을 수 있으므로 Delay적 측면에서 생각해보면 너무 느리다. 좀 더 빠르게 동작시킬수있는 방법을 생각해보자.

Carry in이 들어오기전에 결정할 수 있는 Carry out을 결정해보면, AB=0 or  AB=1일때는 C_out을 결정할 수 있다.

 

Truth table을 토대로 Carry out을 delay를 개선해서 나타내보면 위와같은 식이 나오게 된다. ripple carry adder에비해 더 빠를수밖에없음을 알 수 있다.

 

 

덧셈을 알아봤다면 뺄셈은 어떨까?

2's complement에 대해 알고 있어야한다.

각각의 bit를 보수처리후 +1을 해주면되는데, 이때 MSB가 0이면 +, MSB가 1이면 -이다.

예를들어 0110 은 +6이다. -6은 110 -> 001 -> 010 -> 1010임을 알 수 있다. (110에서 보수처리 -> 001에서 +1 -> 010 에서 MSB = 1)

두 숫자를 더해서 0이 나오게 하는것이 핵심 point이다.

 

산술계산에서 가장 조심해야하는것은 overflow이다. 

위와 같은 예시에서 8bit + 8bit = 9bit으로 확장해주지않고 그냥 계산할시 왼쪽의 +150은 MSB가 1이되어 음수로 되고, 우측의 -150은 반대로 + 값이되게된다.

따라서 설계시 넉넉하게 9bit으로 설정해주어야한다. (너무많은 bit를 할당할시 차지하는 size가 커지는 단점이 있기 때문에 잘 고려해서 짜줘야한다.) 해당관련내용은 가속기 설계 관련 포스팅에서 추가적으로 더 포스팅을 할 예정이다.

 

위에서 그린 Full adder를 살짝 수정해주면 subtract까지 수행할 수 있는 diagram이 나오게되며, 다음과 같다.

M=0일때 adder,

M=1일때 보수처리해서 input이들어가며 C0로 1이들어가는건 LSB에 +1이되는것과 같으므로 훌륭한 subtract계산이 가능한것을 확인할 수 있다.

 

여기까지 combination logic(1)에 대한 포스팅을 하겠다.

728x90

'공부 > 논리회로' 카테고리의 다른 글

Logic circuit_6 : Sequential Logic(1)  (0) 2025.01.15
Logic_Circuit_5-Combination Logic(2)-Multiplier  (0) 2025.01.14
Logic Circuit3: Gate_Optimization  (0) 2025.01.04
Logic Circuit_2  (0) 2024.12.27
Logic Circuit_1  (3) 2024.12.26