PYNQ_Z2自定义IP核
1. 软件平台
vivado2019.1
2. 硬件平台
PYNQ_Z2
3. 具体实现流程
首先先建立一个vivado工程如下(参考https://blog.csdn.net/qq_42263796/article/details/101828046)
点击Tools,选择create and pakage new IP,再点击Next
按下图方式选择,点击Next,其他选项自行百度。
这里可选择修改名字,这里命名为myip_test,点击Next
这里按下图选择即可,Next
选择Edit IP , Finish
可以看到如下界面。
在sources一栏目,可以看到顶层文件和底层模块。打开下列所选文件。
打开后。。。。
我们需要做功能是自定义一个led的IP核,需要添加led输出端口
// Users to add ports here
// User ports ends
// Do not modify the ports beyond this line
添加后结果如下
// Users to add ports hereoutput wire [3:0]led,// User ports ends// Do not modify the ports beyond this line
拉到400多行左右找到下面的语句
添加如下代码
点击保存(有错误会提示)
打开top level
在17到20行左右添加输出端口,如下
在50行左右添加如下代码
点击保存,有错误会提示。
(在这里添加约束文件,我尝试了几次,没有成功,编译不通过)
然后点击source->design sources->IP-XACT,打开component.xml
点击file group,点击merge change from file groups Wizard
同样,使得左侧都打勾,
点击Review and pakage
如果不需要设置,点击Re-pakage IP
点击Yes,IP核就封装完成了。
点击 create block design
然后添加IP核,如下。
点击run block automation,再点击OK,然后手动连接CLK,结果如下。
添加刚刚生成的IP核。如果不是在这个工程下建立的,需要自行添加IP核的路径。
方式:window->IP Catalog ->右击打开的界面的空白处,选择add repository->选择IP核的路劲即可。
在这里不做详细介绍
同样,run connection automation,点击OK
然后右击添加的IP核的led[3:0]的输出端口,
点击 make External
结果如下,
单击该端口,在左边,将名字改为,led
特别提示:如果不将端口名字修改,会造成约束失败(管脚的配置)。
点击验证(validate design),结果如下,
打开source栏目,右击test_ip...文件,选择,create HDL wrapper
然后点击,constraints
右击constrs_1
选择,Add sources
选择 add 偶然create constraints
点击Next
点击create file,输入名字,点击OK
然后点击finish
结果如下,在约束文件输入以下内容
#LEDs
set_property -dict { PACKAGE_PIN R14 IOSTANDARD LVCMOS33 } [get_ports { led[0] }];#IO_L6N_T0_VREF_34 Sch=led[0]
set_property -dict { PACKAGE_PIN P14 IOSTANDARD LVCMOS33 } [get_ports { led[1] }];#IO_L6P_T0_34 Sch=led[1]
set_property -dict { PACKAGE_PIN N16 IOSTANDARD LVCMOS33 } [get_ports { led[2] }];#IO_L21N_T3_DQS_AD14N_35 Sch=led[2]
set_property -dict { PACKAGE_PIN M14 IOSTANDARD LVCMOS33 } [get_ports { led[3] }];#IO_L23P_T3_35 Sch=led[3]
点击保存
然后,在Flow navigator 栏目
点击generate Bistream,选择Yes,再点击OK,等待完成即可。
接下来主要是SDK部分(参考https://blog.csdn.net/qq_42263796/article/details/101828046)
代码如下
#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
/* Include Files */
#include "xparameters.h"
#include "xil_io.h"
#include "xstatus.h"
/* Definitions */
#define led_delay 10000000 /* Software delay length */
#define led_channel 1 /* GPIO port for LEDs */
#define printf xil_printf /* smaller, optimised printf */
unsigned int mled = 0x01; /* first led*/
#define my_IP_led 0x43c00000 /* GPIO Device driver instance */void LEDOutputExample(void)
{volatile int delay;/* Loop forever blinking the LED. */while (1) {/* Write output to the LEDs. */Xil_Out32(my_IP_led,mled);mled = mled<<1;if(mled>0x8)mled = 1;/* Wait a small amount of time so that the LED blinking is visible. */for (delay = 0; delay < led_delay; delay++);}}
int main()
{init_platform();print("Hello World\n\r");cleanup_platform();/* Execute the LED output. */LEDOutputExample();return 0;
}
其中my_IP_led的地址可以查看vivado,Address Editor
运行结果如图所示:
PYNQ_Z2自定义IP核相关推荐
- qq自定义diy名片代码复制_「正点原子FPGA连载」第六章自定义IP核-呼吸灯实验
1)摘自[正点原子]领航者 ZYNQ 之嵌入式开发指南 2)实验平台:正点原子领航者ZYNQ开发板 3)平台购买地址:https://item.taobao.com/item.htm?&id= ...
- 基于vivado开发xilinx系列FPGA的冷知识(1)——自定义IP核的封装与后期修改
感慨于各大论坛里关于vivado的一些冷门功能使用技巧十分匮乏,我决定慢慢更新一些自己经历项目实战后的使用心得,仅作抛砖引玉. 第一篇来介绍下开发完毕后以IP核形式打包工程文件的一些操作. 可能很多人 ...
- 【Xilinx AX7103 MicroBalze学习笔记6】MicroBlaze 自定义 IP 核封装实验
目录 实验任务 实验框图 创建自定义 IP 封装 IP IP 封装界面配置 硬件设计(Vivado部分) Block Design搭建 添加 IP 库 约束文件 软件设计(SDK部分) 往期系列博客 ...
- 【ZYNQ】自定义IP核的封装
自定义IP核的封装介绍 IP核打包器的配置 IP核打包的基础知识 IP核顶层接口的命名规范 Reset接口 Clock接口 差分Clock接口 AXI接口 升级自定义IP 创建和打包IP向导 自定义I ...
- java sdk他edk de区别_EDK笔记——自定义IP核
这篇笔记是我之前在调试MicroBlaze时记录下来的,当时在网上查了一些资料,发现都讲的不是特别清楚,所以自己整理了一个笔记,如有差错,希望大家指正. 在这次示例中,本文完成了一个改变流水灯的间隔时 ...
- 听说Zynq-手把手教你自定义ip核并调用
概述 小编最近在研究Zynq,因为对其相对陌生,在探索过程中也遇到了不少坑,这里将如何创建IP核并调用的方法步骤总结记录,以免日后忘记. 注意 ★环境:Vivado2018.2.开发板:digilen ...
- vivado创建自定义IP核
环境:vivado 18.2 一 创建IP核 1.在tool–>Create and Package New IP 选择保存路径 定义IP核信息,可以添加一些备注信息 封装IP (IP创建完成后 ...
- vivado自定义IP核 调用
IP核的封装 1. 准备好要用来生成ip核的模块/工程. 2.Tools -> Create andPackage IP -> next 如果要package整个工程,此处选择 Packa ...
- 自定义IP核在SDK中添加驱动方法
1. 在sdk的 xilinx tools的菜单下点击 2. 在红色框的位置点击new,把XPS工程所在的根目录添加进来.(注意,必须是工程的根目录) 3.点击菜单board support pac ...
最新文章
- mysql 不停机_mysql之 mysql 5.6不停机主从搭建(一主一从基于日志点复制)
- 走的最急的,都是最美的风景
- docker 部署springboot容器日志处理
- chrome动态ip python_用Python爬虫爬取动态网页,附带完整代码,有错误欢迎指出!...
- MacBook 如何通过命令终端进入 U 盘内的目录
- 基于公开数据的特殊人群在线活动特征挖掘
- docker volume mysql_docker volume的理解
- Hadoop中MR程序的几种提交运行模式
- php dom 分离html内容
- linux下搭建redis集群
- vue-app之H5打开第三方app
- CSP 2014-03-1 相反数(C++)
- 送书6本,看谁答题快
- python节日贺卡图片大全_简单漂亮三年级新年贺卡图片大全
- 示波器如何设置实现单次触发
- 路漫漫其修远兮,吾将上下而求索--2019OKR规划
- 真的!?在阅读体验感上赢过微信读书?
- (一)LAMP (CGI,fastcgi, PHP,基于php的LAMP架构,php连接数据库)
- mysql update 负数_解决并发情况下库存减为负数问题--update2016.04.24
- 菜市场小程序推荐服务器,极力推荐的3款生鲜微信小程序,总有一个能用上!...
热门文章
- laravel route
- Python先生,你好!(5)——使用高斯滤波器提取图像特征
- PCIe学习笔记之Max payload size
- 【Objective-C语言的SEL对象】
- 在敏捷开发,如何评估开发任务的工时更合理?
- “简单”和“勤奋”就是只围绕团队的理念和目标去工作,而不会因为其他的问题或内耗来分散团队的力量和注意力。为此,管理者要为团队创造一个积极向上、团队合作、充满激情的工作氛围。...
- libcurl API 常用函数
- 华为服务器raid卡型号,RAID卡类型 - 华为V2V3服务器 RAID控制卡 用户指南 45 - 华为...
- 超全面!UI设计师如何适配2018新款iPhone
- SIFT特征检测与特征匹配