Cuando se abren simultáneamente varios identificadores DMA con el Intel® FPGA imagen de fábrica de la tarjeta de aceleración programable N3000, puede recibir errores de tiempo de espera de Poll (interrupción).
Los errores de tiempo de espera se deben a que el diseño de imágenes de fábrica tiene cuatro bloques DMA que comparten una interrupción.
Si su aplicación requiere varios identificadores DMA abiertos, personalice el diseño de AFU RTL y el código de software como se indica a continuación:
1. Diseño de RTL:
En el archivo afu.sv predeterminado, línea 257, dma_irq se envía a irq[0] del módulo avmm_ccip_host_wr.
.irq({3'b000, dma_irq}),
Personalice su diseño para mapear cada irq desde bloques DMA a un bit diferente.
2. Código de software:
En el archivo fpga_dma.c, línea 701~702, la función fpga Resalff99 utiliza 0 como id de vector fijo.
res = fpga Sincronizador(dma_h->fpga_h, FPGA_EVENT_INTERRUPT, dma_h->eh, 0 /*vector id */);
Registre diferentes identificadores para sus identificadores de dma que se mapean a los bits irq en el diseño RTL.
Por ejemplo, para acceder a DDRA y DDRB con dos identificadores de dma juntos, puede personalizar el código RTL para mapear dma_irq a irq[0] en afu_dma_0_inst para DDRA, y mapear dma_irq a irq[1] en afu_dma_1_inst para DDRB. En el código de software, utilice vector id 0 para el identificador dma 0 para acceder a DDRA, utilice el identificador de vector 1 para el controlador dma 1 para acceder a DDRB en la función fpga Resonar Ensa.