FPGA XDMA 인터럽트 모드는 PCIE X8 HDMI 비디오 캡처를 실현합니다. 엔지니어링 소스 코드 및 QT 호스트 컴퓨터 소스 코드를 제공합니다.

1. 소개

PCIE(PCI Express)는 현재 업계에서 널리 사용되는 점대점 직렬 연결을 채택합니다.PCI 및 이전 컴퓨터 버스의 공유 병렬 아키텍처와 비교하여 각 장치는 전용 연결을 가지고 있습니다.대역폭을 요청할 필요가 없습니다. 데이터 전송 속도를 매우 높은 주파수로 향상시키고 PCI가 제공할 수 없는 고대역폭을 달성하는 것은 현재 다양한 산업에서 고속 인터페이스가 선호하는 방향이며 높은 실용적 가치와 학습 가치를 가지고 있습니다.

이 디자인은 Xilinx의 공식 XDMA 솔루션을 사용하여 Xilinx 시리즈 FPGA를 기반으로 PCIE 통신 플랫폼을 구축하고 XDMA 인터럽트 모드를 사용하여 QT 호스트 컴퓨터와 통신합니다. 즉, QT 호스트 컴퓨터는 소프트웨어 인터럽트를 통해 FPGA와의 데이터 상호 작용을 구현합니다. 노트북을 사용하여 HDMI를 시뮬레이트 카메라와 HDMI 비디오는 FPGA 개발 보드의 ADV7611 디코딩 칩에 입력되어 HDMI 비디오를 RGB 비디오로 디코딩한 다음 FDMA 비디오 3프레임 버퍼 아키텍처를 통해 비디오를 DDR에 씁니다. XDMA는 DDR3에서 비디오를 읽고 PCIE를 통과합니다. 버스는 컴퓨터 호스트로 전송되고 컴퓨터 호스트는 QT 호스트 컴퓨터 소프트웨어를 실행하고 QT 소프트웨어는 온-오프 모드를 통해 PCIE에서 보낸 이미지 데이터를 수신하고 이미지를 표시합니다. 실시간;

이 설계의 핵심은 xdma_inter.v의 XDMA 인터럽트 모듈을 작성했다는 것입니다. 이 모듈은 드라이버와 협력하여 인터럽트를 처리하는 데 사용됩니다. xdma_inter.v는 AXI-LITE 인터페이스를 제공합니다. 호스트 컴퓨터는 사용자 공간 주소에 액세스하여 xdma_inter.v의 레지스터를 읽고 씁니다. 모듈은 user_irq_req_i에 의해 입력된 인터럽트 비트에 인터럽트 비트 번호를 등록하여 XDMA IP로 출력하고, 상위 컴퓨터의 드라이버가 인터럽트에 응답하면 인터럽트에 xdma_inter.v 레지스터를 써서 처리된 인터럽트를 클리어한다.

이 솔루션은 Xilinx 시리즈 FPGA에만 적용할 수 있으며 XDMA 설치 드라이버와 QT 호스트 컴퓨터 소스 코드를 제공하여 XDMA를 사용하여 번거로운 드라이버와 호스트 컴퓨터 소프트웨어 개발을 찾고 vivado 프로젝트를 구축하는 수고를 덜어줍니다. 복잡한 PCIE 프로토콜에 대한 걱정 없이 PCIE를 쉽게 사용할 수 있도록 XDMA 사용 방법을 몰라서 당혹감을 덜어줍니다. 내 개발 보드는 PCIE X8만 지원하므로 제공된 코드는 PCIE X8 아키텍처입니다. PCIE X1, X2, X8, X16, X32는 이 프로젝트를 직접 수정하거나 저를 팔로우하면 실시간으로 새 프로젝트를 공개합니다.
이 프로젝트는 고급 응용 프로그램을 위한 PCIE 통신을 구현하고 QT 호스트 컴퓨터와 비디오 전송 테스트를 수행합니다.
여기에 이미지 설명 삽입
이 기사에서는 XDMA를 기반으로 PCIE 통신 플랫폼을 구축하는 설계 체계에 대해 자세히 설명합니다.엔지니어링 코드는 보드에서 포괄적으로 컴파일 및 디버깅할 수 있으며 직접 이식할 수 있습니다.의료, 군사 및 기타 산업의 고속 인터페이스 분야;
완전하고 원활한 엔지니어링 소스 코드 및 기술 지원 제공,
엔지니어링 소스 코드 및 기술 지원을 얻는 방법은 기사 끝에 있으니 끝까지 기다려주십시오.

2. 기존 PCIE 솔루션

내 홈페이지에는 XDMA의 폴링 모드를 기반으로 QT 호스트 컴퓨터와 데이터 상호 작용을 구현하는 PCIE 통신 칼럼이 있습니다.RIFFA 기반 PCIE 솔루션과 XDMA 기반 PCIE 솔루션이 모두 있으며 간단한 데이터 상호 작용과 속도 측정이 모두 있습니다. 또한 응용 프로그램 수준 이미지 수집 및 전송, 다음은 열 주소입니다.
직접 이동하려면 클릭하십시오
. 또한 내 홈페이지에는 XDMA 인터럽트 모드를 기반으로 QT 호스트 컴퓨터와의 데이터 상호 작용을 실현하는 인터럽트 모드의 PCIE 통신 열이 있습니다. 칼럼 주소는 다음과 같습니다. 클릭하시면 바로가기

3. PCIE 이론

이 부분은 Baidu나 csdn이나 Zhihu에서 이론적 지식을 배울 수 있는데 사실 XDMA를 사용하고 PCIE까지는 복잡한 프로토콜과 이론이 필요 없다. . .

4. 전반적인 디자인 아이디어 및 계획

전체적인 디자인 아이디어와 계획은 다음과 같습니다.
여기에 이미지 설명 삽입

비디오 캡처 및 버퍼링

랩톱 컴퓨터를 사용하여 HDMI 카메라를 시뮬레이션하고 HDMI 비디오를 FPGA 개발 보드 온보드 ADV7611 디코딩 칩에 입력하고 HDMI 비디오를 RGB 비디오로 디코딩합니다. 순수 Verilog에 의해 구현된 i2c 프로토콜은 ADV7611 디코딩 칩, 설계 구성은
1920x1080 @60Hz 해상도,
FDMA 이미지 캐시:
FDMA 이미지 3 프레임 캐시, 내 기사를 자주 읽는 형제는 이것이 FDMA 컨트롤러와 FDMA로 구성된 내 일반적인 이미지 캐시 루틴임을 알고 있습니다. , 그 기능은 입력 비디오를 캐싱하는 것입니다. DDR3에서 3개의 프레임 버퍼를 수행한 후 판독한 후 이미지 데이터의 입출력을 클록 도메인에서 읽고 쓸 수 있도록 하는 것이 목적이며 출력 이미지가 안정적입니다. 찢어지지 않고, FDMA의 자세한 설계 설명은 이전 기사를 참조하십시오. 클릭 바로가기

XDMA 소개

Xilinx에서 제공하는 PCIExpressIP용 DMASubsystem은 PCIE2.0 및 PCIE3.0에 적합한 구성 가능한 고성능 SG 모드 DMA로, 사용자가 선택할 수 있는 AXI4 인터페이스 또는 AXI4-Stream 인터페이스를 제공합니다. 일반적으로 AXI4 인터페이스는 시스템 버스 상호 연결에 추가할 수 있으며, 이는 대용량 데이터의 비동기 전송에 적합하며 일반적으로 DDR이 사용되며 AXI4-Stream 인터페이스는 대기 시간이 짧은 데이터 스트림 전송에 적합합니다.
XDMA는 블록 DMA가 아닌 SGDMA입니다.SG 모드에서 호스트는 전송할 데이터를 연결 목록 형태로 구성한 다음 연결 목록의 첫 번째 주소를 BAR을 통해 XDMA로 보냅니다.XDMA는 전송 작업을 완료합니다. 연결 목록 구조의 첫 번째 주소에 따라 연결된 목록에 의해 차례로 지정됩니다. XDMA 블록 다이어그램은 다음과 같습니다:
여기에 이미지 설명 삽입
AXI4, AXI4-Stream, 데이터 전송을 위해 하나를 선택해야 합니다. AXI4-Lite 마스터는 선택 사항이며 실현하는 데 사용됩니다. PCIE BAR 주소에서 AXI4-lite 레지스터 주소로의 매핑이며 사용자 논리 레지스터를 읽고 쓰는 데 사용할 수 있습니다.
AXI4-Lite 슬레이브는 옵션이며 사용자 로직에 대한 XDMA 내부 레지스터를 여는 데 사용됩니다. 사용자 로직은 이 인터페이스를 통해 XDMA 내부 레지스터에 액세스할 수 있으며 BAR에 매핑되지 않습니다.
낮은 대기 시간 데이터 전송에 사용할 수 있는 PCIE 통과 사용자 논리 액세스를 구현하는 데 사용되는 AXI4 Bypass 인터페이스(옵션).

XDMA 인터럽트 모드

이 설계의 핵심은 xdma_inter.v의 XDMA 인터럽트 모듈을 작성했다는 것입니다. 이 모듈은 드라이버와 협력하여 인터럽트를 처리하는 데 사용됩니다. xdma_inter.v는 AXI-LITE 인터페이스를 제공합니다. 호스트 컴퓨터는 사용자 공간 주소에 액세스하여 xdma_inter.v의 레지스터를 읽고 씁니다. 모듈은 user_irq_req_i에 의해 입력된 인터럽트 비트에 인터럽트 비트 번호를 등록하여 XDMA IP로 출력하고, 상위 컴퓨터의 드라이버가 인터럽트에 응답하면 인터럽트에 xdma_inter.v 레지스터를 써서 처리된 인터럽트를 클리어한다.
또한 이 프로그램에서는 AXI-BRAM을 사용하여 사용자 공간의 읽기 및 쓰기 액세스 테스트를 시연합니다.

QT 호스트 컴퓨터 및 해당 소스 코드

QT 호스트 컴퓨터 이 프로그램은 VS2015 + Qt 5.12.10을 사용하여 호스트 컴퓨터의 개발 소프트웨어 환경을 완성합니다.QT 프로그램은 공식 XDMA API를 호출하여 인터럽트 모드에서 FPGA와 데이터 상호 작용을 실현합니다.이 루틴은 읽기 및 쓰기 속도 측정을 구현합니다. QT 호스트 컴퓨터를 제공합니다. 소프트웨어 및 해당 소스 코드의 경로는 다음과 같습니다.
여기에 이미지 설명 삽입
QT 소스 코드의 스크린샷은 다음과 같습니다.
여기에 이미지 설명 삽입

5. vivado 프로젝트에 대한 자세한 설명

개발 보드 FPGA 모델: Xilinx–xc7k325tffg900-2,
개발 환경: Vivado2022.2,
입력: HDMI, 해상도 1920x1080@60Hz,
출력: PCIE2.0 X8,
애플리케이션: QT 호스트 컴퓨터 비디오 디스플레이 테스트,
프로젝트 BD:
여기에 이미지 설명 삽입
XDMA 인터럽트 수를 설계해야 하며 구성은 다음과 같습니다.
여기에 이미지 설명 삽입
동시에 XDMA 인터럽트 모듈의 인터럽트 수도 다음과 같이 4로 설정됩니다.
여기에 이미지 설명 삽입
합성 후 코드 구조는 다음과 같습니다.
여기에 이미지 설명 삽입
FPGA 리소스 합성이 컴파일된 후 소비 및 전력 소비는 다음과 같이 추정됩니다.
여기에 이미지 설명 삽입

6. 보드 디버깅 및 검증

PCIe 수신 비디오 테스트를 위한 호스트 컴퓨터 테스트 프로그램을 열고 QT 소프트웨어를 엽니다. 실험 결과는 다음과 같습니다.
여기에 이미지 설명 삽입

7. 복리후생 : 공학코드 습득

이점: 엔지니어링 코드 얻기
코드가 너무 커서 이메일로 보낼 수 없으며 일정 수준의 네트워크 디스크 링크로 전송됩니다.
데이터 수집 방법: 개인 또는 기사 끝의 V 명함.
네트워크 디스크 정보는 다음과 같습니다.
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입

추천

출처blog.csdn.net/qq_41667729/article/details/131206275