FPGA에서 높은 샘플링 속도로 DMA FIFO를 사용할 때 데이터 누락

업데이트 됨 Jan 9, 2020

해당 제품

하드웨어

  • PXIe-7975
  • PXIe-7976
  • PXIe-7965
  • PXIe-7966
  • NI-5782
  • NI-5792
  • NI-5793
  • NI-7931
  • NI-7932
  • NI-7935
  • PXIe-5644
  • PXIe-5645
  • PXIe-5646
  • PXI FPGA Module for FlexRIO

소프트웨어

  • LabVIEW Full
  • LabVIEW FPGA Module

문의사항

FlexRIO를 어댑터 모듈과 함께 사용하여 아날로그 신호를 수집합니다. 샘플 속도를 100MS/s보다 높게 설정하면 수집 된 신호에서 일부 데이터 포인트가 누락 된 것 처럼 보입니다. FPGA Target과 호스트 컴퓨터 간의 데이터 전송에 DMA FIFO를 사용합니다.
200MS / s :
100 MS / s :

해결책

이 상황에서는 데이터 처리량이 부족하여 호스트 측 DMA FIFO가 오버플로됩니다. FIFO가 넘치지 않도록 전송 속도를 높여야합니다.

처리량(Throughput) 증가 :

  • 최적의 데이터 유형을 사용하여 FPGA와 데이터를 주고 받으십시오. 예를 들어, FPGA 타겟이 DMA를 통해 부호없는 32 비트(U32) 데이터 전송을 지원하는 경우 2개의 16 비트 값을 1개의 U32 값으로 결합하여 전송할 수 있습니다. 지원되는 전송 데이터 크기에 대해서는 FPGA 타겟 설명서를 참조하십시오.
  • 호스트 측 FIFO depth를 높입니다. 그렇게 하려면 FIFO.Configure (Invoke Method)를 사용하십시오 .
  • FIFO.Read (Invoke Method)의 Number of Elements 매개 변수를 증가시키십시오.
  • FIFO.Read (Invoke Method)를 더 자주 호출하십시오.
  • FPGA 측 FIFO depth를 높이십시오.
참고 : FPGA 측 FIFO depth를 늘리면 FPGA 리소스 사용량이 커지고 FPGA 코드를 다시 컴파일해야합니다.
 

온보드 메모리 활용 :

  • 많은 FPGA 디바이스에는 데이터를 전송할 준비가 될 때까지 데이터를 저장하는 데 사용할 수있는 온보드 메모리가 있습니다.
  • 이를 통해 사용자는 온보드 메모리가 있는 한 대상에서 호스트로 샘플을 스트리밍할 수 있는 것보다 빠른 속도로 데이터를 수집할 수 있습니다
  • FlexRIO 디바이스를 사용하면 이러한 목적으로 DRAM을 사용할 수 있습니다