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

FPGA/ASIC技术

206人已加入

描述

最近发现了一块好玩的板子,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。

axi协议

 

然后添加ZYNQ的IP核

axi协议

 

然后点击Run Block Automation

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

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

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

axi协议

 

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

axi协议

 

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

axi协议

 

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

axi协议


axi协议

 

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

axi协议

 

6.全部完成后选择package IP

axi协议

 

出现如下界面。

axi协议

 

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

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

axi协议

 

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

axi协议

 

3.老套路

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

axi协议

 

2.SDK部分

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

axi协议

 

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

axi协议

 

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

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分