1. 게이트 딜레이 (Gate Delay)
- 우리가 NOT게이트의 타이밍 다이어그램을 생각해보면 위와 같다.
- 그러나, 실제로는 이렇게 갑자기 신호가 정확히 0나노 세컨드만에 변하지 않는다
- 실제로는 위와 같은데, 첫번째로 신호가 수직으로 변하지 않음 서서히 올라갔다가 서서히 내려감
- 두번째로, 입력과 출력 사이에 약간의 딜레이가 존재함. 이를 TPDHL, TPDLH라고 부르는데
- TPD는 Time Propagation Delay를 의미하고, HL은 High에서 Low로, LH는 Low에서 High 바뀔때를 의미함
- (Y기준에서 High에서 Low로 바뀌면 HL, Low에서 High로 변하면 LH라고 부른다)
- 그러나 해저드를 설명하기 위해서 위와 같은 타이밍 다이어그램을 쓰면 너무 복잡하기 때문에
- 아래처럼 입-출력 사이의 딜레이인 TPDHL, TPDLH만 고려하기로 함. (신호가 서서히 올라가는 것은 무시)
2. 해저드 (Hazard)
- 해저드란 원하지 않았던 잡음 펄스를 의미하는데,
- 크게 정적 해저드와 동적 해저드로 나눌 수 있음.
1) 정적 해저드 (Static Hazard)
- 정적 해저드는 원래 신호는 0인데, 갑자기 잡음 펄스가 순간적으로 발생하는 것을 의미함
- 원래 0으로 유지되는 신호에서 갑자기 1이 발생하는 것을 static-0 hazard라고 하고,
- 원래 1로 유지되는 신호에서 갑자기 0이 발생하는 것을 static-1 hazard라고 함.
2) 동적 해저드 (Dynamic Hazard)
- 동적 해저드는 위처럼 값이 변하는 상황에 순간적으로 잡음이 발생하는 것을 의미한다.
- 우리는 이 글에서는 우선 정적해저드의 발생만 분석한다
- (전자공 강의에서 다루지 않는걸 보면 그렇게 중요한 내용은 아니거나 어렵거나 둘 중 하나인가보다..)
3. 해저드 발생 이유
- 우리가 F(a, b, c) = som(3, 4, 5, 7)을 구현한다고 해보자.
- 카르노맵을 이용하여 구현할 것이고, 구현하면 아래와 같은 함수가 만들어진다.
- 이 때, 이 함수의 회로도를 자세하게 분석해보면, 한가지 Path만 게이트를 3번 거침
- A-D-F는 2번, B-D-F는 3번, B-E-F는 2번, C-E-F는 2번의 게이트 통과가 있음.
- 여기에서 오직 B-D-F만 NOT게이트를 포함하기 때문에 3개의 게이트를 통과함.
- 해저드는 이렇게 게이트 통과 횟수가 다른 이런 Path때문에 발생하는 것인데,
- 우리가 만약 A=1, B=1, C=1로 입력을 보내면 D=(1*0)=0, E=(1*1)=1이고 F=(1+0)=1이다.
- 그리고 만약 A=1, B=0, C=1로 입력을 보내면 D=(1*1)=1, E=(0*1)=0이고 F=(0+1)=1이다.
- 즉, B는 값이 어떻든 간에 최종 출력 F는 1이 나오게 된다.
- 그러면 A=1, C=1이 유지되는 상태에서 B가 1에서 0으로 바뀔때를 생각해보자.
- B가 1에서 0으로 바뀔 때, D회로로 가는 선로는 NOT을 거치기 때문에, TPDLH가 2번 발생하는데
- B가 1에서 0으로 바뀔 때, E회로로 가는 선로는 NOT을 안거치기 대문에 TPDLH가 1번 발생한다.
- 때문에 D와 E를 OR하면, 아주 잠깐 0인 부분이 존재하는 것이고, 이 때문에 static-1해저드가 발생한다.
4. 해저드 프리 (Hazard-Free) 함수
- 해저드 프리 함수를 만들려면 이동하는 부분을 이어주는 민텀을 추가해주면
- 저 구간에서 잠깐 동안 0이 생기는 것을 막을 수 있다.
- 값이 111에서 101로 변할 때, 해저드가 발생했으므로, 저 사이를 이어주는 민텀 AC를 추가한다
- (왜 그런지는 설명해주시지 않고, 댓글에서도 깊게 알 필요 없다고 하는 것 보면 학부레벨은 아닌듯..)
5. Reference
'논리회로' 카테고리의 다른 글
2레벨 구현 (NAND/NOR to ALL, Minterm to Maxterm) (0) | 2020.05.22 |
---|---|
XOR게이트, XNOR게이트, NOT게이트 만들기 (0) | 2020.05.19 |
Quine - McClusky 방법 (2) - 예시 (0) | 2020.04.21 |
Quine - McClusky 방법 (1) (1) | 2020.04.21 |
카르노 맵 (6) - Don't Care (무관항), 그레이 코드 쓰는 이유 (0) | 2020.04.20 |
카르노 맵 (5) - 4 변수 (0) | 2020.04.20 |
카르노 맵 (4) - Implicant 방식 예제 (0) | 2020.04.20 |