datamover完成ZYNQ片内PS与PL间的数据传输.docx
-
资源ID:837781
资源大小:63.97KB
全文页数:4页
- 资源格式: DOCX
下载积分:3金币
快捷下载

账号登录下载
微信登录下载
三方登录下载:
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
datamover完成ZYNQ片内PS与PL间的数据传输.docx
datamover完成ZYNQ片内PS与P1间的数据传输分享下PS与P1之间数据传输比较另类的实现方式,实现目标是:1、传输时数据不能滞留在一端,无论是1个字节还是IK字节都能立即发送;2、P1端接口为FIFo接口;PS到P1的数据传输流程:PS到P1的数据传输相对简单,使用vivado自带的axidatamover即可完成,详细如下:V,Zynq片内,PS_数据产生模块data_generateAX1StreamP1到PS的高速数据传输控制axi_datamoverAXi总;axiIinect数据互联模块AXIFu11AX1Jaxi_iinect步骤B、C、D、EA1Strean1步骤A自定义控制接M红色线条为PS到P1的传输控制数据通道绿色线条为PS到P1的用户数据通道控制指令产生和状态上报模块PSp1datacontro1A、向P1端查询剩余数据存储长度(以byte为单位);B、通过写寄存器设置P1端DMA数据传输开始地址;C、通过写寄存器设置P1端DMA数据传输长度(以byte为单位);D、通过写寄存器启动P1端DMA传输;E、通过读寄存器查询P1端DMA是否完成数据传输;PS(ARM)端驱动代码如下:defineWRITE_SPACE_REG0x84000004defineps2p1_SA0x84000008defineps2p1_1ENGTH0x8400000Cdefineps2p1_START0x84000010#defineps2p1_FINISHED0x84000014data_space=Xi1_In32(WRITE_SPACE_REG);voidinit_axi_dma_simp1e_write(u32num)(Xi1_Out32(ps2p1_SA,(unsignedint)recvram);Xi1_Out32(ps2p1_1ENGTH,(0x80000000÷num);Xi1OUt32(ps2P1START,0x00000001);whi1e(!(Xi1_In32(ps2p1_FINISHED)&0x00000001);)P1到PS的数据传输流程:P1到PS的数据传输相对复杂点,vivado自带axi_datamover测试发现有时不太正常,所以按照ViVadO自带axi_datamover接口协议重新写了模块,详细如下:Zynq数据产生模块datagenerateFIFO撩U数据互联模块dataaxiconnectXIStreamP1到PS的高速数据传输控制axidatamoverAXIFu11数据校验模块datacheckFIFO自定义控训接口AXIS:reamAXIPS到P1的高速数据传输控制axidatcUoverStr÷am步骤B、D、E红色线条为P1到PS的传输控制数据通道绿色线条为P1到PS的用户数据通道控制指令产生和状态上都psp1de1tacontro1步骤A、CA、通过读寄存器查询待传输数据长度(以byte为单位);B、通过写寄存器设置P1端DMA数据传输开始地址;C、通过写寄存器设置数据传输长度(以byte为单位);D、通过写寄存器启动数据传输;E、通过读寄存器查询P1端DMA是否完成数据传输;注:数据传输长度有数值限制,假如待传输数据长度为8byte的整数倍,则每次的数据传输长度也必须为8byte的整数倍。假如待传输数据长度不是8byte的整数倍,以15byte为例,只能以下面两种方式读取:1、第一次读取8byte,第二次读取7byte;2、一次读取15bytc0为了简化这种限制,可以使每次的待传输数据长度小于PS端的缓存,这样可以一次读取所有待传输的数据,也就是第二种读取方式。PS(ARM)端代码如下:defineREAD_NUM_REG0x84000044definep12ps_DA0x84000048definep12ps_1ENGTH0x8400004Cdefinep12ps_START0x84000050definep12ps_FINISHED0x84000054data_return=Xi11n32(READ_NUM_REG);voidinit_axi_dma_simp1e_read(u32num)(Xi1_0ut32(p12ps_DA,(unsignedint)recvram);Xi1_0ut32(p12ps_1ENGTH,(0x80000000+num);Xi1_Out32(p12ps_START,0x00000001);whi1e(!(Xi1_In32(p12ps,FINISHED)0x00000001);)附件为在vivado中打包好的用于p12ps传输的ipo文章转载自:otod3r附件大小axis2mmdatamover.rar148.56KB