UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

取消
显示结果 
搜索替代 
您的意思是: 
Highlighted
296 次查看
注册日期: ‎05-17-2018

Zynq-7000 通过BRAM实现PS、PL数据共享问题

PS-PL_gai.png

由于项目原因,最近开始研究Zynq芯片,以前只写过纯逻辑,所以在使用Zynq时遇到很多问题。

现在,我想实现PL数据通过PortB写入BRAM,再将写入的数据通过PortA读入PS端完成数据共享,上述框图是我根据网上的部分教程搭建的,PS部分与BRAM的PortA端口已连接好了,请问PortB部分如何连接到PL部分呢?是否需要“Make External“引出呢?

另外,已经搭建好的Block作为程序的一部分是否还需要”Create HDL Wrapper“再在顶层例化一次呢?

0 项奖励
8 条回复8
Xilinx Employee
Xilinx Employee
254 次查看
注册日期: ‎03-27-2013

回复: Zynq-7000 通过BRAM实现PS、PL数据共享问题

现在,我想实现PL数据通过PortB写入BRAM,再将写入的数据通过PortA读入PS端完成数据共享,上述框图是我根据网上的部分教程搭建的,PS部分与BRAM的PortA端口已连接好了,请问PortB部分如何连接到PL部分呢?是否需要“Make External“引出呢?

需要,除非你有用户自定义的IP可以在IPI中直接和这个接口对接。

另外,已经搭建好的Block作为程序的一部分是否还需要”Create HDL Wrapper“再在顶层例化一次呢?

需要,另外建议你参考下UG940和UG898这里面有些不错的实验

Best Regards,
Jason
-----------------------------------------------------------------------------------------------
Please mark the Answer as "Accept as solution" if the information provided is helpful.

Give Kudos to a post which you think is helpful and reply oriented.
-----------------------------------------------------------------------------------------------
0 项奖励
Xilinx Employee
Xilinx Employee
248 次查看
注册日期: ‎06-02-2017

回复: Zynq-7000 通过BRAM实现PS、PL数据共享问题

Hi @zhuanzhigezhongbingdu123 ,

 

针对你提出的需求,是完全可以的,我们之前有过类似的案例。只不过有些地方需要注意。

首先你例化的BRAM的双端口,一端会有PS通过BRAM ctrl控制,所以例化的BRAM是“BRAM Controller”Mode。于是PL侧逻辑控制BRAM的另外一个端口时需要注意,与standalone mode不同,BRAM controller mode要求地址与4对齐的,而且数据位宽固定为32bit,不想standalone可以任意调整。所以在PL逻辑侧控制编写时需要满足这些要求,就可以正常使用。

这样的话就不需要将PortB make external,只需要在Block design中与你所设计的IP的控制端口相连接。

在第一次进行Create HDL Wrapper是如果选择了“Let Vivado manage wrapper and auto-update”,修改之后工具会自动更新top层文件的。

 

-------------------------------------------------------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.

Give Kudos to a post which you think is helpful and reply oriented.
--------------------------------------------------------------------------------------------------------------------------------------------
0 项奖励
Newbie tty
Newbie
142 次查看
注册日期: ‎04-15-2019

回复: Zynq-7000 通过BRAM实现PS、PL数据共享问题

你好,我想请问一下我写了一个产生数据的模块,想要将他连接到portB端,我不太清楚给wea[3:0]什么样的信号,您方便解答一下吗?

0 项奖励
Newbie tty
Newbie
140 次查看
注册日期: ‎04-15-2019

回复: Zynq-7000 通过BRAM实现PS、PL数据共享问题

你好,我也想用这个方案传输数据,请问您最后完成了吗?方便交流一下吗?

0 项奖励
Xilinx Employee
Xilinx Employee
114 次查看
注册日期: ‎06-02-2017

回复: Zynq-7000 通过BRAM实现PS、PL数据共享问题

@tty ,

BRAM controller所连接的BRAM的we信号是4bit的,因为数据位宽是32bit的,we信号与数据位宽的byte对应。一般情况下,如果32bit数据一起使用的话,直接给全0(即读操作)或者全1(写操作)即可。

-------------------------------------------------------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.

Give Kudos to a post which you think is helpful and reply oriented.
--------------------------------------------------------------------------------------------------------------------------------------------
0 项奖励
Newbie tty
Newbie
82 次查看
注册日期: ‎04-15-2019

回复: Zynq-7000 通过BRAM实现PS、PL数据共享问题

好的,谢谢

0 项奖励
Newbie tty
Newbie
45 次查看
注册日期: ‎04-15-2019

回复: Zynq-7000 通过BRAM实现PS、PL数据共享问题

你好,我还想请教您一个问题,我产生1024个数据,但是数据每个时钟只能产生一个,我只能按照节拍将数据写入到RAM中,而我在PS端通过串口显示的时候只有最后一个内存地址上有数据,我在想是不是因为最后一个时钟写入的时候将之前的数据删除了,请问我可以通过什么办法解决这个问题呢?谢谢

0 项奖励
7 次查看
注册日期: ‎05-17-2018

回复: Zynq-7000 通过BRAM实现PS、PL数据共享问题

根据以上两位老师的回答,我也顺利解决了我的问题,目前这个项目我已经基本完成。我并没有遇到您所说的情况,跟您相同的是我也是1024个数据每一拍写入一个,然后从ps端读出并操作,我建议您查看一下pl端写入数据时产生的地址是否正确,应该是每次偏移4个地址位,另外您也可以检查一下ps端代码,读出是否是1024个数据地址全部读出,ps端我上了linux系统,在linux驱动中,地址偏移同样也是+4,如果这些都正确,建议pl端增加debugCore来查看写入时 en、wen、addr、wdata时序是否正确。

0 项奖励