Vivado 学习之编写IP核并通过AXI协议与ARM通信

Vivado 学习之编写IP核并通过AXI协议与ARM通信,第1张

最近发现了一块好玩的板子,PYNQ 这块板子最大的特点就是可以将所写的IP核封装成Python库的形式,然后通过在板载的xlinux系统下用户可以选择通过Jupiter编辑器实时的编写Python脚本,然后Python脚本调用编写好的IP核对FPGA进行重构,使开发变得更加灵活方便。PYNQ doucument 这是PYNQ的官方文档感兴趣的可以看一下。

还有就是学生购买PYNQ的话会有教育专享价,原价2000多的板子只要998就可以拿下。

以下正文。

1. Vivado 部分

1.老套路

1.打开vivado(注意不是vivado hls),建立工程,选择你手里板子的型号,这里我手里的PYNQ芯片型号是CLG400。

2.建立好工程后还是老套路,IP INTEGRATOR下Create Block Design。

Vivado 学习之编写IP核并通过AXI协议与ARM通信,Vivado 学习之编写IP核并通过AXI协议与ARM通信,第2张

 

然后添加ZYNQ的IP核

Vivado 学习之编写IP核并通过AXI协议与ARM通信,Vivado 学习之编写IP核并通过AXI协议与ARM通信,第3张

 

然后点击Run Block AutomaTIon

这样zynq的IP核就添加完毕了。

2.添加你自己的IP核,这里就拿点灯来作例子。

1.点击Tools下的Create and Package New IP

Vivado 学习之编写IP核并通过AXI协议与ARM通信,Vivado 学习之编写IP核并通过AXI协议与ARM通信,第4张

 

2.选择Create AXI4 Peripheral,然后会出现几个配置页面可以修改自己的ip核的名字和接口类型位宽等信息,一般一直下一步就可以。

Vivado 学习之编写IP核并通过AXI协议与ARM通信,Vivado 学习之编写IP核并通过AXI协议与ARM通信,第5张

 

3.完成后IP核库会出现你刚刚创建的IP核,然后右键选择Edit in IP Packager

Vivado 学习之编写IP核并通过AXI协议与ARM通信,Vivado 学习之编写IP核并通过AXI协议与ARM通信,第6张

 

4.进入IP核编辑页面,首先在顶层添加接口和实例调用。

Vivado 学习之编写IP核并通过AXI协议与ARM通信,Vivado 学习之编写IP核并通过AXI协议与ARM通信,第7张


Vivado 学习之编写IP核并通过AXI协议与ARM通信,Vivado 学习之编写IP核并通过AXI协议与ARM通信,第8张

 

5.然后再下层中同样的需要添加接口,然后在添加自己IP核的实现。

Vivado 学习之编写IP核并通过AXI协议与ARM通信,Vivado 学习之编写IP核并通过AXI协议与ARM通信,第9张

 

6.全部完成后选择package IP

Vivado 学习之编写IP核并通过AXI协议与ARM通信,Vivado 学习之编写IP核并通过AXI协议与ARM通信,第10张

 

出现如下界面。

Vivado 学习之编写IP核并通过AXI协议与ARM通信,Vivado 学习之编写IP核并通过AXI协议与ARM通信,第11张

 

在Port and Interface 下可能会出现如下错误
[IP_Flow 19-3153] Bus Interface ‘_axi_aclk’: ASSOCIATED_BUSIF bus parameter is missing.

解决办法是找到对应的Interface然后右键选择Edit Interface会出现如下界面,然后根据下图所示,将ASSOCIATED_BUSIF 添加进去,然后修改value值就可以了。

Vivado 学习之编写IP核并通过AXI协议与ARM通信,Vivado 学习之编写IP核并通过AXI协议与ARM通信,第12张

 

7.最后点击Re-package IP, 就封装好了这个IP核
8.最后添加刚刚编辑好的IP核,使用自动连接将线练好,结果如下图所示。

Vivado 学习之编写IP核并通过AXI协议与ARM通信,Vivado 学习之编写IP核并通过AXI协议与ARM通信,第13张

 

3.老套路

然后就又是老套路了,run 完下面几个步骤之后,export到hardware,然后将生成的bitstream写入到FPGA里,就完成的FPGA的这一部分。

Vivado 学习之编写IP核并通过AXI协议与ARM通信,Vivado 学习之编写IP核并通过AXI协议与ARM通信,第14张

 

2.SDK部分

这部分就跟普通的单片机开发一样,唯一的不同就是需要将刚才生成的IP核的驱动文件的头文件添加到C里进行声明。

Vivado 学习之编写IP核并通过AXI协议与ARM通信,Vivado 学习之编写IP核并通过AXI协议与ARM通信,第15张

 

其中生成的头文件中会有基地址的常量声明。但是有时候会出现奇怪的BUG,这个时候就可以回到Vivado中寻找IP核的基地址。如下图所示。

Vivado 学习之编写IP核并通过AXI协议与ARM通信,Vivado 学习之编写IP核并通过AXI协议与ARM通信,第16张

 

最后烧写到arm中就可以看到效果了。
参考资料:xilinx大学计划
实验平台:PYNQ开发板

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2614501.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-10
下一篇 2022-08-10

发表评论

登录后才能评论

评论列表(0条)

保存