리셋 : 동기식 vs 비동기식


15

나는 수년 동안 fpgas와 함께 일해 왔으며 항상 회로의 모든 부분 (필요한 경우)에 대해 동기 재설정을 사용했습니다. 주어진 클럭 사이클에서 회로를 전체적으로 재설정 할 수 있습니다.

그러나 ASIC 회로에서는 사람들이 어디서나 비동기식 리셋을 사용하는 경향이 있다고 들었습니다. 왜 그런지 궁금합니다. 일부 fpga 디자인의 경우에도 마찬가지입니다. 나는 전문적인 의견을 듣고 싶습니다.

감사

답변:


11

이것에 대한 많은 견해가있는 것 같습니다.
비동기식 어설 션, 동기식 어설 션은 좋은 방법이라고합니다. 이렇게하면 동기식 어설 션에서 클록이 실행되지 않거나 (또는 ​​너무 느리게 실행되어 리셋 신호를 캡처하지 못함) 비동기식 어설 션에서 메타 스타 빌리티가 발생할 수 있습니다.

나머지 디자인 재설정에 연결된 출력과 함께 재설정 동기화 기 (2 개의 FF)를 사용합니다.

초기화

몇 가지 토론 :
비동기 및 동기화 재설정
문자 동기화시 및 비동기 재설정


래치의 리셋 신호 해제와 클록 사이의 셋업 / 홀드 시간 요구 사항은 데이터 입력에 대한 요구 사항과 어떻게 비교됩니까? 시스템의 래치가 리셋 신호의 끝이 비활성 클럭 에지에서 발생하면 더 편안합니다. 활성화 된 클럭 에지에서 비동기 리셋의 해제가 발생하는 사이클에 영향을 미치지 않도록 보장합니까?
supercat

아니요, 재설정 / 복구와 같은 필요한 재설정 복구 시간으로 인해 비동기식으로 재설정 릴리스가 깨끗하다고 ​​보장되지는 않습니다. 따라서 재설정을 동기식으로 해제해야합니다.
Oli Glaser

내 질문은 래치 1이 래치 2가 사용하는 것과 동일한 클럭 에지에서 리셋 신호 공급 래치 2를 해제하는지 여부가 완전히 정결한지, 즉 래치 1의 클록에서 출력으로의 최소 전파 시간이 래치 2의 리셋 입력에 대한 유지 요구 사항을 충족시키는 지 여부입니다. BTW, 당신은 내 대답에 대해 어떻게 생각하십니까? 당신이 그린 회로는 거의 완전한 면역이 가능해야 할 때 리셋 라인에서 런트 펄스에 대한 면역력이 거의 없습니다.
supercat

추가로 고려할 때, 세 번째 래치를 추가하고 비동기 리셋 신호를 처음 두 개로 공급되는 신호의 글리치 억제 버전으로하여 런트 펄스로부터 보호를 추가 할 수 있으므로, 세 번째 래치를 비동기 적으로 방해하는 신호는 처음 두 개를 깨끗하게 재설정합니다. 리셋 입력의 런트 펄스는 칩의 메인 리셋 라인이 런트 펄스를 얻을 수 있지만, 그러한 펄스가 발생하면 동기 리셋 펄스가 뒤 따릅니다.
supercat

죄송합니다. 지금 무슨 뜻인지 알 것 같습니다. 동기화의 두 번째 래치에서 시스템 FF 재설정으로의 출력을 의미하는 경우 재설정 복구 시간은 일반적으로 동일한 FF의 데이터 설정 시간보다 짧으므로 괜찮습니다. 나는 런트 맥박에 동의합니다. 구현 제안이없는 사람들에게는 면역성이 없습니다.
Oli Glaser

7

몇 가지 이유로 (특정 순서없이) 동기 재설정보다 비동기 재설정을 선호합니다.

  • 플립 플롭에 비동기식 세트 또는 리셋 기능을 추가하면 로직이 단일 셀에 통합되어 설계가 더 작아 질 수 있습니다 (입력에 AND 게이트가있는 재설정 불가능한 플립 플롭 대).
  • 게이트가 적을수록 혼잡 한 배선 / 장소 및 경로가 줄어 듭니다.
  • 칩을 재설정하는 것이 더 간단하고 쉬운 프로세스입니다 (보다 사용자 / 테스트에 적합)
  • 리셋 경로를 비동기로 설정하면 리셋 신호의 정적 타이밍 분석 파티셔닝이 간소화됩니다.
  • 동기식 리셋은 데이터 흐름 중요 경로에 추가 로직을 추가하고 설정 및 유지 요구 사항을 충족시키기가 더 어려워집니다.
  • FPGA는 입력에 4-6 개의 입력 임의 로직 기능을 가지고 있지만, 각 입력에 대해 ASIC의 게이트로 "지불"합니다 (더 많은 입력 = 더 큰 게이트; 복잡한 기능 = 다중 게이트)

궁극적으로 이러한 문제 중 어느 것도 쇼 스토퍼라고 생각하지 않지만 ASIC의 비동기식 재설정을 강력하게 선호합니다.


2
비동기식 리셋을 내부 로직으로 가져올 때의 한 가지 위험은 리셋 입력의 런트 펄스가 모든 방식의 혼란을 초래할 수 있다는 것입니다. 회로를 비동기식으로 리셋 할 수있는 경우, 모든 유형의 비동기식 리셋이 내부 회로에 도달 할 수있을 정도로 충분한 리셋 펄스가 발생하도록 보장하는 방식으로 입력 회로를 설계해야합니다. 동기 리셋이 발생합니다.
supercat

4

동기식 어설 션을 사용한 비동기식 재설정은 매우 효과적입니다. 위에서 언급했듯이 비동기 리셋 플롭은 더 작고 리셋을 보장하기 위해 클럭 활성화가 필요하지 않으므로 전원과 단 하나의 유선 핀 또는 리셋시.

이것을 정말로 파고 싶다면 Cumming의 논문, 특히 다음을 읽을 수 있습니다.

http://www.sunburst-design.com/papers/CummingsSNUG2003Boston_Resets.pdf

건배.


커밍스 씨가 논문에서 놓친 한 가지 문제는 글리치 감지기가 런트 펄스를 억제 할 수 있지만 합법적 인 길이의 펄스를 런트 펄스로 바꿀 수도 있다는 것입니다. 그 결과 올바른 길이의 펄스가 적절한 재설정을 수행하지 않고 시스템 상태를 임의로 방해 할 수 있습니다. 이중 동기화없이 모든 경우에 전이성을 피하는 것이 매우 어렵 기 때문에 두 개의 비동기 캡처 회로를 사용하는 것이 좋습니다. 그 중 하나는 '더 엄격한'글리치 감지 기준을 가지고 있으며 ...
supercat

짧은 글리치로 인해 1-2 사이클 후에 리셋이 발생하거나 발생하지 않을 수 있도록 물건을 배열하지만 펄스가 충분히 길면 즉각적인 리셋이 발생합니다. 또한 플립 플롭에서 '비동기 재설정'입력을 사용하면 일부 토폴로지에서 합성을 지원할 수 있지만 비동기식으로 사용해야한다는 의미는 아닙니다. 래치에서 "비동기 리셋"입력을 구동 할 때에도 대부분의 내부 리셋 신호를 클록에 동기화시키는 것이 도움이 될 수 있습니다.
supercat

커밍스는 글리치 필터가 "못 생겼다"고 말합니다. 내가 작업 한 IC에서 본 적이 없다. 우리는 이러한 문제를 피하기 위해 모든 입력 패드 셀에서 슈미트 트리거를 사용하는 경향이 있으며, 내가 사용하는 전원 켜기 재설정도 비슷하게 정리됩니다. 그런데 어떤 경우에 리셋 라인에 짧은 펄스가 있습니까? 나는 일부 스캔 테스트 시나리오에서 이것을 보았지만, 의도적 인 짧은 펄스가 아니라 클럭 사이클의 긴 순서입니다. 마지막 주석에서, 리셋에 대한 s / h 위반을 피하고 모든 플롭이 동일한 에지에서 리셋을 종료하도록 리셋 해제가 시계와 동기화되어야합니다.
mixed_signal_old 0시 13 분에

글리치 필터는 어떤 유형의 입력이 준 안정성을 유발할 수 있는지 결정하는 데 유용하지만, 준 안정 상태를 제거하지는 않습니다. 글리치 필터의 목표는 발생할 수있는 준 안정 상태가 "무정의"상황에 있는지 확인하는 것입니다. 때로는 하나의 장치에 연결된 다른 장치를 재설정 할 수 있어야합니다. 리셋 와이어가 이중 동기화되지 않으면 근처 ESD 이벤트 및 기타 그런 위험으로 인한 런트 펄스의 위험이 있습니다.
supercat

마지막으로, 플립 플롭에서 "무료"비동기 리셋 입력을 제공하는 하드웨어에서 설계를 합성하고 있다고하는데, 이는 두 신호의 메인 클럭과 신호를 완전히 동기화 할 수 없다는 것을 의미하지는 않습니다. 주장과 발표. 바깥 쪽을 향한 신호는 리셋 입력에 비동기 적으로 반응해야하지만 모든 래치를 비동기 적으로 리셋 할 필요는 없습니다. 실제로, 일관성이없는 상태를 피하기 위해, 하나의 설계에서 래치 중 두 개를 제외한 모든 래치를 동기화하는 것이 유용 할 수 있습니다.
supercat

2

'비동기 어설트 / 싱크 릴리스'접근법보다 훨씬 더 안전 해 보이는 또 다른 접근법은 비동기 리셋 검출기를 사용하는 것입니다 (비동기식 '어설트'및 동기식 '릴리스'를 사용하여 다른 곳에서 설명한 것처럼). 비동기식으로 재설정하지 않고 바깥 쪽을 향한 I / O 장치를 게이트합니다 (탐지기 자체의 래치 제외). 하나는 I / O 라인 용 하나와 동기식 리셋 검출기를 공급하기위한 하나의 비동기식 리셋 검출기를 사용하는 경우, 그리고 하나는 I / O 라인 용 하나를 설계하여 신뢰할 수있을만큼 충분한 사운드를 갖는 리셋 펄스에 의해서만 트립되도록합니다. 메인 검출기를 트립하면 CPU를 재설정하지 않을 경우 출력 글리치가 발생하지 않도록 할 수 있습니다. 이 작업을 수행하면 합법적 인 길이의 재설정 펄스가 출력을 비동기식으로 재설정합니다.

고려해야 할 또 다른 사항은 시스템에 종종 재설정의 영향을받지 않는 일부 레지스터가 있다는 것입니다. 비동기 리셋이 해당 레지스터에 쓰는 회로에 영향을 줄 수있는 경우, 깨끗하지 않은 펄스 일지라도 잘못된 시간에 도달 한 리셋 펄스가 해당 레지스터를 클로버 할 수 있습니다. 예를 들어, 코드가 주소 1111에 쓰려고 시도하고 클록 펄스 직전에 도달하는 비동기 리셋이 클록 펄스가 도달하는 것처럼 주소 래치 중 하나를 0으로 강제 설정하면 1110에 잘못된 쓰기가 발생할 수 있습니다. 하나는 조합 지연으로 여러 내부 리셋 라인을 사용하여 주소가 클로버되기 전에 레지스터 쓰기가 비활성화되도록 할 수 있으며 동기식 내부 리셋 로직을 사용하면 문제를 완전히 피할 수 있습니다.

BTW, 여기 개념을 설명하는 회로가 있습니다. 왼쪽 하단 근처에는 리셋을위한 두 개의 로직 입력이 있습니다. 하나는 "깨끗한"리셋 펄스를 생성하고 다른 하나는 정말 불안정한 펄스를 생성합니다. 노란색 LED는 기본 시스템 재설정을 나타냅니다. 청록색 LED는 I / O 활성화를 나타냅니다. 클린 리셋을하면 출력이 즉시 "리셋"됩니다. icky 리셋에 도달하면 출력 리셋 지연이 발생하거나 영향을받지 않습니다 (시뮬레이터에서는 '영향을받지 않은 상태로 두는 경우'가 발생하지 않습니다).


좋은 생각 인 것 같습니다. 재설정과 같은 겉보기에는 단순한 것의 회색 음영이 너무 많습니다.
Oli Glaser

0

숙련 된 엔지니어 ( FPGA 설계 및 임베디드 시스템 분야에서 3 년 )로서 FPGA의 데이터 시트 및 사용자 가이드를 확인해야한다고 말합니다. 간단한 대답이 아닙니다.

당신은 할 필요가 설계에 맞는 FPGA 유형 이 선택합니다. 일부 FPGA에는 비동기 재설정을 위해 설계된 FlipFlop 이 있으며 , 일부는 동기화 재설정을 위해 설계되었습니다.

사용중인 FlipFlop 유형에 대해서는 FPGA 사용 설명서를 확인해야합니다.

구현 자 / 매퍼는 코드를 FPGA 프리미티브 유형과 일치하는 경우 재설정을위한 전용 경로를 선택 합니다 ( 코드는 더 높은 주파수에서 실행될 수 있고 공간이 더 적게 걸립니다 ).

어떤 경우 에도 설계가 작동 하지만 때로는 FPGA Implementor가 논리 작업을 수행하는 데 방해가 되지만 ( 논리를 더 추가 ) 최대 주파수가 낮아지고 FPGA 자원이 더 많이 발생합니다.

예 : Xilinx의 ZYNQ로 테스트했습니다 ( FPGA는 동기화 된 재설정을 위해 설계되었습니다 ( 프리미티브 사용자 안내서 참조 )). 비동기에서 동기화로 재설정을 변경 하면 최대 안정 주파수가 220MHz에서 258MHz로 이동 하여 주파수 마진을 전달했습니다.

또한 Implementor가 클럭 및 리셋 신호가 무엇인지 알지 못한다고 덧붙일 수 있습니다. 플립 플롭 핀을 이름이 아닌 ORDER로 신호에 할당합니다. 따라서 일부 FPGA에서 구현자는 VHDL에서 "process () begin"이후의 첫 번째 신호를 클럭으로, 일부는 재설정으로 구현 된 FPGA에 따라 첫 번째 신호를 선택합니다.


"구현자가 클럭 및 리셋 신호가 무엇인지 모른다"는 귀하의 진술에 동의하지 않습니다. 합성 툴은 클럭과 사용 방법에 따라 재설정되는 것을 유추합니다. 클럭 신호는 에지 사양과 함께 사용되며 리셋은하지 않습니다. 또한 모든 플립 플롭을 동기식 리셋 사양과 함께 사용할 수 있으며, 관찰 한 바와 같이 종종 중요한 경로가 더 빨라집니다.
Joe Hass 2013
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.