取消
显示结果 
搜索替代 
您的意思是: 
926 次查看
注册日期: ‎12-06-2019

如何缩短PL与PS数据通信时间

转到解答

工程背景:ADC的读写时序和数据处理由PL完成,之后将处理好的数据给到PS;Processor: 7020-2;

我用AXI Lite slave作为数据交换总线,ADC IP端为slave,8个目标数据放在AXI寄存器中,在PS端读取这8个寄存器的时间为3us左右;测试代码如下:

	while(1){
		getRunTmUs();
		for(i = 0; i < 8; i++){
			reg[i] = Xil_In32(XPAR_AXI_LED_TEST_V0_2_0_BASEADDR + table[i]);
		}
		nTm = getRunTmUs();	// get the time of reading ADC data
		Xil_Out32(XPAR_AXI_LED_TEST_V0_2_0_BASEADDR, reg[0]);
	}

我的问题是:

1. AXI的中断功能如何使用?我想实现IP数据准备好后,通过中断告知PS,PS响应中断读取数据;

2. 是否有更快的数据交换方法,如何实现?比如:PL处理完数据,直接写到DDR(不占用PS处理时间),然后中断告知PS,PS响应中断从DDR读取数据;

0 项奖励
1 个已接受解答

已接受的解答
Highlighted
Moderator
Moderator
915 次查看
注册日期: ‎07-01-2019

回复: 如何缩短PL与PS数据通信时间

转到解答

你好 kevin.xiao@excelpoint.com.cn ,

 

1、可以用户逻辑设计一个结束信号,然后参考这条帖子的配置将此信号标记为interrupt型信号,之后连接到zynq的IRQ_F2P上。

2、一方面可以使用AXI-Full协议,一次burst传输8个数据;另一方面Zynq有HP Port和ACP Port,AXI Master可以通过这两个端口直接读写DDR

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------

在原帖中查看解决方案

18 条回复18
Highlighted
Moderator
Moderator
916 次查看
注册日期: ‎07-01-2019

回复: 如何缩短PL与PS数据通信时间

转到解答

你好 kevin.xiao@excelpoint.com.cn ,

 

1、可以用户逻辑设计一个结束信号,然后参考这条帖子的配置将此信号标记为interrupt型信号,之后连接到zynq的IRQ_F2P上。

2、一方面可以使用AXI-Full协议,一次burst传输8个数据;另一方面Zynq有HP Port和ACP Port,AXI Master可以通过这两个端口直接读写DDR

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------

在原帖中查看解决方案

Highlighted
909 次查看
注册日期: ‎12-06-2019

回复: 如何缩短PL与PS数据通信时间

转到解答
好的,谢谢!
再问一下,AXI Master准备写DDR时,PS也正在写DDR,谁来做仲裁?
0 项奖励
Highlighted
Moderator
Moderator
878 次查看
注册日期: ‎07-01-2019

回复: 如何缩短PL与PS数据通信时间

转到解答

你好 kevin.xiao@excelpoint.com.cn ,

 

可以查看一下ug585 ddr控制器章节

hp port和apu使用的是不同的端口,也就是仲裁由ddr控制器完成

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
Highlighted
770 次查看
注册日期: ‎12-06-2019

回复: 如何缩短PL与PS数据通信时间

转到解答
如果用AXI-Stream协议,对本应用,会不会更快?
0 项奖励
Highlighted
Moderator
Moderator
754 次查看
注册日期: ‎07-01-2019

回复: 如何缩短PL与PS数据通信时间

转到解答

你好 kevin.xiao@excelpoint.com.cn ,

 

PS与PL的数据交互只能通过AXI-Lite或者AXI-Full协议来完成,如果你数据源端和目的端都在PL侧的话,那这两端倒是可以使用AXI-Stream接口来做数据传输。

但从你的描述中,你的ADC IP生成的数据是一定要在PS中做处理的吧,那这样就只能用AXI-Full。

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
Highlighted
690 次查看
注册日期: ‎12-06-2019

回复: 如何缩短PL与PS数据通信时间

转到解答
非常感谢你的回复,消除了我的疑虑!
0 项奖励
Highlighted
532 次查看
注册日期: ‎12-06-2019

回复: 如何缩短PL与PS数据通信时间

转到解答

我打包了我的ADC_IP, 用AXI_FULL把数据给PS端的DDR,请问DDR的目标地址怎么设定?

IP中的“C_AXI_M_DATA_OUT_TARGET_SLAVE_BASE_ADDR”,是目标地址吗?如下图1

按照图1的默认设置,vitis中有一个“XPAR_PS7_DDR_0_S_AXI_BASEADDR”的宏定义(如图2),这个宏定义是什么地址,跟图1的地址是不是应该一致?

TIM截图20200326083345.png

TIM截图20200326084037.png

0 项奖励
Highlighted
Moderator
Moderator
502 次查看
注册日期: ‎07-01-2019

回复: 如何缩短PL与PS数据通信时间

转到解答

你好 kevin.xiao@excelpoint.com.cn ,

 

你用的是Xilinx提供的AXI-Full Master模板吗?模板提供的功能是将一串递增的数据写到Slave侧,然后再回读进行比较。也就是说需要你自己来修改逻辑满足你要的功能。

这个配置界面的Slave Base Address就是下游Slave的基地址,如果你连接的是HP Port的话,可用的范围不能超过0x3FFFFFFF,这部分可以参考ug585 Chapter4

 

XPAR_PS7_DDR_0_S_AXI_BASEADDR宏定义是DDR在地址空间中的开始地址,地址空间最前面的1MB留给了OCM,这个宏定义用户不需要修改,而且跟配置界面的地址不需要一致

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
Highlighted
479 次查看
注册日期: ‎12-06-2019

回复: 如何缩短PL与PS数据通信时间

转到解答

谢谢你的及时回复!

没错,我用AXI-FULL MASTER模板,master接到了HP;

你提到的Slave基地址就是master的目标吗?假设这个地址在UI上重新配置,同步到vitis中,会不会有相应的宏定义?


另外,我在UI上修改Slave基地址参数为0x10000000(如图1),然后,"Edit in IP packger"查看该参数(如图2),发现该地址仍然是0x40000000(如图3);

请问他们是不是应该保持一致,为什么没有更新?(按我理解,代码中的地址才是最终生效的)

TIM截图20200326093800.png

TIM截图20200326094046.png

TIM截图20200326093844.png

0 项奖励
Highlighted
Moderator
Moderator
474 次查看
注册日期: ‎07-01-2019

回复: 如何缩短PL与PS数据通信时间

转到解答

你好 kevin.xiao@excelpoint.com.cn ,

 

GUI界面中配置的参数在RTL代码的上一级,IP Packager有个tcl脚本,如果你打开看的话会发现这层关系。其实很像模块例化,将GUI界面的参数传递到了底层模块,所以基地址按GUI界面配置为准。

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
Highlighted
455 次查看
注册日期: ‎12-06-2019

回复: 如何缩短PL与PS数据通信时间

转到解答

我在xparameter.h里只看到了一个AXI接口的地址映射(如图1);没有发现MASTER的AXI映射地址;

我的IP包含两个AXI接口:AXI_Lite_Slave, AXI_Full_master;(如图2);

这跟lscript文件(如图3)是否有关?

图1图1

图2图2图3图3

0 项奖励
Highlighted
Moderator
Moderator
437 次查看
注册日期: ‎07-01-2019

回复: 如何缩短PL与PS数据通信时间

转到解答

你好 kevin.xiao@excelpoint.com.cn ,

 

抱歉,上一条的回复有误,纠正一下:

AXI-lite slave接口的会在xparameter中找到此地址,Master接口的目标地址的是找不到的,应用程序都是都是针对ARM来说的,底层其他的Master做了什么ARM也不知晓。

ARM可以做的就是,通过模块的AXI-Lite接口输入一些配置参数,然后Master接口自行完成设定的功能。与Link script是无关的。

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
Highlighted
399 次查看
注册日期: ‎12-06-2019

回复: 如何缩短PL与PS数据通信时间

转到解答
了解,谢谢! 我现在GUI上修改Slave基地址参数为0x10000000;重新生成bitstream文件; 应该怎么更新到vitis去?(原来的地址为0x40000000) 如何在vitis里确认该参数是否更新成功?
0 项奖励
Highlighted
Moderator
Moderator
396 次查看
注册日期: ‎07-01-2019

回复: 如何缩短PL与PS数据通信时间

转到解答

你好 kevin.xiao@excelpoint.com.cn ,

 

你只要修改过GUI上的参数,生成比特流、导出硬件描述文件,就算更新过了。如果想要验证的话可以用以下两个办法:

一种方法是用ILA抓一下Master接口的信号波形,能看到数据传输,而且满足你的要求就是更新成功了。

还有一种方法是在Memory中观察一下0x10000000开始的数据,和你预想的结果一致也是更新成功了。

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
Highlighted
149 次查看
注册日期: ‎12-06-2019

回复: 如何缩短PL与PS数据通信时间

转到解答

谢谢回复!

经过测试,PL Master写DDR这种方式,PS读数据的速度很快;

我发现vivado自带的axi代码模板可读性很差,请问,你有别的AXI代码例程可以参考吗?我需要在此基础上添加我ADC的那部分,将AD数据发送给PS。

 

0 项奖励
Highlighted
Moderator
Moderator
144 次查看
注册日期: ‎07-01-2019

回复: 如何缩短PL与PS数据通信时间

转到解答

你好 kevin.xiao@excelpoint.com.cn ,

 

对你的应用来说Master端口写操作其实最需要关注的就是awaddr、awvalid、awready;wdata、wvalid、wready、wlast,其中awready和wready是slave侧来控制的。这些信号可以照着模板来写,然后建议你将ADC数据先存入FIFO,通过FIFO的empty或almost empty信号来判断何时开始突发传输。

 

至于其他的例程,也许你可以新开一个帖子问一下其他工程师有没有,一般来说应用不同,master的写法也不一样。

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
Highlighted
138 次查看
注册日期: ‎12-06-2019

回复: 如何缩短PL与PS数据通信时间

转到解答

了解,谢谢!

我看模板里面写完了,又读回比较是否写对;你觉得读回,比较有必要做吗?

0 项奖励
Highlighted
Moderator
Moderator
133 次查看
注册日期: ‎07-01-2019

回复: 如何缩短PL与PS数据通信时间

转到解答

读回的目的是检测数据是否正确,如果你需要实时地数据检测那可以做这个操作;如果你的目的是通过HP Port获取高带宽数据传输,读回会导致效率很低,所以看你需求。在SDK上用C代码或者肉眼观察Memory空间也是可以检测数据的。

 

另外模板中的数据是ramp up的,用户的数据通常是随机的,所以你还需要另外添加存储单元比如BRAM来实现比较的功能。

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励