두 가지를 모두 지원하는 FPGA에서 플립 플롭보다 래치를 더 잘 사용하는 경우는 언제입니까?


20

질문:

두 가지를 모두 지원하는 FPGA에서 플립 플롭보다 래치를 더 잘 사용하는 경우는 언제입니까?

배경:

FPGA에서는 레벨 감지 투명 래치를 피하고 에지 감지 플립 플롭 만 사용해야한다는 것은 잘 알려진 원칙입니다. 대부분의 FPGA 아키텍처는 기본적으로 래치와 플립 플롭을 모두 지원합니다.

FPGA 벤더의 경우에도 일반적인 조언은 래치를 조심하거나 래치를 사용하지 않는 것입니다.이 조언에는 세부 사항이 모두 잘 알려진 이유가 있습니다. 그러나 대부분의 조언은 " 필요한 것을 알지 못하면 래치를 사용하지 마십시오"라는 문구로 표시 됩니다.

저는 경험이 풍부한 FPGA 디자이너이며, 수년 동안 래치가 필요하다는 것을 알았을 때 플립 플롭으로 더 좋은 방법이 있다는 것을 빨리 깨달았습니다. 래치를 사용하는 것이 명백하게 더 좋은 예를 듣는 데 관심이 있습니다.

중요 사항:

래치 대 플립 플롭은 종종 사람들을 곤혹스럽게합니다. 질문에 대한 답변에만 관심이 있습니다. 래치와 플립 플롭의 차이점을 설명하는 응답, 래치를 사용하지 않는 이유를 설명하는 이유, 플립 플롭이 래치보다 나은 이유를 설명하고 비 FPGA 대상에서 래치가 더 나은 방법에 대해 이야기하는 등의 주제는 완전히 논외적일 것입니다.


래치를 사용하는 기존 회로를 정확하게 모방하기 위해 FPGA를 사용할 때?
Majenko

답변:


11

당신의 질문은 기본적으로 "래치가 필요하다는 것을 언제 알 수 있습니까?"입니다. 묵시적으로 주관적인 질문입니다. 답변보다 사실보다 더 많은 의견을 기대하십시오. 말한 것은 다음과 같습니다.

나는 당신과 마찬가지로 종종 플립 플롭을 사용하여 래치를 피하는 더 좋은 방법을 찾습니다. 결과 논리는 종종 더 우아하고 강력합니다. 그러나 래치를 피하기 위해 로직을 충분히 제어하지 못하는 경우가 있습니다. 예를 들어, 원하는 사양을 충족하기 위해 래치가 필요한 프로세서 버스와 인터페이스 할 수 있습니다. CPU 나 버스를 다시 디자인 할 수 없기 때문에 걸쇠가 붙어 있습니다.

지난 13 년이 지나서야 래치가 필요한 유일한 시간입니다.


2
답변 해주셔서 감사합니다. 나는 "필수 이전 버전과의 호환성"하에서 귀하의 답변을 정신적으로 제출하고 있습니다. =)
wjl

8

플립 플롭은 레이스 조건 / 제약이 4 개뿐이므로 래치보다 선호되는 경우가 많습니다.

  1. 데이터 입력 변경과 다음 활성 클록 에지 사이의 설정 시간
  2. 클럭 에지와 데이터 입력에 대한 다음 변경 사이의 시간 유지;
  3. 최소 활성 클록 펄스 지속 시간;
  4. 최소 비활성 클록 펄스 지속 시간.

이러한 제약 조건이 충족되면 플립 플롭의 출력이 완전히 "깨끗해"지며 당김이 없습니다. 또한, 플립 플롭의 타이밍은 "디지털"이라는 의미에서 : 타이밍 제약이 충족되면, 입력 타이밍에 상관없이, 활성 클록 에지 이후에 예측 가능한 윈도우 내에서만 출력이 변경 될 것이다. 따라서 캐스 케이 딩 플립 플롭의 효과는 깊이에 관계없이 예측 가능합니다. 대조적으로, 래치 출력의 타이밍은 훨씬 더 "아날로그"입니다. 래치로 들어가는 신호 지연으로 인해 신호가 지연 될 수 있습니다. 래치 자체의 제약 조건이 충족 되더라도이 지연으로 인해 다운 스트림에 문제가 발생할 수 있습니다.

칩의 출력에 필요한 동작이 가장 합리적으로 모델링 될 수있는 경우에는 래치를 사용하는 것이 좋습니다. 예를 들어, 하드웨어는 직렬-병렬 변환기로 동작해야하며, 여기서 프레임 동기화 후 첫 번째 클럭의 상승 및 하강 에지 사이에서 첫 번째 출력이 입력을 추적합니다. 두 번째 클록의 상승 및 하강 에지 사이에서, 두 번째 출력은 입력 등을 추적합니다. 플립 플롭과 순전히 조합 논리를 사용하여 타이밍 제약 조건을 충족하는 경우 이러한 동작을 생성하는 회로를 설계 할 수 있지만 이러한 회로는 더 많을 것입니다 래치를 사용하는 것보다 복잡하고 타이밍 제약 조건이 충족되지 않으면 이상하게 행동하기 쉽습니다.


3
"래치와 플립 플롭의 차이점을 설명하는 응답, 래치를 사용하지 않아야하는 이유를 설명하는 이유, 플립 플롭이 래치보다 나은 이유를 설명하고 비 FPGA 대상에서 래치가 더 나은 방법에 대해 이야기하는 등의 주제는 완전히 논외 일 것입니다 "
Majenko

@supercat 적어도 답 의 두 번째 부분에는 질문에 대한 관련 답변이 있습니다. =) 감사합니다.
wjl

1
@Majenko : 아마도 "바람직한"보다는 "사용하기 쉬운"이라고 말했을 것입니다. 내 요점은 가능할 때마다 걸쇠를 피해야한다고 주장하는 것이 아니라 걸쇠를 사용하는 사람이 복잡성을 인식해야한다고 제안하는 것이 었습니다.
supercat

@ supercat, 짧은 wavetrace로 예제를 명확히 할 수 있습니까?
Philippe

1

내 작업에서 때때로 FPGA에서 래치를 구현해야했지만 항상 "마지막 수단"솔루션이었습니다. 버스 및 제어 신호의 적절한 샘플링 및 동기화를 보장하기에 충분한 속도로 클럭을 보장 할 수없는 경우 일반적인 애플리케이션에는 비동기 인터페이스 또는 버스 연결이 포함되었습니다.

주요 문제는 래치가 비동기 블록이라는 것입니다. 따라서 래치에 대한 입력 신호를 생성하는 조합 기능에 레이스 가 없는지 확인해야합니다 . 그렇지 않으면 고장 이 발생 하여 시스템에 위험발생할 수 있습니다.

경쟁을 피하려면 이러한 조합 기능을 특별한 중복 방식으로 구현해야합니다. 불행히도 (이 특별한 경우 ;-), 그렇지 않으면 매우 좋은 속성입니다) FPGA 합성 툴은 모든 중복성을 제거하여 설계를 최적화합니다. 그러므로 FPGA에서 래치를 구현하려면이를 "수동으로"구현하고 최적화를 방지해야합니다 (예 : VHDL에서는 래치에서 내부적으로 사용되는 신호에 대해 "keep"속성을 "true"로 설정해야 할 수 있음) .


-1 영업 이익은 특별히 당신이 경우에 대해 질문 한다 래치를 사용하고, 특히 독자를 요청 하지 래치가 있다는 이유가 더 줄 사용할 수 있습니다.
Joe Hass

-1

타이밍 측면에서 :

디자인에 플립 플롭을 사용하는 경우 성능은 가장 긴 조합 경로 지연에 따라 달라집니다.

플립 플롭 대신 래치를 사용하면 다음 단계에서 더 짧은 경로 지연에서 시간을 빌림으로써 가장 긴 콤보 경로 지연을 보상 할 수 있습니다. 이를 통해 지연을 줄이고 설계 성능을 향상시킬 수 있습니다.


3
-1. 다중 사이클 제약 조건으로 올바르게 분석하고 "비동기"부분이 두 사이클에 걸쳐 실행되도록하는 것이 좋습니다. 예를 들어, 페이지 7-30 참조 altera.co.uk/literature/hb/qts/qts_qii53018.pdf
shuckc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.