수색…


타이밍이란 무엇입니까?

타이밍의 개념은 VHDL보다 플립 플롭 물리와 더 관련이 있지만 VHDL을 사용하여 하드웨어를 만드는 모든 디자이너가 알아야하는 중요한 개념입니다.

디지털 하드웨어를 설계 할 때 일반적으로 동기 논리를 생성 합니다 . 이것은 우리의 데이터가 플립 플롭에서 플립 플롭으로 이동 함을 의미합니다. 조합 기능을 통합 한 동기식 로직의 가장 기본적인 다이어그램은 다음과 같습니다. 여기에 이미지 설명을 입력하십시오.

중요한 설계 목표는 결정론적인 작업 입니다. 이 경우, 클록 에지가 발생했을 때 플롭 A의 Q 출력이 로직 1 을 나타내는 경우, 예외없이 매번 플립 B의 Q 출력이 로직 0 표시하기 시작할 것임을 의미한다.

일반적으로 VHDL (예 : B <= not A when rising_edge(clk); )과 같이 이상적인 플립 플롭 B <= not A when rising_edge(clk); 결정 론적 동작이 가정됩니다. 행동 VHDL 시뮬레이션은 항상 결정 론적으로 작동하는 이상적인 플립 플롭을 가정합니다. 실제 플립 플롭에서는 그리 간단하지 않으며 안정적인 작동을 보장하기 위해 플롭의 D 입력이 언제 변경되는지에 대한 설정보류 요구 사항을 준수해야합니다.

설정 시간은 D 입력이 클록 에지가 도달 하기 전에 변경되지 않아야하는 시간을 지정합니다. 홀드 시간은 D 입력이 클럭 에지가 도착한 변경되지 않아야하는 시간을 지정합니다.

수치는 플립 플롭의 기본 물리에 기반하고 있으며 프로세스 (하드웨어 작성에서 실리콘 결함), 전압 (로직 '0'및 '1'레벨) 및 온도에 따라 크게 다릅니다. 일반적으로 계산에 사용되는 값은 최악의 경우 (가장 긴 요구 사항)이므로 모든 칩과 환경에서 기능을 보장 할 수 있습니다. 칩은 고려해야 할 최악의 경우를 제한하기 위해 부분적으로 온도 전원 공급을위한 허용 범위로 제조됩니다.

설정 및 홀드 시간을 위반 하면 Q에서 나타나는 잘못된 로직 값, Q에서 나타나는 중간 전압 (다음 로직 요소에 의해 0 또는 1 로 해석 될 수 있음)을 비롯하여 다양한 비 결정적 동작이 발생할 수 있으며 Q 출력은 발진합니다. 사용 된 모든 숫자가 최악의 값이기 때문에 중도 위반은 일반적으로 특정 하드웨어에 대한 정상적인 결정적 결과를 초래하지만 타이밍 오류가있는 구현은 여러 장치에 배포하는 것이 안전하지 않습니다. 값이 최악의 값에 접근하면 결국 값이 발생합니다.

최신 FPGA의 플립 플롭 (flip-flops)에 대한 일반적인 요구 사항은 60ps 보류 요건과 일치하는 60 피코 초 셋업 시간입니다. 구현의 세부 사항은 FPGA 컨텍스트에서 제공되지만 거의 모든 내용이 ASIC 디자인에도 적용됩니다.

타이밍이 맞는지 여부를 결정하기 위해 고려해야 할 몇 가지 다른 지연 및 시간 값이 있습니다. 여기에는 다음이 포함됩니다.

  • Routing Delay - 전기 신호가 로직 요소 사이의 와이어를 따라 이동하는 데 걸리는 시간
  • 논리 지연 (Logic Delay) - 입력에 중간 조합 논리가 영향을 미치기까지 걸리는 시간입니다. 일반적으로 게이트 지연이라고도합니다.
  • Clock-to-out Delay - 플립 플롭의 또 다른 물리적 특성으로 클럭 에지가 발생한 후 Q 출력이 변경되는 데 걸리는 시간입니다.
  • Clock Period (클럭주기) - 클럭의 두 가장자리 사이의 이상적인 시간입니다. 타이밍을 쉽게 충족시키는 최신 FPGA의 일반적인 기간은 5 나노 초이지만 실제 사용되는 기간은 디자이너가 선택하며 적당히 짧거나 크게 줄일 수 있습니다.
  • 클록 스큐 - 클럭 소스의 A 로의 라우팅 지연과 플롭 B 로의 클럭 소스의 차이
  • 클럭 지터 / 불확실성 - 전기적 잡음 및 불완전한 발진기의 기능. 이것은 클록주기가 이상적인 상태에서 가질 수있는 최대 편차로서, 주파수 오류 (예 : 발진기가 1 %로 너무 빠르기 때문에 5ns의 이상적인 주기로 인해 50ps의 불확실성으로 4.95ns가 됨) 및 peak-to-peak (예 : 평균주기는 5ns이지만 1/1000주기는 4.9ns이며 100ps의 지터가 있음)

홀드 요구 사항에 대한 최악의 지연은 설치 요구 사항에 대한 최상의 케이스 지연이기 때문에 회로 구현이 타이밍을 충족하는지 여부를 확인하는 데 두 가지 단계가 있습니다.

홀드 확인 은 클록 사이클 x에서의 A의 Q 출력의 새로운 값이 클럭 사이클 x에서 B의 Q 출력을 방해하기 때문에 일찍 도착하지 않는다는 것을 검증하므로 클럭주기의 함수가 아닙니다. 두 플롭에서 클럭 에지. 보류 확인이 실패하면 지연을 추가하는 것이 해결책이므로 비교적 쉽게 해결할 수 있습니다. 구현 도구는 경로에 와이어 길이를 추가하는 것처럼 지연을 증가시킬 수 있습니다.

보류 요구 사항을 충족 시키려면 클럭 스큐에 의해 보류 요구 사항이 수정되는 보류 요구 사항보다 가능한 가장 짧은 클럭 - 투 - 아웃, 로직 및 라우팅 지연이 누적 적으로 길어야합니다.

셋업 검사 는 B의 Q 출력이 클럭 사이클 x + 1에서이를 고려하기 위해 클럭 사이클 x에서의 A의 Q 출력의 새로운 값이 시간에 도착하므로 그 기간의 함수임을 확인합니다. 설정 검사에 실패하면 지연을 제거하거나 요구 사항 (클록주기)을 늘려야합니다. 구현 도구는 클럭주기를 변경할 수 없으며 (설계자가 결정할 수 있음) 기능을 변경하지 않고 제거 할 수있는 지연이 너무 많기 때문에 도구가 항상 회로 요소의 배치 및 라우팅을 변경할 수있는 것은 아닙니다. 설정 확인을 통과하십시오.

셋업 요구 사항을 충족시키기 위해서는 가장 긴 clock-to-out, 로직 및 라우팅 지연이 클록주기 (클록 스큐 및 지터 / 불확실성으로 수정)보다 설치 요구 사항을 뺀 누적 적으로 짧아야합니다.

셋업 검사가 충족되었는지 여부를 계산하기 위해 클록주기 (일반적으로 클럭 입력 핀을 통해 오프 칩에서 제공됨)가 알려 져야하므로 모든 구현 도구는 설계자가 제공 한 타이밍 제약 조건 이 시계. 지터 / 불확실성은 0 또는 작은 기본값으로 가정되며 다른 값은 항상 타겟 FPGA 용 툴에 의해 내부적으로 알려져 있습니다. 클럭주기가 제공되지 않으면 대부분의 FPGA 툴은 홀드 확인을 확인한 다음 모든 경로가 설정을 충족 할 수있는 가장 빠른 클럭을 찾습니다. 필요한 실제 속도가 있기 때문에 느린 경로를 최적화하여 최소 허용 클럭을 개선하는 데 소요되는 시간을 최소화합니다 알 수 없습니다.


설계에 요구되는 기간 제약 조건이 있고 비동기식 로직이 타이밍 분석 (이 문서에서 다루지 않음)에서 올바르게 제외되었지만 디자인이 여전히 실패한 경우 몇 가지 옵션이 있습니다.

  • 기능에 전혀 영향을 미치지 않는 가장 단순한 옵션은 다른 최적화 전략을 시도해도 타이밍에 맞는 결과를 얻을 수 있기를 바라면서 도구에 지정된 지시문조정하는 것입니다. 이것은 안정적으로 성공하지는 않지만 경계선 문제의 해결책을 종종 찾을 수 있습니다.

  • 설계자는 설정 점검에 맞춰 클록 주파수를 줄이거 나 (주기를 늘릴 수는 있지만) 자체 클록 속도 감소에 비례하여 데이터 처리량이 감소 된 자체 트레이드 오프가 있습니다.

  • 디자인을 때로는 단순한 로직으로 동일한 작업을 수행하도록 리팩터링 하거나, 조합 지연을 줄이기 위해 똑같이 수용 가능한 최종 결과와 다른 작업을 수행하여 설정 검사를 더 쉽게 수행 할 수 있습니다.

  • 또한 더 많은 플립 플롭 (flip-flop)을 사용하고 다중 클럭 사이클에 걸쳐 조합 논리를 분할함으로써 기술 된 설계 (VHDL에서)를 동일한 처리량으로 더 많은 대기 시간을 갖는 동일한 논리 연산으로 변경하는 것이 일반적입니다. 이것은 파이프 라이닝 (pipelining )으로 알려져 있으며 조합 지연이 감소합니다 (이전에 조합 로직의 다중 계층이었던 것 사이의 라우팅 지연을 제거합니다). 일부 디자인은 긴 로직 경로가 모 놀리 식 작업 인 경우 명확하지 않을 수 있지만 파이프 라인 작업에 적합하지만 다른 디자인 (많은 피드백 을 포함하는 디자인)은 추가 지연 시간과 함께 작동하지 않습니다. 파이프 라인 수반.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow