Home    Company News    高性能四通道CoaXPress采集卡PXle1004

高性能四通道CoaXPress采集卡PXle1004

Created on:2026-05-09 19:06

Hello-FPGA PXIe1004 User Manual

1 Introduction

1.1 CoaXPress Overview

CoaXPress (abbreviated as CXP) refers to a camera data transmission standard using coaxial cables for interconnection, mainly designed to replace the previous Camera Link protocol. It is commonly used in scientific cameras, industrial cameras, medical imaging, aerospace and defense applications. Due to cable type, transmission speed and other factors, Camera Link is no longer suitable for the ever-growing demand for data bandwidth.

CXP is an asymmetric high-speed point-to-point serial transmission protocol, mainly used for transmitting video and still images, with single or multiple coaxial cables typically used. The current 2.0 standard supports a maximum speed of 12.5 Gbps per lane. In addition to transmitting image data, each lane can also carry low-speed control signals (41.6 Mbps) and supply power to the camera via the same cable (Power-over-Coax), with a maximum cable length of 100 meters for a single cable.

The maximum line rate of a single coaxial cable is 12.5 Gbps, and single or multiple cables can be used. For example, four cables can provide a maximum data rate of 50 Gbps.

Long cable lengths are supported: up to 100 meters at 3.125 Gbps, and up to 35 meters at 12.5 Gbps.

Data transmission features real-time performance and low latency, with fixed latency.

Precise real-time triggering capability, supporting trigger transmission via coaxial cable without additional communication cables.

Flexible and reliable performance can be achieved by using standard coaxial cables such as RG59 and RG6 (RG6 is recommended).

Easy integration: images, control communication, and power can be transmitted through a single cable, and cables are cost-effective.

CXP is a point-to-point scalable interface, with 75Ω coaxial cables as the physical medium between devices and HOST. Each CXP interface includes one MASTER connection and several optional extended SLAVE connections, each requiring one coaxial cable. Devices typically number these connections, with MASTER fixed as 0 and SLAVE extended interfaces incrementing sequentially.

Figure 1-1 CXP Connection Structure

Figure 1-1 CXP Connection Structure

Each connection includes the following functions:

High-speed serial data (typically Device to Host Downconnection), up to 12.5 Gbps.

Low-speed serial data (typically Host to Device Upconnection), up to 41.6 Mbps.

Power supply function (Host to Device), up to 13W.

Figure 1-2 DownConnection and Upconnection

Figure 1-2 DownConnection and Upconnection

Table 1-1 CoaXPress Supported High-Speed Signal Rates

CXP Speed Bit Rate (Gbps)
CXP-1 1.250
CXP-2 2.500
CXP-3 3.125
CXP-5 5.000
CXP-6 6.250
CXP-10 10.000
CXP-12 12.500

1.2 Product Overview

HELLO-FPGA PXIe1004 is a high-performance four-channel CoaXPress (CXP) image acquisition card specifically designed for industrial imaging applications. This board supports the latest CoaXPress V2.0 standard, enabling simultaneous transmission of high-speed image data and power (Power over CoaxPress, PoCXP) through a single coaxial cable, simplifying system integration and wiring complexity. In addition, it provides rich external interfaces and internal expansion interfaces to meet various industrial automation requirements.

The PXIe1004 adopts AMD Virtex UltraScale+ FPGA as the core processing unit, providing powerful real-time image preprocessing capabilities and flexible user logic expansion options. It features top-tier logic and DSP resources, delivering strong parallel computing power, and achieves outstanding data throughput through high-speed interfaces such as GTY transceivers and PCIe.

When used with a 4R type daughter card, this board enables CXP interface conversion. Through the CXP interface on the daughter card, it can communicate with external cameras or analog sources, collect data signals from the opposite end into the PXIe1004 board via CXP cables, perform corresponding processing, and then transmit the data to the host computer through the PCIe interface for subsequent processing.

1.3 Key Features

Category Feature Description
Interface Standard Supports CoaXPress 2.0, four-channel HDBNC female connectors, each channel up to 12.5 Gbps
Host Interface PCIe Gen3 x8, backward compatible with Gen2/Gen1
FPGA Platform Xilinx XCKU060-FFVA1156-2-I, supports user-defined logic development
On-Board Memory 4 GB DDR4 SDRAM (64-bit, 2400 MHz) for frame buffering and data preprocessing
Chassis Power Supply Insert into a dedicated PXIe chassis for power supply and function implementation
Status Indication The FPGADONE indicator on the board will light up after the board starts up normally

2 Safety and Compliance

2.1 Safety Precautions for Use

Do not disassemble the casing without permission.

Do not hot-plug CXP cables; connect the cables first before powering on.

Do not input power exceeding the rated input voltage range.

Avoid storage and transportation in environments with water splashing, rain exposure, direct sunlight, strong electric fields, strong magnetic fields, severe vibration, etc.

2.2 Electrostatic Discharge (ESD) Guidelines

The PXIe1004 uses high-density FPGAs and high-speed interface chips, which are extremely sensitive to electrostatic discharge (ESD). Improper operation may cause permanent damage to the devices.

Pre-operation Preparation:

Operate in a dry environment (relative humidity <60%);

Use an anti-static workbench and anti-static wrist strap, and ensure reliable grounding;

Store the board in an anti-static bag until installation.

Installation Recommendations:

Remove the board from the anti-static bag only when installation is required;

Hold the board by the edges, avoiding contact with the gold fingers, FPGA, HDBNC interfaces, or I/O pins;

If the board is installed but not used for a long time, keep the host powered off and store it in a dry environment.

3 Quick Start Guide

3.1 Essential for Beginners: Before You Start

Hardware Requirements:

Chassis: Dedicated PXIe chassis

Power Supply: Directly insert into the chassis backplane to power the board

Memory: ≥4GB RAM

Hard Disk: ≥10GB available space

Operating System:

Windows 10/11 64-bit (Older versions of Windows are not recommended as abnormal issues may occur)

Linux Ubuntu 18.04/20.04/22.04 64-bit

3.2 Hardware Installation

3.2.1 Board Installation

Turn off the host power and unplug the power cord, discharge static electricity (anti-static wrist strap is recommended).

Open the chassis backplane, select a PXIe physical slot (it is recommended to use the slot close to the CPU for optimal bandwidth). Align the PXIe1004 acquisition card with the slot, insert it firmly vertically until fully seated,

Ensure the board is fully in contact with the interface in the PXIe chassis. Secure the board to the chassis to prevent loosening.

3.2.2 Power Supply Requirements

External Power Supply: 12V 2A power supply (maximum 5A) provided through a four-channel power cable.

Chassis Power Supply: Power is supplied by inserting into the PXIe chassis, no external power supply required.

4 PXIe1004

4.1 Hardware Features

4 independent interfaces, PCIe Gen3 x8 mode

FMC+, used in combination with FMC 4R daughter card

FMC HPC interface

2 sets of DDR4, model MT40A256M16GE-083E

Power supply to cameras via POC, maximum power of 17W per channel

0°-85°C operating temperature (Industrial Grade)

Figure 3-1 Front View of PXIe1004 Board

Figure 3-1 Front View of PXIe1004 Board

Figure 4-2 Back View of PXIe1004 Board

Figure 4-2 Back View of PXIe1004 Board

4.2 Engineering Implementation

4.2.1 Overview of Core Engineering Modules

4.2.1.1 DDR4 IP Core Configuration

The MIG IP controller is a DDR control IP provided by Xilinx for users, enabling users to easily read and write DDR memory through the DDR controller without understanding DDR control and read/write timing.

The DDR controller consists of three parts: User Interface Block, Memory Controller, and Physical Layer of DDR. Developers only need to develop user logic design to interface with the user interface of the DDR controller for reading and writing DDR data. For more information about the interface definition and timing of the DDR controller user side, please refer to the documentation provided by Xilinx (PG150). Next, we will introduce how to generate and configure the DDR controller.

Create a project, open the IP Catalog, and select DDR4 SDRAM (MIG). In the Basic interface, select the system clock corresponding to the board (100MHz) as the reference clock. Select the similar DDR model MT40A256M16GE-083E here, and set Data Width to 64 bits.

DDR4 MIG Configuration Interface

DDR4 MIG Configuration Interface

4.2.1.2 XDMA IP Core

The XDMA IP core (DMA for PCI Express) is a hardware IP core provided by AMD (formerly Xilinx), whose full name is "DMA Subsystem for PCI Express". It is an engine specifically responsible for high-speed data transfer between FPGA and host (CPU memory). It allows you to achieve ultra-high-speed, low-latency data transmission between FPGA and host software through the standard PCIe interface using DMA (Direct Memory Access) technology, with minimal CPU intervention.

XDMA Module Diagram

XDMA Module Diagram

In the current project, we use GEN3 X8 mode, so select 8gt/s rate and x8 lane width in the corresponding configuration of the IP.

4.2.1.3 DMA Stream Interface

In the current project, the DMA bit width is 256 bits.

DMA Stream Interface Diagram

DMA Stream Interface Diagram

Table 4-1 Video Stream DMA Interface

Signal Name Input/Output Bit Width Description
dma_clk Input STREAMS DMA stream clock.
dma_data Output 32*STREAM_WORDSxSTREAMS DMA stream data.
dma_empty Output WIDTH_O(1)xSTREAMS DMA empty indication, indicating the last transfer of a frame.
dma_valid Output STREAMS DMA stream data valid signal; when this signal goes low, transmission pauses.
dma_ready Input STREAMS DMA stream data reception ready signal.
dma_sop Output STREAMS Start of frame indication.
dma_eop Output STREAMS End of frame indication.
dma_sol Output STREAMS Start of line indication.
dma_eol Output STREAMS End of line indication.

Video DMA Stream is a general video stream interface. How do specific data correspond to pixels?

When STREAMS is 1 and STREAM_WORDS is 4, the dma_data bit width is 128 bits, and the data arrangement is as follows:

If the Device transmits 8-bit pixels, the output stream data through the DMA bus will contain 8-bit pixel data, with a total of 16 pixels per clock cycle. Pixel 0 occupies [7:0] of dma_data, pixel 1 occupies [15:8] of dma_data, and so on.

If the Device transmits 10/12/14/16-bit pixel images, the decoded stream will consist of 16-bit pixel data, with a total of 8 pixels per clock cycle. The data is placed in the lower 10/12/14/16 bits of 16 bits. For example, when 12-bit pixel input is used, the 0th pixel is in dma_data[11:0], the 1st pixel is in dma_data[27:16], and so on.

DMA_SOP and DMA_EOP indicate the start and end of a frame, respectively.

DMA_SOL and DMA_EOL indicate the start and end of a line, respectively.

DMA_EMPTY indicates the number of empty bytes in the last transfer frame. In our design, its value is always 0 when data is valid, and the data will be spliced internally.

Figure 4-3 Video DMA Timing

Figure 4-3 Video DMA Timing

4.2.2 Firmware Programming

Here, the constraint used in our project is SPI×4 mode. SPI×4 only requires a bin file or mcs file generated by the project for programming.

SPIx4 Configuration Code

SPIx4 Configuration Code

There are two ways to generate a bin file. First, the official generation method: click Settings in the Tools menu,

Tools Menu

Tools Menu

Enter the settings page, check the bin_file option in the Bitstream page, and the bin file will be automatically generated after compilation is completed. If the project has been compiled but this option was not checked before compilation, you can also check it after compilation and click the generate bitstream option in the GUI. At this time, the project will not be recompiled from scratch, but only regenerate the bit and bin files.

Bitstream Settings

Bitstream Settings

The second generation method is simpler: you can directly modify the suffix of the generated bit file to bin and then program it directly. This is because in principle, the bit file only has an additional header compared to the bin file, and the FPGA can automatically ignore it, so it can be used normally. However, it should be noted that this is only applicable when programming with a single bin file; it will fail if using multiboot startup.

The MCS file is generated by first clicking Generate Memory Configuration File... in the Tools menu.

MCS Generation Interface

MCS Generation Interface

Select MCS as the generated file type, and select the model in the red box in the following figure as the flash model.

Flash Model Selection

Flash Model Selection

Select SPI×4 for the interface, select the bit file generated just now for the bit file, and click OK. Wait for the interface shown in the following figure, indicating that the mcs file generation is completed.

Then program the mcs file according to the previous steps, select the flash model, and select the mcs file we just generated. Click OK. Wait for the file programming to complete.

After programming is completed, when the following window pops up, it can be judged that programming is successful. At this time, power off the board first, then unplug the programmer,

Power on again, and the program in the flash will start after power-on.

Programming Success Prompt

Programming Success Prompt

4.3 ImaGrab

ImaGrab is a Windows/Linux graphical client designed by Xingce Electronics, which can complete CoaXPress device discovery, parameter configuration, real-time preview and image acquisition without programming. It is suitable for on-site debugging, system integration and teaching demonstrations. For more detailed instructions on using the Img-Grab software, please refer to "Img-Grab Application User Manual" https://img-grab.com/filedownload/3000793

4.3.1 Main Functions

  • Scan and enumerate all connected PCIe acquisition cards and cameras mounted on the acquisition cards;
  • Supports GenICam standard parameter tree (exposure time, gain, trigger mode, ROI, etc.);
  • Real-time image display (supports zooming);
  • Manual/automatic acquisition control;
  • PoCXP power supply switch and current monitoring;
  • External I/O trigger signal configuration (input/output direction, level, routing);
  • Log export and firmware upgrade entry.

4.3.2 Interface Layout

The ImaGrab client adopts a modular design, and the main interface is divided into six functional areas for efficient user operation and monitoring.

Figure 4-4 ImaGrab Client Main Interface

Figure 4-4 ImaGrab Client Main Interface

4.3.3 ImgGrab Quick Usage Process

Start the Software

Double-click the desktop shortcut ImaGrab.exe to launch the client.

Scan and Connect to Camera

Click the [Refresh Devices] button in the toolbar, and the system will automatically scan the acquisition cards in the PCIe slots and the cameras mounted on them; double-click the target camera in the device list (Area 2), and the software will automatically establish a connection, load the GenICam XML description file, and display all configurable parameters in the property tree (Area 5).

Configure Camera Parameters

Width / Height: Set ROI;

ExposureTime: Adjust exposure time;

TriggerMode: Select trigger mode (Off/On);

LineSelector + LineMode: Configure External I/O functions.

Start Image Acquisition

Click the [Continuous Acquisition] button in the toolbar to start the real-time image stream;

Images will be displayed in the preview window (Area 4), along with information such as frame rate and resolution.

Save Images or Videos

Single frame: Click [Save Image], supports BMP/JPG/PNG;

Video: Click [Record Video], saved as .bin format.

4.3.4 GUI Test Examples

4.3.4.1 Imggrab Example

Figure 4-5 ImaGrab Actual Test Image 1

Figure 4-5 ImaGrab Actual Test Image 1

Figure 4-6 ImaGrab Actual Test Image 2

Figure 4-6 ImaGrab Actual Test Image 2

4.3.4.2 Qt Example

Figure 4-7 QT Example GUI

Figure 4-7 QT Example GUI

4.3.4.3 GenTL SDK Test Example

// 1. Initialize GenTL library
GCInitLib();

// 2. Open TransportLayer
TLOpen(&hTL);

// 3. Update Interface list and open the first Interface
TLUpdateInterfaceList(hTL,&changed,2000);
TLGetInterfaceID(hTL,0,ifaceID,&idSize);
TLOpenInterface(hTL,&hIF);

// 4. Update Device list and open the first Device
IFUpdateDeviceList(hIF,&changed,2000);
IFGetDeviceID(hIF,0,devID,&idSize);
IFOpenDevice(hIF,devID,DEVICE_ACCESS_CONTROL,&hDev);

// 5. Get Device Port handle (for reading/writing camera registers)
DevGetPort(hDev,&hDevice);

// 6. Open DataStream
DevGetDataStreamID(hDev,0,dsID,&idSize);
DevOpenDataStream(hDev,&hDS);

// 7. Allocate buffer and register event
DSAnnounceBuffer(hDS,buffer, payloadSize,NULL, &hBuf);
GCRegisterEvent(hDS,EVENT_NEW_BUFFER,&eventHand);
DSFlushQueue(hDS,ACQ_QUEUE_ALL_TO_INPUT);

// 8. Start acquisition
DSStartAcquisition(hDS,0, GENTL_INFINITE);

// 9. Write camera AcquisitionStart register (big-endian conversion)
startReg=swap_uint32(CAMERA_XML_ACQUISITION_START_VALUE);
GCWritePort(hDevice,CAMERA_XML_ACQUISITION_START_REG,&startReg,®Size);

// 10. Poll to get images
EventGetData(eventHand,buffer,&bufferSize,GENTL_INFINITE);
bufferHandle= ((EVENT_NEW_BUFFER_DATA*)buffer)->BufferHandle;
DSGetBufferInfo(hDS,bufferHandle,BUFFER_INFO_BASE,NULL,&imageData,&infoSize);
fwrite(imageData,1, payloadSize,videoFile);
DSQueueBuffer(hDS,bufferHandle);

// 11. Stop acquisition
GCWritePort(hDevice,CAMERA_XML_ACQUISITION_STOP_REG,&stopReg,®Size);
DSStopAcquisition(hDS,0);

// 12. Release resources (strictly in reverse order)
GCUnregisterEvent(hDS,EVENT_NEW_BUFFER);
DSFlushQueue(hDS,ACQ_QUEUE_ALL_DISCARD);
DSRevokeBuffer(hDS,hBuf,NULL,NULL);
DSClose(hDS);
DevClose(hDev);
IFClose(hIF);
TLClose(hTL);
GCCloseLib();
Figure 4-8 Running GenTL SDK Example

Figure 4-8 Running GenTL SDK Example

For GenTL SDK example testing, we can open a cmd terminal in the folder of the arv_capture_image.exe application, enter commands to run the application, which will start running and identify the device, print out relevant device information, then perform acquisition and save the acquired files.

Figure 4-9 GenTL SDK Example Identifying Device Information

Figure 4-9 GenTL SDK Example Identifying Device Information

Figure 4-10 GenTL SDK Example Acquisition

Figure 4-10 GenTL SDK Example Acquisition

The figure below shows each frame of image we acquired and saved, including printed image information.

Figure 4-11 Acquired Image Playback GUI

Figure 4-11 Acquired Image Playback GUI

Then we import the saved data into the imggrab host computer for playback to view the acquired image information.

Annex A: Reference Materials

1. CoaXPess JIIA CXP-001-2021