답변:
즉, 두 가지가 동시에 결과에 대해 "경주"한다는 것을 의미합니다.
예를 들어 리셋 및 세트 핀이있는 회로가 있습니다. 리셋을 트리거하면 출력이 0이됩니다. 세트를 트리거하면 출력이 1이됩니다. 출력이 0이됩니다.
그러나, 둘 다 정확히 동시에 트리거되면 어떻게됩니까?
회로 설계자가주의를 기울 였다면 기능에 중요하다면 대답이 있어야합니다. 해당 질문에 대한 답변이없는 경우 회로에는 경합 조건이 있으며, 세트의 신호와 리셋 신호가 서로 "경주"하여 출력을 결정하기 위해 어느 쪽이 이길 지 확인합니다.
지연이 가장 적은 경로가 일반적으로 이길 수 있지만 경쟁 조건을 가장 지연된 경로가 더 빠른 경로보다 정확히 트리거되는 정확한 트리거로 볼 수 있습니다.
IC 내부의 논리 빌딩 블록을 포함한 많은 회로에는 특정 경쟁 조건이 있지만 일반적으로 회로를 의도 한대로 사용하면 눈치 채지 못할 수 있습니다. 종종 엔지니어가 몇 번이나 "경주 조건"을 크게 말할 때 실제로는 일반적인 사용시 발생할 수있는 문제이기도하므로 경쟁 조건에서는 정상 작동을 예측할 수 없기 때문에 문제가 될 수 있습니다.
소프트웨어에서이 용어도 사용되지만 타이밍 문제 또는 잠금을 나타내는 데 종종 사용됩니다. 그래도 비슷한 원리입니다. 컴퓨터에 독립적으로 실행되는 두 개의 프로세스가 있지만 동일한 메모리를 사용하는 경우 하나의 메모리가 작성되는 동안 다른 메모리가 사용되는 것을 방지 할 수 있습니다. 그들이 가능한 경쟁 조건이라고 부르지 않으면 : 하나의 프로세스가 업데이트되는 과정에있는 값을 읽거나 둘 다 동시에 쓸 수 있고 무엇 을 알지 모릅니다 우연히 있다.
"경주 조건"이라는 용어는 (1) 두 개 이상의 신호가 임의의 순서로 서로 인접하여 도착할 수 있음을 의미하며 (2) 가능한 조합 조합의 도착 가능성이 본질적으로 없음을 분석적으로 보여주는 것은 불가능합니다. 번 문제를 제기.
데이터 입력이 클록과 관련하여 언제라도 변경 될 수있는 단일 플립 플롭의 관점에서, 클록과 데이터 입력에 대한 거의 동시 전환은 경쟁 조건을 야기 할 수 있습니다. 그러나 전체 회로 동작의 관점에서 볼 때 다운 스트림 회로가 래치를 잡고있는 것을 신경 쓰지 않고 다운 스트림 회로가 래치를 잡고있는 것을 신경 쓰지 않는 경우에만 발생하는 경우 경쟁 조건을 일으키지 않습니다. 클럭 펄스가 도달 할 때까지 데이터 입력의 전환 근처에있을 수 없습니다.
또한 문제가되는 입력 타이밍의 모든 가능성을 완전히 완전히 제거 할 수없는 경우가 많으므로 경쟁 조건에 대한 많은 분석에 따르면 한 레지스터의 출력이 동일한 클록으로 제어되는 다른 레지스터에 공급되면 두 번째 레지스터는 항상 래치됩니다 첫 번째 레지스터로의 입력으로 인해 스위칭 임계 값에 맞는 입력 레벨을 캡처하더라도 "클린"높음 또는 "클린"낮음. 이론적으로, 첫 번째 래치는 다음 클럭 펄스가 도착할 때 출력 레벨이 정확하게 전환 될 수있는 정확한 스위칭 임계 값 위 또는 아래의 레벨을 캡처 할 수 있습니다.
결과적으로, 예를 들어 입력을 받아 3 개의 플립 플롭 시퀀스로 전달하고 두 번째 플롭이 높지만 세 번째 플롭이 낮을 때마다 높은 출력을 갖는 회로가 있으면 전체 클럭주기가 낮은 시간이 뒤 따르고 전체 클럭주기가 높은 시간이 뒤 따르는 데이터 입력은 본질적으로 정확히 하나의 클럭주기 동안 회로의 출력이 높아지도록 보장 될 것이다.
이 회로 시뮬레이션 – CircuitLab을 사용하여 작성된 회로도
이 회로도에서, 다소 불규칙적 인 타이밍을 갖는 신호는 각각의 상승 에지 후 1 클록 사이클 동안 높은 출력을 생성하는 방식으로 3 가지 방식으로 클록으로 정규화된다. 신호를 정규화하려는 첫 번째 시도는 불쾌한 출력을 생성하며, 입력과 클록이 동시에 변경되면 명백한 경쟁 조건을 갖습니다. 두 번째 방법은 훨씬 나아지지만 클럭과 데이터의 타이밍으로 인해 첫 번째 레지스터가 중간 값을 캡처하게되면 경쟁 조건 (시뮬레이터가 트리거 할 수 없음)이 있습니다. 세 번째 접근 방식은 일반적인 관행을 나타내며 일반적으로 첫 번째 레지스터가 클린 하이 또는 클린 로우를 캡처하지 못하더라도 안전하다고 간주됩니다. 첫 번째 레지스터의 출력이 두 번째 레지스터가 깨끗하게 잡히지 않도록하는 올바른 동작을 가질 가능성은 거의 없습니다. 데이터가 시계에 매우 가까이 변경되면 현재 사이클에서 데이터를 가져 오거나 다음 시간까지 데이터를 가져 오지 않을 수 있지만 두 가지 상황 중 어느 것이라도 허용 될 경우 경쟁 조건은 없습니다.