마이크로 컨트롤러에 클록이 필요한 이유


31

설정된 시간 간격으로 (즉, 시계를 사용하여) 명령을 처리해야하는 이유는 무엇입니까? 이전 명령이 완료된 직후 순차적으로 실행할 수 없습니까?

마이크로 컨트롤러에서 클럭의 필요성에 대한 비유가 특히 유용 할 것입니다.


6
비동기 프로세서가 있습니다.
레온 헬러

6
"이전 교육이 언제 완료되었는지"를 어떻게 알 수 있습니까? 당신이 그것에 대해 생각한다면, "이전 교육은 언제 완료 되었습니까?"를 알아야합니다. 계산이 완료되고 ""이전 명령이 완료 되었습니까? "계산이 완료되면"명령을 완료하는 데 0.4 나노초가 걸린다 "고 말하는 것이 훨씬 쉽습니다.
user253751 2016 년

4
논리 게이트는 완료되면 말하지 않습니다. 신호는 안정된 값으로 안정되기 전에 일정 시간 동안 결정되지 않습니다. 본질적으로 클럭은 설계자가 로직이 올바른 값으로 설정되었을 때를 알 수있게합니다. 마이크로 명령어와 같은 고급 전략은 기계 명령어를 더 작은 조각으로 나누는 데 도움이되므로 ADD는 4 개의 클럭 틱을, 메모리 액세스에는 수백 개의 틱이 걸릴 수 있습니다.

답변:


31

예시적인 예 또는 두 가지가 여기에 도움이 될 수 있습니다. 다음과 같은 가상 회로를 살펴보십시오.

개략도

이 회로 시뮬레이션CircuitLab을 사용하여 작성된 회로도

A와 B를 모두 시작한다고 가정합니다 (1). 따라서 AND의 출력은 1이고 XOR에 대한 두 입력은 모두 1이므로 출력은 0입니다.

논리 요소는 상태를 즉시 변경하지 않습니다. 입력 변경을 처리함에 따라 작지만 중요한 전파 지연이 있습니다. B가 낮아진다 고 가정합니다 (0). XOR은 두 번째 입력에서 새로운 상태를 즉시 확인하지만 첫 번째 입력은 여전히 ​​AND 게이트에서 'stale'1을 확인합니다. 결과적으로 출력이 잠깐 동안 높아지지만 신호가 AND 게이트를 통해 전파 될 때까지만 XOR에 대한 두 입력이 모두 낮아지고 출력이 다시 낮아집니다.

글리치는 회로 작동의 원하는 부분이 아니지만 논리의 양 또는 와이어의 길이로 인해 회로의 다른 부분을 통한 전파 속도에 차이가있을 때마다 발생합니다. .

이를 처리하는 한 가지 쉬운 방법은 다음과 같이 조합 논리의 출력에 에지 트리거 플립 플롭을 배치하는 것입니다.

개략도

이 회로를 시뮬레이션

이제 발생하는 글리치가 플립 플롭에 의해 회로의 나머지 부분에서 숨겨 지는데, 클럭이 0에서 1로 갈 때만 상태가 업데이트됩니다. 조합 논리 체인을 통해 결과는 확실하게 결정적이며 결함이 없습니다.


6
실제로 전파 지연을 거의 즉시 언급 해 주셔서 감사합니다. 아마도 99 %의 답변 일 것입니다.

1
이에 대한 실제 사례는 Microchip (및 기타) 마이크로 컨트롤러의 디지털 I / O 주변 장치에서 확인할 수 있습니다. 연속적인 Read-Modify-Write 명령어를 사용하여 PORT 레지스터를 사용하여 출력 (LATCH가 아닌)을 업데이트하면 상태가 변경되는 동안 핀의 상태를 읽을 수 있습니다. 자세한 내용은 dsPIC33E / 24E 설명서 의 10.2.2 섹션을 참조하십시오 .
Evil Dog Pie

순차 회로에는 글리치가 발생할뿐 아니라이 결함으로 인해 일부 플립 플롭이 잘못된 값을 저장할 수 있기 때문에 클럭킹이 매우 중요하다는 것을 이해하고 있습니까?
lakesare는

20

나는 이러한 많은 답변들이 핵심 질문에 정확하게 맞지 않는다고 생각합니다. 마이크로 컨트롤러는 단순히 순차 로직을 실행하고 구동하기 때문에 클록을 가지고있다 .

디지털 회로 이론에서 순차 논리는 ​​출력이 입력 신호의 현재 값뿐만 아니라 과거 입력 순서, 입력 히스토리에 의존하는 논리 회로 유형입니다. 이것은 출력이 현재 입력의 함수 인 조합 논리와 대조적입니다. 즉, 순차 논리에는 상태 (메모리)가 있지만 조합 논리에는 없습니다. 즉, 순차 논리는 ​​메모리와 조합 논리입니다.

게다가:

동기식 로직의 주요 장점은 단순성입니다. 데이터에 대한 연산을 수행하는 로직 게이트는 입력 변경에 응답하기 위해 유한 한 시간이 필요합니다. 이것을 전파 지연이라고합니다. 클럭 펄스 사이의 간격은 다음 클럭 펄스가 발생하기 전에 모든 로직 게이트가 변경에 응답하고 출력이 안정적인 로직 값에 "고정"할 수 있도록 충분히 길어야합니다. 이 조건이 충족되는 한 (특정 다른 세부 사항은 무시) 회로는 안정적이고 신뢰할 수 있습니다. 동기 회로의 최대 작동 속도를 결정합니다.


15

짧은 대답 : 관리자는 설계에 수백만 달러 이상을 투입하기 전에 간단하고 테스트 가능한 기능 증명을 원합니다. 현재 도구는 비동기 설계에 이러한 답변을 제공하지 않습니다.

마이크로 컴퓨터와 마이크로 컨트롤러는 타이밍 제어를 보장하기 위해 일반적으로 클럭킹 방식을 사용합니다. 모든 프로세스 코너는 신호 전파 속도에 대한 모든 전압, 온도, 프로세스 등의 영향에 걸쳐 타이밍을 유지해야합니다. 없다 에는 현재 논리 게이트 즉시 변경 : 각 게이트가 공급되는 전압에 따라 스위치가 얻는 드라이브가 구동하는 부하 및 사용되는 장치의 크기는, 그것을 확인 (및하는 과정 프로세스 노드 (장치 크기), 그리고 THAT 프로세스가 실제로 얼마나 빨리 수행되는지 --- 이것은 팹을 통과합니다). "인스턴트"스위칭을 위해서는 양자 로직을 사용해야하며, 이는 양자 디바이스가 즉시 스위칭 할 수 있다고 가정합니다. (잘 모르겠습니다).

클럭 로직은 전체 프로세서의 타이밍이 예상 전압, 온도 및 처리 변수에서 작동하도록 제공합니다. 이 타이밍을 측정하는 데 도움이되는 많은 소프트웨어 도구가 있으며, 넷 프로세스를 "타이밍 마감"이라고합니다. 캔을 클러킹 (그리고, 내 경험, 않습니다 ) 마이크로 프로세서에서 사용하는 전력의 1/2에 1/3 사이 어딘가에 걸릴.

그렇다면 비동기 설계는 어떻습니까? 이 디자인 스타일을 지원하는 타이밍 클로저 툴은 거의 없습니다. 대규모 비동기 설계를 처리하고 관리 할 수있는 자동화 된 장소 및 경로 도구는 거의 없습니다. 그 밖의 것이 없다면, 관리자는 컴퓨터가 직접 생성 한 기능 증명이없는 것을 승인하지 않습니다.

비동기식 설계에는 "많은 트랜지스터"가 필요한 "톤"의 동기화 신호가 필요하며, 글로벌 클록의 라우팅 및 동기화 비용과 클로킹 시스템에 필요한 모든 플립 플롭의 비용은 무시됩니다. 비동기식 디자인은 클럭킹 된 것보다 작고 빠릅니다. (하나는 가장 느린 하나의 신호 경로 를 가져 와서 이를 사용하여 "준비된"신호를 이전 논리에 피드백합니다.)

비동기식 로직은 다른 블록을 위해 확장되어야하는 클럭을 기다릴 필요가 없기 때문에 더 빠릅니다. 이것은 레지스터-로직 -to- 레지스터 기능에서 특히 그렇습니다. 논리 전파 지연을 클럭킹 간격으로 배치하기 위해 플립 플롭이 산재 된 파이프 라인 논리 세트와는 달리 엔딩 싱크 구조 (레지스터)에만 이러한 문제가 있으므로 비동기 논리에는 여러 "설정"및 "보류"문제가 없습니다. 경계.

할 수 있습니까? 확실히, 십억 개의 트랜지스터 디자인에서도 마찬가지입니다. 더 힘들어요? 그렇습니다. 그러나 전체 칩 (또는 시스템조차도)에서 작동한다는 것이 훨씬 더 복잡하기 때문입니다. 종이에 타이밍 맞추는 것은 어느 한 블록이나 하위 시스템에 적당합니다. 자동화 된 장소 및 경로 시스템에서 타이밍을 제어하는 ​​것은 툴링이 훨씬 큰 잠재적 인 타이밍 제약 조건을 처리하도록 설정되어 있지 않기 때문에 훨씬 어렵습니다.

또한 마이크로 컨트롤러는 외부 프로세서와 상대적으로 느리게 인터페이스하여 마이크로 프로세서의 모든 복잡성에 추가 되는 잠재적으로 큰 다른 블록 세트를 가지고 있습니다 . 타이밍이 좀 더 복잡해 지지만 그리 많지는 않습니다.

"최초 도착" "잠금"신호 메커니즘을 달성하는 것은 회로 설계 문제이며이를 처리하는 알려진 방법이 있습니다. 경쟁 조건은 1)의 부호입니다. 열악한 디자인 실습; 또는 2). 프로세서로 들어오는 외부 신호. 클럭킹은 실제로 "설정"및 "홀드"위반과 관련된 신호 대 클럭 경쟁 조건을 도입합니다.

저는 개인적으로 비동기식 디자인이 어떻게 정체되거나 다른 경쟁 조건에 빠질 수 있는지 이해하지 못합니다 . 그것은 나의 한계 일지도 모르지만, 프로세서에 입력되는 데이터에서 발생하지 않는 한, 잘 설계된 로직 시스템에서는 불가능해서는 안되며, 심지어 신호가 들어올 때 발생할 있으므로 처리하도록 설계해야합니다.

(이게 도움이 되길 바란다).

당신이 돈이 있다면 말한 모든 ...


물론, 그것은 당신이 구축하고있는 칩에 달려 있습니다. 예를 들어, 신경 네트워킹 하드웨어는 비동기적인 경향이 있습니다. 왜냐하면 그것이 실제로 가장 쉬운 것입니다 – 그들이 모방하고있는 것은 비동기 적 입니다. 소프트웨어 / 펌웨어는 대부분 동기식이며 순차적이기 때문에 (특히 "순차적"부분에-비동기식 코드가 점점 더 많이 사용되기 때문에) 동기식 순차 하드웨어를 주로 구축하고 있습니다. 사실, 특히 대부분의 프로그래밍이 순차적 코드를 장려하는 언어로 수행되는 경우 순차적 인 동기 시스템 주위로 머리를 감싸는 것이 훨씬 쉽습니다.
Luaan

실제 세계의 이벤트는 예측할 수없는 시간에 발생합니다. 장치에 버튼이 있고 "충분히"밀면 하나의 코드 경로를 실행하고 그렇지 않은 경우 다른 코드 경로를 실행해야하는 경우, 버튼을 누르면 순간 사이에 양자 역학적 제한이없는 경우 버튼 누름이 대체 코드 경로를 트리거 할만큼 빨리 발생하고, 버튼 누름이 "너무 늦게되는"순간, 버튼 누름이 둘 사이에 "동작"을 일으키는 정확한 순간이있을 것입니다 (예 : 프로그램 카운터의 일부 비트가 변경되는 원인
supercat

...하지만 다른 사람은 아닙니다). 양자 역학적 제한이 없으면, 푸시가 분기를 유발하는 마지막 순간과 푸시가 완전히 실패하지 않은 첫 순간 사이의 시간은 임의로 작게 만들지 만 0으로 줄이지 않을 수 있습니다. 양자 역학적 한계로 인해 버튼 누름은 등록하기에 충분히 일찍 발생하거나 깨끗하게 실패하기에 늦게 발생할 가능성이 있지만 치명적인 중간 시간에 버튼 누름을 허용하는 양자 상태가 결코 존재하지 않음을 증명할 수 있습니다. 불가능하다.
supercat

동기 로직을 ​​사용하면 경쟁 조건이 전체 장치의 매우 작은 부분을 벗어날 가능성이 매우 낮아 지므로 시스템이 진정한 비동기 이벤트에 응답해야하는 상황의 분석이 크게 간소화됩니다. 경쟁 조건에서 벗어날 가능성이 없도록 장치의 작은 부분을 분석하는 것은 경쟁 조건이 거의 모든 곳에서 발생하고 영향을 분석하여 문제가 발생할 가능성이 거의 없음을 입증하는 것보다 훨씬 더 다루기 힘든 문제인 것 같습니다.
supercat

10

마이크로 컨트롤러는 다른 외부 이벤트 나 컨트롤러 자체에서 생성 된 이벤트와 거의 동시에 발생하는 이벤트를 포함하여 언제라도 발생할 수있는 이벤트에 응답 할 수 있어야하며 종종 여러 회로를 가지고 있어야하기 때문에 클럭을 사용해야합니다. 하나의 이벤트 X가 다른 이벤트 Y보다 우선합니다. 그러한 모든 회로가 X가 Y보다 우선한다고 결정하는지 또는 모든 그러한 회로가 X가 Y보다 우선하지 않는다고 결정하는지는 중요하지 않지만, 어떤 회로에서 X가 우선한다고 결정하는 것이 종종 중요합니다 Y, 그럼 모두 그렇게해야합니다. 불행히도, 제한된 시간 내에 회로가 ​​X가 Y보다 선행하는지에 대한 보장 된 합의에 도달하거나 심지어 합의에 도달했는지에 대한 합의에 도달하는 것을 보장하기가 어렵습니다. 동기 로직은 그에 큰 도움이 될 수 있습니다.

회로에 클록을 추가하면 시스템에 대한 입력이 클록에 비해 매우 작은 창에서 변경되지 않는 한 서브 시스템이 경쟁 조건을 경험하지 않으며 한 장치의 출력이 다른 장치로 공급되는지 보장 할 수 있습니다 , 제 1 장치에 대한 입력이 훨씬 더 작은 임계 창 내에서 변하지 않는 한, 제 1 장치의 출력은 제 2 장치의 임계 창에서 변하지 않을 것이다. 첫 번째 장치 앞에 다른 장치를 추가하면 새 장치에 대한 입력이 실제로 아주 작은 창 내에서 변경되지 않는 한 첫 번째 장치에 대한 입력이 작은 창에서 변경되지 않습니다. 실제적인 관점에서, 의도적으로 합의 실패를 시도하지 않는 한,

"가능한 한 빨리"실행되는 완전 비동기식 시스템을 설계하는 것은 확실히 가능하지만, 시스템이 매우 단순하지 않으면 경쟁 조건에 의해 설계가 넘어지는 것을 피하기가 어렵습니다. 클록을 요구하지 않고 경쟁 조건을 해결하는 방법이 있지만, 경쟁 조건은 클록이없는 경우보다 클록을 사용하여 훨씬 빠르고 쉽게 해결할 수 있습니다. 비동기 로직은 종종 클럭 로직보다 더 빠른 경쟁 조건을 해결할 수 있지만, 시스템의 일부가 합의 도달 했는지 여부 에 대한 합의 도달하기 어려운 경우 특히 큰 문제가 될 수 있습니다.. 섹션 당 백만 개의 명령을 일관되게 실행할 수있는 시스템은 일반적으로 초당 4 백만 개의 명령을 실행할 수있는 시스템보다 일반적으로 유용하지만 경쟁 조건으로 인해 한 번에 milleconds (또는 그 이상) 동안 정지 될 수 있습니다.


결정되는 상태는 산술 연산의 결과와 같이 내부 상태가 될 수 있습니다. 라인 길이로 인한 지연은 MCU의 한 부분이 결과를보고, 다른 부분보다 먼저 클럭없이 작동 할 수 있습니다.
Nick Johnson

@NickJohnson : 연산이 수행되는 순서가 아직 계산되지 않은 것에 의존하지 않는 경우, ALU와 같은 각 섹션에 "유효한"입력과 "유효한"출력이있는 경우 어려움없이 이러한 문제를 해결할 수 있습니다. 결정적 순서로 발생하도록 배열 될 수있다. 휠이 떨어지는 위치는 작업 발생 순서가 타이밍에 의존해야하는 시점입니다 (예 : 공유 메모리 버스를 사용해야하는 병렬 작업이 여러 개 있고 그 중 두 개가 거의 동시 요청을 발행하는 경우 먼저 가야 ...
supercat

... 어느 쪽을 기다려야할지 모르겠습니다. 어느 쪽이 먼저 갈 것인지를 미리 결정하면 그러한 문제를 피할 수 있지만, 먼저 갈 것으로 지정된 장치가 다른 쪽이 끝나고 오랫동안 준비가되지 않은 경우 성능이 심각하게 저하 될 수 있습니다 .
supercat

이것이 우주로가는 것이 어려운 이유이며, 확률은 바람직하지 않습니다.
Magic Smoke

6

MCU는 동기식 순차 논리 회로의 매우 복잡한 예일뿐입니다. 가장 간단한 형태는 아마도 클럭킹 된 D-Flip-flop (D-FF), 즉 동기식 1 비트 메모리 요소 일 것입니다.

비동기식 메모리 요소, 예를 들어 D 래치는 D-FF와 비동기식으로 구성됩니다. MCU는 수많은 로직 게이트와 함께 붙어있는 수백만 개의 이러한 기본 메모리 요소 (D-FF)에 지나지 않습니다 (과도하게 단순화하고 있습니다).

이제 요점을 살펴 보겠습니다. MCU가 내부적으로 메모리 요소로 D- 래치 대신 D-FF를 사용하는 이유는 무엇입니까? 본질적으로 신뢰성과 설계 용이성을위한 것입니다. D- 래치는 입력이 변경되고 출력이 최대한 빨리 업데이트되는 즉시 반응합니다. 이것은 논리 회로의 다른 부분들 (의도하지 않은 피드백 루프와 레이스) 사이의 원치 않는 상호 작용을 허용합니다. 비동기식 빌딩 블록을 사용하여 복잡한 순차 회로를 설계하는 것은 본질적으로 더 어렵고 오류가 발생하기 쉽습니다. 동기 회로는 클록 에지가 감지 될 때 빌딩 블록의 동작을 시간 순간으로 제한함으로써 이러한 트랩을 피합니다. 에지가 도달하면 동기식 로직 회로 입력에서 데이터획득 하지만 출력을 아직 업데이트하지 않습니다. 입력이 획득되는 즉시 출력이 업데이트됩니다. 이렇게하면 출력 신호가 완전히 획득되지 않은 입력으로 피드백되어 물건을 엉망으로 만드는 위험을 피할 수 있습니다 (간단히 말함).

출력 업데이트에서 입력 데이터 수집을 "디커플링 (decoupling)"하는 전략은보다 단순한 설계 기법을 허용하여 주어진 설계 노력에 대해보다 복잡한 시스템을 해석합니다.


5

당신이 설명하는 것을 비동기 논리 라고 합니다. 작동 할 수 있으며 동기화 할 때 동기식 (클럭 된) 논리보다 전력이 더 빠르며 더 적은 전력을 사용합니다. 불행하게도, 비동기식 로직에는 널리 사용되지 못하게하는 몇 가지 문제점이 있습니다. 내가 볼 수있는 주요한 것은 많은 독립적 인 동기화 신호가 필요하기 때문에 구현하는 데 더 많은 트랜지스터가 필요하다는 것입니다. (마이크로 컨트롤러는 CPU와 마찬가지로 많은 작업을 병렬로 수행합니다.) 비용이 증가 할 것입니다. 좋은 디자인 도구가 없다는 것은 큰 선행 장애입니다.

주변 장치는 일반적으로 시간을 측정해야하기 때문에 마이크로 컨트롤러는 항상 클럭이 필요할 것입니다. 타이머 및 PWM은 고정 된 시간 간격으로 작동하고 ADC 샘플링 속도는 대역폭에 영향을 미치며 CAN 및 USB와 같은 비동기 통신 프로토콜은 클럭 복구를 위해 참조 클럭이 필요합니다. 우리는 일반적으로 CPU가 가능한 빨리 실행되기를 원하지만 다른 디지털 시스템에서는 항상 그런 것은 아닙니다.


3

사실 당신은 완전한 단위로 MCU를보고있다, 그러나 진실은 그 자체가, 클럭 신호 개별적으로 다른 게이트 및 TTL 및 RTL 로직의 자주 FF 배열, 모든 필요 구성되어있다

구체적 되려면 약 단순히 주소를 액세스하는 생각 메모리에서이 간단한 작업 자체는 BUS를 데이터 라인과 주소 라인에 사용할 수있게하는 것과 같은 여러 작업을 포함 할 수 있습니다.
가장 좋은 방법은 명령 자체가 클럭 사이클을 필요로하는 작은 작동 단위에서 발생하며 , 이는 머신 사이클 과 결합되어 속도 (복잡한 MCU의 FLOPS **), 파이프 라이닝 등과 같은 다양한 MCU 속성

을 설명합니다. OP의 의견

매우 정확하게 말하면 ALE 이라는 칩이 있습니다.(주소 래치 인 에이블) 일반적으로 주소와 데이터를 동일한 핀으로 전송하기 위해 하위 주소 버스를 다중화하기 위해 오실레이터 (인텔 8051은 11.059MHz 로컬 오실레이터를 클럭으로 사용)를 사용하여 주소를 가져온 다음 데이터를 가져옵니다.

MCU의 기본 부분이 CPU, ALU 및 내부 레지스터라는 것을 알 수 있듯이 CPU (제어 s / g)는 8051의 경우 모든 주소 핀 16에 주소를 보냅니다. 이는 타이밍 순간 T1 이후에 발생합니다. 어드레스는 대응하는 커패시터 저장 매트릭스 (신호로서 충전) ( * 메모리 맵핑 * )가 활성화되고 선택된다.

선택 후 ALE 신호가 활성화됩니다. 즉, 다음 클록에서 ALE 핀이 T2 ( 대개 High 신호이지만 처리 장치 설계에 따라 변경됨)에서 하이로 설정됩니다. 이 후 하위 주소 버스는 데이터 라인처럼 작동하며 데이터를 쓰거나 읽습니다. (MCU의 RD / WR 핀의 출력에 따라 다름).
모든 이벤트가 적시에 순차적임을 분명히 알 수 있습니다

우리가 클럭을 사용하지 않으면 어떻게 될까요? 그렇다면 우리는 비동기 클럭킹 방법 ASQC 를 사용해야합니다. 그러면 각 게이트가 다른 게이트에 의존하게되고 하드웨어 고장이 발생할 수 있습니다. 작업 완료 시간
그래서 그것은 바람직하지 않은 것입니다


그런 의미가 있습니다. 그러나 왜 MCU의 여러 부분에서 작동하려면 클럭 신호가 필요합니까? 시계를 사용하지 않으면 이론적으로 어떤 일이 발생합니까?
MR

1
@Martin, 논리 게이트는 입력이 변경되면 즉시 상태를 변경합니다. 클럭 된 순차적 로직은 클럭 이벤트 중 입력 만 평가합니다. 이것이 디지털 메모리 회로를 구동하는 기본 원리입니다. 이를 통해 절대 제어를 통해 한 곳에서 다른 곳으로 데이터를 선택적으로 이동할 수 있으므로 소프트웨어를 통해 프로그래밍 할 수있는 범용 하드웨어를 만들 수 있습니다.
Sean Boddy 2016 년

3
@SeanBoddy : 로직 게이트는 즉시 상태를 나타내지 않으며 오실로스코프에서 볼 수있는 짧은 지연이 있습니다. 시계를 사용하지 않으면 구성 요소 간의 타이밍 차이로 인해 경쟁 조건으로 인해 잘못된 결과가 발생할 수 있습니다.
BlueRaja-대니 Pflughoeft

@BlueRaja-좋은 golly gumdrops는 어떻습니까? 어쩌면 나는 4 년 동안의 전력 전자 노트와 8 년 동안의 해군 훈련을 통해 내가 그 한 가지를 놓친 곳을 찾아 볼 것입니다.
Sean Boddy 2016 년

2

클럭이 해결하는 근본적인 문제는 트랜지스터가 실제로 디지털 디바이스가 아니라는 점입니다. 트랜지스터는 입력에서 아날로그 전압 레벨을 사용하여 출력을 결정하고 상태를 변경하는 데 유한 한 시간이 걸립니다. 다른 답변에서 언급했듯이 양자 장치에 들어 가지 않으면 입력이 한 상태에서 다른 상태로 전환되는 시간이 있습니다. 소요 시간은 용량 성 로딩의 영향을받으며, 이는 장치마다 다릅니다. 이는 각 논리 게이트를 구성하는 다른 트레이 미스트가 약간 다른 시간에 응답한다는 것을 의미합니다. 클럭은 컴포넌트 디바이스의 출력이 모두 안정화되면 출력을 '래칭'하는 데 사용됩니다.

유추하여 SPI (Serial Peripheral Interface) 통신 전송 계층을 고려하십시오. 이것의 전형적인 구현은 3 개의 라인을 사용합니다 : Data In, Data Out 및 Clock. 이 전송 계층을 통해 바이트를 전송하기 위해 마스터는 데이터 출력 라인을 설정하고 데이터 라인이 유효한 값을 나타내도록 클럭 라인을 표명합니다. 슬레이브 장치는 클럭 신호에 의해 지시 된 경우에만 데이터 입력 라인을 샘플링합니다. 클럭 신호가없는 경우 슬레이브는 언제 Data In 라인을 샘플링해야하는지 어떻게 알 수 있습니까? 마스터가 라인을 설정하기 전 또는 상태 간 전환 중에 샘플을 샘플링 할 수 있습니다. CAN, RS485, RS422, RS232 등과 같은 비동기 프로토콜은 사전 정의 된 샘플링 시간, 고정 비트 레이트 및 (오버 헤드) 프레이밍 비트를 사용하여이를 해결합니다.

다시 말해, 어떤 종류의 게이트 세트의 모든 트랜지스터가 최종 상태에 도달하고 명령이 완료되는 시점을 결정하는 데 필요한 공통 지식 이 있습니다. 위의 링크에 명시된 (100 파란 눈) 퍼즐 에서 Maths Stack Exchange에 대한이 질문 에서 자세히 설명 된 'oracle'은 섬 사람들의 시계 역할을합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.