답변:
이것에 대한 많은 견해가있는 것 같습니다.
비동기식 어설 션, 동기식 어설 션은 좋은 방법이라고합니다. 이렇게하면 동기식 어설 션에서 클록이 실행되지 않거나 (또는 너무 느리게 실행되어 리셋 신호를 캡처하지 못함) 비동기식 어설 션에서 메타 스타 빌리티가 발생할 수 있습니다.
나머지 디자인 재설정에 연결된 출력과 함께 재설정 동기화 기 (2 개의 FF)를 사용합니다.
몇 가지 토론 :
비동기 및 동기화 재설정
문자 동기화시 및 비동기 재설정
몇 가지 이유로 (특정 순서없이) 동기 재설정보다 비동기 재설정을 선호합니다.
궁극적으로 이러한 문제 중 어느 것도 쇼 스토퍼라고 생각하지 않지만 ASIC의 비동기식 재설정을 강력하게 선호합니다.
동기식 어설 션을 사용한 비동기식 재설정은 매우 효과적입니다. 위에서 언급했듯이 비동기 리셋 플롭은 더 작고 리셋을 보장하기 위해 클럭 활성화가 필요하지 않으므로 전원과 단 하나의 유선 핀 또는 리셋시.
이것을 정말로 파고 싶다면 Cumming의 논문, 특히 다음을 읽을 수 있습니다.
http://www.sunburst-design.com/papers/CummingsSNUG2003Boston_Resets.pdf
건배.
'비동기 어설트 / 싱크 릴리스'접근법보다 훨씬 더 안전 해 보이는 또 다른 접근법은 비동기 리셋 검출기를 사용하는 것입니다 (비동기식 '어설트'및 동기식 '릴리스'를 사용하여 다른 곳에서 설명한 것처럼). 비동기식으로 재설정하지 않고 바깥 쪽을 향한 I / O 장치를 게이트합니다 (탐지기 자체의 래치 제외). 하나는 I / O 라인 용 하나와 동기식 리셋 검출기를 공급하기위한 하나의 비동기식 리셋 검출기를 사용하는 경우, 그리고 하나는 I / O 라인 용 하나를 설계하여 신뢰할 수있을만큼 충분한 사운드를 갖는 리셋 펄스에 의해서만 트립되도록합니다. 메인 검출기를 트립하면 CPU를 재설정하지 않을 경우 출력 글리치가 발생하지 않도록 할 수 있습니다. 이 작업을 수행하면 합법적 인 길이의 재설정 펄스가 출력을 비동기식으로 재설정합니다.
고려해야 할 또 다른 사항은 시스템에 종종 재설정의 영향을받지 않는 일부 레지스터가 있다는 것입니다. 비동기 리셋이 해당 레지스터에 쓰는 회로에 영향을 줄 수있는 경우, 깨끗하지 않은 펄스 일지라도 잘못된 시간에 도달 한 리셋 펄스가 해당 레지스터를 클로버 할 수 있습니다. 예를 들어, 코드가 주소 1111에 쓰려고 시도하고 클록 펄스 직전에 도달하는 비동기 리셋이 클록 펄스가 도달하는 것처럼 주소 래치 중 하나를 0으로 강제 설정하면 1110에 잘못된 쓰기가 발생할 수 있습니다. 하나는 조합 지연으로 여러 내부 리셋 라인을 사용하여 주소가 클로버되기 전에 레지스터 쓰기가 비활성화되도록 할 수 있으며 동기식 내부 리셋 로직을 사용하면 문제를 완전히 피할 수 있습니다.
BTW, 여기 개념을 설명하는 회로가 있습니다. 왼쪽 하단 근처에는 리셋을위한 두 개의 로직 입력이 있습니다. 하나는 "깨끗한"리셋 펄스를 생성하고 다른 하나는 정말 불안정한 펄스를 생성합니다. 노란색 LED는 기본 시스템 재설정을 나타냅니다. 청록색 LED는 I / O 활성화를 나타냅니다. 클린 리셋을하면 출력이 즉시 "리셋"됩니다. icky 리셋에 도달하면 출력 리셋 지연이 발생하거나 영향을받지 않습니다 (시뮬레이터에서는 '영향을받지 않은 상태로 두는 경우'가 발생하지 않습니다).
숙련 된 엔지니어 ( FPGA 설계 및 임베디드 시스템 분야에서 3 년 )로서 FPGA의 데이터 시트 및 사용자 가이드를 확인해야한다고 말합니다. 간단한 대답이 아닙니다.
당신은 할 필요가 설계에 맞는 FPGA 유형 이 선택합니다. 일부 FPGA에는 비동기 재설정을 위해 설계된 FlipFlop 이 있으며 , 일부는 동기화 재설정을 위해 설계되었습니다.
사용중인 FlipFlop 유형에 대해서는 FPGA 사용 설명서를 확인해야합니다.
구현 자 / 매퍼는 코드를 FPGA 프리미티브 유형과 일치하는 경우 재설정을위한 전용 경로를 선택 합니다 ( 코드는 더 높은 주파수에서 실행될 수 있고 공간이 더 적게 걸립니다 ).
어떤 경우 에도 설계가 작동 하지만 때로는 FPGA Implementor가 논리 작업을 수행하는 데 방해가 되지만 ( 논리를 더 추가 ) 최대 주파수가 낮아지고 FPGA 자원이 더 많이 발생합니다.
예 : Xilinx의 ZYNQ로 테스트했습니다 ( FPGA는 동기화 된 재설정을 위해 설계되었습니다 ( 프리미티브 사용자 안내서 참조 )). 비동기에서 동기화로 재설정을 변경 하면 최대 안정 주파수가 220MHz에서 258MHz로 이동 하여 주파수 마진을 전달했습니다.
또한 Implementor가 클럭 및 리셋 신호가 무엇인지 알지 못한다고 덧붙일 수 있습니다. 플립 플롭 핀을 이름이 아닌 ORDER로 신호에 할당합니다. 따라서 일부 FPGA에서 구현자는 VHDL에서 "process () begin"이후의 첫 번째 신호를 클럭으로, 일부는 재설정으로 구현 된 FPGA에 따라 첫 번째 신호를 선택합니다.