本节通过基于BRAM的PS与PL数据交互实验,简单演示了BRAM的使用
基于BRAM的PS与PL数据交互实验
实验任务:PS将串口接收到的数据写入BRAM(是FPGA内部的一个片上存储资源),然后从BRAM中读出数据,并通过串口打印出来;与此同时,PL从BRAM中同样读出数据,并通过ILA来观察读出的数据与串口打印的数据是否一致
1.Vivado中的相关配置
ZYNQ PS的配置:直接点击auto自动配置
AXI BRAM controller的配置:
产生一个Block RAM的IP核:
自动连线:
2.自定义pl_bram_rd的ip核添加
参考这篇文章的配置ZYNQ嵌入式之IP核(基于PYNQ-Z2开发板)以及正点原子编写的源代码程序
注意:在添加bram_rd源代码时,不能只将其复制到对应ip核的hdl文件夹下,还需要点击添加源文件将文件添加进入工程
同时还会遇到端口中没有更新的情况,解决方法参考正点原子视频的第15.2讲 基于BRAM的PS和PL数据交互(第二讲)15:23处,其实就是将pl_bram_rd_v1_0.v文件打几个空格再保存后,端口就会更新了
根据正点原子视频的第15.2讲 基于BRAM的PS和PL数据交互(第二讲)16:00处开始封装一个ram接口
设置BRAM的存储深度:
最终的Block框图如下:
3.ILA观测信号的添加
综合后点击set up debug
添加观测信号
然后ctrl+s保存xdc文件
4.Vitis中的代码编写
1 |
|
5.实验结果
串口打印:
ILA: