第三章 VIVADO 自定义IP 流水灯实验
第二章里面已经说过了,MIZ701 PL部分没有输入时钟,因此驱动PL资源必须是通过PS来提供时钟,所以这个流水灯实验也得建立一个最小系统了,然后再添加一个流水灯的自定义IP。
3.0本章难度系数★★☆☆☆☆☆
3.1 硬件图片
先来熟悉一下开发板的硬件:LED部分及按钮部分

3.2 硬件原理图


PIN脚定义:
|
LD_A0:F17 LD_A1:J15 LD_A2:G14 LD_A3:D18 LD_B0:M14 LD_B1:M15 |
BIN0:R18 BIN1:T17 SW0:MIO50 SW1:MIO51 |
3.3VIVADO创建自定义图形IP
Step1:创建一个新的空的工程,这个前面已经讲过了,唯一要注意的是规范,笔者在创建之前就新建了ip_repo文件夹用于管理自定义IP,读者可以参考笔者的文件管理方式。

Step2:新建工程LED_ML 并且保存到ip_repo文件夹下,方便自定义管理,后面的过程参考第二章新建工程部分。

Step3:新建完成后,可以看到下面大红框的文件,然后在新建一个IPSRC的文件夹,并且把led_ml.v文件复制进去


|
LED_ML.v源码 |
|
// Target Devices: XC7Z020-FGG484 // Tool versions: VIVADO2015.4 // Description: water led // Revision: V1.1 // Additional Comments: //1) _i PIN input //2) _o PIN output //3) _n PIN active low //4) _dg debug signal //5) _r reg delay //6) _s state machine ////////////////////////////////////////////////////////////////////////////// module LED_ML( input CLK_i, input RSTn_i, output reg [3:0]LED_o ); reg [31:0]C0; always @(posedge CLK_i) if(!RSTn_i) begin LED_o <= 4'b0001; C0 <= 32'h0; end else begin if(C0 == 32'd50_000_000) begin C0 <= 32'h0; if(LED_o == 4'b1000) LED_o <= 4'b0001; else LED_o <= LED_o << 1; end else begin C0 <= C0 + 1'b1; LED_o <= LED_o; end end endmodule |
Step4:选择Add Sources添加LED_ML.v文件




Step5:添加完成后如图

Step6:添加完成进行创建IP 选择Tools-> Create and Package IP





Step7:创建完成后如下图

3.4VIVADO添加自定义IP
Step1:打开VIVADO工程,笔者这里直接复制上一章节的工程后打开工程文件,打开工程后,单机Project Setting

Step2:添加IP


Step2:添加完成后如下图,单击OK 完成

Step3:双击system工程,然后可以可拿到出来了添加IP的控件,选择添加IP

Step4:添加LED_ML IP

Step5:完成连线注意引出到外部的端口,只要把鼠标放到相应的端口上,右击
Make Exteral就可以了

Step6:右击 system 选择Generate Output Products

Step7:右击 system 选择 Create HDL Wrapper

Step8:添加PIN 约束
|
Zynq_pin.xdc |
|
set_property PACKAGE_PIN E17 [get_ports PHY_Rst[0]] set_property IOSTANDARD LVCMOS33 [get_ports PHY_Rst[0]] set_property PACKAGE_PIN F17 [get_ports {LED_o[0]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[0]}] set_property PACKAGE_PIN J15 [get_ports {LED_o[1]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[1]}] set_property PACKAGE_PIN G14 [get_ports {LED_o[2]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[2]}] set_property PACKAGE_PIN D18 [get_ports {LED_o[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED_o[3]}] set_property PACKAGE_PIN R18 [get_ports {RSTn_i}] set_property IOSTANDARD LVCMOS33 [get_ports {RSTn_i}] |
3.5 编译并且产生bit文件
Step1:单击综合
Step2:单击执行
Step3:单击产生bit(可以直接最后一步)

3.6导出到SDK直接运行任何一个程序
导出到SDK后直接运行任何一个程序,FCLK_CLK0就会运行了
3.7实验结果
下载过程下载完成后LED流水灯就运行起来了。
3.8本章小结
本章详细讲解了VIVADO 下如何创建自定义的工程,并且通过IP连线快速完成工程设计。由于LED 是PL资源需要PL时钟才能工作,本章从PS部分的PLL引出的时钟输入给PL部分的LED程序。之后启动SDK,SDK C程序运行后,由于FCLK_CLK0就启动了,之后流水灯就跑起来了。
源码下载地址;链接:http://pan.baidu.com/s/1c2fuVPe 密码:s9ig
第三章 VIVADO 自定义IP 流水灯实验的更多相关文章
- Zedboard学习(三):PL下流水灯实验 标签: fpgazynqPL 2017-07-05 11:09 21人阅读 评论(0)
zynq系列FPGA分为PS部分和PL部分. PL: 可编程逻辑 (Progarmmable Logic), 就是FPGA部分. PS: 处理系统 (Processing System) , 就是与F ...
- 实验一:基于STM32F1的流水灯实验(库函数)
参考原子哥学习程序 条件:实验板STM32103ZET6:固件库STM32F10x_StdPeriph_Lib_V3.5.0:环境MDK5: 目的:了解STM32 的 IO 口如何作为输出使用 :以两 ...
- ARM实验1 —— 流水灯实验
实验内容: 编写GPIO模块程序,实现对FS_4412平台的上的led2,led3,led4 ,led5,的流水灯实现. 实验目的: 熟悉开发环境的使用. 掌握Exynos 4412处理器GPIO功能 ...
- .NET ORM框架HiSql实战-第三章-使用自定义编号生成【申请编号】
一.引言 上一篇.NET ORM框架HiSql实战-第二章-使用Hisql实现菜单管理(增删改查) 中菜单编号采用的是雪花ID,生成的编号无法自定义.比如本系统的一个申请业务,需要按前缀+日期+流水号 ...
- Xilinx Vivado的使用详细介绍(4):Zedboard+vivado之流水灯(加SDK)
Vivado+zedboard之初学流水灯 Author:zhangxianhe 环境:vivado 2016.3(已验证适用于2015.4) 开发板:Zedboard version xc7z020 ...
- Tiny4412之C语言实现流水灯,Tiny4412裸机程序[3]
在前边我们使用汇编完成了一个流水灯实验: Tiny4412汇编流水灯代码,Tiny4412裸机LED操作 ---- - -- -- -- - -- -- 修改: # ${MKBL2} ${SOURCE ...
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】【实验一】流水灯模块
实验一:流水灯模块 对于发展商而言,动土仪式无疑是最重要的任务.为此,流水灯实验作为低级建模II的动土仪式再适合不过了.废话少说,我们还是开始实验吧. 图1.1 实验一建模图. 如图1.1 所示,实验 ...
- FPGA 流水灯
VerilogHDL那些事儿_建模篇(黑金FPGA开发板配套教程) 作者:akuei2 说明:参照该书将部分程序验证学习一遍 学习时间:2014年5月2号 主要收获: 1. 对FPGA有初步了解: 2 ...
- vivado设计三:一步一步生成自己的自定义IP核
开发环境:xp vivado2013.4 基于AXI-Lite的用户自定义IP核设计 这里以用户自定义led_ip为例: 1.建立工程 和设计一过程一样,见vivado设计一http://blog. ...
随机推荐
- easyui-combobox和C标签判断回显
<td width="40%"> <select class="easyui-combobox" id="work_property ...
- elasticsearch文档冲突
https://www.elastic.co/guide/cn/elasticsearch/guide/current/optimistic-concurrency-control.html当我们之前 ...
- 调试NTDLL加载
1 随便切到一个进程 0: kd> !process 0 0 explorer.exePROCESS 8157e9a8 SessionId: 0 Cid: 06a4 Peb: 7ffde000 ...
- 走进JavaWeb技术世界开篇:JavaWeb技术汇总
微信公众号[Java技术江湖]一位阿里 Java 工程师的技术小站.(关注公众号后回复”Java“即可领取 Java基础.进阶.项目和架构师等免费学习资料,更有数据库.分布式.微服务等热门技术学习视频 ...
- Maven的几种新建项目方式
1. 使用原型创建Maven的java工程 (1) 选择 JDK 的版本,勾选“使用原型创建”,选中 maven-archetype-quickstart,下一步. (2) 填写公司名,填写项目名,修 ...
- Ubuntu系统图形化界面无法登录到root用户的解决方法
Ubuntu默认是禁用了root用户的登录. 系统安装后, 图形化界面无法登录到root用户解决方法:Ubuntu 12.04:1.设置root用户密码: 普通用户登录,sudo passwd ro ...
- 【spring源码分析】IOC容器初始化——查漏补缺(四)
前言:在前几篇查漏补缺中,其实我们已经涉及到bean生命周期了,本篇内容进行详细分析. 首先看bean实例化过程: 分析: bean实例化开始后 注入对象属性后(前面IOC初始化十几篇文章). 检查激 ...
- pwn学习日记Day18 《程序员的自我修养》读书笔记
知识杂项 obj文件:当前源代码编译成二进制目标文件 exe文件:将.obj文件与库文件.lib等文件链接生成的可执行文件 一个现代编译器的主要工作流程如下: 源程序(source code)→ 预处 ...
- Linux设备驱动程序 之 后备高速缓存
设备驱动程序常常会反复的分配很多相同大小的内存块:内核实现了后备高速缓存来对此进行支持,以反复的使用这些相同的内存块: 创建 Linux内核的高速缓存管理有时被称为“slab分配器”:因此,相关函数和 ...
- 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_12-webpack研究-webpack安装
npm默认安装配置的路径配置在nodejs的node_modules目录 j加上 -g 就是全局安装 后面只写webpack默认安装的是最新版本 指定版本号 视频中建议指定版本号进行安装