2016-06-06 4 views
0

자일링스 Zynq 칩의 프로그래머블 로직에서 동작하는 내 Verilog 모듈 중 하나에서 특정 신호 (디지털 펄스)를 생성 중이다. 신호는 약 200MHz의 클록으로 매우 빠릅니다. 나중에 응용 프로그램을 제어하기 위해 실행되는 간단한 리눅스 및 프레임 버퍼 Qt 인터페이스가 있습니다.FPGA PL 및 PS 프레임 버퍼 인터페이스가있는 오실로스코프 유형 디자인?

내 Qt 애플리케이션에서 오실로스코프와 같은 인터페이스를 만들기 위해 어떻게 신호를 샘플링 할 수 있습니까? 나는 생성하고있는 맥박을 시각적으로 보여주고 싶다.

클럭 주파수에서 충분한 데이터를 샘플링하려면 무엇을 사용해야합니까? 커널 모듈이나 mmap을 Qt에 어떻게 전달합니까?

답변

0

대부분의 오실로스코프가 수행하는 작업을 수행하는 것이 가장 좋습니다. 데이터를 RAM으로 샘플링 한 다음 디스플레이/분석을 위해 프로세서로 전송하여보다 "느슨한"속도로 수행하십시오.

FPGA 측에서는 모드 레지스터의 비트가 소프트웨어 측에서 설정되기 시작한 후 일종의 시작 또는 트리거 조건을 감지하는 상태 시스템이 필요합니다.

그러면 상태 머신은 하나 이상의 블록 램으로 구성된 버퍼에 샘플을 채 웁니다. 캡처 된 샘플 중간에 트리거를 배치하려면 순환 버퍼로 트리거를 계속 기록하고 트리거 후 샘플의 구성 가능한 수를 중지하여 트리거 조건 이전의 원하는 번호를 유지합니다 그것을 뒤 따르는 새로운 것들에 의해 덮어 쓰기되지 않습니다.

FPGA 블록 램은 일반적으로 듀얼 포트이기 때문에 다른 포트를 CPU 버스에 연결하여 판독 할 수 있습니다. 레지스터가 샘플링 상태 머신의 상태를 읽는 것을 원할 것입니다. 원형 버퍼 접근 방식을 사용하면 중지 된 주소를 사용하여 데이터를 선형 레코드 시간에 풀 수 있습니다.

스트리밍 실시간 샘플링을 시도하는 것이 가능할 수도 있지만 실시간으로 생성 된 데이터로 의미있는 모든 작업을 수행 할 수 있다는 것은 분명하지 않습니다. 그래도 샘플링과 프로세서 버스 사이에 FIFO 버퍼를 두어야 할 필요가있는 경우에는 데이터를 청크로만 소비 할 수 있고 그 사이의 다른 작업을 처리해야하므로 뭔가가 필요합니다. 샘플의 일정한 유입을 흡수해야했습니다. 또 다른 접근법은 샘플을 외부 시스템 램에 직접 쓰는 DMA 엔진을 만들려고 시도하는 것이지만, 그것은 더 어려울 것입니다.

CPU에서 사용할 수있는 고속 인터페이스가 있는지 확인할 수도 있습니다. 예를 들어 원래 비디오 용으로 의도 된 것일 수 있습니다.

또한 디지털 신호 만 측정하는 것으로 나타납니다 (즉, 1 비트 오류). FPGA 패브릭이 지원할 수있는 것보다 높은 입력 샘플 속도를 처리하고자한다면, FPGA 에지에서 디시리얼라이저 블록과 같은 것을 사용하여 1 비트 입력 스트림을 더 넓은 샘플의 느린 스트림으로 바꿀 수 있음을 의미 할 수 있습니다 저장할 수 있습니다.

출력 측면에서 버퍼의 샘플 벡터를 얻은 후에는 확대/축소, 커서 주석, 자동 측정 등 원하는대로 스코프/로직 분석기 유형 플롯으로 전환하는 것이 매우 간단합니다.

또한 개발 중에이 기능을 사용하려는 의도 만있는 경우 FPGA 및 해당 도구는 종종 프로그래밍에 대한 프로그래밍 인터페이스를 통해 청구 된 데이터와 함께 설계에 바로 로직 분석기를 구축 할 수 있다는 점도 잊지 마십시오 PC.