Su una comunicazione dispositivo zynq tra il processore Cortex-A9 e FPGA viene fatto utilizzando il protocollo AXI. Ci sono tre tipi di porte che possono essere utilizzati per la comunicazione tra FPGA e CPU (Zynq TRM):
- General Purpose porte AXI: 2x Master (da CPU a FPGA) e la porta 2x Slave (da FPGA per CPU). queste porte sono collegate all'interconnessione centrale del sistema di elaborazione e possono essere utilizzate per trasferire dati da/a memoria DDR o memoria on-chip (OCM).
- High Performance porte AXI: porta 4x Slave (da FPGA per CPU) fornire un accesso ad alta bandwidith a DDR o OCM
- ACP (Acceleratore Coerenza Porta): porta Slave (da FPGA per CPU) porta ad alta troughput collegato direttamente all'unità di controllo snoop (SCU). La SCU mantiene la coerenza della cache (ommette la necessità di svuotare/invalidare la cache).
Dalla tua domanda, vorrei capire che nel tuo caso la CPU è il Maestro della comunicazione. Sarà necessario utilizzare le porte master axi General-Purpose. Non è possibile collegare un'interfaccia di streaming AXI4 all'interconnessione AXI. Dovrai convertire AXI4 Streaming in AXI. A seconda delle prestazioni, è necessario un core IP AXI DMA (AXI DMA IP core).
Se si desidera comunicare dal punto di vista del software utilizzando "open (/ dev /)" è necessario un driver di periferica Linux. Se si utilizza il nucleo DMA vostra comunicazione in genere simile a questa:
- potrete configurare il nucleo DMA per recuperare i dati da un certo indirizzo di memoria
- Avviare il nucleo DMA
- il nucleo DMA preleverà i dati e alimentali all'interfaccia di streaming AXI4 del tuo blocco IP
- Il tuo blocco IP eseguirà qualche operazione sui dati e li rimetterà in memoria (usando DMA) o eseguirà qualcos'altro (invia all'interfaccia esterna, ...)
Il set di registri del core DMA sarà mappato in memoria e accessibile tramite il proprio driver di periferica linux. Per motivi di debug, suggerirei di utilizzare mmap per accedere ai registri e convalidare rapidamente le operazioni dell'hardware. Una volta che si utilizza il driver di periferica del kernel linux, suggerisco di leggere questo libro: Linux Device Drivers 3the edition
fonte
2015-06-24 19:20:46
L'hardware Zynq non ha interfacce AXI-Stream. Questo significa che il tuo è stato aggiunto al PL, e senza ulteriori dettagli sulla tua connettività non sarà possibile aiutarti. –