FPGA Digital I/O 지연



주요한 소프트웨어:
주요한 소프트웨어 버전: 1.0
문제가 해결된 소프트웨어 버전: N/A
부차적인 소프트웨어: N/A

문제점: FPGA Digital Output에 Digital Input을 바로 연결했을때 왜 지연이 발생합니까?

솔루션:

아래와 같은 그림을 예로 들어보겠습니다.

 

Figure 1: Block Diagram of test code

이 코드는 아래와 같은 동작을 합니다.

Figure 2: Graph of test data obtained from test code

파란색선은 Input Pin Level을 평균한 것을 나타내고 붉은 선은 Ouput Pin Level을 평균한 것입니다. 위 그림에서 보이듯이 50ns정도의 지연이 Input과 Output 사이에서 발생합니다. 이 중 케이블의 영향이 10ns를 차지합니다.

LabVIEW FPGA는 동기화 레지스터가 40ns의 지연을 갖고 있습니다. 이것은 Digital Input Node가 자동으로 설정되어 있기 때문이고 이는 LabVIEW FPGA는 Output 을 위해 2개의 동기화 레지스터가 필요하다는 말이 됩니다.

왜 동기화 레지스터를 사용합니까?

레지스터는 Input과 Output 데이터 타이밍을 보장합니다. 만약 입력의 거의 Clock Cycle의 마지막 즈음에 High신호를 발견한다면, 다음 Cycle에서 바로 값을 시작하기 위해 레지스터에 저장을 하게 됩니다. 이것은 데이터가 1Clock 사이클 안에 로직을 통과할수 있게 해줍니다.

만약 동기화 레지스터의 값을 0으로 한다면 어떤 일이 일어납니까?

동기화 레지스터의 값을 FPGA I/O Properties 대화상자에서 바꿀 수 있습니다. 아래의 링크를 참조하시기 바랍니다.

LabVIEW 2011 FPGA Module Help: Advanced Code Generation Page (FPGA I/O Properties Dialog Box)

이 그래프는 동기화 레지스터의 값을 0으로 했을때의 동작을 보여줍니다.

Figure 3: Graph of test data after Synchronization Register set to 0

이경우 입력신호는 동일한 FPGA의 사이클에 있으므로 FPGA 로직과 동기화 되었습니다. 따라서 안정성의 문제는 고려하지 않은 상황입니다. 10ns는 긴 케이블에 의한 영향입니다.

오직 고유한 동기화 레지스터를 갖고 있는 HDL 인터페이스를 노드나 CLIP, HDL코드를 사용하는 경우에만 Number of Synchronizing Registers for Output Data의 값을 0으로 설정하시기 바랍니다. 그렇지 않을 경우 안정화에 문제가 생겨 FPGA VI가 예기치 않은 동작을 초래할 수 있습니다. Input 신호를 처리하고 Output신호를 준비하는 충분한 시간이 항상 존재하지는 않기 때문에 안정성에 문제가 생길수 있습니다. 만약 Input의 Clock Cycle의 마지막 즈음 데이터를 받는다면 Output은 출력을 생성하지 못할 것입니다. 이것이 동기화 레지스터가 중요한 이유입니다.



관련 링크: LabVIEW 2011 FPGA Module Help: Advanced Code Generation Page (FPGA I/O Properties Dialog Box)

첨부:





리포트 날짜: 11/11/2009
마지막 업데이트: 12/08/2014
문서 번호: 53A81SQ4