第二章里面已经说过了,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 流水灯实验的更多相关文章

  1. Zedboard学习(三):PL下流水灯实验 标签: fpgazynqPL 2017-07-05 11:09 21人阅读 评论(0)

    zynq系列FPGA分为PS部分和PL部分. PL: 可编程逻辑 (Progarmmable Logic), 就是FPGA部分. PS: 处理系统 (Processing System) , 就是与F ...

  2. 实验一:基于STM32F1的流水灯实验(库函数)

    参考原子哥学习程序 条件:实验板STM32103ZET6:固件库STM32F10x_StdPeriph_Lib_V3.5.0:环境MDK5: 目的:了解STM32 的 IO 口如何作为输出使用 :以两 ...

  3. ARM实验1 —— 流水灯实验

    实验内容: 编写GPIO模块程序,实现对FS_4412平台的上的led2,led3,led4 ,led5,的流水灯实现. 实验目的: 熟悉开发环境的使用. 掌握Exynos 4412处理器GPIO功能 ...

  4. .NET ORM框架HiSql实战-第三章-使用自定义编号生成【申请编号】

    一.引言 上一篇.NET ORM框架HiSql实战-第二章-使用Hisql实现菜单管理(增删改查) 中菜单编号采用的是雪花ID,生成的编号无法自定义.比如本系统的一个申请业务,需要按前缀+日期+流水号 ...

  5. Xilinx Vivado的使用详细介绍(4):Zedboard+vivado之流水灯(加SDK)

    Vivado+zedboard之初学流水灯 Author:zhangxianhe 环境:vivado 2016.3(已验证适用于2015.4) 开发板:Zedboard version xc7z020 ...

  6. Tiny4412之C语言实现流水灯,Tiny4412裸机程序[3]

    在前边我们使用汇编完成了一个流水灯实验: Tiny4412汇编流水灯代码,Tiny4412裸机LED操作 ---- - -- -- -- - -- -- 修改: # ${MKBL2} ${SOURCE ...

  7. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】【实验一】流水灯模块

    实验一:流水灯模块 对于发展商而言,动土仪式无疑是最重要的任务.为此,流水灯实验作为低级建模II的动土仪式再适合不过了.废话少说,我们还是开始实验吧. 图1.1 实验一建模图. 如图1.1 所示,实验 ...

  8. FPGA 流水灯

    VerilogHDL那些事儿_建模篇(黑金FPGA开发板配套教程) 作者:akuei2 说明:参照该书将部分程序验证学习一遍 学习时间:2014年5月2号 主要收获: 1. 对FPGA有初步了解: 2 ...

  9. vivado设计三:一步一步生成自己的自定义IP核

    开发环境:xp  vivado2013.4 基于AXI-Lite的用户自定义IP核设计 这里以用户自定义led_ip为例: 1.建立工程 和设计一过程一样,见vivado设计一http://blog. ...

随机推荐

  1. MySQL新特性文档型数据库

    mongodb在文档型数据库这方面一直做的很好,也发展了很多年,MySQL作为一个比较大众的数据库也慢慢支持了该特性,下面介绍一下MySQL支持文档型数据库的简单操作. 环境: 主机名 IP 系统 软 ...

  2. python爬虫-爬坑之路

    背景简介 爬取外国的某两个网站的数据,网站都没有被墙,爬取三种数据. A: 爬取页面并存储到数据库 B: 爬取页面内的表格内数据并存储到数据库 C: 爬取页面,分析页面并将页面的所有数据分类存入数据库 ...

  3. JS的十大排序算法

     名词解释: n: 数据规模k:“桶”的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外内存稳定性:排序后2个相等键值的顺序和排序之前它们的顺序相同 冒泡排序(Bub ...

  4. mysql—并发控制及事务

    并发控制 实现的并发访问的控制技术是基于锁: 锁分为表级锁和行级锁,MyISAM存储引擎不支持行级锁:InnoDB支持表级锁和行级锁: 锁的分类有读锁和写锁,读锁也被称为共享锁,加读锁的时候其他的人可 ...

  5. 图像模糊C均值聚类分割代码

    转自:直觉模糊C均值聚类与图像阈值分割 - liyuefeilong的专栏 - CSDN博客 https://blog.csdn.net/liyuefeilong/article/details/43 ...

  6. 《maven实战》笔记(1)----maven的初识

    刚入职公司用maven进行项目管理,于是昨天下午开始看<maven实战>的pdf,感觉很好,作者写的很有条理. 下面是笔记,看书做笔记还是很有必要的,加强自己的总结. 什么是maven? ...

  7. Maven IntelliJ

    IntelliJ IDEA 已经内建了对 Maven 的支持.我们在此例中使用的是 IntelliJ IDEA 社区版 11.1. IntelliJ IDEA 的一些特性列出如下: 可以通过 Inte ...

  8. sysbench 压测

    IP架构 sysbench部署服务器:172.17.100.107 压测服务器:172.17.100.100 MySQL部署目录:/usr/local/mysql 前置工作 1.完成MySQL的安装( ...

  9. 18 Flutter仿京东商城项目 商品详情顶部tab切换 顶部下拉菜单 底部浮动导航

    ProductContent.dart import 'package:flutter/material.dart'; import '../services/ScreenAdaper.dart'; ...

  10. Python3 继承

    继承的好处:子类实现父类的全部功能 1.单继承 若父类和子类有共同的方法或属性,则子类对父类方法或属性进行覆盖 class ClassA: def __init__(self): self.a = ' ...