SOP와 POS의 관계

 

a, b가 주어지고 결과 값(f) 0101의 truth table을 한번 보자.

a b f f'
0 0 0 1
0 1 1 0
1 0 0 1
1 1 1 0

그러면 minterm과 maxterm의 식을 구할 수 있다.

  minterm식   maxterm식
m0 a'b' M0 a+b
m1 a'b M1 a+b'
m2 ab' M2 a'+b
m3 ab M3 a'+b'

F

= m1 + m3 = a'b + ab

= M0 * M2 = (a+b) * (a'+b)

라고 말할 수 있다.

f의 식에서 m+m3과 M0+M2는 듀얼인 것 같고,

위의 표에서 m 식과 M 식은 인버전(') 관계 같다.

 

F = (F')' 을 알아봐야 한다.

F'의 결과 값은 1010 이고, F' = m0 + m2 = M1 * M3이다.

그러면 F = (F')' = (m0 + m2)'라고 말할 수 있다.

(m0 + m2)' = m0' * m2' = M0 * M2 가 된다. (F'을 m0+m2 캐치하는 것이 핵심이다.)

만약 F = m1+m3이라고 F' = (m1+m3)'을 한다면  본래식으로 바로 돌아오기 때문에 위 핵심을 기억하자.

 

추가 설명)

F의 SOP에서 m1, m3에 대해서 M1, M3을 구하는 게 아니라

F를 인버전 시키면 F'=1010이 되니까 이때의 sop = m0, m2를 가지고 M0, M2를 알아본다는 말이다.

 

ex)

a b f f'
0 0 0 1
0 1 1 0
1 0 0 1
1 1 0 1

만약 f=0100라고 한다면

f = (a'b = m1) = (f')' = (m0+m2+m3)' = M0 * M2 * M3 

즉 m1 = M0*M2*M3이다.

 

 

Self Dual

f = a'b+ab = b 식은 함수이지, 항등식이 아니다. 듀얼을 막 취하면 안 된다.

그러나 fd(f의 dula)을 구할 건데,

f = (a'+b)*(a+b) = a'b+ab+b = b 가 나온다.

 

f의 결과도 b이고,  fd의 결과도 b이다.

이는 Self dual이라고 한다.

ex) f = xy + yz + zx 이 있다고 하자.

항등식인지는 모르겠지만 fd를 한번 구해보자.

fd = (x+y)(y+z)(z+x)

= (xy+y+xz+yz)(z+x)

= (y(1+y+z)+xz)(z+x)

= (y+xz)(z+x)

= xy + yz + xz

듀얼을 취했더니 f의 식이 나온다. 이를 Self dual이라고 한다.

 

self dual의 정의)

1. 모든 함수는 self dual이 되는 건 아니다.

2. minterm의 개수와 maxterm 개수가 같아야 한다.

3. 배타적 관계여야 한다.( xyz & x'y'z' , x'yz & xy'z')

 

위의 f의 식은 입력값이 3개이니 2^3=8줄이 나온다.

self dual을 가능하게 하려면 f의 결과 값 중, 1의 개수가 4개여야 하며

x y z f  
0 0 0 0 m0
0 0 1 0 m1
0 1 0 1 m2
0 1 1 0 m3
1 0 0 1 m4
1 0 1 0 m5
1 1 0 1 m6
1 1 1 1 m7

m3과 m4  , m2와 m5,  m1과 m6,  m0과 m7이 인버전 관계이며 (4쌍이 나온다.)

이를 배타적 관계라고 한다.(정의 3)

만약 self dual이 돼야 한다면 위의 관계에서 4쌍이 각각 0과 1의 결과 값을 가져야 하며,

이 함수에서 self dual의 개수를 구하러면 2^4이 된다.

(m3 | m4중에서 01 or 01) : 2가지 * (m3 | m4중에서 01 or 01) : 2가지

* (m3 | m4중에서 01 or 01) : 2가지 * (m3 |  m4중에 01 or 01) : 2가지 = 2*2*2*2 = 16가지

 

self dual의 갯수 일반식 : 2의(2의 n-1승) 승 = 2^(2^(n-1))

(n = 입력 개수)

 

Karnaugh Maps(k map)

 

직관적으로 최적화 하기

4*4 kmap

m0 = w'x'y'z', m1 = w'x'y'z, m3 = w'x'yz, m2 = w'x'yz', m4 = w'xy'z', m15 = wxyz

m0 + m1 = w'x'y' : 0000과 0001

m0 + m4 = w'y'z' : 0000과 0100

m0 + m2 = w'x'z' : 0000과 0010

m0 + m15는 최적화가 되지 않는다. : 0000과 1111

 

인접하고 있는(한 칸 차이) m의 식들은 :  w x y z 중 한 개가 차이 나서 최적화가 된다. (하나씩 차이 난다.)

만약 위 그림에서 f의 식을 구할 때, minterm의 개수가 6개를 구해야 한다.

 

이 k map에서 1 번식 : m1, m5, m13, m9를 묶고,

2 번식 : m13, m15, m9, m11을 묶으면 결과 값 1이 다 묶인다.

1 번식은 WX의 값은 0과 1로 계속 바뀌고, YZ값이 01로 고정이니 Y'Z

2 번식은 W는 1로 고정이고 X는 0과 1로 바뀌고, Y는 0과 1로 바뀌고, Z는 1로 고정이니 WZ

즉 F = Y'Z + WZ이다.

 

특징)

서클을 묶을 때는 1,2,4,8... 2^n승 개로 묶어야 한다.

방향이 0 1 3 2 순서이다  = 00 01 11 10 (x축 y축 둘 다)

kmap의 크기는 4*4가 적당하다. 그 이상은 3차원이기 때문에 힘들다.

도넛 모양이기 때문에(다음장에 있다.)  m0과 m8도 한자리 차이나고, m12와 m14도 한자리 차이이다.

'Study > Digital Logic Design' 카테고리의 다른 글

논리회로설계 6-1  (0) 2022.04.07
논리회로설계 5-1  (0) 2022.04.07
논리회로설계 4-3  (0) 2022.04.03
논리회로설계 4-2  (0) 2022.03.28
논리회로설계 4-1  (0) 2022.03.22

+ Recent posts