전이성은 무엇입니까?


15

Wikipedia 기사 전자 제품의 전이성 :

전자 기기에서의 전이성은 디지털 전자 시스템이 불안정한 평형 또는 준 안정 상태에서 무한한 시간 동안 지속될 수있는 능력이다. 준 안정 상태에서 회로는 적절한 회로 작동에 필요한 시간 내에 안정적인 '0'또는 '1'논리 레벨로 안정화되지 않을 수 있습니다. 결과적으로 회로가 예측할 수없는 방식으로 작동하여 시스템 장애가 발생할 수 있습니다.

그것은 좋은 정의로 보이지만 응용 프로그램에서 무엇을 의미합니까?

전자 설계자의 관점에서, 이러한 상황이 언제 발생할 수 있으며 어떤 유형의 장애가 문제가되어야하는지에 대한 예는 무엇입니까?

좀 더 실용적이고 정의 된 정의가 있습니까? 좀 더 구체적인 용어가 있습니까?


2
Leslie Lamport (그는 $ \ LaTeX $ 명성)는이 논문에서
메타

@markrages Brilliant. 이것은 떨어지는 고양이와 버터 토스트 에서도 발생할 수 있습니다 .
Rusty

답변:


15

빠른 답변 : 플립 플롭의 입력에서 설정 및 유지 시간을 위반하면 일정 시간 동안 출력을 예측할 수 없습니다. 이 예측할 수없는 출력을 메타 안정 (또는 메타 스타 빌리티)이라고합니다.

긴 대답 : 출력을 예측할 수 없으면 예측할 수 없다는 것을 의미합니다. 높을 수도 있고 낮을 수도 있고 중간에있을 수도 있고 진동 할 수도 있습니다. 이 준 안정 기간이 지나면 출력이 높거나 낮아 지지만, 결과가 나올 때까지 어떤 방식으로 진행될지는 알 수 없습니다.

그러나 예측할 수없는 시간은 다소 예측 가능합니다. 준 안정 기간의 길이를 결정하는 두 가지 주요 요인이 있습니다. 플립 플롭의 속도 및 타이밍에 "가장자리에 근접한"방법.

오랜 시간이 걸릴 확률은 0이 아니지만 대부분의 준 안정 시간은 상당히 짧습니다. 이론적으로는 몇 초 정도의 준 안정 시간을 가질 수 있지만, 일어날 확률은 매우 드물다. 플립 플롭의 속도가 증가함에 따라 평균 준 안정 시간이 줄어 듭니다. 다른 모든 것들은 동일합니다.

플립 플롭에는 클록 에지와 관련하여 "가상적인"시간이 있으며, 여기서 메타 스타 빌리티 문제에 가장 취약합니다. 정확한시기는 온도, 전압, 과정, 달의 위상, 동물 희생, 어떤 정당과 관계가 있는지에 따라 다릅니다. 해당 시간이 될 때마다 데이터 입력 에지가 해당 시간에 가까워 질수록 전이성 시간이 길어집니다.

준 안정성을 다루는 가장 좋은 방법은 모든 논리를 동 기적으로 설정하고 설정 및 유지 시간을 위반하지 않는 것입니다. 물론 이것은 복잡한 회로에서는 불가능하기 어렵다. 따라서 우리는 메타 스타 빌리티가 문제가 될 수있는 장소를 제한하고 그 장소를 다루려고 노력합니다.

일반적인 방법은 데이터를 "더블 클럭"하는 것입니다. 즉, 첫 번째 출력에 두 번째 입력을 공급하는 두 개의 D 플립 플롭을 직렬로 갖습니다. 첫 번째 플립 플롭이 준 안정 상태가되면, 준 안정 기간이 두 번째 설정 / 홀드 시간을 위반하기 전에 끝날 수 있기를 희망합니다. 실제로 이것은 상당히 잘 작동합니다. 매우 중요한 애플리케이션에서는 "트리플 클러킹"이 진행될 수 있습니다.


3
희생 된 동물의 종류에 대한 의존성?
Rusty

11

준 안정 상태는 불안정한 평형과 유사합니다. 불안정한 평형의 일반적인 예는 역 진자 입니다. 진자를 수직 위치에서 균형을 잡을 수 있으면 안정된 상태입니다. 그러나 어떤 것이 든 레버를 한쪽으로 밀면 (예 : 기류 또는 접지 진동) 진자가 수직 위치로 복원되지 않고 떨어지게됩니다. 한쪽으로 밀면 결국 수직으로 돌아가는 일반 진자와 대조하십시오.

안정적인 평형은 전기 시스템에서 저장 요소를 생성하는 데 사용됩니다. 불안정한 평형은 상태를 쉽게 잃기 때문에 좋은 저장 요소를 만들지 않지만 종종 기생 상태로 존재합니다.

일반적인 디지털 저장 요소는 한 쌍의 교차 결합 인버터입니다.

루프로 연결된 두 개의 인버터, 출력-입력

저장 소자는 2 개의 안정 상태를 가지며, 하나는 왼쪽의 노드가 공급 전압에 있고 오른쪽의 노드는 접지에 있고 다른 하나는 반대 상태에있다. 불안정한 상태도 있는데, 각 노드의 전압이 약간 중간입니다.

불안정한 상태가 어떻게 발생하는지 더 잘 이해하려면 인버터의 전송 기능을 호출하십시오. 전달 함수의 플롯은 주어진 입력 전압에 대한 인버터의 출력 전압을 보여줍니다.

인버터 전송 기능

인버터는 비선형입니다. 비선형 회로의 근사 솔루션을 얻는 간단한 방법 중 하나는 회로 특성을 나타내는 것입니다. 플롯의 교차점은 솔루션, 즉 회로의 모든 구성 요소의 전기적 특성이 충족되는 지점입니다. 일반적으로 이것은 Wikipedia의이 다이오드 예제에서 와 같이 iv 플롯으로 수행됩니다 . 그러나 인버터의 경우 vv 플롯으로 수행합니다. 플롯에 두 번째 인버터 전송 기능 오버레이 (두 번째 인버터가 역방향이므로 축이 교체 된 상태) :

백투백 인버터를위한 오버레이 전송 기능

플롯에는 3 개의 교차점이 있습니다. 하나는 (0, Vs), 하나는 (Vs, 0), 하나는 (Vs / 2, Vs / 2)입니다. (Vs / 2, Vs / 2) 상태는 준 안정합니다. 두 노드 중 어느 하나라도 약간 교란 한 후에 회로는 거의 항상 (Vs / 2, Vs / 2)로 돌아 가지 않고 안정 상태 중 하나로 고정됩니다.

이중 인버터 저장 요소에 값을 쓰는 방법은 인버터보다 강력한 드라이버를 사용하여 노드 중 하나를 원하는 값으로 강제하는 것입니다. 이를 수행하는 한 가지 일반적인 방법은 패스 트랜지스터를 사용하는 것입니다.

패스 트랜지스터가있는 교차 결합 인버터

패스 트랜지스터의 게이트를 클럭에 연결하면 D 래치가 있습니다 (출력 구조를 생략합니다). 클록이 높으면 패스 트랜지스터가 활성화되고 래치가 투명하다. 입력은 출력으로 직접 전달된다. 클럭이 낮 으면 래치가 이전 값을 유지합니다. 래치 성이 샘플링되는 순간에 전이성이 발생한다. 래치가 샘플링 될 때 입력이 안정적인 고전압 또는 저전압이면 제대로 작동합니다. 그러나 래치가 샘플링 될 때 입력이 Vs / 2 지점 주위에 있으면 래치가 준 안정 (Vs / 2, Vs / 2) 상태가 될 가능성이 있습니다. 일단 준 안정 상태에 있으면 래치가 다시 클럭킹되지 않는다고 가정 할 때 무기한으로 유지 될 수 있지만 불안정한 평형이기 때문에 일반적으로 준 안정 상태에서 비교적 빠르게 시작됩니다.

전이성에 대해 걱정할 때

스토리지 요소가 준 안정 상태가되면 다운 스트림 로직의 타이밍 예산 중 일부를 잃게됩니다. 로직은 준 안정 상태가 해결 될 때까지 원하는 평가를 수행 할 수 없습니다. 최악의 경우, 준 안정 상태는 로직을 통해 지속되거나 전파되며, 다운 스트림 저장 요소도 준 안정되거나 여러 관련 저장 요소가 일치하지 않는 값을 캡처합니다.

적절하게 설계되고 작동하는 동기 논리는 전이성에 문제가 없습니다. 클럭주기는 로직의 평가 시간보다 길며, 모든 플립 플롭 입력은 다음 클럭 에지에서 안정적이며 (설정 요구 사항이 충족 됨) 모두 유효한 값을로드합니다.

전이성이 우려되는 일반적인 상황 중 일부는 다음과 같습니다.

  • 로직 입력은 외부 입력 (예 : 전면 패널의 스위치 또는 언제든지 전환 될 수있는 모니터 회로의 출력 (과전압, 과열))을 샘플링합니다.
  • 동기 관계가없는 여러 클럭을 사용하는 로직. 이것은 종종 특정 클럭 요구 사항이있는 I / O 인터페이스에서 발생하지만 칩의 다른 부분에 다른 성능 요구 사항이있는 경우에도 내부적으로 발생합니다. 예를 들어, 3GHz CPU의 모든 논리가 실제로 3GHz에서 실행되는 것은 아닙니다. (CPU의 많은 클럭이 서로 동기 배수이기 때문에 CPU는 좋은 예가 아닙니다.)

대부분 좋은 대답이지만, 언급해야 할 또 다른 사항은 전파 지연으로 인해 단일 준 안정 상태가 아니라 전체 가족이 있으며, 준 안정 상태를 식별 할 수있는 특정 방법이 없다는 것입니다. 3 상태 출력 (높음 / 낮음 / 안정 가능)을 가진 회로를 설계하고, 출력이 낮아질 경우 "높음"이보고되지 않도록 또는 그 반대의 경우도 출력을 보장 할 수는 없습니다. 'high'와 'metastable'( 'high'로 끝남) 또는 'low'와 'metastable'( 'low'로 끝남) 사이에서 바운스되지 않습니다.
supercat

+1 이것은 좋은 일이지만 @David Kessner의 답변을 읽은 후에 더 의미가 있습니다. 그래픽의 경우 +2
Rusty

3

준 안정 신호는 임의의 임의의 시간 길이 동안 임의의 패턴에서 임의적으로 높거나 낮은 것으로 나타날 수있는 신호이다. 신호가 여러 게이트를 직접 또는 간접적으로 공급하는 경우 해당 게이트 중 일부는 "높게"볼 수 있고 다른 게이트는 낮게 볼 수 있습니다. 불쾌한 물건.

단일 클록이있는 시스템의 경우, 종종 2 개의 래치를 통과하여 준 안정 신호를 처리 할 수 ​​있습니다. 시계를 게이팅 할 때 까다로운 문제가 발생합니다. 메타 스타 빌리티가 가능하지 않으면 훌륭하게 작동하지만 메타 스타 빌리티가 발생하면 런트 클록 펄스를 생성 할 수있는 많은 회로 (특히 RS 래치 사용)가 있습니다 (그 결과 다운 스트림 메타 스타 빌리티가 발생할 수 있음).

또한, 전이성에 관해 고려해야 할 또 다른 중요한 점 : 래치의 전파 시간은 샘플 및 홀드 시간이 충족 되면 출력이 새로운 값으로 안정적 일 때를 나타냅니다 . 설정 및 유지 시간이 충족되지 않으면 래치가 유효한 클럭킹 이벤트를 수신 할 때까지 출력이 스위칭되는지 여부에 대해 보장 할 수 없습니다. 출력이 깨끗하게 전환되는 것으로 보더라도 자발적으로 다시 전환되지 않을 것이라는 보장은 없습니다.


2

일반적인 경우는 동기 래치의 셋업 / 홀드 시간을 위반하는 경우이며 FPGA를 설계 할 때 알아야 할 문제입니다 (자일링스와 알테라가 이에 대한 메모를 가지고있을 것입니다). 신호가 임의의 시간에 나타날 수있는 경우, 클럭 할 때 설정 / 보류 시간 창 사양 내에서 신호가 변경되지 않는다고 확신 할 수 없습니다. 발생할 수있는 일은 클럭 에지 이후 지정된 시간에 래치 출력이 높거나 낮아지는 대신 안정적인 상태로 안정되기 전에 잠시 동안 디더링 될 수 있습니다. 이를 방지하는 일반적인 방법은 지연 시간 요구 사항과 전이성 가능성 사이의 균형에 따라 동일한 클럭 또는 지연 또는 위상이 다른 클럭으로 2 단계 래치를 사용하는 것입니다. 이는 제 2 래치 래치가 안정 상태가되기 전에 제 1 래치 시간이 안정화되게한다. 덧붙여서 외부 I / O 신호는 일반적으로 CPU 클럭과 비동기식이므로 마이크로 컨트롤러가 내부적으로 처리해야하는 문제이므로 I / O 포트에는 종종 문제를 피하기 위해 이중 래칭 배열이 있으므로 소프트웨어는 걱정할 필요가 없습니다. . 설정 / 홀드 시간 사양 외부에서 변경된 데이터의 버스 읽기로 인해 분기가 분기 대상이 아니거나 다음 명령이 아닌 주소로 분기 될 수있는 6502의 문제에 대해 몇 년 전에 읽은 모호한 기억 상태는 준 안정화되었다. 이 비디오는 몇 가지 예를 보여줍니다. 설정 / 홀드 시간 사양 외부에서 변경된 데이터의 버스 읽기로 인해 분기가 분기 대상이 아니거나 다음 명령이 아닌 주소로 분기 될 수있는 6502의 문제에 대해 몇 년 전에 읽은 모호한 기억 상태는 준 안정화되었다. 이 비디오는 몇 가지 예를 보여줍니다. 설정 / 홀드 시간 사양 외부에서 변경된 데이터의 버스 읽기로 인해 분기가 분기 대상이 아니거나 다음 명령이 아닌 주소로 분기 될 수있는 6502의 문제에 대해 몇 년 전에 읽은 모호한 기억 상태는 준 안정화되었다. 이 비디오는 몇 가지 예를 보여줍니다.http://www.youtube.com/watch?v=tKHCwjWMMyg

비유는 당신이 누군가에게 공을 던지면 공을 잡거나 떨어 뜨리거나 놓치기 때문에 주어진 시간이 지나면 공을 잡을지 여부입니다. 그러나 때때로 그들은 그것을 잡거나 떨어 뜨리기 전에 잠시 동안 비틀 거릴 것이므로 그들의 상태는 유지되거나 떨어지지 않습니다-이것은 준 안정 상태입니다!


나는 여전히 6502 기반 시스템을 취미로 사용합니다. 버스 데이터에 대한 일부 준 안정성 문제를 아는 것이 좋습니다. 누산기가 $ FF를 보유하고 있고 $ 00 또는 $ 01의 값을 읽는 경우 누산기가 가능한 값으로 끝날 수 있습니다. 그러나 지점을 가져 오기 전에 플래그가 두 번 다시 연결되는 두 번의주기가 더 필요할 것으로 예상합니다. 나는 오랫동안 안정 상태가 남아 있다고 상상할 수 없다.
supercat

이것은 아마도 20 년 전에 초침 또는 세 번째 손으로 들었던 것이었지만, 그들이하는 일을 절대적으로 알고있는 사람들로부터 비롯되었습니다-BBC Micro의 6502 초 프로세서의 Tube 인터페이스와 관련이 있으며 상태를 읽었습니다. 플래그였으며, 한때 파란 달의 ​​출현 이었지만 제품 출시를 지연시킬 정도로 자주 발생했습니다. 신호가 파이프 라인의 다양한 단계에서 내부적으로 래칭 될 수 있으므로 반드시 2 사이클을 지속 할 필요는 없었습니다. 나는 또한 3MHz 65C02 ISTR 당시 당시 가장 빠른 6502 변형이라고 생각합니다.
mikeselectricstuff

흥미 롭군 [BTW, StackExchange를 문지르지 않고 구두점을 사용하는 방법이 있습니까?] 예를 들어 "ADC 0xD000"과 같은 일반적인 동작에서 주소는 네 번째주기의 1 단계에서 출력되고 단계의 끝에서 데이터가 래치됩니다 그주기의 2 데이터는 다음 사이클의 1 단계에서 ALU로 공급됩니다 (다음 명령의 opcode 페치). 그 후의주기는 피연산자 페치입니다. 이 시점에서 상황이 여전히 불안정한 경우 시스템이 녹을 수 있지만 동적 레지스터가 두 번 다시 연결 되었기 때문에 그럴 것 같지 않습니다.
supercat

나는 설명 할 수없는 다른 이상한 행동들이 있다는 것을 알고 있기 때문에 데이터 버스 전이성이 6502에 영향을 미치는 것은 불가능하다고 말하고 싶지 않다. 예를 들어, 데이터 버스는 클럭의 2 단계에서 래치되고 다음 단계 1에서 작동합니다. 따라서 2 단계에서 변경 되어도 끝에서 안정적이라면 변경되지 않습니다. 그러나 문서화되지 않은 몇 가지 지침이 있지만 동작의 초기주기 동안 데이터 버스의 내용에 영향을받습니다 (1 단계에서 비디오를 가져 오는 C64 및 Apple과 같은 시스템에서는 설명 가능). 잘 모르겠어요 ...
supercat

... 이러한 명령의 동작은 실제로 초기 데이터 버스 동작의 영향을 받지만 일종의 이상한 경쟁 조건 인 것 같습니다. opcode 중 하나 인 IIRC는 LDA #imm, LDX #imm 및 TAX의 디코드 패턴과 일치하므로 ALU의 출력이 입력으로 다시 매핑됩니다. 기묘한.
supercat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.