可交付资料:
1. 详细的用户手册
2. Design File:Post-synthesis EDIF netlist or RTL Source
3. Timing and layout constraints,Test or Design Example Project
4. 技术支持:邮件,电话,现场,培训服务
联系方式:
Email:neteasy163z@163.com
- 介绍
基于PCI Express Integrated Block,Multi-Channel PCIe QDMA&RDMA Subsystem实现了使用DMA地址队列和DMA Ring缓冲的独立多通道、高性能Continous或Scather Gather DMA,提供FIFO/AXI4-Stream用户接口。
-
- 1 特性
- 支持Ultrascale+,Ultrascale,7 Series的PCI Express Integrated Block
- 支持64,128,256,512-bit数据路径
- 64-bit源地址,目的地址,和描述符地址
- 多达8个独立的host-to-card(H2C/Read)数据通道或H2C DMA
- 多达8个独立的card-to-host(C2H/Write)数据通道或C2H DMA
- AXI4-Stream/FIFO用户接口(每个通道都有自己的AXI4-Stream/FIFO接口)
- 每个DMA引擎支持DMA地址队列,队列深度可达32
- 每个DMA引擎支持DMA Ring缓冲,Ring缓冲深度和个数可配置
- H2C DMA支持视频显示定时时序输入控制
- AXI4-Lite Master接口允许PCIe通信绕过DMA引擎
- Scather Gather描述符列表支持无限列表大小
- 每个描述符的最大传输长度为4GB
- MSI中断
- 连续描述符的块获取
- 中断或查询模式
- 2 应用
本内核体系结构支持广泛的计算和通信目标程序应用,强调性能、成本、可扩展性、功能可扩展性和关键任务可靠性。典型应用包括:
● 数据通信网络
● 电信网络
● 宽带有线和无线应用
● 网络接口卡
● 用于各种应用程序的服务器add-in card
典型应用如下图所示:
图 1 Multi-Channel PCIe QDMA&RDMA Subsystem典型应用:8通道视频采集和视频显
2. 概述
Multi-Channel PCIe QDMA&RDMA Subsystem作为一个高性能DMA数据搬移器,内核通过AXI4-Stream/FIFO接口直接连接RTL逻辑。使用提供的字符驱动程序,AXI4-Stream/FIFO接口可用于PCIe地址空间和AXI地址空间之间的高性能数据搬移。除了基本的DMA功能,DMA支持多达8个独立的upstream和downstream通道,每个通道支持深度为32的DMA地址队列,以及深度和个数可配置的DMA Ring缓冲,另外还允许PCIe通信绕过DMA引擎。
图 2 Multi-Channel PCIe QDMA&RDMA Subsystem概述
2.1 特性概要
基于描述符提供的信息:源地址,目的地址和传输数据长度,Multi-Channel PCIe QDMA&RDMA Subsystem实现Host存储器和PCIe DMA子系统之间的数据搬移。这些DMA可以同时是Host to Card(H2C)和Card to Host(C2H)传输。每个DMA通道对应各自的AX4-Stream/FIFO接口,DMA从Host存储器获取并解析描述符链表,基于描述符链表信息完成自己通道的数据传输,然后使用MSI中断发出描述符完成或错误的信令。内核也提供多达16个输出到Host的用户中断信号。
主机可以通过以下2个接口访问用户逻辑:
- AXI4-Lite Master配置接口:这个接口是一个固定的32-bit端口,用于对性能要求不高的用户配置和状态寄存器的访问
- User Register:这个接口是多个32-bit向量信号和1-bit信号,这些信号来自对应DMA通道数据搬移过程中产生的控制或状态信号
- 3. 产品规格
结合Integrated Block for PCI Express IP,Multi-Channel PCIe QDMA&RDMA Subsystem为PCIe提供了一个高性能的DMA解决方案。
3.1 性能
Endpoint配置参数:Max Payload Size=256-byte,Max Read Request Size=512-byte
8-Channel PCIe-SGQDMA Subsystem,DMA Transfer Length = 4MB
表1 PCIe 3.0 x16 C2H DMA速率
DMA0 | DMA1 | DMA2 | DMA3 | DMA4 | DMA5 | DMA6 | DMA7 | |
速率 | 1660MB/s | 1660MB/s | 1660MB/s | 1660MB/s | 1660MB/s | 1660MB/s | 1660MB/s | 1660MB/s |
表2 PCIe 3.0 x16 H2C DMA速率
DMA0 | DMA1 | DMA2 | DMA3 | DMA4 | DMA5 | DMA6 | DMA7 | |
速率 | 1670MB/s | 1670MB/s | 1670MB/s | 1670MB/s | 1670MB/s | 1670MB/s | 1670MB/s | 1670MB/s |
表3 PCIe 3.0 x8 C2H DMA速率
DMA0 | DMA1 | DMA2 | DMA3 | DMA4 | DMA5 | DMA6 | DMA7 | |
速率 | 880MB/s | 880MB/s | 880MB/s | 880MB/s | 880MB/s | 880MB/s | 880MB/s | 880MB/s |
表4 PCIe 3.0 x8 H2C DMA速率
DMA0 | DMA1 | DMA2 | DMA3 | DMA4 | DMA5 | DMA6 | DMA7 | |
速率 | 890MB/s | 890MB/s | 890MB/s | 890MB/s | 890MB/s | 890MB/s | 890MB/s | 890MB/s |
表5 PCIe 2.0 x8 C2H DMA速率
DMA0 | DMA1 | DMA2 | DMA3 | DMA4 | DMA5 | DMA6 | DMA7 | |
速率 | 450MB/s | 450MB/s | 450MB/s | 450MB/s | 450MB/s | 450MB/s | 450MB/s | 450MB/s |
表6 PCIe 2.0 x8 H2C DMA速率
DMA0 | DMA1 | DMA2 | DMA3 | DMA4 | DMA5 | DMA6 | DMA7 | |
速率 | 455MB/s | 455MB/s | 455MB/s | 455MB/s | 455MB/s | 455MB/s | 455MB/s | 455MB/s |
3.2 资源
8-Channel PCIe-SGQDMA Subsystem
表7 PCIe 3.0 x16 DMA Subsystem资源
LUTs | FFs | BRAMs | PCIe | |
资源 | 46985 | 101938 | 150 | 1 |
表8 PCIe 3.0 x8 DMA Subsystem资源
LUTs | FFs | BRAMs | PCIe | |
资源 | 26388 | 51935 | 78 | 1 |
表9 PCIe 2.0 x8 DMA Subsystem资源
LUTs | FFs | BRAMs | PCIe | |
资源 | 26945 | 38687 | 55 | 1 |
8-Channel PCIe-CQDMA Subsystem
表10 PCIe 3.0 x16 DMA Subsystem资源
LUTs | FFs | BRAMs | PCIe | |
资源 | 34976 | 75994 | 150 | 1 |
表11 PCIe 3.0 x8 DMA Subsystem资源
LUTs | FFs | BRAMs | PCIe | |
资源 | 19364 | 37487 | 78 | 1 |
表12 PCIe 2.0 x8 DMA Subsystem资源
LUTs | FFs | BRAMs | PCIe | |
资源 | 20973 | 29963 | 55 | 1 |
3.4 端口描述
Multi-Channel PCIe QDMA&RDMA Subsystem直接和integrated block for PCIe连接。和PCIe integrated block IP数据路径接口的宽度是64,128,256或512-bit,时钟频率最高可达250MHz。除了AXI4-Lite Master接口,数据路径宽度适用于所有数据接口。AXI4-Lite Master接口的宽度固定为32-bit。
以下列表描述了这个IP的端口(默认数据路径接口宽度是512-bit,PCIe接口是x16)。
表15 参数定义
参数名称 | 描述 | 默认值 |
CNUM | H2C和C2H的通道数量 | 8 |
C2H_BUF_BRAM_CASCADE_DEPTH | C2H数据缓冲区的BRAM级联深度 0:BRAM深度=29=512 1:BRAM深度=29+1=1024 …… N:BRAM深度=29+N | 0 |
C2H_BUF_USE_URAM | C2H数据缓冲区是否使用URAM 0:不使用URAM 1:使用URAM | 0 |
C2H_BUF_URAM_CASCADE_DEPTH | H2C数据缓冲区的URAM级联深度 0:URAM深度=212=4096 1:URAM深度=212+1=8192 …… N:URAM深度=212+N | 0 |
H2C_BUF_BRAM_CASCADE_DEPTH | H2C数据缓冲区的BRAM级联深度 0:BRAM深度=29=512 1:BRAM深度=29+1=1024 …… N:BRAM深度=29+N | 0 |
H2C_BUF_USE_URAM | H2C数据缓冲区是否使用URAM 0:不使用URAM 1:使用URAM | 0 |
H2C_BUF_URAM_CASCADE_DEPTH | C2H数据缓冲区的URAM级联深度 0:URAM深度=212=4096 1:URAM深度=212+1=8192 …… N:URAM深度=212+N | 0 |
表16 顶层接口信号
信号名称 | 方向 | 描述 |
pcie_trn_clk | 输出 | PCI Express Transaction接口时钟 |
pcie_trn_reset_n | 输出 | PCI Express Transaction复位,低有效 |
trn_lnk_up | 输出 | PCI Express Transaction Link Up信号,高有效 |
表17 PCIe接口信号
信号名称 | 方向 | 描述 |
pcie_refclk_p | 输入 | PCI Express 接口参考时钟+ |
pcie_refclk_n | 输入 | PCI Express 接口参考时钟- |
pcie_perst_n | 输入 | PCI Express接口基本复位,低有效 |
pci_exp_txp[15:0] | 输出 | PCI Express串行差分输出+,16通道 |
pci_exp_txn[15:0] | 输出 | PCI Express串行差分输出-,16通道 |
pci_exp_rxp[15:0] | 输入 | PCI Express串行差分输入+,16通道 |
pci_exp_rxn[15:0] | 输入 | PCI Express串行差分输入-,16通道 |
表18 H2C通道0-CNUM-1 FIFO(FWFT)接口信号
信号名称 | 方向 | 描述 |
fifo_rdclk_disp [CNUM-1:0] | 输入 | FIFO读时钟 Bit i,表示H2C通道i的读时钟 |
fifo_rdrstn_disp [CNUM-1:0] | 输入 | FIFO读复位,低有效 Bit i,表示H2C通道i的读复位 |
fifo_rdreq_disp [CNUM-1:0] | 输入 | FIFO读使能,高有效 Bit i,表示H2C通道i的读使能 |
fifo_q_disp [512*CNUM-1:0] | 输出 | FIFO读数据 Bit 512*(i+1)-1~512*i,表示H2C通道i的读数据 |
fifo_empty_disp [CNUM-1:0] | 输出 | FIFO空,高有效 Bit i,表示H2C通道i的缓存空信号 |
fifo_prog_empty_disp [CNUM-1:0] | 输出 | FIFO可编程空(阈值等于16),高有效 Bit i,表示H2C通道i的缓存可编程空信号 |
表19 C2H通道0-CNUM-1 FIFO接口信号
信号名称 | 方向 | 描述 |
fifo_wrclk_acq [CNUM-1:0] | 输入 | FIFO写时钟 Bit i,表示C2H通道i的写时钟 |
fifo_wrrstn_acq [CNUM-1:0] | 输入 | FIFO写复位,低有效 Bit i,表示C2H通道i的写复位 |
fifo_wrreq_acq [CNUM-1:0] | 输入 | FIFO写使能,高有效 Bit i,表示C2H通道i的写使能 |
fifo_data_acq [512*CNUM-1:0] | 输入 | FIFO写数据 Bit 512*(i+1)-1~512*i,表示C2H通道i的写数据 |
fifo_prog_full_acq [CNUM-1:0] | 输出 | FIFO可编程满(阈值等于深度-16),高有效 Bit i,表示C2H通道i的缓存可编程满信号 |
表20 Config AXI4-Lite Master接口信号
信号名称 | 方向 | 描述 |
m_axil_awaddr[31:0] | 输出 | write address |
m_axil_awprot[2:0] | 输出 | write protection type |
m_axil_awvalid | 输出 | write address valid |
m_axil_awready | 输入 | write address ready |
m_axil_wdata[31:0] | 输出 | write data |
m_axil_wstrb[3:0] | 输入 | write strobes |
m_axil_wvalid | 输出 | write valid |
m_axil_wready | 输入 | write ready |
m_axil_bresp[1:0] | 输入 | write response |
m_axil_bvalid | 输入 | write response valid |
m_axil_bready | 输出 | response ready |
m_axil_araddr[31:0] | 输出 | read address |
m_axil_arprot[2:0] | 输出 | read protection type |
m_axil_arvalid | 输出 | read address valid |
m_axil_arready | 输入 | read address ready |
m_axil_rdata[31:0] | 输入 | read data |
m_axil_rresp[1:0] | 输入 | read response |
m_axil_rvalid | 输入 | read valid |
m_axil_rready | 输出 | read ready |
表21 中断接口信号
信号名称 | 方向 | 描述 |
usr_intr_pos[15:0] | 输入 | 用户中断输入。 Bit i:用户中断#i输入,上升沿有效。 |
表22 软复位接口信号
信号名称 | 方向 | 描述 |
c2h_dma_grst_n | 输出 | C2H DMA全局复位输出,低有效。 |
c2h_dma_fsm_srst_n [CNUM-1:0] | 输出 | C2H通道i的DMA FSM复位输出,低有效。 |
c2h_dma_buf_srst_n [CNUM-1:0] | 输出 | C2H通道i的DMA Buffer复位输出,低有效。 |
h2c_dma_grst_n | 输出 | H2C DMA全局复位输出,低有效。 |
h2c_dma_fsm_srst_n [CNUM-1:0] | 输出 | H2C通道i的DMA FSM复位输出,低有效。 |
h2c_dma_buf_srst_n [CNUM-1:0] | 输出 | H2C通道i的DMA Buffer复位输出,低有效。 |
表23 用户寄存器接口信号
信号名称 | 方向 | 描述 |
acquisition_stat [32*CNUM-1:0] | 输入 | CNUM个C2H通道状态 Bit 32*(i+1)-1~32*i,表示C2H通道i的状态 |
display_stat [32*CNUM-1:0] | 输入 | CNUM个H2C通道状态 Bit 32*(i+1)-1~32*i,表示H2C通道i的状态 |
acquisition_res [32*CNUM-1:0] | 输出 | CNUM个C2H通道的分辨率设置 Bit 32*(i+1)-1~32*i,表示C2H通道i的分辨率 |
display_res [32*CNUM-1:0] | 输出 | CNUM个H2C通道的分辨率设置 Bit 32*(i+1)-1~32*i,表示H2C通道i的分辨率 |
acquisition_fps [32*CNUM-1:0] | 输出 | CNUM个C2H通道的帧率设置 Bit 32*(i+1)-1~32*i,表示C2H通道i的帧率 |
display_fps [32*CNUM-1:0] | 输出 | CNUM个H2C通道的帧率设置 Bit 32*(i+1)-1~32*i,表示H2C通道i的帧率 |
acquisition_xfer_size [32*CNUM-1:0] | 输出 | CNUM个C2H通道的传输大小设置 Bit 32*(i+1)-1~32*i,表示C2H通道i的传输长度 |
display_xfer_size [32*CNUM-1:0] | 输出 | CNUM个H2C通道的传输大小设置 Bit 32*(i+1)-1~32*i,表示H2C通道i的传输长度 |
acquisition_xfer_num [32*CNUM-1:0] | 输出 | CNUM个C2H通道的传输总数设置 Bit 32*(i+1)-1~32*i,表示C2H通道i的传输总数 |
display_xfer_num [32*CNUM-1:0] | 输出 | CNUM个H2C通道的传输总数设置 Bit 32*(i+1)-1~32*i,表示H2C通道i的传输总数 |
acquisition_enable [CNUM-1:0] | 输出 | CNUM个C2H通道的采集使能,高有效 Bit i = 1,表示使能C2H通道i采集 |
display_enable [CNUM-1:0] | 输出 | CNUM个H2C通道的显示使能,高有效 Bit i = 1,表示使能H2C通道i显示 |
display_timing_enable[CNUM-1:0] | 输出 | CNUM个H2C通道的内部显示定时使能,高有效。 Bit i = 1,表示使能H2C通道i内部显示定时 |
display_timing_ext_enable[CNUM-1:0] | 输出 | CNUM个H2C通道的外部显示定时使能,高有效。 Bit i = 1,表示使能H2C通道i外部显示定时 |
acq_usr_reset[CNUM-1:0] | 输出 | CNUM个C2H通道的用户复位信号 Bit i,表示C2H通道i用户复位信号 |
disp_usr_reset[CNUM-1:0] | 输出 | CNUM个H2C通道的用户复位信号 Bit i,表示H2C通道i用户复位信号 |
usr_ctrl[31:0] | 输出 | 用户控制信号输出 |
usr_ctrl2[31:0] | 输出 | 用户控制#2信号输出 |
usr_stat[31:0] | 输入 | 用户状态信号输入 |
acq_blk_baddr_l[32*CNUM-1:0] | 输出 | CNUM个VID-ACQ数据块基址LSB Bit 32*(i+1)-1~32*i,表示ACQ#i的数据块基址 |
disp_blk_baddr_l[32*CNUM-1:0] | 输出 | CNUM个VID-DISP数据块基址LSB Bit 32*(i+1)-1~32*i,表示DISP#i的数据块基址 |
acq_blk_baddr_h[32*CNUM-1:0] | 输出 | CNUM个VID-ACQ数据块基址MSB Bit 32*(i+1)-1~32*i,表示ACQ#i的数据块基址 |
disp_blk_baddr_h[32*CNUM-1:0] | 输出 | CNUM个VID-DISP数据块基址MSB Bit 32*(i+1)-1~32*i,表示DISP#i的数据块基址 |
acq_blk_size[32*CNUM-1:0] | 输出 | CNUM个VID-ACQ数据块大小 Bit 32*(i+1)-1~32*i,表示ACQ#i的数据块总数 |
disp_blk_size[32*CNUM-1:0] | 输出 | CNUM个VID-DISP数据块大小 Bit 32*(i+1)-1~32*i,表示DISP#i的数据块总数 |
acq_blk_num[32*CNUM-1:0] | 输出 | CNUM个VID-ACQ数据块总数 Bit 32*(i+1)-1~32*i,表示ACQ#i的数据块大小 |
disp_blk_num[32*CNUM-1:0] | 输出 | CNUM个VID-DISP数据块总数 Bit 32*(i+1)-1~32*i,表示DISP#i的数据块大小 |
acq_usr_param [32*CNUM-1:0] | 输出 | CNUM个VID-ACQ用户参数 Bit 32*(i+1)-1~32*i,表示ACQ#i的用户参数 |
disp_usr_param [32*CNUM-1:0] | 输出 | CNUM个VID-DISP用户参数 Bit 32*(i+1)-1~32*i,表示DISP#i的用户参数 |
acq_pkt_num [32*CNUM-1:0] | 输入 | CNUM个VID-ACQ数据包总数 Bit 32*(i+1)-1~32*i,表示ACQ#i的数据包总数 |
disp_pkt_num [32*CNUM-1:0] | 输入 | CNUM个VID-DISP数据包总数 Bit 32*(i+1)-1~32*i,表示DISP#i的数据包总数 |
acq_dsc_pkt_num [32*CNUM-1:0] | 输入 | CNUM个VID-ACQ丢弃数据包总数 Bit 32*(i+1)-1~32*i,表示ACQ#i的丢弃数据包总数 |
disp_dpl_pkt_num [32*CNUM-1:0] | 输入 | CNUM个VID-DISP复制数据包总数 Bit 32*(i+1)-1~32*i,表示DISP#i的复制数据包总数 |
表24 Display FPS Timing通道0-CNUM-1接口信号
信号名称 | 方向 | 描述 |
fifo_wrclk_disp_fps [CNUM-1:0] | 输入 | FIFO写时钟 Bit i,表示Display FPS Timing通道i的写时钟 |
fifo_wrrstn_disp_fps [CNUM-1:0] | 输入 | FIFO写复位,低有效 Bit i,表示Display FPS Timing通道i的写复位 |
fifo_wrreq_disp_fps [CNUM-1:0] | 输入 | FIFO写使能,高有效 Bit i,表示Display FPS Timing通道i的写使能 |
fifo_prog_full_disp_fps [CNUM-1:0] | 输出 | FIFO可编程满,高有效 Bit i,表示Display FPS Timing通道i的缓存可编程满信号 |