해저드(Hazard) 와 해저드 프리(Hazard-Free) 함수

논리회로

2020. 5. 22. 20:13

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